diff options
Diffstat (limited to 'web/server/h2o/libh2o/t')
146 files changed, 0 insertions, 112968 deletions
diff --git a/web/server/h2o/libh2o/t/00unit.evloop.t b/web/server/h2o/libh2o/t/00unit.evloop.t deleted file mode 100644 index e87189e1e..000000000 --- a/web/server/h2o/libh2o/t/00unit.evloop.t +++ /dev/null @@ -1,6 +0,0 @@ -use strict; -use warnings; - -use t::Util; - -exec_unittest('evloop'); diff --git a/web/server/h2o/libh2o/t/00unit.libuv.t b/web/server/h2o/libh2o/t/00unit.libuv.t deleted file mode 100644 index ffedabe8c..000000000 --- a/web/server/h2o/libh2o/t/00unit.libuv.t +++ /dev/null @@ -1,6 +0,0 @@ -use strict; -use warnings; - -use t::Util; - -exec_unittest('libuv'); diff --git a/web/server/h2o/libh2o/t/00unit.mruby.t b/web/server/h2o/libh2o/t/00unit.mruby.t deleted file mode 100644 index b56454384..000000000 --- a/web/server/h2o/libh2o/t/00unit.mruby.t +++ /dev/null @@ -1,6 +0,0 @@ -use strict; -use warnings; - -use t::Util; - -exec_mruby_unittest; diff --git a/web/server/h2o/libh2o/t/00unit.mruby/acl.rb b/web/server/h2o/libh2o/t/00unit.mruby/acl.rb deleted file mode 100644 index 771047dad..000000000 --- a/web/server/h2o/libh2o/t/00unit.mruby/acl.rb +++ /dev/null @@ -1,179 +0,0 @@ -$LOAD_PATH << 'share/h2o/mruby' -require 'misc/mruby-mtest/mrblib/mtest_unit.rb' -require 'acl.rb' - -class ACLTest < MTest::Unit::TestCase - include H2O::ACL - def setup - H2O::ConfigurationContext.reset - end - - def test_use - act = acl { - use proc {|env| [200, {}, ["hello test_use"]]} - }.call({}) - assert_equal([200, {}, ["hello test_use"]], act) - end - - def test_respond - act = acl { - respond(409, {"custom" => "header"}, ["Conflict"]) - }.call({}) - assert_equal([409, {"custom" => "header"}, ["Conflict"]], act) - end - - def test_deny - act = acl { - deny - }.call({}) - assert_equal([403, {}, ["Forbidden"]], act) - end - - def test_allow - act = acl { - allow - }.call({}) - assert_equal([399, {}, []], act) - end - - def test_redirect - act = acl { - redirect("https://h2o.examp1e.net/", 301) - }.call({}) - assert_equal([301, {"Location" => "https://h2o.examp1e.net/"}, []], act) - end - - ##### tests for condition block - - def test_conditional_true - act = acl { - respond(200) { true } - }.call({}) - assert_equal([200, {}, []], act) - end - - def test_conditional_false - act = acl { - respond(200) { false } - }.call({}) - assert_equal([399, {}, []], act) - end - - ##### tests for acl block - - def test_empty - act = acl { - }.call({})[0] - assert_equal(399, act) - end - - def test_multiple1 - act = acl { - respond(201) { true } - respond(202) { true } - }.call({})[0] - assert_equal(201, act) - end - - def test_multiple2 - act = acl { - respond(201) { false } - respond(202) { true } - }.call({})[0] - assert_equal(202, act) - end - - def test_multiple3 - act = acl { - respond(201) { false } - respond(202) { false } - }.call({})[0] - assert_equal(399, act) - end - - def test_acl_restriction1 - acl { respond(200) } - assert_raise(RuntimeError, "must raise exception if acl method is called more than once") { - acl { respond(200) } - } - end - - ##### tests for matcher - - def test_addr - handler = acl { - respond(200) { addr.match(/^192\.168\./) } - respond(403) { addr.match(/^200\./) } - respond(503) { addr.match(/^201\./) } - } - assert_equal(200, handler.call({ "REMOTE_ADDR" => "192.168.0.1"})[0]) - assert_equal(403, handler.call({ "REMOTE_ADDR" => "200.0.0.1"})[0]) - assert_equal(503, handler.call({ "REMOTE_ADDR" => "201.0.0.1"})[0]) - assert_equal(399, handler.call({ "REMOTE_ADDR" => "127.0.0.1"})[0]) - assert_equal(200, handler.call({ "HTTP_X_FORWARDED_FOR" => "192.168.0.1"})[0]) - end - - def test_addr_not_forwarded - handler = acl { - respond(200) { addr(false).match(/^192\.168\./) } - respond(403) - } - assert_equal(200, handler.call({ "REMOTE_ADDR" => "192.168.0.1"})[0]) - assert_equal(403, handler.call({ "HTTP_X_FORWARDED_FOR" => "192.168.0.1"})[0]) - end - - def test_path - handler = acl { - respond(200) { path == "/foo" } - respond(404) - } - assert_equal(200, handler.call({ "PATH_INFO" => "/foo"})[0]) - assert_equal(404, handler.call({ "PATH_INFO" => "/bar"})[0]) - end - - def test_method - handler = acl { - allow { method.match(/^(GET|HEAD)$/) } - respond(405) - } - assert_equal(399, handler.call({ "REQUEST_METHOD" => "GET"})[0]) - assert_equal(405, handler.call({ "REQUEST_METHOD" => "POST"})[0]) - end - - def test_method - handler = acl { - allow { method.match(/^(GET|HEAD)$/) } - respond(405) - } - assert_equal(399, handler.call({ "REQUEST_METHOD" => "GET"})[0]) - assert_equal(405, handler.call({ "REQUEST_METHOD" => "POST"})[0]) - end - - def test_header - handler = acl { - respond(400, {}, ["authorization header missing"]) { header("Authorization").empty? } - } - assert_equal(400, handler.call({})[0]) - assert_equal(399, handler.call({ "HTTP_AUTHORIZATION" => "Bearer xyz"})[0]) - end - - def test_user_agent - handler = acl { - respond(200, {}, ["hello googlebot!"]) { user_agent.match(/Googlebot/i) } - } - assert_equal(200, handler.call({ "HTTP_USER_AGENT" => "i'm Googlebot"})[0]) - assert_equal(399, handler.call({})[0]) - end - - def test_multiple_matchers - handler = acl { - respond(403, {}, []) { ! addr.start_with?("192.168.") && user_agent.match(/curl/i) } - } - assert_equal(399, handler.call({ "REMOTE_ADDR" => "192.168.100.100", "HTTP_USER_AGENT" => "i'm firefox"})[0]) - assert_equal(399, handler.call({ "REMOTE_ADDR" => "192.168.100.100", "HTTP_USER_AGENT" => "i'm curl"})[0]) - assert_equal(399, handler.call({ "REMOTE_ADDR" => "222.222.222.222", "HTTP_USER_AGENT" => "i'm firefox"})[0]) - assert_equal(403, handler.call({ "REMOTE_ADDR" => "222.222.222.222", "HTTP_USER_AGENT" => "i'm curl"})[0]) - end -end - -MTest::Unit.new.run diff --git a/web/server/h2o/libh2o/t/00unit.mruby/trie_addr.rb b/web/server/h2o/libh2o/t/00unit.mruby/trie_addr.rb deleted file mode 100644 index 9b6936d3b..000000000 --- a/web/server/h2o/libh2o/t/00unit.mruby/trie_addr.rb +++ /dev/null @@ -1,64 +0,0 @@ -$LOAD_PATH << 'share/h2o/mruby' -require 'misc/mruby-mtest/mrblib/mtest_unit.rb' -require 'trie_addr.rb' - -class TrieAddrTest < MTest::Unit::TestCase - def test_basic - addr = TrieAddr.new - addr.add("10.0.0.0/12") - addr.add("10.255.0.0/12") - - assert_true(addr.match?("10.10.0.0")) - assert_false(addr.match?("10.128.0.0")) - assert_true(addr.match?("10.250.0.0")) - - addr.add("10.255.0.0/8") - assert_true(addr.match?("10.128.0.0")) - - end - - def test_missing_prefix_length - addr = TrieAddr.new - addr.add("12.34.56.78") - - assert_false(addr.match?("12.34.56.77")) - assert_true(addr.match?("12.34.56.78")) - assert_false(addr.match?("12.34.56.79")) - end - - def test_ipv6_addr - addr = TrieAddr.new - assert_raise(ArgumentError, "ipv6 is currently not supported") { addr.add("::1") } - assert_false(addr.match?("::1"), "always returns false") - end - - def test_invalid_addr - addr = TrieAddr.new - addr.add("0.0.0.0/8") - assert_false(addr.match?("hogehoge")) - end - - # taken from https://github.com/hirose31/p5-net-ip-match?-trie/blob/master/t/10_match?_ip_PP.t - def test_nimt_cases - addr = TrieAddr.new - addr.add(["10.0.0.0/24", "10.0.1.0/24", "11.0.0.0/16", "10.1.0.0/28", "10.0.0.0/8", "10.2.0.0/24"]) - - cases = [ - { :name => "match 1", :input => "10.0.0.100", :expected => true }, - { :name => "match 2", :input => "10.1.0.8", :expected => true }, - { :name => "match 3", :input => "10.2.0.1", :expected => true }, - { :name => "not match", :input => "192.168.1.2", :expected => false }, - { :name => "match min", :input => "10.0.0.0", :expected => true }, - { :name => "match max", :input => "10.0.0.255", :expected => true }, - { :name => "invalid IP", :input => "11.0.999.1", :expected => false }, - { :name => "0.0.0.0", :input => "0.0.0.0", :expected => false }, - { :name => "255.255.255.255", :input => "255.255.255.255", :expected => false }, - { :name => "big", :input => "10.255.255.255", :expected => true }, - ] - cases.each {|c| - assert_equal(c[:expected], addr.match?(c[:input]), c[:name]) - } - end -end - -MTest::Unit.new.run diff --git a/web/server/h2o/libh2o/t/00unit/assets/1000.txt b/web/server/h2o/libh2o/t/00unit/assets/1000.txt deleted file mode 100644 index 79fb52d24..000000000 --- a/web/server/h2o/libh2o/t/00unit/assets/1000.txt +++ /dev/null @@ -1,100 +0,0 @@ -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 diff --git a/web/server/h2o/libh2o/t/00unit/assets/1000000.txt b/web/server/h2o/libh2o/t/00unit/assets/1000000.txt deleted file mode 100644 index 224235de4..000000000 --- a/web/server/h2o/libh2o/t/00unit/assets/1000000.txt +++ /dev/null @@ -1,100000 +0,0 @@ -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 -123456789 diff --git a/web/server/h2o/libh2o/t/00unit/assets/index.html b/web/server/h2o/libh2o/t/00unit/assets/index.html deleted file mode 100644 index 1178c0ef2..000000000 --- a/web/server/h2o/libh2o/t/00unit/assets/index.html +++ /dev/null @@ -1 +0,0 @@ -hello html diff --git a/web/server/h2o/libh2o/t/00unit/assets/index_txt/index.txt b/web/server/h2o/libh2o/t/00unit/assets/index_txt/index.txt deleted file mode 100644 index 77ff4944b..000000000 --- a/web/server/h2o/libh2o/t/00unit/assets/index_txt/index.txt +++ /dev/null @@ -1 +0,0 @@ -hello text diff --git a/web/server/h2o/libh2o/t/00unit/assets/index_txt_as_dir/index.txt/.gitkeep b/web/server/h2o/libh2o/t/00unit/assets/index_txt_as_dir/index.txt/.gitkeep deleted file mode 100644 index e69de29bb..000000000 --- a/web/server/h2o/libh2o/t/00unit/assets/index_txt_as_dir/index.txt/.gitkeep +++ /dev/null diff --git a/web/server/h2o/libh2o/t/00unit/assets/read_command.pl b/web/server/h2o/libh2o/t/00unit/assets/read_command.pl deleted file mode 100755 index b24f1bc87..000000000 --- a/web/server/h2o/libh2o/t/00unit/assets/read_command.pl +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/sh -exec perl -x $0 "$@" -#! perl - -use strict; -use warnings; - -die "expected one arg" - unless @ARGV == 1; - -print $ARGV[0]; -exit($ENV{READ_COMMAND_EXIT_STATUS} || 0); diff --git a/web/server/h2o/libh2o/t/00unit/issues/293.c b/web/server/h2o/libh2o/t/00unit/issues/293.c deleted file mode 100644 index bce57589b..000000000 --- a/web/server/h2o/libh2o/t/00unit/issues/293.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <inttypes.h> -#include <stdio.h> -#include "../test.h" - -static h2o_context_t ctx; - -static void register_authority(h2o_globalconf_t *globalconf, h2o_iovec_t host, uint16_t port) -{ - static h2o_iovec_t x_authority = {H2O_STRLIT("x-authority")}; - - h2o_hostconf_t *hostconf = h2o_config_register_host(globalconf, host, port); - h2o_pathconf_t *pathconf = h2o_config_register_path(hostconf, "/", 0); - h2o_file_register(pathconf, "t/00unit/assets", NULL, NULL, 0); - - char *authority = h2o_mem_alloc(host.len + sizeof(":" H2O_UINT16_LONGEST_STR)); - sprintf(authority, "%.*s:%" PRIu16, (int)host.len, host.base, port); - h2o_headers_command_t *cmds = h2o_mem_alloc(sizeof(*cmds) * 2); - cmds[0] = (h2o_headers_command_t){H2O_HEADERS_CMD_ADD, &x_authority, {authority, strlen(authority)}}; - cmds[1] = (h2o_headers_command_t){H2O_HEADERS_CMD_NULL}; - h2o_headers_register(pathconf, cmds); -} - -static void check(const h2o_url_scheme_t *scheme, const char *host, const char *expected) -{ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.scheme = scheme; - conn->req.input.authority = h2o_iovec_init(host, strlen(host)); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - - size_t index = h2o_find_header_by_str(&conn->req.res.headers, H2O_STRLIT("x-authority"), SIZE_MAX); - ok(index != SIZE_MAX); - - if (index != SIZE_MAX) { - ok(h2o_memis(conn->req.res.headers.entries[index].value.base, conn->req.res.headers.entries[index].value.len, expected, - strlen(expected))); - } - - h2o_loopback_destroy(conn); -} - -void test_issues293() -{ - h2o_globalconf_t globalconf; - - h2o_config_init(&globalconf); - - /* register two hosts, using 80 and 443 */ - register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("default")), 65535); - register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host1")), 80); - register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host1")), 443); - register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host2")), 80); - register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host2")), 443); - register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host3")), 65535); - - h2o_context_init(&ctx, test_loop, &globalconf); - - /* run the tests */ - check(&H2O_URL_SCHEME_HTTP, "host1", "host1:80"); - check(&H2O_URL_SCHEME_HTTPS, "host1", "host1:443"); - check(&H2O_URL_SCHEME_HTTP, "host2", "host2:80"); - check(&H2O_URL_SCHEME_HTTPS, "host2", "host2:443"); - - /* supplied port number in the Host header must be preferred */ - check(&H2O_URL_SCHEME_HTTP, "host1:80", "host1:80"); - check(&H2O_URL_SCHEME_HTTP, "host1:443", "host1:443"); - check(&H2O_URL_SCHEME_HTTPS, "host1:80", "host1:80"); - check(&H2O_URL_SCHEME_HTTPS, "host1:443", "host1:443"); - check(&H2O_URL_SCHEME_HTTP, "host2:80", "host2:80"); - check(&H2O_URL_SCHEME_HTTP, "host2:443", "host2:443"); - check(&H2O_URL_SCHEME_HTTPS, "host2:80", "host2:80"); - check(&H2O_URL_SCHEME_HTTPS, "host2:443", "host2:443"); - - /* host-level conf without default port */ - check(&H2O_URL_SCHEME_HTTP, "host3", "host3:65535"); - check(&H2O_URL_SCHEME_HTTPS, "host3", "host3:65535"); - check(&H2O_URL_SCHEME_HTTP, "host3", "host3:65535"); - check(&H2O_URL_SCHEME_HTTPS, "host3", "host3:65535"); - check(&H2O_URL_SCHEME_HTTP, "host3:80", "host3:65535"); - check(&H2O_URL_SCHEME_HTTPS, "host3:80", "default:65535"); - check(&H2O_URL_SCHEME_HTTP, "host3:443", "default:65535"); - check(&H2O_URL_SCHEME_HTTPS, "host3:443", "host3:65535"); - - /* upper-case */ - check(&H2O_URL_SCHEME_HTTP, "HoST1", "host1:80"); - check(&H2O_URL_SCHEME_HTTP, "HoST1:80", "host1:80"); - check(&H2O_URL_SCHEME_HTTPS, "HoST1", "host1:443"); - check(&H2O_URL_SCHEME_HTTPS, "HoST1:443", "host1:443"); - - h2o_context_dispose(&ctx); - h2o_config_dispose(&globalconf); -} diff --git a/web/server/h2o/libh2o/t/00unit/issues/percent-encode-zero-byte.c b/web/server/h2o/libh2o/t/00unit/issues/percent-encode-zero-byte.c deleted file mode 100644 index c007c0831..000000000 --- a/web/server/h2o/libh2o/t/00unit/issues/percent-encode-zero-byte.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2016 DeNA Co., Fastly, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -#include <inttypes.h> -#include <stdio.h> -#include "../test.h" - -void test_percent_encode_zero_byte(void) -{ - h2o_pathconf_t pathconf = {NULL, {H2O_STRLIT("/abc")}}; - h2o_req_t req; - h2o_iovec_t dest; - - h2o_init_request(&req, NULL, NULL); - - /* basic pattern */ - req.path_normalized = h2o_iovec_init(H2O_STRLIT("/abc/mno\0xyz")); - req.query_at = req.path_normalized.len; - req.path = h2o_concat(&req.pool, req.path_normalized, h2o_iovec_init(H2O_STRLIT("?q"))); - req.pathconf = &pathconf; - dest = h2o_build_destination(&req, H2O_STRLIT("/def"), 1); - ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/mno%00xyz?q"))); - dest = h2o_build_destination(&req, H2O_STRLIT("/def/"), 1); - ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/mno%00xyz?q"))); - - h2o_mem_clear_pool(&req.pool); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/common/cache.c b/web/server/h2o/libh2o/t/00unit/lib/common/cache.c deleted file mode 100644 index ea18cbc45..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/common/cache.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 2014-2016 DeNA Co., Ltd., Kazuho Oku - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include "../../test.h" -#include "../../../../lib/common/cache.c" - -static size_t bytes_destroyed; - -static void on_destroy(h2o_iovec_t vec) -{ - bytes_destroyed += vec.len; -} - -void test_lib__common__cache_c(void) -{ - h2o_cache_t *cache = h2o_cache_create(H2O_CACHE_FLAG_EARLY_UPDATE, 1024, 1000, on_destroy); - uint64_t now = 0; - h2o_iovec_t key = {H2O_STRLIT("key")}; - h2o_cache_ref_t *ref; - - /* fetch "key" */ - ref = h2o_cache_fetch(cache, now, key, 0); - ok(ref == NULL); - - /* set "key" => "value" */ - h2o_cache_set(cache, now, key, 0, h2o_iovec_init(H2O_STRLIT("value"))); - - /* delete "key" */ - h2o_cache_delete(cache, now, key, 0); - ref = h2o_cache_fetch(cache, now, key, 0); - ok(ref == NULL); - - /* set "key" => "value" */ - h2o_cache_set(cache, now, key, 0, h2o_iovec_init(H2O_STRLIT("value"))); - - /* fetch "key" */ - ref = h2o_cache_fetch(cache, now, key, 0); - ok(h2o_memis(ref->value.base, ref->value.len, H2O_STRLIT("value"))); - h2o_cache_release(cache, ref); - - /* proceed 999ms */ - now += 999; - - /* should fail to fetch "key" */ - ref = h2o_cache_fetch(cache, now, key, 0); - ok(ref == NULL); - - /* refetch should succeed */ - ref = h2o_cache_fetch(cache, now, key, 0); - ok(h2o_memis(ref->value.base, ref->value.len, H2O_STRLIT("value"))); - h2o_cache_release(cache, ref); - - /* set "key" to "value2" */ - h2o_cache_set(cache, now, key, 0, h2o_iovec_init(H2O_STRLIT("value2"))); - - /* fetch */ - ref = h2o_cache_fetch(cache, now, key, 0); - ok(h2o_memis(ref->value.base, ref->value.len, H2O_STRLIT("value2"))); - h2o_cache_release(cache, ref); - - ok(bytes_destroyed == 10); - - h2o_cache_destroy(cache); - - ok(bytes_destroyed == 16); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/common/hostinfo.c b/web/server/h2o/libh2o/t/00unit/lib/common/hostinfo.c deleted file mode 100644 index 9d8e5fe7c..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/common/hostinfo.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <arpa/inet.h> -#include "../../test.h" -#include "../../../../lib/common/hostinfo.c" - -static void test_aton(void) -{ - struct in_addr addr; - - memset(&addr, 0x55, sizeof(addr)); - ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("127.0.0.1")}, &addr) == 0); - ok(ntohl(addr.s_addr) == 0x7f000001); - - memset(&addr, 0x55, sizeof(addr)); - ok(h2o_hostinfo_aton((h2o_iovec_t){"127.0.0.12", sizeof("127.0.0.1") - 1}, &addr) == 0); - ok(ntohl(addr.s_addr) == 0x7f000001); - - memset(&addr, 0x55, sizeof(addr)); - ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("255.001.002.128")}, &addr) == 0); - ok(ntohl(addr.s_addr) == 0xff010280); - - ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("127.0.0.z")}, &addr) != 0); - ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("256.0.0.0")}, &addr) != 0); - ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("0001.0.0.0")}, &addr) != 0); - ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("0.0..1")}, &addr) != 0); - ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("1.0.0.0.")}, &addr) != 0); -} - -void test_lib__common__hostinfo_c(void) -{ - /* TODO add tests for h2o_hostinfo_getaddr and related */ - subtest("aton", test_aton); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/common/multithread.c b/web/server/h2o/libh2o/t/00unit/lib/common/multithread.c deleted file mode 100644 index 683e489a5..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/common/multithread.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <stdlib.h> -#include "../../test.h" -#include "../../../../lib/common/multithread.c" - -struct st_thread_t { - h2o_loop_t *loop; - h2o_multithread_queue_t *queue; -}; - -struct { - h2o_loop_t *loop; - h2o_multithread_queue_t *queue; - h2o_multithread_receiver_t pong_receiver; - h2o_multithread_receiver_t shutdown_receiver; - int received_shutdown; -} main_thread; - -struct { - h2o_loop_t *loop; - h2o_multithread_queue_t *queue; - h2o_multithread_receiver_t ping_receiver; - size_t num_ping_received; - int should_exit; -} worker_thread; - -static void send_empty_message(h2o_multithread_receiver_t *receiver) -{ - h2o_multithread_message_t *message = h2o_mem_alloc(sizeof(*message)); - *message = (h2o_multithread_message_t){{NULL}}; - h2o_multithread_send_message(receiver, message); -} - -static void pop_empty_message(h2o_linklist_t *list) -{ - h2o_multithread_message_t *message = H2O_STRUCT_FROM_MEMBER(h2o_multithread_message_t, link, list->next); - h2o_linklist_unlink(&message->link); - free(message); -} - -static void on_ping(h2o_multithread_receiver_t *receiver, h2o_linklist_t *list) -{ - while (!h2o_linklist_is_empty(list)) { - pop_empty_message(list); - if (++worker_thread.num_ping_received < 100) { - send_empty_message(&main_thread.pong_receiver); - } else { - send_empty_message(&main_thread.shutdown_receiver); - worker_thread.should_exit = 1; - } - } -} - -static void on_pong(h2o_multithread_receiver_t *receiver, h2o_linklist_t *list) -{ - while (!h2o_linklist_is_empty(list)) { - pop_empty_message(list); - send_empty_message(&worker_thread.ping_receiver); - } -} - -static void on_shutdown(h2o_multithread_receiver_t *receiver, h2o_linklist_t *list) -{ - while (!h2o_linklist_is_empty(list)) - pop_empty_message(list); - main_thread.received_shutdown = 1; -} - -#if H2O_USE_LIBUV -static h2o_loop_t *create_loop(void) -{ - h2o_loop_t *loop = h2o_mem_alloc(sizeof(*loop)); - uv_loop_init(loop); - return loop; -} - -static void destroy_loop(h2o_loop_t *loop) -{ - uv_run(loop, UV_RUN_NOWAIT); - uv_loop_close(loop); - free(loop); -} -#else -#define create_loop h2o_evloop_create -#define destroy_loop(loop) (0) /* FIXME */ -#endif - -static void *worker_main(void *_unused) -{ - while (!worker_thread.should_exit) { -#if H2O_USE_LIBUV - uv_run(worker_thread.loop, UV_RUN_ONCE); -#else - h2o_evloop_run(worker_thread.loop, INT32_MAX); -#endif - } - - return NULL; -} - -void test_lib__common__multithread_c(void) -{ - pthread_t tid; - - main_thread.loop = create_loop(); - main_thread.queue = h2o_multithread_create_queue(main_thread.loop); - h2o_multithread_register_receiver(main_thread.queue, &main_thread.pong_receiver, on_pong); - h2o_multithread_register_receiver(main_thread.queue, &main_thread.shutdown_receiver, on_shutdown); - worker_thread.loop = create_loop(); - worker_thread.queue = h2o_multithread_create_queue(worker_thread.loop); - h2o_multithread_register_receiver(worker_thread.queue, &worker_thread.ping_receiver, on_ping); - - pthread_create(&tid, NULL, worker_main, NULL); - - /* send first message */ - send_empty_message(&worker_thread.ping_receiver); - - while (!main_thread.received_shutdown) { -#if H2O_USE_LIBUV - uv_run(main_thread.loop, UV_RUN_ONCE); -#else - h2o_evloop_run(main_thread.loop, INT32_MAX); -#endif - } - - pthread_join(tid, NULL); - - h2o_multithread_unregister_receiver(worker_thread.queue, &worker_thread.ping_receiver); - h2o_multithread_destroy_queue(worker_thread.queue); - destroy_loop(worker_thread.loop); - h2o_multithread_unregister_receiver(main_thread.queue, &main_thread.pong_receiver); - h2o_multithread_unregister_receiver(main_thread.queue, &main_thread.shutdown_receiver); - h2o_multithread_destroy_queue(main_thread.queue); - destroy_loop(main_thread.loop); - - ok(1); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/common/serverutil.c b/web/server/h2o/libh2o/t/00unit/lib/common/serverutil.c deleted file mode 100644 index dfbb27156..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/common/serverutil.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <stdlib.h> -#include "../../test.h" -#include "../../../../lib/common/serverutil.c" - -static void test_server_starter(void) -{ - int *fds; - size_t num_fds; - - unsetenv("SERVER_STARTER_PORT"); - num_fds = h2o_server_starter_get_fds(&fds); - ok(num_fds == 0); - - setenv("SERVER_STARTER_PORT", "0.0.0.0:80=3", 1); - num_fds = h2o_server_starter_get_fds(&fds); - ok(num_fds == 1); - ok(fds[0] == 3); - - setenv("SERVER_STARTER_PORT", "0.0.0.0:80=3;/tmp/foo.sock=4", 1); - num_fds = h2o_server_starter_get_fds(&fds); - ok(num_fds == 2); - ok(fds[0] == 3); - ok(fds[1] == 4); - - setenv("SERVER_STARTER_PORT", "0.0.0.0:80=foo", 1); - num_fds = h2o_server_starter_get_fds(&fds); - ok(num_fds == SIZE_MAX); - - /* without bind address */ - setenv("SERVER_STARTER_PORT", "50908=4", 1); - num_fds = h2o_server_starter_get_fds(&fds); - ok(num_fds == 1); - ok(fds[0] == 4); -} - -static void test_read_command(void) -{ - char *argv[] = {"t/00unit/assets/read_command.pl", "hello", NULL}; - h2o_buffer_t *resp; - int ret, status; - - /* success */ - ret = h2o_read_command(argv[0], argv, &resp, &status); - ok(ret == 0); - if (ret == 0) { - ok(WIFEXITED(status)); - ok(WEXITSTATUS(status) == 0); - ok(h2o_memis(resp->bytes, resp->size, H2O_STRLIT("hello"))); - h2o_buffer_dispose(&resp); - } - - /* exit status */ - setenv("READ_COMMAND_EXIT_STATUS", "75", 1); - ret = h2o_read_command(argv[0], argv, &resp, &status); - ok(ret == 0); - if (ret == 0) { - ok(WIFEXITED(status)); - ok(WEXITSTATUS(status) == 75); - ok(h2o_memis(resp->bytes, resp->size, H2O_STRLIT("hello"))); - h2o_buffer_dispose(&resp); - } - unsetenv("READ_COMMAND_EXIT_STATUS"); - - /* command not an executable */ - argv[0] = "t/00unit/assets"; - ret = h2o_read_command(argv[0], argv, &resp, &status); - ok(ret != 0 || (ret == 0 && WIFEXITED(status) && WEXITSTATUS(status) == 127)); -} - -void test_lib__common__serverutil_c(void) -{ - subtest("server-starter", test_server_starter); - subtest("read-command", test_read_command); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/common/socket.c b/web/server/h2o/libh2o/t/00unit/lib/common/socket.c deleted file mode 100644 index 89aae515c..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/common/socket.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright (c) 2015 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <stdlib.h> -#include "../../test.h" -#include "../../../../lib/common/socket.c" - -static void test_on_alpn_select(void) -{ - static const h2o_iovec_t protocols[] = {{H2O_STRLIT("h2")}, {H2O_STRLIT("h2-16")}, {H2O_STRLIT("h2-14")}, {NULL}}; - const unsigned char *out; - unsigned char outlen; - int ret; - - ret = on_alpn_select(NULL, &out, &outlen, (const unsigned char *)H2O_STRLIT("\3foo"), (void *)protocols); - ok(ret == SSL_TLSEXT_ERR_NOACK); - - ret = on_alpn_select(NULL, &out, &outlen, (const unsigned char *)H2O_STRLIT("\2h2"), (void *)protocols); - ok(ret == SSL_TLSEXT_ERR_OK); - ok(h2o_memis(out, outlen, H2O_STRLIT("h2"))); - - ret = on_alpn_select(NULL, &out, &outlen, (const unsigned char *)H2O_STRLIT("\5h2-14\5h2-16\2h2"), (void *)protocols); - ok(ret == SSL_TLSEXT_ERR_OK); - ok(h2o_memis(out, outlen, H2O_STRLIT("h2"))); - - ret = on_alpn_select(NULL, &out, &outlen, (const unsigned char *)H2O_STRLIT("\5h2-14\5h2-16"), (void *)protocols); - ok(ret == SSL_TLSEXT_ERR_OK); - ok(h2o_memis(out, outlen, H2O_STRLIT("h2-16"))); -} - -static void test_sliding_counter(void) -{ - h2o_sliding_counter_t counter = {0}; - size_t i; - - h2o_sliding_counter_start(&counter, 100); - h2o_sliding_counter_stop(&counter, 80 + 100); - ok(counter.average == 10); - - for (i = 0; i != 7; ++i) { - h2o_sliding_counter_start(&counter, 1); - h2o_sliding_counter_stop(&counter, 81); - } - ok(counter.average == 80); - - h2o_sliding_counter_start(&counter, 1000); - h2o_sliding_counter_stop(&counter, 1000 + 1000 * 8 - 80 * 7); - ok(counter.average == 1000); - - for (i = 0; i != 8; ++i) { - h2o_sliding_counter_start(&counter, 1); - h2o_sliding_counter_stop(&counter, 11); - } - ok(counter.average == 10); -} - -static struct { - struct { - int ret; - } fetch_tcp_info; - struct { - int ret; - unsigned cur; - size_t call_cnt; - } minimize_notsent_lowat; - struct { - unsigned long ret; - } get_cipher; -} cb_ret_vars; - -static int test_adjust_notsent_lowat(h2o_socket_t *sock, unsigned notsent_lowat) -{ - cb_ret_vars.minimize_notsent_lowat.cur = notsent_lowat; - ++cb_ret_vars.minimize_notsent_lowat.call_cnt; - return cb_ret_vars.minimize_notsent_lowat.ret; -} - -static void test_prepare_for_latency_optimization(void) -{ - struct st_h2o_socket_ssl_t sock_ssl = {NULL, NULL, NULL, 5 + 8 + 16 /* GCM overhead */}; - h2o_socket_t sock = {NULL, &sock_ssl}; - h2o_socket_latency_optimization_conditions_t cond = {UINT_MAX, 10, 65535}; - - /* option disabled, or if rtt is too small */ - memset(&sock._latency_optimization, 0, sizeof(sock._latency_optimization)); - memset(&cb_ret_vars, 0, sizeof(cb_ret_vars)); - cb_ret_vars.fetch_tcp_info.ret = 0; - cb_ret_vars.get_cipher.ret = TLS1_CK_RSA_WITH_AES_128_GCM_SHA256; - prepare_for_latency_optimized_write(&sock, &cond, 50000 /* rtt */, 1400 /* mss */, 10 /* cwnd_size */, 6 /* cwnd_avail */, 4, - test_adjust_notsent_lowat); - ok(sock._latency_optimization.state == H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_DISABLED); - ok(sock._latency_optimization.suggested_tls_payload_size == 16384); - ok(sock._latency_optimization.suggested_write_size == SIZE_MAX); - ok(cb_ret_vars.minimize_notsent_lowat.call_cnt == 0); - - /* trigger optimiziation */ - memset(&sock._latency_optimization, 0, sizeof(sock._latency_optimization)); - cond.min_rtt = 25; /* 25 ms */ - prepare_for_latency_optimized_write(&sock, &cond, 50000 /* rtt */, 1400 /* mss */, 10 /* cwnd_size */, 6 /* cwnd_avail */, 4, - test_adjust_notsent_lowat); - ok(sock._latency_optimization.state == H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_DETERMINED); - ok(sock._latency_optimization.suggested_tls_payload_size == 1400 - (5 + 8 + 16)); - ok(sock._latency_optimization.suggested_write_size == (1400 - (5 + 8 + 16)) * (10 - 5 + 1)); - ok(cb_ret_vars.minimize_notsent_lowat.call_cnt == 1); - ok(cb_ret_vars.minimize_notsent_lowat.cur == 1); - - /* recalculate with an updated cwnd,unacked */ - sock._latency_optimization.state = H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_NEEDS_UPDATE; - prepare_for_latency_optimized_write(&sock, &cond, 50000 /* rtt */, 1400 /* mss */, 14 /* cwnd_size */, 12 /* cwnd_avail */, 4, - test_adjust_notsent_lowat); - ok(sock._latency_optimization.state == H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_DETERMINED); - ok(sock._latency_optimization.suggested_tls_payload_size == 1400 - (5 + 8 + 16)); - ok(sock._latency_optimization.suggested_write_size == (1400 - (5 + 8 + 16)) * (14 - 3 + 1)); - ok(cb_ret_vars.minimize_notsent_lowat.call_cnt == 1); - ok(cb_ret_vars.minimize_notsent_lowat.cur == 1); - - /* switches to B/W optimization when CWND becomes greater */ - sock._latency_optimization.state = H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_NEEDS_UPDATE; - prepare_for_latency_optimized_write(&sock, &cond, 50000 /* rtt */, 1400 /* mss */, (65535 / 1400) + 1 /* cwnd_size */, - (65535 / 1400) + 1 /* cwnd_avail */, 4, test_adjust_notsent_lowat); - ok(sock._latency_optimization.state == H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_DETERMINED); - ok(sock._latency_optimization.suggested_tls_payload_size == 16384); - ok(sock._latency_optimization.suggested_write_size == SIZE_MAX); - ok(cb_ret_vars.minimize_notsent_lowat.call_cnt == 2); - ok(cb_ret_vars.minimize_notsent_lowat.cur == 0); - - /* switches back to latency optimization when CWND becomes small */ - sock._latency_optimization.state = H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_NEEDS_UPDATE; - prepare_for_latency_optimized_write(&sock, &cond, 50000 /* rtt */, 1400 /* mss */, 8 /* cwnd_size */, 6 /* cwnd_avail */, 4, - test_adjust_notsent_lowat); - ok(sock._latency_optimization.state == H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_DETERMINED); - ok(sock._latency_optimization.suggested_tls_payload_size == 1400 - (5 + 8 + 16)); - ok(sock._latency_optimization.suggested_write_size == (1400 - (5 + 8 + 16)) * (8 - 3 + 1)); - ok(cb_ret_vars.minimize_notsent_lowat.call_cnt == 3); - ok(cb_ret_vars.minimize_notsent_lowat.cur == 1); - - /* switches back to B/W optimization when loop time becomes greater than threshold */ - sock._latency_optimization.state = H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_NEEDS_UPDATE; - prepare_for_latency_optimized_write(&sock, &cond, 50000 /* rtt */, 1400 /* mss */, 8 /* cwnd_size */, 6 /* cwnd_avail */, 6, - test_adjust_notsent_lowat); - ok(sock._latency_optimization.state == H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_DISABLED); - ok(sock._latency_optimization.suggested_tls_payload_size == 16384); - ok(sock._latency_optimization.suggested_write_size == SIZE_MAX); - ok(cb_ret_vars.minimize_notsent_lowat.call_cnt == 4); - ok(cb_ret_vars.minimize_notsent_lowat.cur == 0); -} - -void test_lib__common__socket_c(void) -{ - subtest("on_alpn_select", test_on_alpn_select); - subtest("sliding_counter", test_sliding_counter); - subtest("prepare_for_latency_optimization", test_prepare_for_latency_optimization); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/common/string.c b/web/server/h2o/libh2o/t/00unit/lib/common/string.c deleted file mode 100644 index 464506e3c..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/common/string.c +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include "../../test.h" -#include "../../../../lib/common/string.c" - -static void test_strstr(void) -{ - ok(h2o_strstr("abcd", 4, "bc", 2) == 1); - ok(h2o_strstr("abcd", 3, "bc", 2) == 1); - ok(h2o_strstr("abcd", 2, "bc", 2) == -1); -} - -static void test_stripws(void) -{ - h2o_iovec_t t; - - t = h2o_str_stripws(H2O_STRLIT("")); - ok(h2o_memis(t.base, t.len, H2O_STRLIT(""))); - t = h2o_str_stripws(H2O_STRLIT("hello world")); - ok(h2o_memis(t.base, t.len, H2O_STRLIT("hello world"))); - t = h2o_str_stripws(H2O_STRLIT(" hello world")); - ok(h2o_memis(t.base, t.len, H2O_STRLIT("hello world"))); - t = h2o_str_stripws(H2O_STRLIT("hello world ")); - ok(h2o_memis(t.base, t.len, H2O_STRLIT("hello world"))); - t = h2o_str_stripws(H2O_STRLIT(" hello world ")); - ok(h2o_memis(t.base, t.len, H2O_STRLIT("hello world"))); - t = h2o_str_stripws(H2O_STRLIT(" ")); - ok(h2o_memis(t.base, t.len, H2O_STRLIT(""))); -} - -static void test_get_filext(void) -{ - h2o_iovec_t ext; - - ext = h2o_get_filext(H2O_STRLIT("/abc.txt")); - ok(h2o_memis(ext.base, ext.len, H2O_STRLIT("txt"))); - ext = h2o_get_filext(H2O_STRLIT("/abc.txt.gz")); - ok(h2o_memis(ext.base, ext.len, H2O_STRLIT("gz"))); - ext = h2o_get_filext(H2O_STRLIT("/abc.")); - ok(h2o_memis(ext.base, ext.len, H2O_STRLIT(""))); - ext = h2o_get_filext(H2O_STRLIT("/abc")); - ok(ext.base == NULL); - ext = h2o_get_filext(H2O_STRLIT("/abc.def/abc")); - ok(ext.base == NULL); - ext = h2o_get_filext(H2O_STRLIT("/abc.def/")); - ok(ext.base == NULL); -} - -static void test_next_token(void) -{ - h2o_iovec_t iter; - const char *token; - size_t token_len; - -#define NEXT() \ - if ((token = h2o_next_token(&iter, ',', &token_len, NULL)) == NULL) { \ - ok(0); \ - return; \ - } - - iter = h2o_iovec_init(H2O_STRLIT("public, max-age=86400, must-revalidate")); - NEXT(); - ok(h2o_memis(token, token_len, H2O_STRLIT("public"))); - NEXT(); - ok(h2o_memis(token, token_len, H2O_STRLIT("max-age=86400"))); - NEXT(); - ok(h2o_memis(token, token_len, H2O_STRLIT("must-revalidate"))); - token = h2o_next_token(&iter, ',', &token_len, NULL); - ok(token == NULL); - - iter = h2o_iovec_init(H2O_STRLIT(" public ,max-age=86400 ,")); - NEXT(); - ok(h2o_memis(token, token_len, H2O_STRLIT("public"))); - NEXT(); - ok(h2o_memis(token, token_len, H2O_STRLIT("max-age=86400"))); - token = h2o_next_token(&iter, ',', &token_len, NULL); - ok(token == NULL); - - iter = h2o_iovec_init(H2O_STRLIT("")); - token = h2o_next_token(&iter, ',', &token_len, NULL); - ok(token == NULL); - - iter = h2o_iovec_init(H2O_STRLIT(", ,a, ")); - NEXT(); - ok(token_len == 0); - NEXT(); - ok(token_len == 0); - NEXT(); - ok(h2o_memis(token, token_len, H2O_STRLIT("a"))); - token = h2o_next_token(&iter, ',', &token_len, NULL); - ok(token == NULL); - -#undef NEXT -} - -static void test_next_token2(void) -{ - h2o_iovec_t iter, value; - const char *name; - size_t name_len; - -#define NEXT() \ - if ((name = h2o_next_token(&iter, ',', &name_len, &value)) == NULL) { \ - ok(0); \ - return; \ - } - - iter = h2o_iovec_init(H2O_STRLIT("public, max-age=86400, must-revalidate")); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT("public"))); - ok(value.base == NULL); - ok(value.len == 0); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT("max-age"))); - ok(h2o_memis(value.base, value.len, H2O_STRLIT("86400"))); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT("must-revalidate"))); - ok(value.base == NULL); - ok(value.len == 0); - name = h2o_next_token(&iter, ',', &name_len, &value); - ok(name == NULL); - - iter = h2o_iovec_init(H2O_STRLIT("public, max-age = 86400 = c , must-revalidate=")); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT("public"))); - ok(value.base == NULL); - ok(value.len == 0); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT("max-age"))); - ok(h2o_memis(value.base, value.len, H2O_STRLIT("86400 = c"))); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT("must-revalidate"))); - name = h2o_next_token(&iter, ',', &name_len, &value); - ok(h2o_memis(value.base, value.len, H2O_STRLIT(""))); - -#undef NEXT -} - -static void test_next_token3(void) -{ - h2o_iovec_t iter, value; - const char *name; - size_t name_len; - -#define NEXT() \ - if ((name = h2o_next_token(&iter, ';', &name_len, &value)) == NULL) { \ - ok(0); \ - return; \ - } - - iter = h2o_iovec_init(H2O_STRLIT("</foo.css>; rel=preload; xxx=,</bar.js>, </zzz.js>")); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT("</foo.css>"))); - ok(value.base == NULL); - ok(value.len == 0); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT("rel"))); - ok(h2o_memis(value.base, value.len, H2O_STRLIT("preload"))); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT("xxx"))); - ok(value.base != NULL); /* xxx _has_ a value! */ - ok(value.len == 0); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT(","))); - ok(value.base == NULL); - ok(value.len == 0); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT("</bar.js>"))); - ok(value.base == NULL); - ok(value.len == 0); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT(","))); - ok(value.base == NULL); - ok(value.len == 0); - NEXT(); - ok(h2o_memis(name, name_len, H2O_STRLIT("</zzz.js>"))); - ok(value.base == NULL); - ok(value.len == 0); - name = h2o_next_token(&iter, ',', &name_len, &value); - ok(name == NULL); - -#undef NEXT -} - -static void test_decode_base64(void) -{ - h2o_mem_pool_t pool; - char buf[256]; - - h2o_mem_init_pool(&pool); - - h2o_iovec_t src = {H2O_STRLIT("The quick brown fox jumps over the lazy dog.")}, decoded; - h2o_base64_encode(buf, (const uint8_t *)src.base, src.len, 1); - ok(strcmp(buf, "VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4") == 0); - decoded = h2o_decode_base64url(&pool, buf, strlen(buf)); - ok(src.len == decoded.len); - ok(strcmp(decoded.base, src.base) == 0); - - h2o_mem_clear_pool(&pool); -} - -static void test_htmlescape(void) -{ - h2o_mem_pool_t pool; - h2o_mem_init_pool(&pool); - -#define TEST(src, expected) \ - do { \ - h2o_iovec_t escaped = h2o_htmlescape(&pool, H2O_STRLIT(src)); \ - ok(h2o_memis(escaped.base, escaped.len, H2O_STRLIT(expected))); \ - } while (0) - - TEST("hello world", "hello world"); - TEST("x < y", "x < y"); - TEST("\0\"&'<>", "\0"&'<>"); - -#undef TEST - - h2o_mem_clear_pool(&pool); -} - -static void test_uri_escape(void) -{ - h2o_mem_pool_t pool; - h2o_mem_init_pool(&pool); - -#define TEST(src, preserve, expected) \ - do { \ - h2o_iovec_t escaped = h2o_uri_escape(&pool, H2O_STRLIT(src), preserve); \ - ok(h2o_memis(escaped.base, escaped.len, H2O_STRLIT(expected))); \ - } while (0) - - TEST("abc", NULL, "abc"); - TEST("a/c", NULL, "a%2Fc"); - TEST("a/c", "/", "a/c"); - TEST("\xe3\x81\x82", NULL, "%E3%81%82"); - TEST("a\0!", NULL, "a%00!"); - TEST("a/\0!", "/", "a/%00!"); - -#undef TEST - - h2o_mem_clear_pool(&pool); -} - -static void test_at_position(void) -{ - char buf[160]; - int ret; - - /* normal cases */ - ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 1, 1); - ok(ret == 0); - ok(strcmp(buf, "hello\n^\n") == 0); - - ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 1, 5); - ok(ret == 0); - ok(strcmp(buf, "hello\n ^\n") == 0); - - ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 1, 6); - ok(ret == 0); - ok(strcmp(buf, "hello\n ^\n") == 0); - - ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 1, 7); - ok(ret == 0); - ok(strcmp(buf, "hello\n ^\n") == 0); - - ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 2, 1); - ok(ret == 0); - ok(strcmp(buf, "world\n^\n") == 0); - - ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 2, 5); - ok(ret == 0); - ok(strcmp(buf, "world\n ^\n") == 0); - - ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 1, 7); - ok(ret == 0); - ok(strcmp(buf, "hello\n ^\n") == 0); - - ret = h2o_str_at_position( - buf, H2O_STRLIT("_________1_________2_________3_________4_________5_________6_________7_________\nworld\n"), 1, 5); - ok(ret == 0); - ok(strcmp(buf, "_________1_________2_________3_________4_________5_________6_________7______\n ^\n") == 0); - - ret = h2o_str_at_position( - buf, H2O_STRLIT("_________1_________2_________3_________4_________5_________6_________7_________\nworld\n"), 1, 60); - ok(ret == 0); - ok(strcmp(buf, "_________3_________4_________5_________6_________7_________\n ^\n") == 0); - - ret = h2o_str_at_position(buf, H2O_STRLIT("hello"), 1, 20); - ok(ret == 0); - ok(strcmp(buf, "hello\n ^\n") == 0); - - /* error cases */ - ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 0, 1); - ok(ret != 0); - - ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 1, 0); - ok(ret != 0); - - ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 4, 1); - ok(ret != 0); -} - -void test_lib__common__string_c(void) -{ - subtest("strstr", test_strstr); - subtest("stripws", test_stripws); - subtest("get_filext", test_get_filext); - subtest("next_token", test_next_token); - subtest("next_token2", test_next_token2); - subtest("next_token3", test_next_token3); - subtest("decode_base64", test_decode_base64); - subtest("htmlescape", test_htmlescape); - subtest("uri_escape", test_uri_escape); - subtest("at_position", test_at_position); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/common/time.c b/web/server/h2o/libh2o/t/00unit/lib/common/time.c deleted file mode 100644 index c6fc12ff9..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/common/time.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include "../../test.h" -#include "../../../../lib/common/time.c" - -void test_lib__common__time_c(void) -{ - struct tm tm = { - 56, /* sec */ - 34, /* min */ - 12, /* hour */ - 4, /* 4th */ - 1, /* feb */ - 115, /* 2015 */ - 3 /* Wed */ - }; - char buf[H2O_TIMESTR_RFC1123_LEN + 1]; - - h2o_time2str_rfc1123(buf, &tm); - ok(strcmp(buf, "Wed, 04 Feb 2015 12:34:56 GMT") == 0); - tm = (struct tm){0}; - h2o_time_parse_rfc1123(buf, H2O_TIMESTR_RFC1123_LEN, &tm); - ok(tm.tm_year == 115); - ok(tm.tm_mon == 1); - ok(tm.tm_mday == 4); - ok(tm.tm_hour == 12); - ok(tm.tm_min == 34); - ok(tm.tm_sec == 56); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/common/url.c b/web/server/h2o/libh2o/t/00unit/lib/common/url.c deleted file mode 100644 index ce1676001..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/common/url.c +++ /dev/null @@ -1,662 +0,0 @@ -/* - * Copyright (c) 2014,2015 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include "../../test.h" -#include "../../../../lib/common/url.c" - -static void test_normalize_path(void) -{ - h2o_mem_pool_t pool; - - h2o_mem_init_pool(&pool); - - size_t q; - size_t *norm_indexes = NULL; - h2o_iovec_t input; - h2o_iovec_t b; - - input = h2o_iovec_init(NULL, 0); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 1); - ok(memcmp(b.base, H2O_STRLIT("/")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes == NULL); - - input = h2o_iovec_init(H2O_STRLIT("a")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 2); - ok(memcmp(b.base, H2O_STRLIT("/a")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 0); - ok(norm_indexes[1] == 1); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("aa")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 3); - ok(memcmp(b.base, H2O_STRLIT("/aa")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 0); - ok(norm_indexes[1] == 1); - ok(norm_indexes[2] == 2); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 1); - ok(memcmp(b.base, H2O_STRLIT("/")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes == NULL); - - input = h2o_iovec_init(H2O_STRLIT("/.")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 1); - ok(memcmp(b.base, H2O_STRLIT("/")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/./")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 1); - ok(memcmp(b.base, H2O_STRLIT("/")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/..")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 1); - ok(memcmp(b.base, H2O_STRLIT("/")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/../")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 1); - ok(memcmp(b.base, H2O_STRLIT("/")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/abc")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 4); - ok(memcmp(b.base, H2O_STRLIT("/abc")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes == NULL); - - input = h2o_iovec_init(H2O_STRLIT("/abc")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 4); - ok(memcmp(b.base, H2O_STRLIT("/abc")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes == NULL); - - input = h2o_iovec_init(H2O_STRLIT("/abc/../def")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 4); - ok(memcmp(b.base, H2O_STRLIT("/def")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 9); - ok(norm_indexes[2] == 10); - ok(norm_indexes[3] == 11); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/abc/../../def")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 4); - ok(memcmp(b.base, H2O_STRLIT("/def")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 12); - ok(norm_indexes[2] == 13); - ok(norm_indexes[3] == 14); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/abc/./def")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 8); - ok(memcmp(b.base, H2O_STRLIT("/abc/def")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 2); - ok(norm_indexes[2] == 3); - ok(norm_indexes[3] == 4); - ok(norm_indexes[4] == 5); - ok(norm_indexes[5] == 8); - ok(norm_indexes[6] == 9); - ok(norm_indexes[7] == 10); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/abc/././def")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 8); - ok(memcmp(b.base, H2O_STRLIT("/abc/def")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 2); - ok(norm_indexes[2] == 3); - ok(norm_indexes[3] == 4); - ok(norm_indexes[4] == 5); - ok(norm_indexes[5] == 10); - ok(norm_indexes[6] == 11); - ok(norm_indexes[7] == 12); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/abc/def/ghi/../..")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 5); - ok(memcmp(b.base, H2O_STRLIT("/abc/")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 2); - ok(norm_indexes[2] == 3); - ok(norm_indexes[3] == 4); - ok(norm_indexes[4] == 5); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/abc/def/./.")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 9); - ok(memcmp(b.base, H2O_STRLIT("/abc/def/")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 2); - ok(norm_indexes[2] == 3); - ok(norm_indexes[3] == 4); - ok(norm_indexes[4] == 5); - ok(norm_indexes[5] == 6); - ok(norm_indexes[6] == 7); - ok(norm_indexes[7] == 8); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/abc/def/ghi/../.")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 9); - ok(memcmp(b.base, H2O_STRLIT("/abc/def/")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 2); - ok(norm_indexes[2] == 3); - ok(norm_indexes[3] == 4); - ok(norm_indexes[4] == 5); - ok(norm_indexes[5] == 6); - ok(norm_indexes[6] == 7); - ok(norm_indexes[7] == 8); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/abc/def/./..")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 5); - ok(memcmp(b.base, H2O_STRLIT("/abc/")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 2); - ok(norm_indexes[2] == 3); - ok(norm_indexes[3] == 4); - ok(norm_indexes[4] == 5); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/abc/def/..")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 5); - ok(memcmp(b.base, H2O_STRLIT("/abc/")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 2); - ok(norm_indexes[2] == 3); - ok(norm_indexes[3] == 4); - ok(norm_indexes[4] == 5); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/abc/def/.")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 9); - ok(memcmp(b.base, H2O_STRLIT("/abc/def/")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 2); - ok(norm_indexes[2] == 3); - ok(norm_indexes[3] == 4); - ok(norm_indexes[4] == 5); - ok(norm_indexes[5] == 6); - ok(norm_indexes[6] == 7); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/abc?xx")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 4); - ok(memcmp(b.base, H2O_STRLIT("/abc")) == 0); - ok(q == 4); - ok(norm_indexes == NULL); - - input = h2o_iovec_init(H2O_STRLIT("/abc/../def?xx")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 4); - ok(memcmp(b.base, H2O_STRLIT("/def")) == 0); - ok(q == 11); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 9); - ok(norm_indexes[2] == 10); - ok(norm_indexes[3] == 11); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/a%62c")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 4); - ok(memcmp(b.base, H2O_STRLIT("/abc")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 2); - ok(norm_indexes[2] == 5); - ok(norm_indexes[3] == 6); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/a%6")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 4); - ok(memcmp(b.base, H2O_STRLIT("/a%6")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 2); - ok(norm_indexes[2] == 3); - ok(norm_indexes[3] == 4); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/a%6?")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 4); - ok(memcmp(b.base, H2O_STRLIT("/a%6")) == 0); - ok(q == 4); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 2); - ok(norm_indexes[2] == 3); - ok(norm_indexes[3] == 4); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/%25")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 2); - ok(memcmp(b.base, H2O_STRLIT("/%")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes != NULL); - ok(norm_indexes[0] == 1); - ok(norm_indexes[1] == 4); - norm_indexes = NULL; - - input = h2o_iovec_init(H2O_STRLIT("/abc//")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 6); - ok(memcmp(b.base, H2O_STRLIT("/abc//")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes == NULL); - - input = h2o_iovec_init(H2O_STRLIT("/abc//d")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 7); - ok(memcmp(b.base, H2O_STRLIT("/abc//d")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes == NULL); - - input = h2o_iovec_init(H2O_STRLIT("//")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 2); - ok(memcmp(b.base, H2O_STRLIT("//")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes == NULL); - - input = h2o_iovec_init(H2O_STRLIT("//abc")); - b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); - ok(b.len == 5); - ok(memcmp(b.base, H2O_STRLIT("//abc")) == 0); - ok(q == SIZE_MAX); - ok(norm_indexes == NULL); - - h2o_mem_clear_pool(&pool); -} - -static void test_hostport(void) -{ - h2o_iovec_t input, host; - uint16_t port; - const char *ret; - - input = h2o_iovec_init(H2O_STRLIT("127.0.0.1")); - ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); - ok(ret == input.base + input.len); - ok(h2o_memis(host.base, host.len, H2O_STRLIT("127.0.0.1"))); - ok(port == 65535); - - input = h2o_iovec_init(H2O_STRLIT("127.0.0.1/")); - ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); - ok(strcmp(ret, "/") == 0); - ok(h2o_memis(host.base, host.len, H2O_STRLIT("127.0.0.1"))); - ok(port == 65535); - - input = h2o_iovec_init(H2O_STRLIT("127.0.0.1:8081/")); - ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); - ok(strcmp(ret, "/") == 0); - ok(h2o_memis(host.base, host.len, H2O_STRLIT("127.0.0.1"))); - ok(port == 8081); - - input = h2o_iovec_init(H2O_STRLIT("[::ffff:192.0.2.1]:8081/")); - ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); - ok(strcmp(ret, "/") == 0); - ok(h2o_memis(host.base, host.len, H2O_STRLIT("::ffff:192.0.2.1"))); - ok(port == 8081); - - input = h2o_iovec_init(H2O_STRLIT("[::ffff:192.0.2.1:8081/")); - ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); - ok(ret == NULL); - - input = h2o_iovec_init(H2O_STRLIT(":8081/")); - ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); - ok(ret == NULL); - - input = h2o_iovec_init(H2O_STRLIT("[]:8081/")); - ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); - ok(ret == NULL); -} - -static void test_parse(void) -{ - h2o_url_t parsed; - int ret; - - ret = h2o_url_parse("http://example.com/abc", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == &H2O_URL_SCHEME_HTTP); - ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("example.com"))); - ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("example.com"))); - ok(parsed._port == 65535); - ok(h2o_url_get_port(&parsed) == 80); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/abc"))); - - ret = h2o_url_parse("http://example.com", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == &H2O_URL_SCHEME_HTTP); - ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("example.com"))); - ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("example.com"))); - ok(parsed._port == 65535); - ok(h2o_url_get_port(&parsed) == 80); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/"))); - - ret = h2o_url_parse("http://example.com:81/abc", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == &H2O_URL_SCHEME_HTTP); - ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("example.com:81"))); - ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("example.com"))); - ok(parsed._port == 81); - ok(h2o_url_get_port(&parsed) == 81); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/abc"))); - - ret = h2o_url_parse("http://example.com:81", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == &H2O_URL_SCHEME_HTTP); - ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("example.com:81"))); - ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("example.com"))); - ok(parsed._port == 81); - ok(h2o_url_get_port(&parsed) == 81); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/"))); - - ret = h2o_url_parse("https://example.com/abc", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == &H2O_URL_SCHEME_HTTPS); - ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("example.com"))); - ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("example.com"))); - ok(parsed._port == 65535); - ok(h2o_url_get_port(&parsed) == 443); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/abc"))); - - ret = h2o_url_parse("http:/abc", SIZE_MAX, &parsed); - ok(ret != 0); - - ret = h2o_url_parse("ftp://example.com/abc", SIZE_MAX, &parsed); - ok(ret != 0); - - ret = h2o_url_parse("http://abc:111111/def", SIZE_MAX, &parsed); - ok(ret != 0); - - ret = h2o_url_parse("http://[::ffff:192.0.2.128]", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == &H2O_URL_SCHEME_HTTP); - ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("[::ffff:192.0.2.128]"))); - ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("::ffff:192.0.2.128"))); - ok(parsed._port == 65535); - ok(h2o_url_get_port(&parsed) == 80); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/"))); - - ret = h2o_url_parse("https://[::ffff:192.0.2.128]/abc", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == &H2O_URL_SCHEME_HTTPS); - ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("[::ffff:192.0.2.128]"))); - ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("::ffff:192.0.2.128"))); - ok(parsed._port == 65535); - ok(h2o_url_get_port(&parsed) == 443); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/abc"))); - - ret = h2o_url_parse("https://[::ffff:192.0.2.128]:111/abc", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == &H2O_URL_SCHEME_HTTPS); - ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("[::ffff:192.0.2.128]:111"))); - ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("::ffff:192.0.2.128"))); - ok(parsed._port == 111); - ok(h2o_url_get_port(&parsed) == 111); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/abc"))); -} - -static void test_parse_relative(void) -{ - h2o_url_t parsed; - int ret; - - memset(&parsed, 0x55, sizeof(parsed)); - ret = h2o_url_parse_relative("abc", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == NULL); - ok(parsed.authority.base == NULL); - ok(parsed.host.base == NULL); - ok(parsed._port == 65535); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("abc"))); - - memset(&parsed, 0x55, sizeof(parsed)); - ret = h2o_url_parse_relative("/abc", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == NULL); - ok(parsed.authority.base == NULL); - ok(parsed.host.base == NULL); - ok(parsed._port == 65535); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/abc"))); - - memset(&parsed, 0x55, sizeof(parsed)); - ret = h2o_url_parse_relative("http:abc", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == &H2O_URL_SCHEME_HTTP); - ok(parsed.authority.base == NULL); - ok(parsed.host.base == NULL); - ok(parsed._port == 65535); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("abc"))); - - memset(&parsed, 0x55, sizeof(parsed)); - ret = h2o_url_parse_relative("//host", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == NULL); - ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("host"))); - ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("host"))); - ok(parsed._port == 65535); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/"))); - - memset(&parsed, 0x55, sizeof(parsed)); - ret = h2o_url_parse_relative("//host:12345/path", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == NULL); - ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("host:12345"))); - ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("host"))); - ok(parsed._port == 12345); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/path"))); - - memset(&parsed, 0x55, sizeof(parsed)); - ret = h2o_url_parse_relative("https://host:12345/path", SIZE_MAX, &parsed); - ok(ret == 0); - ok(parsed.scheme == &H2O_URL_SCHEME_HTTPS); - ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("host:12345"))); - ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("host"))); - ok(parsed._port == 12345); - ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/path"))); -} - -static void test_resolve(void) -{ - h2o_mem_pool_t pool; - h2o_url_t base, relative, resolved; - h2o_iovec_t final; - int ret; - - h2o_mem_init_pool(&pool); - - ret = h2o_url_parse("http://example.com/dir/index.html", SIZE_MAX, &base); - ok(ret == 0); - - ret = h2o_url_parse_relative("../assets/jquery.js", SIZE_MAX, &relative); - ok(ret == 0); - final = h2o_url_resolve(&pool, &base, &relative, &resolved); - ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/assets/jquery.js"))); - ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); - ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); - ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); - ok(resolved._port == 65535); - ok(h2o_url_get_port(&resolved) == 80); - ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/assets/jquery.js"))); - - ret = h2o_url_parse_relative("foo.html", SIZE_MAX, &relative); - ok(ret == 0); - final = h2o_url_resolve(&pool, &base, &relative, &resolved); - ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/dir/foo.html"))); - ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); - ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); - ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); - ok(resolved._port == 65535); - ok(h2o_url_get_port(&resolved) == 80); - ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/dir/foo.html"))); - - ret = h2o_url_parse_relative("./bar.txt", SIZE_MAX, &relative); - ok(ret == 0); - final = h2o_url_resolve(&pool, &base, &relative, &resolved); - ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/dir/bar.txt"))); - ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); - ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); - ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); - ok(resolved._port == 65535); - ok(h2o_url_get_port(&resolved) == 80); - ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/dir/bar.txt"))); - - ret = h2o_url_parse_relative("../../../traverse", SIZE_MAX, &relative); - ok(ret == 0); - final = h2o_url_resolve(&pool, &base, &relative, &resolved); - ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/traverse"))); - ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); - ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); - ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); - ok(resolved._port == 65535); - ok(h2o_url_get_port(&resolved) == 80); - ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/traverse"))); - - ret = h2o_url_parse_relative("http:foo.html", SIZE_MAX, &relative); - ok(ret == 0); - final = h2o_url_resolve(&pool, &base, &relative, &resolved); - ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/dir/foo.html"))); - ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); - ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); - ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); - ok(resolved._port == 65535); - ok(h2o_url_get_port(&resolved) == 80); - ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/dir/foo.html"))); - - ret = h2o_url_parse_relative("http:/icon.ico", SIZE_MAX, &relative); - ok(ret == 0); - final = h2o_url_resolve(&pool, &base, &relative, &resolved); - ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/icon.ico"))); - ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); - ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); - ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); - ok(resolved._port == 65535); - ok(h2o_url_get_port(&resolved) == 80); - ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/icon.ico"))); - - ret = h2o_url_parse_relative("https:/icon.ico", SIZE_MAX, &relative); - ok(ret == 0); - final = h2o_url_resolve(&pool, &base, &relative, &resolved); - ok(h2o_memis(final.base, final.len, H2O_STRLIT("https://example.com/icon.ico"))); - ok(resolved.scheme == &H2O_URL_SCHEME_HTTPS); - ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); - ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); - ok(resolved._port == 65535); - ok(h2o_url_get_port(&resolved) == 443); - ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/icon.ico"))); - - ret = h2o_url_parse_relative("//example.jp:81/icon.ico", SIZE_MAX, &relative); - ok(ret == 0); - final = h2o_url_resolve(&pool, &base, &relative, &resolved); - ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.jp:81/icon.ico"))); - ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); - ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.jp:81"))); - ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.jp"))); - ok(resolved._port == 81); - ok(h2o_url_get_port(&resolved) == 81); - ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/icon.ico"))); - - final = h2o_url_stringify(&pool, &base); - ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/dir/index.html"))); - - h2o_mem_clear_pool(&pool); -} - -void test_lib__common__url_c(void) -{ - subtest("normalize_path", test_normalize_path); - subtest("hostport", test_hostport); - subtest("parse", test_parse); - subtest("parse_relative", test_parse_relative); - subtest("resolve", test_resolve); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/core/headers.c b/web/server/h2o/libh2o/t/00unit/lib/core/headers.c deleted file mode 100644 index 97cea41e8..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/core/headers.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include "../../test.h" -#include "../../../../lib/core/headers.c" - -static void test_set_header_token(void) -{ - h2o_mem_pool_t pool; - h2o_headers_t headers = {NULL}; - - h2o_mem_init_pool(&pool); - - h2o_set_header_token(&pool, &headers, H2O_TOKEN_VARY, H2O_STRLIT("cookie")); - ok(headers.size == 1); - ok(headers.entries[0].name == &H2O_TOKEN_VARY->buf); - ok(h2o_memis(headers.entries[0].value.base, headers.entries[0].value.len, H2O_STRLIT("cookie"))); - h2o_set_header_token(&pool, &headers, H2O_TOKEN_VARY, H2O_STRLIT("accept-encoding")); - ok(headers.size == 1); - ok(headers.entries[0].name == &H2O_TOKEN_VARY->buf); - ok(h2o_memis(headers.entries[0].value.base, headers.entries[0].value.len, H2O_STRLIT("cookie, accept-encoding"))); - - headers.entries[0].value.base[0] = 'C'; - h2o_set_header_token(&pool, &headers, H2O_TOKEN_VARY, H2O_STRLIT("cookie")); - ok(headers.size == 1); - ok(headers.entries[0].name == &H2O_TOKEN_VARY->buf); - ok(h2o_memis(headers.entries[0].value.base, headers.entries[0].value.len, H2O_STRLIT("Cookie, accept-encoding"))); - - h2o_mem_clear_pool(&pool); -} - -void test_lib__core__headers_c(void) -{ - subtest("set_header_token", test_set_header_token); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/core/proxy.c b/web/server/h2o/libh2o/t/00unit/lib/core/proxy.c deleted file mode 100644 index 6f87db1fd..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/core/proxy.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include "../../test.h" -#include "../../../../lib/core/proxy.c" - -static void test_rewrite_location(void) -{ - h2o_url_t upstream; - h2o_mem_pool_t pool; - h2o_iovec_t ret; - - h2o_url_parse(H2O_STRLIT("http://realhost:81/real/"), &upstream); - - h2o_mem_init_pool(&pool); - - ret = rewrite_location(&pool, H2O_STRLIT("http://realhost:81/real/abc"), &upstream, &H2O_URL_SCHEME_HTTPS, - h2o_iovec_init(H2O_STRLIT("vhost:8443")), h2o_iovec_init(H2O_STRLIT("/virtual/"))); - ok(h2o_memis(ret.base, ret.len, H2O_STRLIT("https://vhost:8443/virtual/abc"))); - ret = rewrite_location(&pool, H2O_STRLIT("http://realhost:81/other/abc"), &upstream, &H2O_URL_SCHEME_HTTPS, - h2o_iovec_init(H2O_STRLIT("vhost:8443")), h2o_iovec_init(H2O_STRLIT("/virtual/"))); - ok(ret.base == NULL); - ok(ret.len == 0); - - h2o_mem_clear_pool(&pool); -} - -void test_lib__core__proxy_c() -{ - subtest("rewrite_location", test_rewrite_location); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/core/util.c b/web/server/h2o/libh2o/t/00unit/lib/core/util.c deleted file mode 100644 index a3141577d..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/core/util.c +++ /dev/null @@ -1,435 +0,0 @@ -/* - * Copyright (c) 2015 DeNA Co., Ltd., Kazuho Oku - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <string.h> -#include "../../test.h" -#include "../../../../lib/core/util.c" - -static void test_parse_proxy_line(void) -{ - char in[256]; - struct sockaddr_storage sa; - socklen_t salen; - ssize_t ret; - - strcpy(in, ""); - ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); - ok(ret == -2); - - strcpy(in, "PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r\nabc"); - ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); - ok(ret == strlen(in) - 3); - ok(salen == sizeof(struct sockaddr_in)); - ok(sa.ss_family == AF_INET); - ok(((struct sockaddr_in *)&sa)->sin_addr.s_addr == htonl(0xc0a80001)); - ok(((struct sockaddr_in *)&sa)->sin_port == htons(56324)); - - strcpy(in, "PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r"); - ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); - ok(ret == -2); - - strcpy(in, "PROXY TCP5"); - ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); - ok(ret == -1); - - strcpy(in, "PROXY UNKNOWN"); - ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); - ok(ret == -2); - - strcpy(in, "PROXY UNKNOWN\r\nabc"); - ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); - ok(ret == strlen(in) - 3); - ok(salen == 0); - - strcpy(in, "PROXY TCP6 ::1 ::1 56324 443\r\n"); - ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); - ok(ret == strlen(in)); - ok(salen == sizeof(struct sockaddr_in6)); - ok(sa.ss_family == AF_INET6); - ok(memcmp(&((struct sockaddr_in6 *)&sa)->sin6_addr, H2O_STRLIT("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1")) == 0); - ok(((struct sockaddr_in6 *)&sa)->sin6_port == htons(56324)); -} - -static void test_extract_push_path_from_link_header(void) -{ - h2o_mem_pool_t pool; - h2o_iovec_vector_t paths; - h2o_iovec_t path; - h2o_iovec_t filtered_value; - h2o_iovec_t base_path = {H2O_STRLIT("/basepath/")}, input_authority = {H2O_STRLIT("basehost")}, - other_authority = {H2O_STRLIT("otherhost")}; -#define INPUT base_path, &H2O_URL_SCHEME_HTTP, input_authority - h2o_mem_init_pool(&pool); - h2o_iovec_t value; - - value = h2o_iovec_init(H2O_STRLIT("<http://basehost/otherpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); - ok(paths.size == 1); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/otherpath"))); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</otherpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); - ok(paths.size == 1); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/otherpath"))); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("<otherpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); - ok(paths.size == 1); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/basepath/otherpath"))); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("<../otherpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); - ok(paths.size == 1); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/otherpath"))); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("<http:otherpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); - ok(paths.size == 1); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/basepath/otherpath"))); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("<../otherpath>; rel=author")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); - ok(paths.size == 0); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("<http://basehost:81/otherpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); - ok(paths.size == 0); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("<https://basehost/otherpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); - ok(paths.size == 0); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("<https:otherpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); - ok(paths.size == 0); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</otherpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTPS, &input_authority, - &filtered_value); - ok(paths.size == 0); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</otherpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 1); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/otherpath"))); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</otherpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &other_authority, - &filtered_value); - ok(paths.entries == 0); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("<http://basehost/otherpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &other_authority, - &filtered_value); - ok(paths.size == 1); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/otherpath"))); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("<http:otherpath>; rel=preload; nopush")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); - ok(paths.entries == 0); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</firstpath>; rel=preload, </secondpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 2); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); - path = paths.entries[1]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/secondpath"))); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</firstpath>; rel=preload; nopush, </secondpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 1); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/secondpath"))); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</firstpath>; rel=preload; nopush, </secondpath>; nopush; rel=preload; </thirdpath>")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 0); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</firstpath>; rel=preload; nopush, <secondpath>; rel=notpreload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 0); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</firstpath>; rel=preload, </secondpath>; rel=preload; nopush, </thirdpath>; rel=preload")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 2); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); - path = paths.entries[1]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/thirdpath"))); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("hogefoo")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 0); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - h2o_mem_clear_pool(&pool); -#undef INPUT -} - -static void test_extract_push_path_from_link_header_push_only(void) -{ - h2o_mem_pool_t pool; - h2o_iovec_vector_t paths; - h2o_iovec_t path; - h2o_iovec_t filtered_value; - h2o_iovec_t base_path = {H2O_STRLIT("/basepath/")}, input_authority = {H2O_STRLIT("basehost")}; -#define INPUT base_path, &H2O_URL_SCHEME_HTTP, input_authority - h2o_mem_init_pool(&pool); - h2o_iovec_t value; - - value = h2o_iovec_init(H2O_STRLIT("</firstpath>; rel=preload, </secondpath>; rel=preload; nopush, </thirdpath>; rel=preload, " - "</fourthpath>; rel=preload; x-http2-push-only")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 3); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); - path = paths.entries[1]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/thirdpath"))); - path = paths.entries[2]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/fourthpath"))); - value = h2o_iovec_init(H2O_STRLIT("</firstpath>; rel=preload, </secondpath>; rel=preload; nopush, </thirdpath>; rel=preload")); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</firstpath>; rel=preload; x-http2-push-only, </secondpath>; rel=preload; nopush, " - "</thirdpath>; rel=preload, </fourthpath>; rel=preload; x-http2-push-only")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 3); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); - path = paths.entries[1]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/thirdpath"))); - path = paths.entries[2]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/fourthpath"))); - value = h2o_iovec_init(H2O_STRLIT("</secondpath>; rel=preload; nopush, </thirdpath>; rel=preload")); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</firstpath>; rel=preload, </secondpath>; rel=preload; x-http2-push-only, </thirdpath>; " - "rel=preload; nopush, </fourthpath>; rel=preload; x-http2-push-only")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 3); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); - path = paths.entries[1]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/secondpath"))); - path = paths.entries[2]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/fourthpath"))); - value = h2o_iovec_init(H2O_STRLIT("</firstpath>; rel=preload, </thirdpath>; rel=preload; nopush")); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</firstpath>; rel=preload; x-http2-push-only, </secondpath>; rel=preload, </thirdpath>; " - "rel=preload; x-http2-push-only, </fourthpath>; rel=preload; nopush")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 3); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); - path = paths.entries[1]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/secondpath"))); - path = paths.entries[2]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/thirdpath"))); - value = h2o_iovec_init(H2O_STRLIT("</secondpath>; rel=preload, </fourthpath>; rel=preload; nopush")); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init( - H2O_STRLIT("</firstpath>; rel=preload; x-http2-push-only, </secondpath>; rel=preload; x-http2-push-only, </thirdpath>; " - "rel=preload, </fourthpath>; rel=preload; nopush")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 3); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); - path = paths.entries[1]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/secondpath"))); - path = paths.entries[2]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/thirdpath"))); - value = h2o_iovec_init(H2O_STRLIT("</thirdpath>; rel=preload, </fourthpath>; rel=preload; nopush")); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("firstpath; rel=preload, </secondpath>; rel=preload; x-http2-push-only, </thirdpath>; " - "rel=preload; nopush, </fourthpath>; rel=preload; x-http2-push-only")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 0); - ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); - - value = h2o_iovec_init(H2O_STRLIT("</firstpath>; rel=preload; x-http2-push-only, bar")); - paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, - &filtered_value); - ok(paths.size == 1); - path = paths.entries[0]; - ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); - ok(h2o_memis(H2O_STRLIT("bar"), filtered_value.base, filtered_value.len)); - - h2o_mem_clear_pool(&pool); -} -void test_build_destination(void) -{ - h2o_pathconf_t conf_not_slashed = {NULL, {H2O_STRLIT("/abc")}}, conf_slashed = {NULL, {H2O_STRLIT("/abc/")}}; - h2o_req_t req; - h2o_iovec_t dest; - int escape; - - for (escape = 0; escape <= 1; escape++) { - h2o_init_request(&req, NULL, NULL); - - note("escaping: %s", escape ? "on" : "off"); - req.path_normalized = h2o_iovec_init(H2O_STRLIT("/abc/xyz")); - req.query_at = req.path_normalized.len; - req.input.path = req.path = h2o_concat(&req.pool, req.path_normalized, h2o_iovec_init(H2O_STRLIT("?q"))); - - /* basic pattern */ - req.pathconf = &conf_not_slashed; - dest = h2o_build_destination(&req, H2O_STRLIT("/def"), escape); - ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/xyz?q"))); - dest = h2o_build_destination(&req, H2O_STRLIT("/def/"), escape); - ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/xyz?q"))); - req.pathconf = &conf_slashed; - dest = h2o_build_destination(&req, H2O_STRLIT("/def"), escape); - ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/xyz?q"))); - dest = h2o_build_destination(&req, H2O_STRLIT("/def/"), escape); - ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/xyz?q"))); - - /* test wo. query */ - if (escape) { - req.pathconf = &conf_not_slashed; - req.query_at = SIZE_MAX; - dest = h2o_build_destination(&req, H2O_STRLIT("/def"), escape); - ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/xyz"))); - } - - /* no trailing */ - req.path_normalized = h2o_iovec_init(H2O_STRLIT("/abc")); - req.query_at = req.path_normalized.len; - req.input.path = req.path = h2o_concat(&req.pool, req.path_normalized, h2o_iovec_init(H2O_STRLIT("?q"))); - - req.pathconf = &conf_not_slashed; - dest = h2o_build_destination(&req, H2O_STRLIT("/def"), escape); - ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def?q"))); - dest = h2o_build_destination(&req, H2O_STRLIT("/def/"), escape); - ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/?q"))); - } - - h2o_mem_clear_pool(&req.pool); -} - -void test_build_destination_escaping(void) -{ - h2o_req_t req; - h2o_iovec_t dest; - int escape = 0; - int i, j; - struct { - char *pathconf; - char *dest; - char *input; - char *output; - } tests[] = { - {"/abc", "/def", "/abc/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, - {"/abc", "/def", "/%61bc/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, - {"/abc", "/def", "/%61%62c/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, - {"/abc", "/def", "/%61%62%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, - {"/abc", "/def", "/./%61%62%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, - {"/abc", "/def", "/../%61%62%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, - {"/abc", "/def", "/././%61%62%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, - {"/abc", "/def", "/./.././%61%62%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, - {"/abc", "/def", "/./../blah/../%61%62%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, - {"/abc", "/def", "/./../blah/.././%61%62c/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, - {"/abc", "/def", "/./../blah/.././../../%61b%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, - {"/abc", "/def", "/abc/xyz/?query&m=n/o", "/def/xyz/?query&m=n/o"}, - {"/abc", "/def", "/abc/xyz/.?query&m=n/o", "/def/xyz/.?query&m=n/o"}, - {"/abc", "/def", "/abc/xyz/./?query&m=n/o", "/def/xyz/./?query&m=n/o"}, - {"/abc", "/def", "/abc/xyz/..?query&m=n/o", "/def/xyz/..?query&m=n/o"}, - {"/abc", "/def", "/abc/xyz/../?query&m=n/o", "/def/xyz/../?query&m=n/o"}, - {"/abc", "/def", "/abc/xyz/../a?query&m=n/o", "/def/xyz/../a?query&m=n/o"}, - {"/abc", "/def", "/abc/%yz/?query&m=n/o", "/def/%yz/?query&m=n/o"}, - {"/abc", "/def", "/abc/%78yz/?query&m=n/o", "/def/%78yz/?query&m=n/o"}, - {"/", "/", "/xyz/../mno", "/xyz/../mno"}, - {"/", "/", "/xyz/../mno/..", "/xyz/../mno/.."}, - {"/", "/def", "/xyz/../mno", "/def/xyz/../mno"}, - {"/", "/def/", "/xyz/../mno", "/def/xyz/../mno"}, - {"/", "/def", "/xyz/../", "/def/xyz/../"}, - {"/", "/def/", "/xyz/..", "/def/xyz/.."}, - }; - h2o_init_request(&req, NULL, NULL); - - /* 'j' runs the test with a missing leading '/' in the input path */ - for (j = 0; j <= 1; j++) { - for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { - h2o_pathconf_t conf = {NULL, {tests[i].pathconf, strlen(tests[i].pathconf)}}; - req.pathconf = &conf; - req.path = req.input.path = h2o_iovec_init(tests[i].input + j, strlen(tests[i].input) - j); - req.norm_indexes = NULL; - req.path_normalized = h2o_url_normalize_path(&req.pool, req.path.base, req.path.len, &req.query_at, &req.norm_indexes); - dest = h2o_build_destination(&req, tests[i].dest, strlen(tests[i].dest), escape); - note("%s: %d, %sskipping the leading '/'", tests[i].input, i, !j ? "not " : ""); - ok(dest.len == strlen(tests[i].output)); - ok(h2o_memis(dest.base, dest.len, tests[i].output, strlen(tests[i].output))); - } - } - - h2o_mem_clear_pool(&req.pool); -} - -void test_lib__core__util_c() -{ - subtest("parse_proxy_line", test_parse_proxy_line); - subtest("extract_push_path_from_link_header", test_extract_push_path_from_link_header); - subtest("extract_push_path_from_link_header_push_only", test_extract_push_path_from_link_header_push_only); - subtest("test_build_destination", test_build_destination); - subtest("test_build_destination_escaping", test_build_destination_escaping); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/handler/compress.c b/web/server/h2o/libh2o/t/00unit/lib/handler/compress.c deleted file mode 100644 index 5b430b4c5..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/handler/compress.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright (c) 2015 DeNA Co., Ltd., Kazuho Oku - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <stdlib.h> -#include <zlib.h> -#include "../../test.h" -#define BUF_SIZE 256 -#include "../../../../lib/handler/compress/gzip.c" -#include "../../../../lib/handler/compress.c" - -static void check_result(h2o_iovec_t *vecs, size_t num_vecs, const char *expected, size_t expectedlen) -{ - z_stream zs; - char decbuf[expectedlen + 1]; - - memset(&zs, 0, sizeof(zs)); - zs.zalloc = alloc_cb; - zs.zfree = free_cb; - zs.next_out = (void *)decbuf; - zs.avail_out = (unsigned)sizeof(decbuf); - - inflateInit2(&zs, WINDOW_BITS); - - int inflate_ret = -1; - size_t i; - for (i = 0; i != num_vecs; ++i) { - zs.next_in = (void *)vecs[i].base; - zs.avail_in = (unsigned)vecs[i].len; - inflate_ret = inflate(&zs, Z_NO_FLUSH); - if (zs.avail_out == 0) { - ok(0); - return; - } - if (zs.avail_in != 0) { - ok(0); - return; - } - } - - ok(inflate_ret == Z_STREAM_END); - inflateEnd(&zs); - - ok(zs.avail_out == sizeof(decbuf) - expectedlen); - ok(memcmp(decbuf, expected, expectedlen) == 0); -} - -void test_gzip_simple(void) -{ - h2o_mem_pool_t pool; - h2o_iovec_t inbuf, *outbufs; - size_t outbufcnt; - - h2o_mem_init_pool(&pool); - - h2o_compress_context_t *compressor = h2o_compress_gzip_open(&pool, Z_BEST_SPEED); - inbuf = h2o_iovec_init(H2O_STRLIT("hello world")); - compressor->transform(compressor, &inbuf, 1, 1, &outbufs, &outbufcnt); - - check_result(outbufs, outbufcnt, H2O_STRLIT("hello world")); - - h2o_mem_clear_pool(&pool); -} - -void test_gzip_multi(void) -{ -#define P1 \ - "Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she " \ - "had peeped into the book her sister was reading, but it had no pictures or conversations in it, `and what is the use of a " \ - "book,' thought Alice `without pictures or conversation?'\n\n" -#define P2 \ - "So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), " \ - "whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when " \ - "suddenly a White Rabbit with pink eyes ran close by her.\n\n" -#define P3 \ - "There was nothing so very remarkable in that; nor did Alice think it so very much out of the way to hear the Rabbit say to " \ - "itself, `Oh dear! Oh dear! I shall be late!' (when she thought it over afterwards, it occurred to her that she ought to " \ - "have wondered at this, but at the time it all seemed quite natural); but when the Rabbit actually took a watch out of its " \ - "waistcoat-pocket, and looked at it, and then hurried on, Alice started to her feet, for it flashed across her mind that she " \ - "had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and burning with curiosity, " \ - "she ran across the field after it, and fortunately was just in time to see it pop down a large rabbit-hole under the " \ - "hedge.\n\n" - - h2o_mem_pool_t pool; - h2o_iovec_t inbufs[] = {{H2O_STRLIT(P1)}, {H2O_STRLIT(P2)}, {H2O_STRLIT(P3)}}, *outbufs; - size_t outbufcnt; - - h2o_mem_init_pool(&pool); - - h2o_compress_context_t *compressor = h2o_compress_gzip_open(&pool, Z_BEST_SPEED); - compressor->transform(compressor, inbufs, sizeof(inbufs) / sizeof(inbufs[0]), 1, &outbufs, &outbufcnt); - - assert(outbufcnt > 1); /* we want to test multi-vec output */ - - check_result(outbufs, outbufcnt, H2O_STRLIT(P1 P2 P3)); - - h2o_mem_clear_pool(&pool); - -#undef P1 -#undef P2 -#undef P3 -} - -void test_lib__handler__gzip_c() -{ - subtest("gzip_simple", test_gzip_simple); - subtest("gzip_multi", test_gzip_multi); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/handler/fastcgi.c b/web/server/h2o/libh2o/t/00unit/lib/handler/fastcgi.c deleted file mode 100644 index f79fbf708..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/handler/fastcgi.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (c) 2015 DeNA Co., Ltd., Kazuho Oku - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <stdlib.h> -#include "../../test.h" -#include "../../../../lib/handler/fastcgi.c" - -static h2o_context_t ctx; - -static int check_params(h2o_iovec_t *vecs, size_t *index, uint16_t request_id, const char *expected, size_t expected_len) -{ -#define DECODE_UINT16(p) (((unsigned char *)&p)[0] << 8 | ((unsigned char *)&p)[1]) - - char buf[4096]; - size_t offset = 0; - - while (1) { - if (vecs[*index].len != FCGI_RECORD_HEADER_SIZE) { - fprintf(stderr, "record too short (index: %zu)\n", *index); - return 0; - } - struct st_fcgi_record_header_t *header = (void *)vecs[*index].base; - if (header->version != FCGI_VERSION_1 || header->type != FCGI_PARAMS || header->paddingLength != 0 || - header->reserved != 0) { - fprintf(stderr, "header is corrupt (index: %zu)\n", *index); - return 0; - } - if (DECODE_UINT16(header->requestId) != request_id) { - fprintf(stderr, "unexpected request id (index: %zu)\n", *index); - return 0; - } - ++*index; - if (DECODE_UINT16(header->contentLength) == 0) - break; - if (vecs[*index].len != DECODE_UINT16(header->contentLength)) { - fprintf(stderr, "unexpected body size (index: %zu)\n", *index); - return 0; - } - memcpy(buf + offset, vecs[*index].base, vecs[*index].len); - offset += vecs[*index].len; - ++*index; - } - - if (!h2o_memis(buf, offset, expected, expected_len)) { - fprintf(stderr, "PARAMS content mistach\n"); - return 0; - } - - return 1; - -#undef DECODE_UINT16 -} - -static void test_build_request(void) -{ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - h2o_fastcgi_config_vars_t config = {5000, 0}; - iovec_vector_t vecs; - size_t vec_index; - - conn->req.input.method = conn->req.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.scheme = conn->req.scheme = &H2O_URL_SCHEME_HTTP; - conn->req.input.authority = conn->req.authority = h2o_iovec_init(H2O_STRLIT("localhost")); - conn->req.input.path = conn->req.path = h2o_iovec_init(H2O_STRLIT("/")); - conn->req.path_normalized = conn->req.path; - conn->req.query_at = SIZE_MAX; - conn->req.version = 0x101; - conn->req.hostconf = *ctx.globalconf->hosts; - conn->req.pathconf = conn->req.hostconf->paths.entries; - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_COOKIE, NULL, H2O_STRLIT("foo=bar")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_USER_AGENT, NULL, - H2O_STRLIT("Mozilla/5.0 (X11; Linux) KHTML/4.9.1 (like Gecko) Konqueror/4.9")); - - /* build with max_record_size=65535 */ - build_request(&conn->req, &vecs, 0x1234, 65535, &config); - ok(h2o_memis(vecs.entries[0].base, vecs.entries[0].len, H2O_STRLIT("\x01\x01\x12\x34\x00\x08\x00\x00" - "\x00\x01\0\0\0\0\0\0"))); - vec_index = 1; - ok(check_params(vecs.entries, &vec_index, 0x1234, - H2O_STRLIT("\x0b\x00SCRIPT_NAME" /* */ - "\x09\x01PATH_INFO/" /* */ - "\x0c\x00QUERY_STRING" /* */ - "\x0b\x09REMOTE_ADDR127.0.0.1" /* */ - "\x0b\x05REMOTE_PORT55555" /* */ - "\x0e\x03REQUEST_METHODGET" /* */ - "\x09\x09HTTP_HOSTlocalhost" /* */ - "\x0b\x01REQUEST_URI/" /* */ - "\x0b\x09SERVER_ADDR127.0.0.1" /* */ - "\x0b\x02SERVER_PORT80" /* */ - "\x0b\x07SERVER_NAMEdefault" /* */ - "\x0f\x08SERVER_PROTOCOLHTTP/1.1" /* */ - "\x0f\x10SERVER_SOFTWAREh2o/1.2.1-alpha1" /* */ - "\x0f\x3fHTTP_USER_AGENTMozilla/5.0 (X11; Linux) KHTML/4.9.1 (like Gecko) Konqueror/4.9" /* */ - "\x0b\x07HTTP_COOKIEfoo=bar" /* */ - ))); - ok(h2o_memis(vecs.entries[vec_index].base, vecs.entries[vec_index].len, H2O_STRLIT("\x01\x05\x12\x34\x00\x00\x00\x00"))); - ++vec_index; - ok(vec_index == vecs.size); - - /* build with max_record_size=64, DOCUMENT_ROOT, additional cookie, and content */ - config.document_root = h2o_iovec_init(H2O_STRLIT("/var/www/htdocs")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_COOKIE, NULL, H2O_STRLIT("hoge=fuga")); - conn->req.entity = h2o_iovec_init(H2O_STRLIT("The above copyright notice and this permission notice shall be included in all " - "copies or substantial portions of the Software.")); - build_request(&conn->req, &vecs, 0x1234, 64, &config); - ok(h2o_memis(vecs.entries[0].base, vecs.entries[0].len, H2O_STRLIT("\x01\x01\x12\x34\x00\x08\x00\x00" - "\x00\x01\0\0\0\0\0\0"))); - vec_index = 1; - ok(check_params(vecs.entries, &vec_index, 0x1234, - H2O_STRLIT("\x0e\x03" - "CONTENT_LENGTH126" /* */ - "\x0b\x00SCRIPT_NAME" /* */ - "\x09\x01PATH_INFO/" /* */ - "\x0d\x0f" - "DOCUMENT_ROOT/var/www/htdocs" /* */ - "\x0f\x10PATH_TRANSLATED/var/www/htdocs/" /* */ - "\x0c\x00QUERY_STRING" /* */ - "\x0b\x09REMOTE_ADDR127.0.0.1" /* */ - "\x0b\x05REMOTE_PORT55555" /* */ - "\x0e\x03REQUEST_METHODGET" /* */ - "\x09\x09HTTP_HOSTlocalhost" /* */ - "\x0b\x01REQUEST_URI/" /* */ - "\x0b\x09SERVER_ADDR127.0.0.1" /* */ - "\x0b\x02SERVER_PORT80" /* */ - "\x0b\x07SERVER_NAMEdefault" /* */ - "\x0f\x08SERVER_PROTOCOLHTTP/1.1" /* */ - "\x0f\x10SERVER_SOFTWAREh2o/1.2.1-alpha1" /* */ - "\x0f\x3fHTTP_USER_AGENTMozilla/5.0 (X11; Linux) KHTML/4.9.1 (like Gecko) Konqueror/4.9" /* */ - "\x0b\x11HTTP_COOKIEfoo=bar;hoge=fuga" /* */ - ))); - ok(h2o_memis(vecs.entries[vec_index].base, vecs.entries[vec_index].len, H2O_STRLIT("\x01\x05\x12\x34\x00\x40\x00\x00"))); - ++vec_index; - ok(h2o_memis(vecs.entries[vec_index].base, vecs.entries[vec_index].len, - H2O_STRLIT("The above copyright notice and this permission notice shall be i"))); - ++vec_index; - ok(h2o_memis(vecs.entries[vec_index].base, vecs.entries[vec_index].len, H2O_STRLIT("\x01\x05\x12\x34\x00\x3e\x00\x00"))); - ++vec_index; - ok(h2o_memis(vecs.entries[vec_index].base, vecs.entries[vec_index].len, - H2O_STRLIT("ncluded in all copies or substantial portions of the Software."))); - ++vec_index; - ok(h2o_memis(vecs.entries[vec_index].base, vecs.entries[vec_index].len, H2O_STRLIT("\x01\x05\x12\x34\x00\x00\x00\x00"))); - ++vec_index; - ok(vec_index == vecs.size); - - h2o_loopback_destroy(conn); -} - -void test_lib__handler__fastcgi_c() -{ - h2o_globalconf_t globalconf; - h2o_hostconf_t *hostconf; - h2o_pathconf_t *pathconf; - - h2o_config_init(&globalconf); - globalconf.server_name = h2o_iovec_init(H2O_STRLIT("h2o/1.2.1-alpha1")); - hostconf = h2o_config_register_host(&globalconf, h2o_iovec_init(H2O_STRLIT("default")), 65535); - pathconf = h2o_config_register_path(hostconf, "/", 0); - - h2o_context_init(&ctx, test_loop, &globalconf); - - subtest("build-request", test_build_request); - - h2o_context_dispose(&ctx); - h2o_config_dispose(&globalconf); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/handler/file.c b/web/server/h2o/libh2o/t/00unit/lib/handler/file.c deleted file mode 100644 index 6c0e59487..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/handler/file.c +++ /dev/null @@ -1,752 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <stdlib.h> -#include "../../test.h" -#include "../../../../lib/handler/file.c" - -static h2o_context_t ctx; - -static int check_header(h2o_res_t *res, const h2o_token_t *header_name, const char *expected) -{ - size_t index = h2o_find_header(&res->headers, header_name, SIZE_MAX); - if (index == SIZE_MAX) - return 0; - return h2o_lcstris(res->headers.entries[index].value.base, res->headers.entries[index].value.len, expected, strlen(expected)); -} - -static int check_multirange_body(char *resbody, const char *boundary, const h2o_iovec_t *expected, size_t partlen) -{ - char *bptr = resbody; - const h2o_iovec_t *eptr = expected; - int not_first_line = 0; - while (partlen--) { - if (not_first_line) { - if (!h2o_memis(bptr, 2, H2O_STRLIT("\r\n"))) - return 0; - bptr += 2; - } else - not_first_line = 1; - if (!h2o_memis(bptr, 2, H2O_STRLIT("--"))) - return 0; - bptr += 2; - if (!h2o_memis(bptr, BOUNDARY_SIZE, boundary, BOUNDARY_SIZE)) - return 0; - bptr += 20; - if (!h2o_memis(bptr, 2, H2O_STRLIT("\r\n"))) - return 0; - bptr += 2; - if (!h2o_memis(bptr, eptr->len, eptr->base, eptr->len)) - return 0; - bptr += eptr->len; - eptr++; - } - if (!h2o_memis(bptr, 4, H2O_STRLIT("\r\n--"))) - return 0; - bptr += 4; - if (!h2o_memis(bptr, BOUNDARY_SIZE, boundary, BOUNDARY_SIZE)) - return 0; - bptr += 20; - if (!h2o_memis(bptr, 4, H2O_STRLIT("--\r\n"))) - return 0; - return 1; -} - -static void test_process_range(void) -{ - h2o_mem_pool_t testpool; - size_t ret, *ranges; - h2o_iovec_t testrange; - h2o_mem_init_pool(&testpool); - - { /* check single range within filesize */ - testrange = h2o_iovec_init(H2O_STRLIT("bytes=, 0-10")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ret == 1); - ok(*ranges++ == 0); - ok(*ranges == 11); - } - - { /* check single range with only start */ - testrange = h2o_iovec_init(H2O_STRLIT("bytes=60-")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ret == 1); - ok(*ranges++ == 60); - ok(*ranges == 40); - } - - { /* check single suffix range */ - testrange = h2o_iovec_init(H2O_STRLIT("bytes=-10")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ret == 1); - ok(*ranges++ == 90); - ok(*ranges == 10); - } - - { /* this and next two check multiple ranges within filesize */ - testrange = h2o_iovec_init(H2O_STRLIT("bytes=0-10, -10")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ret == 2); - ok(*ranges++ == 0); - ok(*ranges++ == 11); - ok(*ranges++ == 90); - ok(*ranges == 10); - } - - { - testrange = h2o_iovec_init(H2O_STRLIT("bytes=0-0, 20-89")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ret == 2); - ok(*ranges++ == 0); - ok(*ranges++ == 1); - ok(*ranges++ == 20); - ok(*ranges == 70); - } - - { - testrange = h2o_iovec_init(H2O_STRLIT("bytes=-10,-20")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ret == 2); - ok(*ranges++ == 90); - ok(*ranges++ == 10); - ok(*ranges++ == 80); - ok(*ranges++ == 20); - } - - { /* check ranges entirely out of filesize */ - testrange = h2o_iovec_init(H2O_STRLIT("bytes=100-102")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ranges == NULL); - } - - { /* check ranges with "negative" length */ - testrange = h2o_iovec_init(H2O_STRLIT("bytes=70-21")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ranges == NULL); - } - - { /* check ranges with one side inside filesize */ - testrange = h2o_iovec_init(H2O_STRLIT("bytes=90-102")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ret == 1); - ok(*ranges++ == 90); - ok(*ranges == 10); - } - - { /* check suffix range larger than filesize */ - testrange = h2o_iovec_init(H2O_STRLIT("bytes=-200")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ret == 1); - ok(*ranges++ == 0); - ok(*ranges == 100); - } - - { /* check multiple ranges with unsatisfiable ranges, but also contain satisfiable ranges */ - testrange = h2o_iovec_init(H2O_STRLIT("bytes=100-102, 90-102, 72-30,-22, 95-")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ret == 3); - ok(*ranges++ == 90); - ok(*ranges++ == 10); - ok(*ranges++ == 78); - ok(*ranges++ == 22); - ok(*ranges++ == 95); - ok(*ranges++ == 5); - } - - { /* this and next 6 check malformed ranges */ - testrange = h2o_iovec_init(H2O_STRLIT("bytes 20-1002")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ranges == NULL); - } - - { - testrange = h2o_iovec_init(H2O_STRLIT("bytes=")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ranges == NULL); - } - - { - testrange = h2o_iovec_init(H2O_STRLIT("bsdfeadsfjwleakjf")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ranges == NULL); - } - - { - testrange = h2o_iovec_init(H2O_STRLIT("bytes=100-102, 90-102, -72-30,-22,95-")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ranges == NULL); - } - - { - testrange = h2o_iovec_init(H2O_STRLIT("bytes=10-12-13, 90-102, -72, -22, 95-")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ranges == NULL); - } - - { - testrange = h2o_iovec_init(H2O_STRLIT("bytes=100-102, 90-102, 70-39, -22$")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ranges == NULL); - } - - { - testrange = h2o_iovec_init(H2O_STRLIT("bytes=-0")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ranges == NULL); - } - - { /* check same ranges with different filesize */ - testrange = h2o_iovec_init(H2O_STRLIT("bytes=20-200")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ret == 1); - ok(*ranges++ == 20); - ok(*ranges == 80); - } - - { - ranges = process_range(&testpool, &testrange, 1000, &ret); - ok(ret == 1); - ok(*ranges++ == 20); - ok(*ranges == 181); - } - - { /* check a range with plenty of WS and COMMA */ - testrange = h2o_iovec_init(H2O_STRLIT("bytes=,\t,1-3 ,, ,5-9,")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ret == 2); - ok(*ranges++ == 1); - ok(*ranges++ == 3); - ok(*ranges++ == 5); - ok(*ranges == 5); - } - - { - testrange = h2o_iovec_init(H2O_STRLIT("bytes= 1-3")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ranges == NULL); - } - - { - testrange = h2o_iovec_init(H2O_STRLIT("bytes=1-3 5-10")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ranges == NULL); - } - - { - testrange = h2o_iovec_init(H2O_STRLIT("bytes=1-\t,5-10")); - ranges = process_range(&testpool, &testrange, 100, &ret); - ok(ret == 2); - ok(*ranges++ == 1); - ok(*ranges++ == 99); - ok(*ranges++ == 5); - ok(*ranges == 6); - } - - h2o_mem_clear_pool(&testpool); -} - -static void test_if_modified_since(void) -{ - char lm_date[H2O_TIMESTR_RFC1123_LEN + 1]; - - { /* obtain last-modified */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - ssize_t lm_index; - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - if ((lm_index = h2o_find_header(&conn->req.res.headers, H2O_TOKEN_LAST_MODIFIED, -1)) == -1) { - ok(0); - return; - } - ok(conn->req.res.headers.entries[lm_index].value.len == H2O_TIMESTR_RFC1123_LEN); - memcpy(lm_date, conn->req.res.headers.entries[lm_index].value.base, H2O_TIMESTR_RFC1123_LEN); - lm_date[H2O_TIMESTR_RFC1123_LEN] = '\0'; - h2o_loopback_destroy(conn); - } - - { /* send if-modified-since using the obtained last-modified */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_IF_MODIFIED_SINCE, NULL, lm_date, H2O_TIMESTR_RFC1123_LEN); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 304); - ok(conn->body->size == 0); - ok(h2o_find_header(&conn->req.res.headers, H2O_TOKEN_ETAG, -1) != -1); - h2o_loopback_destroy(conn); - } - - { /* send if-modified-since using an old date */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_IF_MODIFIED_SINCE, NULL, - H2O_STRLIT("Sun, 06 Nov 1994 08:49:37 GMT")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - h2o_loopback_destroy(conn); - } - - { /* send if-modified-since using a date in the future */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_IF_MODIFIED_SINCE, NULL, - H2O_STRLIT("Wed, 18 May 2033 12:33:20 GMT")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 304); - ok(conn->body->size == 0); - ok(h2o_find_header(&conn->req.res.headers, H2O_TOKEN_ETAG, -1) != -1); - h2o_loopback_destroy(conn); - } -} - -static void test_if_match(void) -{ - h2o_iovec_t etag = {NULL}; - - { /* obtain etag */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - ssize_t etag_index; - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - if ((etag_index = h2o_find_header(&conn->req.res.headers, H2O_TOKEN_ETAG, -1)) == -1) { - ok(0); - return; - } - etag = h2o_strdup(NULL, conn->req.res.headers.entries[etag_index].value.base, - conn->req.res.headers.entries[etag_index].value.len); - h2o_loopback_destroy(conn); - } - - { /* send if-non-match using the obtained etag */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_IF_NONE_MATCH, NULL, etag.base, etag.len); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 304); - ok(conn->body->size == 0); - h2o_loopback_destroy(conn); - } - - free(etag.base); -} - -static void test_range_req(void) -{ - { /* check if accept-ranges is "bytes" */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - if (check_header(&conn->req.res, H2O_TOKEN_ACCEPT_RANGES, "none")) { - ok(1); - return; - } - ok(check_header(&conn->req.res, H2O_TOKEN_ACCEPT_RANGES, "bytes")); - ok(conn->body->size == 1000); - ok(strcmp(sha1sum(conn->body->bytes, conn->body->size), "dfd3ae1f5c475555fad62efe42e07309fa45f2ed") == 0); - h2o_loopback_destroy(conn); - } - { /* check a normal single range */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=0-10")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 206); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes 0-10/1000")); - ok(conn->body->size == 11); - ok(memcmp(conn->body->bytes, "123456789\n1", 11) == 0); - h2o_loopback_destroy(conn); - } - { /* check an over range single range */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=990-1100")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 206); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes 990-999/1000")); - ok(conn->body->size == 10); - ok(memcmp(conn->body->bytes, "123456789\n", 10) == 0); - h2o_loopback_destroy(conn); - } - { /* check a single range without end */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=989-")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 206); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes 989-999/1000")); - ok(conn->body->size == 11); - ok(memcmp(conn->body->bytes, "\n123456789\n", 11) == 0); - h2o_loopback_destroy(conn); - } - { /* check a single suffix range */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=-21")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 206); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes 979-999/1000")); - ok(conn->body->size == 21); - ok(memcmp(conn->body->bytes, "\n123456789\n123456789\n", 21) == 0); - h2o_loopback_destroy(conn); - } - { /* check a single suffix range over filesize */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=-2100")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 206); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes 0-999/1000")); - ok(conn->body->size == 1000); - ok(strcmp(sha1sum(conn->body->bytes, conn->body->size), "dfd3ae1f5c475555fad62efe42e07309fa45f2ed") == 0); - h2o_loopback_destroy(conn); - } - { /* malformed range */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=-0-10, 9-, -10")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 416); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain; charset=utf-8")); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes */1000")); - ok(conn->body->size == strlen("requested range not satisfiable")); - ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("requested range not satisfiable"))); - h2o_loopback_destroy(conn); - } - { /* malformed range */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=0-10-12, 9-, -10")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 416); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain; charset=utf-8")); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes */1000")); - ok(conn->body->size == strlen("requested range not satisfiable")); - ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("requested range not satisfiable"))); - h2o_loopback_destroy(conn); - } - { /* malformed range */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytfasdf")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 416); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain; charset=utf-8")); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes */1000")); - ok(conn->body->size == strlen("requested range not satisfiable")); - ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("requested range not satisfiable"))); - h2o_loopback_destroy(conn); - } - { /* half-malformed range */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=-0")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 416); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain; charset=utf-8")); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes */1000")); - ok(conn->body->size == strlen("requested range not satisfiable")); - ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("requested range not satisfiable"))); - h2o_loopback_destroy(conn); - } - { /* single range over filesize */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=1000-1001")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 416); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain; charset=utf-8")); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes */1000")); - ok(conn->body->size == strlen("requested range not satisfiable")); - ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("requested range not satisfiable"))); - h2o_loopback_destroy(conn); - } - { /* single range with "negative" length */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=900-100")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 416); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain; charset=utf-8")); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes */1000")); - ok(conn->body->size == strlen("requested range not satisfiable")); - ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("requested range not satisfiable"))); - h2o_loopback_destroy(conn); - } - { /* check a half-malformed range with a normal range */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=-0, 0-0")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 206); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes 0-0/1000")); - ok(conn->body->size == 1); - ok(memcmp(conn->body->bytes, "1", 1) == 0); - h2o_loopback_destroy(conn); - } - { /* multiple ranges */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - ssize_t content_type_index; - h2o_iovec_t content_type, expected[2] = {{NULL}}; - char boundary[BOUNDARY_SIZE + 1]; - size_t mimebaselen = strlen("multipart/byteranges; boundary="); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=-0, 0-9,-11")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 206); - if ((content_type_index = h2o_find_header(&conn->req.res.headers, H2O_TOKEN_CONTENT_TYPE, -1)) == -1) { - ok(0); - return; - } - content_type = conn->req.res.headers.entries[content_type_index].value; - ok(h2o_memis(content_type.base, mimebaselen, "multipart/byteranges; boundary=", mimebaselen)); - memcpy(boundary, content_type.base + mimebaselen, BOUNDARY_SIZE); - boundary[BOUNDARY_SIZE] = 0; - expected[0].base = h2o_mem_alloc_pool(&conn->req.pool, 256); - expected[0].len = - sprintf(expected[0].base, "Content-Type: %s\r\nContent-Range: bytes 0-9/1000\r\n\r\n%s", "text/plain", "123456789\n"); - expected[1].base = h2o_mem_alloc_pool(&conn->req.pool, 256); - expected[1].len = sprintf(expected[1].base, "Content-Type: %s\r\nContent-Range: bytes 989-999/1000\r\n\r\n%s", "text/plain", - "\n123456789\n"); - ok(h2o_find_header(&conn->req.res.headers, H2O_TOKEN_CONTENT_RANGE, -1) == -1); - ok(conn->body->size == conn->req.res.content_length); - ok(check_multirange_body(conn->body->bytes, boundary, expected, 2)); - h2o_loopback_destroy(conn); - } - { /* multiple ranges with plenty of WS and COMMA */ - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - ssize_t content_type_index; - h2o_iovec_t content_type, expected[2] = {{NULL}}; - char boundary[BOUNDARY_SIZE + 1]; - size_t mimebaselen = strlen("multipart/byteranges; boundary="); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=,\t,1-3 ,, ,5-9,")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 206); - if ((content_type_index = h2o_find_header(&conn->req.res.headers, H2O_TOKEN_CONTENT_TYPE, -1)) == -1) { - ok(0); - return; - } - content_type = conn->req.res.headers.entries[content_type_index].value; - ok(h2o_memis(content_type.base, mimebaselen, "multipart/byteranges; boundary=", mimebaselen)); - memcpy(boundary, content_type.base + mimebaselen, BOUNDARY_SIZE); - boundary[BOUNDARY_SIZE] = 0; - expected[0].base = h2o_mem_alloc_pool(&conn->req.pool, 256); - expected[0].len = - sprintf(expected[0].base, "Content-Type: %s\r\nContent-Range: bytes 1-3/1000\r\n\r\n%s", "text/plain", "234"); - expected[1].base = h2o_mem_alloc_pool(&conn->req.pool, 256); - expected[1].len = - sprintf(expected[1].base, "Content-Type: %s\r\nContent-Range: bytes 5-9/1000\r\n\r\n%s", "text/plain", "6789\n"); - ok(h2o_find_header(&conn->req.res.headers, H2O_TOKEN_CONTENT_RANGE, -1) == -1); - ok(conn->body->size == conn->req.res.content_length); - ok(check_multirange_body(conn->body->bytes, boundary, expected, 2)); - h2o_loopback_destroy(conn); - } -} - -void test_lib__handler__file_c() -{ - h2o_globalconf_t globalconf; - h2o_hostconf_t *hostconf; - h2o_pathconf_t *pathconf; - - h2o_config_init(&globalconf); - hostconf = h2o_config_register_host(&globalconf, h2o_iovec_init(H2O_STRLIT("default")), 65535); - pathconf = h2o_config_register_path(hostconf, "/", 0); - h2o_file_register(pathconf, "t/00unit/assets", NULL, NULL, 0); - - h2o_context_init(&ctx, test_loop, &globalconf); - - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/html")); - ok(conn->body->size == 0); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/html")); - ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("hello html\n"))); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index.html")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/html")); - ok(conn->body->size == 0); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index.html")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/html")); - ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("hello html\n"))); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - ok(conn->body->size == 0); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - ok(conn->body->size == 1000); - ok(strcmp(sha1sum(conn->body->bytes, conn->body->size), "dfd3ae1f5c475555fad62efe42e07309fa45f2ed") == 0); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000000.txt")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - ok(conn->body->size == 0); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000000.txt")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - ok(conn->body->size == 1000000); - ok(strcmp(sha1sum(conn->body->bytes, conn->body->size), "00c8ab71d0914dce6a1ec2eaa0fda0df7044b2a2") == 0); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index_txt/")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - ok(conn->body->size == 0); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index_txt/")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 200); - ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); - ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("hello text\n"))); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index_txt")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 301); - ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "/index_txt/")); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index_txt")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 301); - ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "/index_txt/")); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index_txt_as_dir/")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 301); - ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "/index_txt_as_dir/index.txt/")); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index_txt_as_dir/")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 301); - ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "/index_txt_as_dir/index.txt/")); - h2o_loopback_destroy(conn); - } - subtest("if-modified-since", test_if_modified_since); - subtest("if-match", test_if_match); - subtest("process_range()", test_process_range); - subtest("range request", test_range_req); - - h2o_context_dispose(&ctx); - h2o_config_dispose(&globalconf); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/handler/headers.c b/web/server/h2o/libh2o/t/00unit/lib/handler/headers.c deleted file mode 100644 index 9ef8386b9..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/handler/headers.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2015 DeNA Co., Ltd., Kazuho Oku - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include "../../test.h" -#include "../../../../lib/handler/headers.c" - -static int headers_are(h2o_mem_pool_t *pool, h2o_headers_t *headers, const char *s, size_t len) -{ - size_t i; - h2o_iovec_t flattened = {NULL}; - - for (i = 0; i != headers->size; ++i) { - flattened = h2o_concat(pool, flattened, *headers->entries[i].name, h2o_iovec_init(H2O_STRLIT(": ")), - headers->entries[i].value, h2o_iovec_init(H2O_STRLIT("\n"))); - } - - return h2o_memis(flattened.base, flattened.len, s, len); -} - -static void setup_headers(h2o_mem_pool_t *pool, h2o_headers_t *headers) -{ - *headers = (h2o_headers_t){NULL}; - h2o_add_header(pool, headers, H2O_TOKEN_CONTENT_TYPE, NULL, H2O_STRLIT("text/plain")); - h2o_add_header(pool, headers, H2O_TOKEN_CACHE_CONTROL, NULL, H2O_STRLIT("public, max-age=86400")); - h2o_add_header(pool, headers, H2O_TOKEN_SET_COOKIE, NULL, H2O_STRLIT("a=b")); - h2o_add_header_by_str(pool, headers, H2O_STRLIT("x-foo"), 0, NULL, H2O_STRLIT("bar")); -} - -void test_lib__handler__headers_c(void) -{ - h2o_mem_pool_t pool; - h2o_headers_t headers; - h2o_headers_command_t cmd; - h2o_iovec_t header_str; - - h2o_mem_init_pool(&pool); - - /* tests using token headers */ - setup_headers(&pool, &headers); - ok(headers_are(&pool, &headers, - H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\n"))); - cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_ADD, &H2O_TOKEN_SET_COOKIE->buf, {H2O_STRLIT("c=d")}}; - h2o_rewrite_headers(&pool, &headers, &cmd); - ok(headers_are( - &pool, &headers, - H2O_STRLIT( - "content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\nset-cookie: c=d\n"))); - - setup_headers(&pool, &headers); - cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_APPEND, &H2O_TOKEN_CACHE_CONTROL->buf, {H2O_STRLIT("public")}}; - h2o_rewrite_headers(&pool, &headers, &cmd); - ok(headers_are( - &pool, &headers, - H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400, public\nset-cookie: a=b\nx-foo: bar\n"))); - - setup_headers(&pool, &headers); - cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_MERGE, &H2O_TOKEN_CACHE_CONTROL->buf, {H2O_STRLIT("public")}}; - h2o_rewrite_headers(&pool, &headers, &cmd); - ok(headers_are(&pool, &headers, - H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\n"))); - - setup_headers(&pool, &headers); - cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_SET, &H2O_TOKEN_CACHE_CONTROL->buf, {H2O_STRLIT("no-cache")}}; - h2o_rewrite_headers(&pool, &headers, &cmd); - ok(headers_are(&pool, &headers, - H2O_STRLIT("content-type: text/plain\nset-cookie: a=b\nx-foo: bar\ncache-control: no-cache\n"))); - - setup_headers(&pool, &headers); - cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_SETIFEMPTY, &H2O_TOKEN_CACHE_CONTROL->buf, {H2O_STRLIT("no-cache")}}; - h2o_rewrite_headers(&pool, &headers, &cmd); - ok(headers_are(&pool, &headers, - H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\n"))); - - /* tests using non-token headers */ - header_str = h2o_iovec_init(H2O_STRLIT("x-foo")); - setup_headers(&pool, &headers); - cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_ADD, &header_str, {H2O_STRLIT("baz")}}; - h2o_rewrite_headers(&pool, &headers, &cmd); - ok(headers_are( - &pool, &headers, - H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\nx-foo: baz\n"))); - - setup_headers(&pool, &headers); - cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_APPEND, &header_str, {H2O_STRLIT("bar")}}; - h2o_rewrite_headers(&pool, &headers, &cmd); - ok(headers_are( - &pool, &headers, - H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar, bar\n"))); - - setup_headers(&pool, &headers); - cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_MERGE, &header_str, {H2O_STRLIT("bar")}}; - h2o_rewrite_headers(&pool, &headers, &cmd); - ok(headers_are(&pool, &headers, - H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\n"))); - - setup_headers(&pool, &headers); - cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_SET, &header_str, {H2O_STRLIT("baz")}}; - h2o_rewrite_headers(&pool, &headers, &cmd); - ok(headers_are(&pool, &headers, - H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: baz\n"))); - - setup_headers(&pool, &headers); - cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_SETIFEMPTY, &header_str, {H2O_STRLIT("baz")}}; - h2o_rewrite_headers(&pool, &headers, &cmd); - ok(headers_are(&pool, &headers, - H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\n"))); - - h2o_mem_clear_pool(&pool); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/handler/mimemap.c b/web/server/h2o/libh2o/t/00unit/lib/handler/mimemap.c deleted file mode 100644 index 51ebdff6c..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/handler/mimemap.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include "../../test.h" -#include "../../../../lib/handler/mimemap.c" - -static void test_default_attributes(void) -{ - h2o_mime_attributes_t attr; - - h2o_mimemap_get_default_attributes("text/plain", &attr); - ok(attr.is_compressible); - ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_NORMAL); - - h2o_mimemap_get_default_attributes("text/plain; charset=utf-8", &attr); - ok(attr.is_compressible); - ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_NORMAL); - - h2o_mimemap_get_default_attributes("application/xhtml+xml", &attr); - ok(attr.is_compressible); - ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_NORMAL); - - h2o_mimemap_get_default_attributes("application/xhtml+xml; charset=utf-8", &attr); - ok(attr.is_compressible); - ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_NORMAL); - - h2o_mimemap_get_default_attributes("text/css", &attr); - ok(attr.is_compressible); - ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_HIGHEST); - - h2o_mimemap_get_default_attributes("text/css; charset=utf-8", &attr); - ok(attr.is_compressible); - ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_HIGHEST); - - h2o_mimemap_get_default_attributes("application/octet-stream", &attr); - ok(!attr.is_compressible); - ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_NORMAL); -} - -static int is_mimetype(h2o_mimemap_type_t *type, const char *expected) -{ - return type->type == H2O_MIMEMAP_TYPE_MIMETYPE && type->data.mimetype.len == strlen(expected) && - memcmp(type->data.mimetype.base, expected, type->data.mimetype.len) == 0; -} - -static void test_basic() -{ - h2o_mimemap_t *mimemap = h2o_mimemap_create(), *mimemap2; - - subtest("default-attributes", test_default_attributes); - - /* default and set default */ - ok(is_mimetype(h2o_mimemap_get_default_type(mimemap), "application/octet-stream")); - { - char buf[sizeof("text/plain")]; - strcpy(buf, "text/plain"); - h2o_mimemap_set_default_type(mimemap, buf, NULL); - memset(buf, 0, sizeof(buf)); - } - ok(is_mimetype(h2o_mimemap_get_default_type(mimemap), "text/plain")); - - /* set and overwrite */ - h2o_mimemap_define_mimetype(mimemap, "foo", "example/foo", NULL); - ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))), "example/foo")); - ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("FOO"))), "example/foo")); - ok(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))) == - h2o_mimemap_get_type_by_mimetype(mimemap, h2o_iovec_init(H2O_STRLIT("example/foo")), 0)); - h2o_mimemap_define_mimetype(mimemap, "foo", "example/overwritten", NULL); - ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))), "example/overwritten")); - ok(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))) == - h2o_mimemap_get_type_by_mimetype(mimemap, h2o_iovec_init(H2O_STRLIT("example/overwritten")), 0)); - ok(h2o_mimemap_get_type_by_mimetype(mimemap, h2o_iovec_init(H2O_STRLIT("example/foo")), 0) == NULL); - - /* clone and release */ - mimemap2 = h2o_mimemap_clone(mimemap); - ok(is_mimetype(h2o_mimemap_get_default_type(mimemap2), "text/plain")); - ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap2, h2o_iovec_init(H2O_STRLIT("foo"))), "example/overwritten")); - ok(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))) == - h2o_mimemap_get_type_by_mimetype(mimemap, h2o_iovec_init(H2O_STRLIT("example/overwritten")), 0)); - h2o_mem_release_shared(mimemap2); - - /* check original */ - ok(is_mimetype(h2o_mimemap_get_default_type(mimemap), "text/plain")); - ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))), "example/overwritten")); - - /* remove */ - h2o_mimemap_remove_type(mimemap, "foo"); - ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))), "text/plain")); - ok(h2o_mimemap_get_type_by_mimetype(mimemap, h2o_iovec_init(H2O_STRLIT("example/overwritten")), 0) == NULL); - h2o_mimemap_remove_type(mimemap, "foo"); - ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))), "text/plain")); - - h2o_mem_release_shared(mimemap); -} - -static void test_dynamic() -{ - h2o_mimemap_t *mimemap = h2o_mimemap_create(); - const char *exts[] = {".php", NULL}; - h2o_globalconf_t global = {NULL}; - h2o_mimemap_define_dynamic(mimemap, exts, &global); - h2o_mem_release_shared(mimemap); -} - -void test_lib__handler__mimemap_c() -{ - subtest("basic", test_basic); - subtest("dynamic", test_dynamic); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/handler/redirect.c b/web/server/h2o/libh2o/t/00unit/lib/handler/redirect.c deleted file mode 100644 index 90cb987d3..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/handler/redirect.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (c) 2015 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <stdlib.h> -#include "../../test.h" -#include "../../../../lib/handler/redirect.c" - -static h2o_context_t ctx; - -static int check_header(h2o_res_t *res, const h2o_token_t *header_name, const char *expected) -{ - size_t index = h2o_find_header(&res->headers, header_name, SIZE_MAX); - if (index == SIZE_MAX) - return 0; - return h2o_lcstris(res->headers.entries[index].value.base, res->headers.entries[index].value.len, expected, strlen(expected)); -} - -void test_lib__handler__redirect_c() -{ - h2o_globalconf_t globalconf; - h2o_hostconf_t *hostconf; - h2o_pathconf_t *pathconf; - - h2o_config_init(&globalconf); - hostconf = h2o_config_register_host(&globalconf, h2o_iovec_init(H2O_STRLIT("default")), 65535); - pathconf = h2o_config_register_path(hostconf, "/", 0); - h2o_redirect_register(pathconf, 0, 301, "https://example.com/bar/"); - - h2o_context_init(&ctx, test_loop, &globalconf); - - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 301); - ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "https://example.com/bar/")); - ok(conn->body->size != 0); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/abc")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 301); - ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "https://example.com/bar/abc")); - ok(conn->body->size != 0); - h2o_loopback_destroy(conn); - } - { - h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_loopback_run_loop(conn); - ok(conn->req.res.status == 301); - ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "https://example.com/bar/")); - ok(conn->body->size == 0); - h2o_loopback_destroy(conn); - } - - h2o_context_dispose(&ctx); - h2o_config_dispose(&globalconf); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/http2/cache_digests.c b/web/server/h2o/libh2o/t/00unit/lib/http2/cache_digests.c deleted file mode 100644 index 3e55d1732..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/http2/cache_digests.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2016 DeNA Co., Ltd., Kazuho Oku - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <string.h> -#include "../../test.h" -#include "../../../../lib/http2/cache_digests.c" - -static void test_calc_hash(void) -{ - ok(calc_hash(H2O_STRLIT("https://example.com/style.css"), H2O_STRLIT("")) == 0xbaf9e86f03330860); - ok(calc_hash(H2O_STRLIT("https://example.com/style.css"), H2O_STRLIT("\"deadbeef\"")) == 0xa53eb398509042d7); -} - -static void test_decode(void) -{ - h2o_cache_digests_t *digests = NULL; - - h2o_cache_digests_load_header(&digests, H2O_STRLIT("AeLA")); - ok(digests != NULL); - if (digests == NULL) - return; - ok(digests->fresh.url_only.size == 1); - ok(digests->fresh.url_and_etag.size == 0); - ok(digests->fresh.url_only.entries[0].capacity_bits == 7); - ok(digests->fresh.url_only.entries[0].keys.size == 1); - ok(digests->fresh.url_only.entries[0].keys.entries[0] == 0x0b); - ok(!digests->fresh.complete); - - ok(h2o_cache_digests_lookup_by_url(digests, H2O_STRLIT("https://127.0.0.1.xip.io:8081/cache-digests.cgi/hello.js")) == - H2O_CACHE_DIGESTS_STATE_FRESH); - ok(h2o_cache_digests_lookup_by_url(digests, H2O_STRLIT("https://127.0.0.1.xip.io:8081/notfound.js")) == - H2O_CACHE_DIGESTS_STATE_UNKNOWN); - - h2o_cache_digests_load_header(&digests, H2O_STRLIT("FOO; stale, AcA; validators; complete")); - ok(digests->fresh.url_only.size == 1); - ok(digests->fresh.url_and_etag.size == 1); - ok(digests->fresh.url_and_etag.entries[0].capacity_bits == 7); - ok(digests->fresh.url_and_etag.entries[0].keys.size == 0); - ok(digests->fresh.complete); - - ok(h2o_cache_digests_lookup_by_url(digests, H2O_STRLIT("https://127.0.0.1.xip.io:8081/notfound.js")) == - H2O_CACHE_DIGESTS_STATE_NOT_CACHED); - ok(h2o_cache_digests_lookup_by_url(digests, H2O_STRLIT("https://127.0.0.1.xip.io:8081/cache-digests.cgi/hello.js")) == - H2O_CACHE_DIGESTS_STATE_FRESH); - - h2o_cache_digests_load_header(&digests, H2O_STRLIT("AcA; reset")); - ok(digests->fresh.url_only.size == 1); - ok(digests->fresh.url_and_etag.size == 0); - ok(digests->fresh.url_only.entries[0].capacity_bits == 7); - ok(digests->fresh.url_only.entries[0].keys.size == 0); - ok(!digests->fresh.complete); - - h2o_cache_digests_destroy(digests); -} - -void test_lib__http2__cache_digests(void) -{ - subtest("calc_hash", test_calc_hash); - subtest("test_decode", test_decode); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/http2/casper.c b/web/server/h2o/libh2o/t/00unit/lib/http2/casper.c deleted file mode 100644 index 5b2a43a5e..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/http2/casper.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (c) 2015 DeNA Co., Ltd., Kazuho Oku - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <string.h> -#include "../../test.h" -#include "../../../../lib/http2/casper.c" - -static size_t get_end_of_cookie_value(char *cookie, size_t cookie_len) -{ - size_t i; - for (i = 0; i != cookie_len; ++i) - if (cookie[i] == ';') - break; - return i; -} - -static void test_calc_key(void) -{ - h2o_http2_casper_t *casper = h2o_http2_casper_create(13, 6); - - unsigned key = calc_key(casper, H2O_STRLIT("/index.html")), expected; - memcpy(&expected, "\x14\xfe\x45\x59", 4); - expected &= (1 << 13) - 1; - ok(key == expected); - - h2o_http2_casper_destroy(casper); -} - -static void test_lookup(void) -{ - h2o_http2_casper_t *casper; - casper = h2o_http2_casper_create(13, 6); - - ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 0) == 0); - ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 1) == 0); - ok(casper->keys.size == 1); - ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 0) == 1); - ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 1) == 1); - ok(casper->keys.size == 1); - - h2o_http2_casper_destroy(casper); -} - -static void test_cookie(void) -{ - h2o_http2_casper_t *casper; - - casper = h2o_http2_casper_create(13, 6); - - h2o_iovec_t cookie = h2o_http2_casper_get_cookie(casper); - ok(cookie.base == NULL); - ok(cookie.len == 0); - - h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 1); - cookie = h2o_http2_casper_get_cookie(casper); - ok(cookie.len != 0); - cookie = h2o_strdup(NULL, cookie.base, cookie.len); - h2o_http2_casper_destroy(casper); - casper = h2o_http2_casper_create(13, 6); - - h2o_http2_casper_consume_cookie(casper, cookie.base, get_end_of_cookie_value(cookie.base, cookie.len)); - ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 0) == 1); - ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.php"), 0) == 0); - h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.php"), 1); - - h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 1); - cookie = h2o_http2_casper_get_cookie(casper); - ok(cookie.len != 0); - cookie = h2o_strdup(NULL, cookie.base, cookie.len); - - h2o_http2_casper_destroy(casper); - casper = h2o_http2_casper_create(13, 6); - - h2o_http2_casper_consume_cookie(casper, cookie.base, get_end_of_cookie_value(cookie.base, cookie.len)); - ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 0) == 1); - ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.php"), 0) == 1); - - h2o_http2_casper_destroy(casper); -} - -static void test_cookie_merge(void) -{ - h2o_http2_casper_t *casper; - - casper = h2o_http2_casper_create(13, 6); - h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 1); - h2o_iovec_t cookie1 = h2o_http2_casper_get_cookie(casper); - cookie1 = h2o_strdup(NULL, cookie1.base, cookie1.len); - h2o_http2_casper_destroy(casper); - - casper = h2o_http2_casper_create(13, 6); - h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.php"), 1); - h2o_iovec_t cookie2 = h2o_http2_casper_get_cookie(casper); - cookie2 = h2o_strdup(NULL, cookie2.base, cookie2.len); - h2o_http2_casper_destroy(casper); - - casper = h2o_http2_casper_create(13, 6); - h2o_http2_casper_consume_cookie(casper, cookie1.base, get_end_of_cookie_value(cookie1.base, cookie1.len)); - h2o_http2_casper_consume_cookie(casper, cookie1.base, get_end_of_cookie_value(cookie1.base, cookie1.len)); - ok(casper->keys.size == 1); - ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 0) == 1); - h2o_http2_casper_consume_cookie(casper, cookie2.base, get_end_of_cookie_value(cookie2.base, cookie2.len)); - ok(casper->keys.size == 2); - ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 0) == 1); - ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.php"), 0) == 1); - h2o_http2_casper_destroy(casper); -} - -void test_lib__http2__casper(void) -{ - subtest("calc_key", test_calc_key); - subtest("test_lookup", test_lookup); - subtest("cookie", test_cookie); - subtest("cookie-merge", test_cookie_merge); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/http2/hpack.c b/web/server/h2o/libh2o/t/00unit/lib/http2/hpack.c deleted file mode 100644 index 059df82c7..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/http2/hpack.c +++ /dev/null @@ -1,511 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <stdarg.h> -#include "../../test.h" -#include "../../../../lib/http2/hpack.c" - -static void test_request(h2o_iovec_t first_req, h2o_iovec_t second_req, h2o_iovec_t third_req) -{ - h2o_hpack_header_table_t header_table; - h2o_req_t req; - h2o_iovec_t in; - int r, pseudo_headers_map; - size_t content_length; - const char *err_desc = NULL; - - memset(&header_table, 0, sizeof(header_table)); - header_table.hpack_capacity = 4096; - - memset(&req, 0, sizeof(req)); - h2o_mem_init_pool(&req.pool); - in = first_req; - r = h2o_hpack_parse_headers(&req, &header_table, (const uint8_t *)in.base, in.len, &pseudo_headers_map, &content_length, NULL, - &err_desc); - ok(r == 0); - ok(req.input.authority.len == 15); - ok(memcmp(req.input.authority.base, H2O_STRLIT("www.example.com")) == 0); - ok(req.input.method.len == 3); - ok(memcmp(req.input.method.base, H2O_STRLIT("GET")) == 0); - ok(req.input.path.len == 1); - ok(memcmp(req.input.path.base, H2O_STRLIT("/")) == 0); - ok(req.input.scheme == &H2O_URL_SCHEME_HTTP); - ok(req.headers.size == 0); - - h2o_mem_clear_pool(&req.pool); - - memset(&req, 0, sizeof(req)); - h2o_mem_init_pool(&req.pool); - in = second_req; - r = h2o_hpack_parse_headers(&req, &header_table, (const uint8_t *)in.base, in.len, &pseudo_headers_map, &content_length, NULL, - &err_desc); - ok(r == 0); - ok(req.input.authority.len == 15); - ok(memcmp(req.input.authority.base, H2O_STRLIT("www.example.com")) == 0); - ok(req.input.method.len == 3); - ok(memcmp(req.input.method.base, H2O_STRLIT("GET")) == 0); - ok(req.input.path.len == 1); - ok(memcmp(req.input.path.base, H2O_STRLIT("/")) == 0); - ok(req.input.scheme == &H2O_URL_SCHEME_HTTP); - ok(req.headers.size == 1); - ok(h2o_memis(req.headers.entries[0].name->base, req.headers.entries[0].name->len, H2O_STRLIT("cache-control"))); - ok(h2o_lcstris(req.headers.entries[0].value.base, req.headers.entries[0].value.len, H2O_STRLIT("no-cache"))); - - h2o_mem_clear_pool(&req.pool); - - memset(&req, 0, sizeof(req)); - h2o_mem_init_pool(&req.pool); - in = third_req; - r = h2o_hpack_parse_headers(&req, &header_table, (const uint8_t *)in.base, in.len, &pseudo_headers_map, &content_length, NULL, - &err_desc); - ok(r == 0); - ok(req.input.authority.len == 15); - ok(memcmp(req.input.authority.base, H2O_STRLIT("www.example.com")) == 0); - ok(req.input.method.len == 3); - ok(memcmp(req.input.method.base, H2O_STRLIT("GET")) == 0); - ok(req.input.path.len == 11); - ok(memcmp(req.input.path.base, H2O_STRLIT("/index.html")) == 0); - ok(req.input.scheme == &H2O_URL_SCHEME_HTTPS); - ok(req.headers.size == 1); - ok(h2o_memis(req.headers.entries[0].name->base, req.headers.entries[0].name->len, H2O_STRLIT("custom-key"))); - ok(h2o_lcstris(req.headers.entries[0].value.base, req.headers.entries[0].value.len, H2O_STRLIT("custom-value"))); - - h2o_hpack_dispose_header_table(&header_table); - h2o_mem_clear_pool(&req.pool); -} - -static void check_flatten(h2o_hpack_header_table_t *header_table, h2o_res_t *res, const char *expected, size_t expected_len) -{ - h2o_buffer_t *buf; - h2o_http2_frame_t frame; - const char *err_desc; - - h2o_buffer_init(&buf, &h2o_socket_buffer_prototype); - h2o_hpack_flatten_response(&buf, header_table, 1, H2O_HTTP2_SETTINGS_DEFAULT.max_frame_size, res, NULL, NULL, SIZE_MAX); - - ok(h2o_http2_decode_frame(&frame, (uint8_t *)buf->bytes, buf->size, &H2O_HTTP2_SETTINGS_DEFAULT, &err_desc) > 0); - ok(h2o_memis(frame.payload, frame.length, expected, expected_len)); - - h2o_buffer_dispose(&buf); -} - -static void test_hpack(void) -{ - h2o_mem_pool_t pool; - const char *err_desc; - - h2o_mem_init_pool(&pool); - - note("decode_int"); - { - h2o_iovec_t in; - const uint8_t *p; - int32_t out; -#define TEST(input, output) \ - in = h2o_iovec_init(H2O_STRLIT(input)); \ - p = (const uint8_t *)in.base; \ - out = decode_int(&p, p + in.len, 7); \ - ok(out == output); \ - ok(p == (const uint8_t *)in.base + in.len); - TEST("\x00", 0); - TEST("\x03", 3); - TEST("\x81", 1); - TEST("\x7f\x00", 127); - TEST("\x7f\x01", 128); - TEST("\x7f\x7f", 254); - TEST("\x7f\x81\x00", 128); - TEST("\x7f\x80\x01", 255); - TEST("\x7f\xff\xff\xff\x7f", 0xfffffff + 127); - /* failures */ - TEST("", -1); - TEST("\x7f", -1); - TEST("\x7f\xff", -1); - TEST("\x7f\xff\xff\xff\xff", -1); -#undef TEST - } - - note("encode_int"); - { - uint8_t buf[16]; - size_t len; -#define TEST(encoded, value) \ - memset(buf, 0, sizeof(buf)); \ - len = encode_int(buf, value, 7) - buf; \ - ok(len == sizeof(encoded) - 1); \ - ok(memcmp(buf, encoded, sizeof(encoded) - 1) == 0); - TEST("\x00", 0); - TEST("\x03", 3); - TEST("\x7e", 126); - TEST("\x7f\x00", 127); - TEST("\x7f\x01", 128); - TEST("\x7f\x7f", 254); - TEST("\x7f\x80\x01", 255); - TEST("\x7f\xff\xff\xff\x7f", 0xfffffff + 127); -#undef TEST - } - - note("decode_huffman"); - { - h2o_iovec_t huffcode = {H2O_STRLIT("\xf1\xe3\xc2\xe5\xf2\x3a\x6b\xa0\xab\x90\xf4\xff")}; - uint8_t flags = 0; - h2o_iovec_t *decoded = decode_huffman(&pool, (const uint8_t *)huffcode.base, huffcode.len, &flags); - ok(decoded->len == sizeof("www.example.com") - 1); - ok(strcmp(decoded->base, "www.example.com") == 0); - ok(flags == 0); - } - h2o_mem_clear_pool(&pool); - - note("decode_string_bogus"); - { - char *str = "\x8c\xf1\xe3\xc2\xe5\xf2\x3a\x6b\xa0\xab\x90\xf4\xff"; - const uint8_t *buf; - const char *errstr = NULL; - size_t len; - len = strlen(str); - buf = (const uint8_t *)str; - /* since we're only passing one byte, decode_string should fail */ - h2o_iovec_t *decoded = decode_string(&pool, &buf, &buf[1], 0, &errstr); - ok(decoded == NULL); - } - h2o_mem_clear_pool(&pool); - - note("decode_header (literal header field with indexing)"); - { - struct st_h2o_decode_header_result_t result; - h2o_hpack_header_table_t header_table; - h2o_iovec_t in; - int r; - - memset(&header_table, 0, sizeof(header_table)); - header_table.hpack_capacity = 4096; - in = h2o_iovec_init( - H2O_STRLIT("\x40\x0a\x63\x75\x73\x74\x6f\x6d\x2d\x6b\x65\x79\x0d\x63\x75\x73\x74\x6f\x6d\x2d\x68\x65\x61\x64\x65\x72")); - const uint8_t *p = (const uint8_t *)in.base; - err_desc = NULL; - r = decode_header(&pool, &result, &header_table, &p, p + in.len, &err_desc); - ok(r == 0); - ok(result.name->len == 10); - ok(strcmp(result.name->base, "custom-key") == 0); - ok(result.value->len == 13); - ok(strcmp(result.value->base, "custom-header") == 0); - ok(header_table.hpack_size == 55); - } - h2o_mem_clear_pool(&pool); - - note("decode_header (literal header field without indexing)"); - { - struct st_h2o_decode_header_result_t result; - h2o_hpack_header_table_t header_table; - h2o_iovec_t in; - int r; - - memset(&header_table, 0, sizeof(header_table)); - header_table.hpack_capacity = 4096; - in = h2o_iovec_init(H2O_STRLIT("\x04\x0c\x2f\x73\x61\x6d\x70\x6c\x65\x2f\x70\x61\x74\x68")); - const uint8_t *p = (const uint8_t *)in.base; - err_desc = NULL; - r = decode_header(&pool, &result, &header_table, &p, p + in.len, &err_desc); - ok(r == 0); - ok(result.name == &H2O_TOKEN_PATH->buf); - ok(result.value->len == 12); - ok(strcmp(result.value->base, "/sample/path") == 0); - ok(header_table.hpack_size == 0); - } - h2o_mem_clear_pool(&pool); - - note("decode_header (literal header field never indexed)"); - { - struct st_h2o_decode_header_result_t result; - h2o_hpack_header_table_t header_table; - h2o_iovec_t in; - int r; - - memset(&header_table, 0, sizeof(header_table)); - header_table.hpack_capacity = 4096; - in = h2o_iovec_init(H2O_STRLIT("\x10\x08\x70\x61\x73\x73\x77\x6f\x72\x64\x06\x73\x65\x63\x72\x65\x74")); - const uint8_t *p = (const uint8_t *)in.base; - err_desc = NULL; - r = decode_header(&pool, &result, &header_table, &p, p + in.len, &err_desc); - ok(r == 0); - ok(result.name->len == 8); - ok(strcmp(result.name->base, "password") == 0); - ok(result.value->len == 6); - ok(strcmp(result.value->base, "secret") == 0); - ok(header_table.hpack_size == 0); - } - h2o_mem_clear_pool(&pool); - - note("decode_header (indexed header field)"); - { - struct st_h2o_decode_header_result_t result; - h2o_hpack_header_table_t header_table; - h2o_iovec_t in; - int r; - - memset(&header_table, 0, sizeof(header_table)); - header_table.hpack_capacity = 4096; - in = h2o_iovec_init(H2O_STRLIT("\x82")); - const uint8_t *p = (const uint8_t *)in.base; - err_desc = NULL; - r = decode_header(&pool, &result, &header_table, &p, p + in.len, &err_desc); - ok(r == 0); - ok(result.name == &H2O_TOKEN_METHOD->buf); - ok(result.value->len == 3); - ok(strcmp(result.value->base, "GET") == 0); - ok(header_table.hpack_size == 0); - } - h2o_mem_clear_pool(&pool); - - note("request examples without huffman coding"); - test_request(h2o_iovec_init(H2O_STRLIT("\x82\x86\x84\x41\x0f\x77\x77\x77\x2e\x65\x78\x61\x6d\x70\x6c\x65\x2e\x63\x6f\x6d")), - h2o_iovec_init(H2O_STRLIT("\x82\x86\x84\xbe\x58\x08\x6e\x6f\x2d\x63\x61\x63\x68\x65")), - h2o_iovec_init(H2O_STRLIT("\x82\x87\x85\xbf\x40\x0a\x63\x75\x73\x74\x6f\x6d\x2d\x6b\x65\x79\x0c\x63\x75\x73\x74" - "\x6f\x6d\x2d\x76\x61\x6c\x75\x65"))); - - note("request examples with huffman coding"); - test_request(h2o_iovec_init(H2O_STRLIT("\x82\x86\x84\x41\x8c\xf1\xe3\xc2\xe5\xf2\x3a\x6b\xa0\xab\x90\xf4\xff")), - h2o_iovec_init(H2O_STRLIT("\x82\x86\x84\xbe\x58\x86\xa8\xeb\x10\x64\x9c\xbf")), - h2o_iovec_init(H2O_STRLIT( - "\x82\x87\x85\xbf\x40\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f\x89\x25\xa8\x49\xe9\x5b\xb8\xe8\xb4\xbf"))); - - note("encode_huffman"); - { - h2o_iovec_t huffcode = {H2O_STRLIT("\xf1\xe3\xc2\xe5\xf2\x3a\x6b\xa0\xab\x90\xf4\xff")}; - char buf[sizeof("www.example.com")]; - size_t l = encode_huffman((uint8_t *)buf, (uint8_t *)H2O_STRLIT("www.example.com")); - ok(l == huffcode.len); - ok(memcmp(buf, huffcode.base, huffcode.len) == 0); - } - - note("response examples with huffmann coding"); - { - h2o_hpack_header_table_t header_table; - h2o_res_t res; - - memset(&header_table, 0, sizeof(header_table)); - header_table.hpack_capacity = 256; - - memset(&res, 0, sizeof(res)); - res.status = 302; - res.reason = "Found"; - h2o_add_header(&pool, &res.headers, H2O_TOKEN_CACHE_CONTROL, NULL, H2O_STRLIT("private")); - h2o_add_header(&pool, &res.headers, H2O_TOKEN_DATE, NULL, H2O_STRLIT("Mon, 21 Oct 2013 20:13:21 GMT")); - h2o_add_header(&pool, &res.headers, H2O_TOKEN_LOCATION, NULL, H2O_STRLIT("https://www.example.com")); - check_flatten(&header_table, &res, H2O_STRLIT("\x08\x03\x33\x30\x32\x58\x85\xae\xc3\x77\x1a\x4b\x61\x96\xd0\x7a\xbe\x94\x10" - "\x54\xd4\x44\xa8\x20\x05\x95\x04\x0b\x81\x66\xe0\x82\xa6\x2d\x1b\xff\x6e\x91" - "\x9d\x29\xad\x17\x18\x63\xc7\x8f\x0b\x97\xc8\xe9\xae\x82\xae\x43\xd3")); - - memset(&res, 0, sizeof(res)); - res.status = 307; - res.reason = "Temporary Redirect"; - h2o_add_header(&pool, &res.headers, H2O_TOKEN_CACHE_CONTROL, NULL, H2O_STRLIT("private")); - h2o_add_header(&pool, &res.headers, H2O_TOKEN_DATE, NULL, H2O_STRLIT("Mon, 21 Oct 2013 20:13:21 GMT")); - h2o_add_header(&pool, &res.headers, H2O_TOKEN_LOCATION, NULL, H2O_STRLIT("https://www.example.com")); - check_flatten(&header_table, &res, H2O_STRLIT("\x08\x03\x33\x30\x37\xc0\xbf\xbe")); -#if 0 - h2o_iovec_init(H2O_STRLIT("\x48\x03\x33\x30\x37\xc1\xc0\xbf")), - h2o_iovec_init(H2O_STRLIT("\x88\xc1\x61\x1d\x4d\x6f\x6e\x2c\x20\x32\x31\x20\x4f\x63\x74\x20\x32\x30\x31\x33\x20\x32\x30\x3a\x31\x33\x3a\x32\x32\x20\x47\x4d\x54\xc0\x5a\x04\x67\x7a\x69\x70\x77\x38\x66\x6f\x6f\x3d\x41\x53\x44\x4a\x4b\x48\x51\x4b\x42\x5a\x58\x4f\x51\x57\x45\x4f\x50\x49\x55\x41\x58\x51\x57\x45\x4f\x49\x55\x3b\x20\x6d\x61\x78\x2d\x61\x67\x65\x3d\x33\x36\x30\x30\x3b\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x31"))); -#endif - } - - h2o_mem_clear_pool(&pool); -} - -static void parse_and_compare_request(h2o_hpack_header_table_t *ht, const char *promise_base, size_t promise_len, - h2o_iovec_t expected_method, const h2o_url_scheme_t *expected_scheme, - h2o_iovec_t expected_authority, h2o_iovec_t expected_path, ...) -{ - h2o_req_t req = {NULL}; - h2o_mem_init_pool(&req.pool); - - int pseudo_header_exists_map = 0; - size_t content_length = SIZE_MAX; - const char *err_desc = NULL; - int r = h2o_hpack_parse_headers(&req, ht, (void *)(promise_base + 13), promise_len - 13, &pseudo_header_exists_map, - &content_length, NULL, &err_desc); - ok(r == 0); - ok(h2o_memis(req.input.method.base, req.input.method.len, expected_method.base, expected_method.len)); - ok(req.input.scheme == expected_scheme); - ok(h2o_memis(req.input.authority.base, req.input.authority.len, expected_authority.base, expected_authority.len)); - ok(h2o_memis(req.input.path.base, req.input.path.len, expected_path.base, expected_path.len)); - - va_list args; - va_start(args, expected_path); - size_t i; - for (i = 0; i != req.headers.size; ++i) { - h2o_iovec_t expected_name = va_arg(args, h2o_iovec_t); - if (expected_name.base == NULL) - break; - h2o_iovec_t expected_value = va_arg(args, h2o_iovec_t); - ok(h2o_memis(req.headers.entries[i].name->base, req.headers.entries[i].name->len, expected_name.base, expected_name.len)); - ok(h2o_memis(req.headers.entries[i].value.base, req.headers.entries[i].value.len, expected_value.base, expected_value.len)); - } - ok(i == req.headers.size); - va_end(args); - - h2o_mem_clear_pool(&req.pool); -} - -static void test_hpack_push(void) -{ - const static h2o_iovec_t method = {H2O_STRLIT("GET")}, authority = {H2O_STRLIT("example.com")}, - user_agent = {H2O_STRLIT( - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:40.0) Gecko/20100101 Firefox/40.0")}, - accept_root = {H2O_STRLIT("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")}, - accept_images = {H2O_STRLIT("image/png,image/*;q=0.8,*/*;q=0.5")}, - accept_language = {H2O_STRLIT("ja,en-US;q=0.7,en;q=0.3")}, - accept_encoding = {H2O_STRLIT("gzip, deflate")}, referer = {H2O_STRLIT("https://example.com/")}; - - h2o_hpack_header_table_t encode_table = {NULL}, decode_table = {NULL}; - encode_table.hpack_capacity = decode_table.hpack_capacity = 4096; - h2o_req_t req = {NULL}; - h2o_mem_init_pool(&req.pool); - h2o_buffer_t *buf; - h2o_buffer_init(&buf, &h2o_socket_buffer_prototype); - - /* setup first request */ - req.input.method = method; - req.input.scheme = &H2O_URL_SCHEME_HTTPS; - req.input.authority = authority; - req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_USER_AGENT, NULL, user_agent.base, user_agent.len); - h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_ACCEPT, NULL, accept_root.base, accept_root.len); - h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_ACCEPT_LANGUAGE, NULL, accept_language.base, accept_language.len); - h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_ACCEPT_ENCODING, NULL, accept_encoding.base, accept_encoding.len); - - /* serialize, deserialize, and compare */ - h2o_hpack_flatten_request(&buf, &encode_table, 0, 16384, &req, 0); - parse_and_compare_request(&decode_table, buf->bytes, buf->size, method, &H2O_URL_SCHEME_HTTPS, authority, - h2o_iovec_init(H2O_STRLIT("/")), H2O_TOKEN_USER_AGENT->buf, user_agent, H2O_TOKEN_ACCEPT->buf, - accept_root, H2O_TOKEN_ACCEPT_LANGUAGE->buf, accept_language, H2O_TOKEN_ACCEPT_ENCODING->buf, - accept_encoding, (h2o_iovec_t){NULL}); - h2o_buffer_consume(&buf, buf->size); - - /* setup second request */ - req.input.path = h2o_iovec_init(H2O_STRLIT("/banner.jpg")); - req.headers = (h2o_headers_t){NULL}; - h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_USER_AGENT, NULL, user_agent.base, user_agent.len); - h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_ACCEPT, NULL, accept_images.base, accept_images.len); - h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_ACCEPT_LANGUAGE, NULL, accept_language.base, accept_language.len); - h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_ACCEPT_ENCODING, NULL, accept_encoding.base, accept_encoding.len); - h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_REFERER, NULL, referer.base, referer.len); - - /* serialize, deserialize, and compare */ - h2o_hpack_flatten_request(&buf, &encode_table, 0, 16384, &req, 0); - parse_and_compare_request( - &decode_table, buf->bytes, buf->size, method, &H2O_URL_SCHEME_HTTPS, authority, h2o_iovec_init(H2O_STRLIT("/banner.jpg")), - H2O_TOKEN_USER_AGENT->buf, user_agent, H2O_TOKEN_ACCEPT->buf, accept_images, H2O_TOKEN_ACCEPT_LANGUAGE->buf, - accept_language, H2O_TOKEN_ACCEPT_ENCODING->buf, accept_encoding, H2O_TOKEN_REFERER->buf, referer, (h2o_iovec_t){NULL}); - h2o_buffer_consume(&buf, buf->size); - - /* setup third request (headers are the same) */ - req.input.path = h2o_iovec_init(H2O_STRLIT("/icon.png")); - - /* serialize, deserialize, and compare */ - h2o_hpack_flatten_request(&buf, &encode_table, 0, 16384, &req, 0); - parse_and_compare_request(&decode_table, buf->bytes, buf->size, method, &H2O_URL_SCHEME_HTTPS, authority, - h2o_iovec_init(H2O_STRLIT("/icon.png")), H2O_TOKEN_USER_AGENT->buf, user_agent, H2O_TOKEN_ACCEPT->buf, - accept_images, H2O_TOKEN_ACCEPT_LANGUAGE->buf, accept_language, H2O_TOKEN_ACCEPT_ENCODING->buf, - accept_encoding, H2O_TOKEN_REFERER->buf, referer, (h2o_iovec_t){NULL}); - h2o_buffer_consume(&buf, buf->size); - - h2o_buffer_dispose(&buf); - h2o_mem_clear_pool(&req.pool); -} - -static void test_hpack_dynamic_table(void) -{ - h2o_hpack_header_table_t header_table; - uint8_t encoded[256], *p; - h2o_iovec_t n, v; - - memset(&header_table, 0, sizeof(header_table)); - header_table.hpack_capacity = 4096; - - p = encoded; - /* expected: literal header with incremental indexing (name not indexed) */ - n = h2o_iovec_init(H2O_STRLIT("x-name")); - v = h2o_iovec_init(H2O_STRLIT("v1")); - p = encode_header(&header_table, p, &n, &v); - /* expected: literal header with incremental indexing (name indexed) */ - v = h2o_iovec_init(H2O_STRLIT("v2")); - p = encode_header(&header_table, p, &n, &v); - /* expected: literal header with incremental indexing (name indexed, referring to the name associated with v2) */ - v = h2o_iovec_init(H2O_STRLIT("v3")); - p = encode_header(&header_table, p, &n, &v); - /* expected: indexed header field */ - v = h2o_iovec_init(H2O_STRLIT("v1")); - p = encode_header(&header_table, p, &n, &v); - - const h2o_iovec_t expected = h2o_iovec_init( - H2O_STRLIT("\x40\x85" /* literal header with incremental indexing (name not indexed, 5 bytes, huffman coded) */ - "\xf2\xb5\x43\xa4\xbf" /* "x-name" */ - "\x02" /* value not compressed, 2 bytes */ - "v1" /* "v1" */ - "\x7e" /* literal header with incremental indexing (name indexed) */ - "\x02" /* value not compressed, 2 bytes */ - "v2" /* "v2" */ - "\x7e" /* literal header with incremental indexing (name indexed, referring to the last entry) */ - "\x02" /* value not compressed, 2 bytes */ - "v3" /* "v3" */ - "\xc0" /* indexed header field */ - )); - ok(p - encoded == expected.len); - ok(memcmp(encoded, expected.base, expected.len) == 0); -} - -void test_token_wo_hpack_id(void) -{ - h2o_mem_pool_t pool; - h2o_mem_init_pool(&pool); - h2o_hpack_header_table_t table = {NULL}; - table.hpack_capacity = 4096; - h2o_res_t res = {0}; - h2o_buffer_t *buf; - h2o_buffer_init(&buf, &h2o_socket_buffer_prototype); - - res.status = 200; - res.reason = "OK"; - h2o_add_header(&pool, &res.headers, H2O_TOKEN_TE, NULL, H2O_STRLIT("test")); - - h2o_hpack_flatten_response(&buf, &table, 1, H2O_HTTP2_SETTINGS_DEFAULT.max_frame_size, &res, NULL, NULL, SIZE_MAX); - ok(h2o_memis(buf->bytes + 9, buf->size - 9, H2O_STRLIT("\x88" /* :status:200 */ - "\x40\x02" /* literal header w. incremental indexing, raw, TE */ - "te" - "\x83" /* header value, huffman */ - "IP\x9f" /* test */))); - h2o_buffer_consume(&buf, buf->size); - h2o_hpack_flatten_response(&buf, &table, 1, H2O_HTTP2_SETTINGS_DEFAULT.max_frame_size, &res, NULL, NULL, SIZE_MAX); - ok(h2o_memis(buf->bytes + 9, buf->size - 9, H2O_STRLIT("\x88" /* :status:200 */ - "\xbe" /* te: test, indexed */))); - - h2o_buffer_dispose(&buf); - h2o_hpack_dispose_header_table(&table); - h2o_mem_clear_pool(&pool); -} - -void test_lib__http2__hpack(void) -{ - subtest("hpack", test_hpack); - subtest("hpack-push", test_hpack_push); - subtest("hpack-dynamic-table", test_hpack_dynamic_table); - subtest("token-wo-hpack-id", test_token_wo_hpack_id); -} diff --git a/web/server/h2o/libh2o/t/00unit/lib/http2/scheduler.c b/web/server/h2o/libh2o/t/00unit/lib/http2/scheduler.c deleted file mode 100644 index d643cbf4c..000000000 --- a/web/server/h2o/libh2o/t/00unit/lib/http2/scheduler.c +++ /dev/null @@ -1,563 +0,0 @@ -/* - * Copyright (c) 2015 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include <string.h> -#include "../../test.h" -#include "../../../../lib/http2/scheduler.c" - -static void test_queue(void) -{ - h2o_http2_scheduler_queue_t drr; - struct node_t { - h2o_http2_scheduler_queue_node_t super; - uint16_t weight; - size_t cnt; - } w256 = {{{NULL}}, 256}, w128 = {{{NULL}}, 128}, w32 = {{{NULL}}, 32}, w1 = {{{NULL}}, 1}; - size_t i; - - queue_init(&drr); - queue_set(&drr, &w256.super, 256); - queue_set(&drr, &w128.super, 128); - queue_set(&drr, &w32.super, 32); - queue_set(&drr, &w1.super, 1); - - for (i = 0; i != (256 + 128 + 32 + 1) * 100; ++i) { - struct node_t *popped = (struct node_t *)queue_pop(&drr); - if (popped == NULL) { - ok(0); - return; - } - ++popped->cnt; - queue_set(&drr, &popped->super, popped->weight); - } - - ok(w256.cnt == 25600); - ok(w128.cnt == 12800); - ok(w32.cnt == 3200); - ok(w1.cnt == 100); -} - -typedef struct { - h2o_http2_scheduler_openref_t ref; - const char *name; - int still_is_active; - int bail_out; -} node_t; - -static char output[1024]; -static size_t max_cnt; - -static int iterate_cb(h2o_http2_scheduler_openref_t *ref, int *still_is_active, void *_unused) -{ - node_t *node = (void *)ref; - - if (output[0] != '\0') - strcat(output, ","); - strcat(output, node->name); - *still_is_active = node->still_is_active; - - if (--max_cnt == 0) - return 1; - return node->bail_out; -} - -static void test_round_robin(void) -{ - h2o_http2_scheduler_node_t root; - node_t nodeA = {{{NULL}}, "A", 1, 0}; - node_t nodeB = {{{NULL}}, "B", 1, 0}; - node_t nodeC = {{{NULL}}, "C", 1, 0}; - - h2o_http2_scheduler_init(&root); - h2o_http2_scheduler_open(&nodeA.ref, &root, 1, 0); - h2o_http2_scheduler_open(&nodeB.ref, &root, 1, 0); - h2o_http2_scheduler_open(&nodeC.ref, &root, 1, 0); - - /* none are active */ - output[0] = '\0'; - max_cnt = 4; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "") == 0); - - /* set A to active */ - h2o_http2_scheduler_activate(&nodeA.ref); - output[0] = '\0'; - max_cnt = 4; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "A,A,A,A") == 0); - - /* A should change to inactive */ - nodeA.still_is_active = 0; - output[0] = '\0'; - max_cnt = 4; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "A") == 0); - - /* set all to active */ - h2o_http2_scheduler_activate(&nodeA.ref); - nodeA.still_is_active = 1; - h2o_http2_scheduler_activate(&nodeB.ref); - h2o_http2_scheduler_activate(&nodeC.ref); - output[0] = '\0'; - max_cnt = 7; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "A,B,C,A,B,C,A") == 0); - - /* change them to inactive */ - nodeA.still_is_active = 0; - nodeB.still_is_active = 0; - nodeC.still_is_active = 0; - output[0] = '\0'; - max_cnt = 4; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "B,C,A") == 0); - - /* close C */ - h2o_http2_scheduler_close(&nodeC.ref); - h2o_http2_scheduler_activate(&nodeA.ref); - h2o_http2_scheduler_activate(&nodeB.ref); - output[0] = '\0'; - max_cnt = 4; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "A,B") == 0); - - h2o_http2_scheduler_close(&nodeA.ref); - h2o_http2_scheduler_close(&nodeB.ref); - h2o_http2_scheduler_dispose(&root); -} - -static void test_priority(void) -{ - h2o_http2_scheduler_node_t root; - node_t nodeA = {{{NULL}}, "A", 1, 0}; - node_t nodeB = {{{NULL}}, "B", 1, 0}; - node_t nodeC = {{{NULL}}, "C", 1, 0}; - - h2o_http2_scheduler_init(&root); - h2o_http2_scheduler_open(&nodeA.ref, &root, 32, 0); - h2o_http2_scheduler_activate(&nodeA.ref); - h2o_http2_scheduler_open(&nodeB.ref, &root, 32, 0); - h2o_http2_scheduler_activate(&nodeB.ref); - h2o_http2_scheduler_open(&nodeC.ref, &root, 12, 0); - h2o_http2_scheduler_activate(&nodeC.ref); - - /* should only get the higher ones */ - output[0] = '\0'; - max_cnt = 20; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "A,B,A,B,C,A,B,A,B,A,B,C,A,B,A,B,C,A,B,A") == 0); - - /* eventually disactivate A */ - nodeA.still_is_active = 0; - output[0] = '\0'; - max_cnt = 10; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "B,A,B,C,B,B,B,C,B,B") == 0); - - /* should start serving C as B gets disactivated */ - nodeB.still_is_active = 0; - output[0] = '\0'; - max_cnt = 10; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "C,B,C,C,C,C,C,C,C,C") == 0); - - h2o_http2_scheduler_close(&nodeA.ref); - h2o_http2_scheduler_close(&nodeB.ref); - h2o_http2_scheduler_close(&nodeC.ref); - h2o_http2_scheduler_dispose(&root); -} - -static void test_dependency(void) -{ - h2o_http2_scheduler_node_t root; - node_t nodeA = {{{NULL}}, "A", 1, 0}; - node_t nodeB = {{{NULL}}, "B", 1, 0}; - node_t nodeC = {{{NULL}}, "C", 1, 0}; - node_t nodeD = {{{NULL}}, "D", 1, 0}; - - /* - * root - * /|\ - * A B C - * | - * D - */ - - h2o_http2_scheduler_init(&root); - h2o_http2_scheduler_open(&nodeA.ref, &root, 32, 0); - h2o_http2_scheduler_activate(&nodeA.ref); - h2o_http2_scheduler_open(&nodeB.ref, &root, 32, 0); - h2o_http2_scheduler_activate(&nodeB.ref); - h2o_http2_scheduler_open(&nodeC.ref, &root, 12, 0); - h2o_http2_scheduler_activate(&nodeC.ref); - h2o_http2_scheduler_open(&nodeD.ref, &nodeA.ref.node, 6, 0); - h2o_http2_scheduler_activate(&nodeD.ref); - - /* should get A and B (and some C) */ - output[0] = '\0'; - max_cnt = 20; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "A,B,A,B,C,A,B,A,B,A,B,C,A,B,A,B,C,A,B,A") == 0); - - /* eventually disactivate A, should get D,B (and some C) */ - nodeA.still_is_active = 0; - output[0] = '\0'; - max_cnt = 20; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "B,A,B,C,D,B,D,B,D,B,C,D,B,D,B,C,D,B,D,B") == 0); - - /* eventually disactivate B, should get D only (and some C) */ - nodeB.still_is_active = 0; - output[0] = '\0'; - max_cnt = 20; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "D,B,C,D,D,D,C,D,D,C,D,D,D,C,D,D,C,D,D,D") == 0); - - /* closing A raises D, and the priority becomes D = B > C */ - h2o_http2_scheduler_close(&nodeA.ref); - h2o_http2_scheduler_activate(&nodeB.ref); - nodeB.still_is_active = 1; - output[0] = '\0'; - max_cnt = 20; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "D,C,B,D,B,D,B,C,D,B,D,B,D,C,B,D,B,D,B,C") == 0); - - h2o_http2_scheduler_close(&nodeB.ref); - h2o_http2_scheduler_close(&nodeC.ref); - h2o_http2_scheduler_close(&nodeD.ref); - h2o_http2_scheduler_dispose(&root); -} - -static void test_exclusive(void) -{ - h2o_http2_scheduler_node_t scheduler; - node_t nodeA = {{{NULL}}, "A", 1, 0}; - node_t nodeB = {{{NULL}}, "B", 1, 0}; - node_t nodeC = {{{NULL}}, "C", 1, 0}; - - h2o_http2_scheduler_init(&scheduler); - - /* - * root root - * /\ | - * A B => C - * |\ - * A B - */ - - /* open A & B */ - h2o_http2_scheduler_open(&nodeA.ref, &scheduler, 32, 0); - h2o_http2_scheduler_activate(&nodeA.ref); - h2o_http2_scheduler_open(&nodeB.ref, &scheduler, 32, 0); - h2o_http2_scheduler_activate(&nodeB.ref); - - output[0] = '\0'; - max_cnt = 5; - h2o_http2_scheduler_run(&scheduler, iterate_cb, NULL); - ok(strcmp(output, "A,B,A,B,A") == 0); - - /* add C as an exclusive */ - h2o_http2_scheduler_open(&nodeC.ref, &scheduler, 12, 1); - - /* should get A & B since C is inactive */ - output[0] = '\0'; - max_cnt = 5; - h2o_http2_scheduler_run(&scheduler, iterate_cb, NULL); - ok(strcmp(output, "A,B,A,B,A") == 0); /* under current impl, moving the deps causes them to be ordered using _all_ref */ - - /* should see C once it is activated */ - h2o_http2_scheduler_activate(&nodeC.ref); - output[0] = '\0'; - max_cnt = 5; - h2o_http2_scheduler_run(&scheduler, iterate_cb, NULL); - ok(strcmp(output, "C,C,C,C,C") == 0); - - /* eventually disabling C should show A and B */ - nodeC.still_is_active = 0; - output[0] = '\0'; - max_cnt = 5; - h2o_http2_scheduler_run(&scheduler, iterate_cb, NULL); - ok(strcmp(output, "C,B,A,B,A") == 0); - - h2o_http2_scheduler_close(&nodeA.ref); - h2o_http2_scheduler_close(&nodeB.ref); - h2o_http2_scheduler_close(&nodeC.ref); - h2o_http2_scheduler_dispose(&scheduler); -} - -static void test_firefox(void) -{ - /* - * firefox sends something like below - * - * PRIORITY: id:3, dependency:0, weight: 201 - * PRIORITY: id:5, dependency:0, weight: 101 - * PRIORITY: id:7, dependency:0, weight: 1 - * PRIORITY: id:9, dependency:7, weight: 1 - * PRIORITY: id:11, dependency:3, weight: 1 - * HEADERS: id:13, dependency:11, weight: 22 - * HEADERS: id:15, dependency:3, weight: 22 - * HEADERS: id:17, dependency:3, weight: 22 - */ - h2o_http2_scheduler_node_t root; - node_t g1 = {{{NULL}}, "g1", 0, 0}; - node_t g2 = {{{NULL}}, "g2", 0, 0}; - node_t g3 = {{{NULL}}, "g3", 0, 0}; - node_t g4 = {{{NULL}}, "g4", 0, 0}; - node_t g5 = {{{NULL}}, "g5", 0, 0}; - node_t r1 = {{{NULL}}, "r1", 1, 0}; - node_t r2 = {{{NULL}}, "r2", 1, 0}; - node_t r3 = {{{NULL}}, "r3", 1, 0}; - - h2o_http2_scheduler_init(&root); - - /* setup the proirity groups */ - h2o_http2_scheduler_open(&g1.ref, &root, 201, 0); - h2o_http2_scheduler_open(&g2.ref, &root, 101, 0); - h2o_http2_scheduler_open(&g3.ref, &root, 1, 0); - h2o_http2_scheduler_open(&g4.ref, &g3.ref.node, 1, 0); - h2o_http2_scheduler_open(&g5.ref, &g1.ref.node, 1, 0); - - /* open r1 and set serving */ - h2o_http2_scheduler_open(&r1.ref, &g5.ref.node, 22, 0); - h2o_http2_scheduler_activate(&r1.ref); - output[0] = '\0'; - max_cnt = 5; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "r1,r1,r1,r1,r1") == 0); - - /* open r2,r3 and serve */ - h2o_http2_scheduler_open(&r2.ref, &g1.ref.node, 22, 0); - h2o_http2_scheduler_activate(&r2.ref); - h2o_http2_scheduler_open(&r3.ref, &g1.ref.node, 22, 0); - h2o_http2_scheduler_activate(&r3.ref); - output[0] = '\0'; - max_cnt = 5; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "r2,r3,r2,r3,r2") == 0); - - /* eventually disactive r2,r3 */ - r2.still_is_active = 0; - r3.still_is_active = 0; - output[0] = '\0'; - max_cnt = 5; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "r3,r2,r1,r1,r1") == 0); - - /* close r2,r3 */ - h2o_http2_scheduler_close(&r2.ref); - h2o_http2_scheduler_close(&r3.ref); - output[0] = '\0'; - max_cnt = 5; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "r1,r1,r1,r1,r1") == 0); - - h2o_http2_scheduler_close(&r1.ref); - - h2o_http2_scheduler_close(&g1.ref); - h2o_http2_scheduler_close(&g2.ref); - h2o_http2_scheduler_close(&g3.ref); - h2o_http2_scheduler_close(&g4.ref); - h2o_http2_scheduler_close(&g5.ref); - h2o_http2_scheduler_dispose(&root); -} - -static void dump_tree(h2o_http2_scheduler_node_t *node) -{ - if (node->_parent != NULL) { - node_t *n = (void *)node; - strcat(output, n->name); - sprintf(output + strlen(output), "%u", (unsigned)h2o_http2_scheduler_get_weight(&n->ref)); - } - - if (!h2o_linklist_is_empty(&node->_all_refs)) { - unsigned weight; - int found_any = 0; - for (weight = 256; weight >= 1; --weight) { - h2o_linklist_t *link; - for (link = node->_all_refs.next; link != &node->_all_refs; link = link->next) { - h2o_http2_scheduler_openref_t *ref = H2O_STRUCT_FROM_MEMBER(h2o_http2_scheduler_openref_t, _all_link, link); - if (ref->weight == weight) { - if (!found_any) { - found_any = 1; - strcat(output, "("); - } - dump_tree(&ref->node); - } - } - } - if (found_any) - strcat(output, ")"); - } -} - -static int test_reprioritize_exclusive; - -static void test_reprioritize(void) -{ - /* from 5.3.3 of HTTP-2 draft 16 - * ? ? ? ? - * | / \ | | - * A D A D D - * / \ / / \ / \ | - * B C ==> F B C ==> F A OR A - * / \ | / \ /|\ - * D E E B C B C F - * | | | - * F E E - * (intermediate) (non-exclusive) (exclusive) - */ - h2o_http2_scheduler_node_t root; - node_t a = {{{NULL}}, "A"}; - node_t b = {{{NULL}}, "B"}; - node_t c = {{{NULL}}, "C"}; - node_t d = {{{NULL}}, "D"}; - node_t e = {{{NULL}}, "E"}; - node_t f = {{{NULL}}, "F"}; - - h2o_http2_scheduler_init(&root); - h2o_http2_scheduler_open(&a.ref, &root, 6, 0); - h2o_http2_scheduler_open(&b.ref, &a.ref.node, 5, 0); - h2o_http2_scheduler_open(&c.ref, &a.ref.node, 4, 0); - h2o_http2_scheduler_open(&d.ref, &c.ref.node, 3, 0); - h2o_http2_scheduler_open(&e.ref, &c.ref.node, 2, 0); - h2o_http2_scheduler_open(&f.ref, &d.ref.node, 1, 0); - - output[0] = '\0'; - dump_tree(&root); - ok(strcmp(output, "(A6(B5C4(D3(F1)E2)))") == 0); - - h2o_http2_scheduler_rebind(&a.ref, &d.ref.node, 1, test_reprioritize_exclusive); - output[0] = '\0'; - dump_tree(&root); - if (!test_reprioritize_exclusive) { - ok(strcmp(output, "(D3(F1A1(B5C4(E2))))") == 0); - } else { - ok(strcmp(output, "(D3(A1(B5C4(E2)F1)))") == 0); - } - - h2o_http2_scheduler_close(&a.ref); - h2o_http2_scheduler_close(&b.ref); - h2o_http2_scheduler_close(&c.ref); - h2o_http2_scheduler_close(&d.ref); - h2o_http2_scheduler_close(&e.ref); - h2o_http2_scheduler_close(&f.ref); - h2o_http2_scheduler_dispose(&root); -} - -static void test_change_weight(void) -{ - h2o_http2_scheduler_node_t root; - node_t nodeA = {{{NULL}}, "A", 1, 0}; - node_t nodeB = {{{NULL}}, "B", 1, 0}; - node_t nodeC = {{{NULL}}, "C", 1, 0}; - - h2o_http2_scheduler_init(&root); - - /* open them all with priority=16 */ - h2o_http2_scheduler_open(&nodeA.ref, &root, 16, 0); - h2o_http2_scheduler_activate(&nodeA.ref); - h2o_http2_scheduler_open(&nodeB.ref, &root, 16, 0); - h2o_http2_scheduler_activate(&nodeB.ref); - h2o_http2_scheduler_open(&nodeC.ref, &root, 16, 0); - h2o_http2_scheduler_activate(&nodeC.ref); - output[0] = '\0'; - dump_tree(&root); - ok(strcmp(output, "(A16B16C16)") == 0); - - /* check the output */ - output[0] = '\0'; - max_cnt = 20; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "A,B,C,A,B,C,A,B,C,A,B,C,A,B,C,A,B,C,A,B") == 0); - - /* nodeA.priority = 4 */ - h2o_http2_scheduler_rebind(&nodeA.ref, &root, 4, 0); - output[0] = '\0'; - dump_tree(&root); - ok(strcmp(output, "(B16C16A4)") == 0); - output[0] = '\0'; - max_cnt = 20; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "C,B,C,B,C,B,C,A,B,C,B,C,B,C,B,C,A,B,C,B") == 0); - - /* eventually disactivate B,C */ - nodeB.still_is_active = 0; - nodeC.still_is_active = 0; - output[0] = '\0'; - max_cnt = 10; - h2o_http2_scheduler_run(&root, iterate_cb, NULL); - ok(strcmp(output, "C,B,A,A,A,A,A,A,A,A") == 0); - - h2o_http2_scheduler_close(&nodeA.ref); - h2o_http2_scheduler_close(&nodeB.ref); - h2o_http2_scheduler_close(&nodeC.ref); - h2o_http2_scheduler_dispose(&root); -} - -static void test_exclusive_at_current_pos(void) -{ - h2o_http2_scheduler_node_t root; - node_t nodeA = {{{NULL}}, "A", 1, 0}; - node_t nodeB = {{{NULL}}, "B", 1, 0}; - node_t nodeC = {{{NULL}}, "C", 1, 0}; - - h2o_http2_scheduler_init(&root); - - /* open them all with priority=16 */ - h2o_http2_scheduler_open(&nodeA.ref, &root, 16, 0); - h2o_http2_scheduler_activate(&nodeA.ref); - h2o_http2_scheduler_open(&nodeB.ref, &root, 16, 0); - h2o_http2_scheduler_activate(&nodeB.ref); - h2o_http2_scheduler_open(&nodeC.ref, &root, 16, 0); - h2o_http2_scheduler_activate(&nodeC.ref); - - output[0] = '\0'; - dump_tree(&root); - ok(strcmp(output, "(A16B16C16)") == 0); - - h2o_http2_scheduler_rebind(&nodeB.ref, &root, 1, 1); - - output[0] = '\0'; - dump_tree(&root); - ok(strcmp(output, "(B1(A16C16))") == 0); - - h2o_http2_scheduler_close(&nodeA.ref); - h2o_http2_scheduler_close(&nodeB.ref); - h2o_http2_scheduler_close(&nodeC.ref); - h2o_http2_scheduler_dispose(&root); -} - -void test_lib__http2__scheduler(void) -{ - subtest("drr", test_queue); - subtest("round-robin", test_round_robin); - subtest("priority", test_priority); - subtest("dependency", test_dependency); - subtest("exclusive", test_exclusive); - subtest("firefox", test_firefox); - test_reprioritize_exclusive = 0; - subtest("repriortize-nonexclusive", test_reprioritize); - test_reprioritize_exclusive = 1; - subtest("repriortize-exclusive", test_reprioritize); - subtest("change-weight", test_change_weight); - subtest("exclusive-at-current-pos", test_exclusive_at_current_pos); -} diff --git a/web/server/h2o/libh2o/t/00unit/src/ssl.c b/web/server/h2o/libh2o/t/00unit/src/ssl.c deleted file mode 100644 index 10fb27375..000000000 --- a/web/server/h2o/libh2o/t/00unit/src/ssl.c +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright (c) 2015 DeNA Co., Ltd., Kazuho Oku - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include "../test.h" -#include "../../../src/ssl.c" - -const uint64_t UTC2000 = (365 * 30 + 7) * 86400; - -static void test_load_tickets_file(void) -{ - int ret = load_tickets_file("t/assets/session_tickets.yaml"); - ok(ret == 0); - if (ret != 0) - return; - - pthread_rwlock_rdlock(&session_tickets.rwlock); - ok(session_tickets.tickets.size == 2); - if (session_tickets.tickets.size != 2) - goto Exit; - - /* first entry should be the newer one */ - struct st_session_ticket_t *ticket = session_tickets.tickets.entries[0]; - ok(memcmp(ticket->name, H2O_STRLIT("\xe7\xe3\xc6\x98\x0b\x18\x32\xbd\x5d\x23\x91\x75\x72\xe8\x44\x8f")) == 0); - ok(ticket->cipher.cipher == EVP_aes_256_cbc()); - ok(memcmp(ticket->cipher.key, H2O_STRLIT("\xf6\xe0\x71\xd9\x93\xb0\x5f\x77\xce\x51\xcb\x0f\xe2\xe0\xe1\x8c\x72\x00\xc2\xa7" - "\x87\x3a\x66\x00\x8c\x8e\x1d\x75\xae\x7b\x8e\x2a")) == 0); - ok(ticket->hmac.md == EVP_sha256()); - ok(memcmp(ticket->hmac.key, - H2O_STRLIT("\xf4\xfc\xb8\x6f\xdf\x03\xa7\xf3\x35\x63\x2e\x66\x8a\x8f\xe9\x56\xc5\xbf\xe7\x7a\x41\x41\x2d\x26\x99" - "\x79\x63\x47\x68\x99\x9a\xdd\x6a\x84\xca\xfe\xa4\x1b\x6b\x2c\x47\xaa\xf1\xa5\x14\xca\x9d\x2a\x84\xf4" - "\x8d\x1f\x5f\x70\x18\xff\x17\x40\xcf\x9b\x94\x4b\x8f\xcf")) == 0); - ok(ticket->not_before == 1437093330); - ok(ticket->not_after == 1437096929); - - /* second is the older one */ - ticket = session_tickets.tickets.entries[1]; - ok(memcmp(ticket->name, H2O_STRLIT("\xa3\x97\xb6\xb7\xfa\xb9\x29\x36\x62\x03\xf1\x6f\xc8\x1f\xfb\xed")) == 0); - ok(ticket->cipher.cipher == EVP_aes_128_cbc()); - ok(memcmp(ticket->cipher.key, H2O_STRLIT("\xf1\xed\x89\xcd\xe6\x87\x63\x63\x0e\x80\xd2\xbe\x82\x7c\xfb\x98")) == 0); - ok(ticket->hmac.md == EVP_sha1()); - ok(memcmp(ticket->hmac.key, - H2O_STRLIT("\xe3\xfe\x72\x64\x4f\x64\x31\x5a\x4a\x8a\xd6\x37\x69\xa3\x57\x7c\xce\xc4\xdd\x13\xb2\x0e\xaf\x8c\x00\x88" - "\x86\xe5\x45\x8d\xb1\x0e\x65\x8c\xf2\xa8\x3f\x04\x40\x3a\xc4\xe9\x80\x35\xd2\x42\x2a\x75\x80\x67\x30\xeb" - "\x4f\x2f\xee\x12\xfa\xff\x95\x48\x95\xbc\x65\xd1")) == 0); - ok(ticket->not_before == 1437092430); - ok(ticket->not_after == 1437096029); - - ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437092429); - ok(ticket == NULL); - ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437092430); - ok(ticket == session_tickets.tickets.entries[1]); - ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437093329); - ok(ticket == session_tickets.tickets.entries[1]); - ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437093330); - ok(ticket == session_tickets.tickets.entries[0]); - ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437096029); - ok(ticket == session_tickets.tickets.entries[0]); - ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437096030); - ok(ticket == session_tickets.tickets.entries[0]); - ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437096929); - ok(ticket == session_tickets.tickets.entries[0]); - ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437096930); - ok(ticket == NULL); - -Exit: - pthread_rwlock_unlock(&session_tickets.rwlock); - ; -} - -static void test_serialize_tickets(void) -{ - session_ticket_vector_t orig = {NULL}, parsed = {NULL}; - h2o_iovec_t serialized; - char errstr[256]; - int ret; - size_t i; - - h2o_vector_reserve(NULL, &orig, orig.size + 2); - orig.entries[orig.size++] = new_ticket(EVP_aes_256_cbc(), EVP_sha256(), UTC2000, UTC2000 + 3600, 1); - orig.entries[orig.size++] = new_ticket(EVP_aes_256_cbc(), EVP_sha256(), UTC2000 + 600, UTC2000 + 4200, 1); - - serialized = serialize_tickets(&orig); - ok(serialized.base != NULL); - - ret = parse_tickets(&parsed, serialized.base, serialized.len, errstr); - ok(ret == 0); - - ok(parsed.size == orig.size); - for (i = 0; i != parsed.size; ++i) { -#define OK_VALUE(n) ok(parsed.entries[i]->n == orig.entries[i]->n) -#define OK_MEMCMP(n, s) ok(memcmp(parsed.entries[i]->n, orig.entries[i]->n, (s)) == 0) - OK_MEMCMP(name, sizeof(parsed.entries[i]->name)); - OK_VALUE(cipher.cipher); - OK_MEMCMP(cipher.key, EVP_CIPHER_key_length(parsed.entries[i]->cipher.cipher)); - OK_VALUE(hmac.md); - OK_MEMCMP(hmac.key, EVP_MD_block_size(parsed.entries[i]->hmac.md)); - OK_VALUE(not_before); - OK_VALUE(not_after); -#undef OK_VALUE -#undef OK_MEMCMP - } - - free_tickets(&orig); - free_tickets(&parsed); - free(serialized.base); -} - -static void test_memcached_ticket_update(void) -{ -#define TEST_KEY "h2o:session-ticket-test" - - const char *memc_port_str; - uint16_t memc_port; - yrmcds conn; - yrmcds_response resp; - yrmcds_error err; - - /* obtain port number (or skip) */ - if ((memc_port_str = getenv("MEMCACHED_PORT")) == NULL) { - printf("MEMCACHED_PORT is not defined; skipping tests\n"); - return; - } - if (sscanf(memc_port_str, "%" SCNu16, &memc_port) != 1) { - fprintf(stderr, "failed to parse the value of MEMCACHED_PORT\n"); - ok(0); - return; - } - /* connect */ - err = yrmcds_connect(&conn, "127.0.0.1", memc_port); - ok(err == YRMCDS_OK); - if (err != YRMCDS_OK) - return; - /* delete test key */ - err = yrmcds_remove(&conn, H2O_STRLIT(TEST_KEY), 0, NULL); - ok(err == YRMCDS_OK); - if (err != YRMCDS_OK) - return; - err = yrmcds_recv(&conn, &resp); - ok(err == YRMCDS_OK); - if (err != YRMCDS_OK) - return; - - /* set a new entry that immediately becomes active */ - int retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000); - ok(retry == 1); /* first attempt should return a retry, since valid ticket does not exist */ - retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000 + 1); - ok(retry == 0); - ok(session_tickets.tickets.size == 1); - ok(session_tickets.tickets.entries[0]->not_before == UTC2000); - - /* continue using existing one */ - retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000 + conf.lifetime / 8); - ok(retry == 0); - ok(session_tickets.tickets.size == 1); - ok(session_tickets.tickets.entries[0]->not_before == UTC2000); - - /* schedule a new entry */ - retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000 + conf.lifetime / 2); - ok(retry == 1); - retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000 + conf.lifetime / 2); - ok(retry == 0); - ok(session_tickets.tickets.size == 2); - ok(session_tickets.tickets.entries[0]->not_before > UTC2000 + conf.lifetime / 2); - ok(session_tickets.tickets.entries[1]->not_before == UTC2000); - - /* old entry gets removed when expired, and new entry is scheduled */ - retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000 + conf.lifetime); - ok(retry == 1); - retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000 + conf.lifetime); - ok(retry == 0); - ok(session_tickets.tickets.size == 2); - ok(session_tickets.tickets.entries[0]->not_before > UTC2000 + conf.lifetime); - ok(session_tickets.tickets.entries[1]->not_before > UTC2000 + conf.lifetime / 2); - - /* disconnect */ - yrmcds_close(&conn); -} - -void test_src__ssl_c(void) -{ - subtest("load-tickets-file", test_load_tickets_file); - subtest("serialize-tickets", test_serialize_tickets); - subtest("memcached-ticket-update", test_memcached_ticket_update); -} diff --git a/web/server/h2o/libh2o/t/00unit/test.c b/web/server/h2o/libh2o/t/00unit/test.c deleted file mode 100644 index a74859d22..000000000 --- a/web/server/h2o/libh2o/t/00unit/test.c +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#include "h2o.h" -#include "h2o/configurator.h" -#include "../../src/standalone.h" -#include "./test.h" - -static void loopback_on_send(h2o_ostream_t *self, h2o_req_t *req, h2o_iovec_t *inbufs, size_t inbufcnt, h2o_send_state_t send_state) -{ - h2o_loopback_conn_t *conn = H2O_STRUCT_FROM_MEMBER(h2o_loopback_conn_t, _ostr_final, self); - size_t i; - - for (i = 0; i != inbufcnt; ++i) { - h2o_buffer_reserve(&conn->body, inbufs[i].len); - memcpy(conn->body->bytes + conn->body->size, inbufs[i].base, inbufs[i].len); - conn->body->size += inbufs[i].len; - } - - if (h2o_send_state_is_in_progress(send_state)) - h2o_proceed_response(&conn->req); - else - conn->_is_complete = 1; -} - -static socklen_t get_sockname(h2o_conn_t *conn, struct sockaddr *sa) -{ - struct sockaddr_in *sin = (void *)sa; - sin->sin_family = AF_INET; - sin->sin_addr.s_addr = htonl(0x7f000001); - sin->sin_port = htons(80); - return sizeof(*sin); -} - -static socklen_t get_peername(h2o_conn_t *conn, struct sockaddr *sa) -{ - struct sockaddr_in *sin = (void *)sa; - sin->sin_family = AF_INET; - sin->sin_addr.s_addr = htonl(0x7f000001); - sin->sin_port = htons(55555); - return sizeof(*sin); -} - -h2o_loopback_conn_t *h2o_loopback_create(h2o_context_t *ctx, h2o_hostconf_t **hosts) -{ - static const h2o_conn_callbacks_t callbacks = {get_sockname, get_peername}; - h2o_loopback_conn_t *conn = (void *)h2o_create_connection(sizeof(*conn), ctx, hosts, (struct timeval){0}, &callbacks); - - memset((char *)conn + sizeof(conn->super), 0, offsetof(struct st_h2o_loopback_conn_t, req) - sizeof(conn->super)); - conn->super.ctx = ctx; - conn->super.hosts = hosts; - conn->super.callbacks = &callbacks; - h2o_init_request(&conn->req, &conn->super, NULL); - h2o_buffer_init(&conn->body, &h2o_socket_buffer_prototype); - conn->req._ostr_top = &conn->_ostr_final; - conn->_ostr_final.do_send = loopback_on_send; - - return conn; -} - -void h2o_loopback_destroy(h2o_loopback_conn_t *conn) -{ - h2o_buffer_dispose(&conn->body); - h2o_dispose_request(&conn->req); - free(conn); -} - -void h2o_loopback_run_loop(h2o_loopback_conn_t *conn) -{ - if (conn->req.input.scheme == NULL) - conn->req.input.scheme = &H2O_URL_SCHEME_HTTP; - if (conn->req.version == 0) - conn->req.version = 0x100; /* HTTP/1.0 */ - - h2o_process_request(&conn->req); - - while (!conn->_is_complete) { -#if H2O_USE_LIBUV - uv_run(conn->super.ctx->loop, UV_RUN_ONCE); -#else - h2o_evloop_run(conn->super.ctx->loop, INT32_MAX); -#endif - } -} - -char *sha1sum(const void *src, size_t len) -{ - SHA_CTX ctx; - unsigned char bin[SHA_DIGEST_LENGTH]; - static char hexbuf[SHA_DIGEST_LENGTH * 2 + 1]; - size_t i; - - SHA1_Init(&ctx); - SHA1_Update(&ctx, src, len); - SHA1_Final(bin, &ctx); - - for (i = 0; i != SHA_DIGEST_LENGTH; ++i) { - hexbuf[i * 2] = ("0123456789abcdef")[bin[i] >> 4]; - hexbuf[i * 2 + 1] = ("0123456789abcdef")[bin[i] & 0xf]; - } - hexbuf[i * 2] = '\0'; - - return hexbuf; -} - -h2o_loop_t *test_loop; - -static void test_loopback(void) -{ - h2o_globalconf_t conf; - h2o_context_t ctx; - h2o_loopback_conn_t *conn; - - h2o_config_init(&conf); - h2o_config_register_host(&conf, h2o_iovec_init(H2O_STRLIT("default")), 65535); - h2o_context_init(&ctx, test_loop, &conf); - - conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); - conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); - conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); - h2o_loopback_run_loop(conn); - - ok(conn->req.res.status == 404); - - h2o_loopback_destroy(conn); - - h2o_context_dispose(&ctx); - h2o_config_dispose(&conf); -} - -int main(int argc, char **argv) -{ - init_openssl(); - - { /* library tests */ - subtest("lib/cache.c", test_lib__common__cache_c); - subtest("lib/common/multithread.c", test_lib__common__multithread_c); - subtest("lib/common/hostinfo.c", test_lib__common__hostinfo_c); - subtest("lib/common/serverutil.c", test_lib__common__serverutil_c); - subtest("lib/common/serverutil.c", test_lib__common__socket_c); - subtest("lib/common/string.c", test_lib__common__string_c); - subtest("lib/common/url.c", test_lib__common__url_c); - subtest("lib/common/time.c", test_lib__common__time_c); - subtest("lib/core/headers.c", test_lib__core__headers_c); - subtest("lib/core/proxy.c", test_lib__core__proxy_c); - subtest("lib/core/util.c", test_lib__core__util_c); - subtest("lib/handler/headers.c", test_lib__handler__headers_c); - subtest("lib/handler/mimemap.c", test_lib__handler__mimemap_c); - subtest("lib/http2/hpack.c", test_lib__http2__hpack); - subtest("lib/http2/scheduler.c", test_lib__http2__scheduler); - subtest("lib/http2/casper.c", test_lib__http2__casper); - subtest("lib/http2/cache_digests.c", test_lib__http2__cache_digests); - } - - { /* tests that use the run loop */ -#if H2O_USE_LIBUV - test_loop = h2o_mem_alloc(sizeof(*test_loop)); - uv_loop_init(test_loop); -#else - test_loop = h2o_evloop_create(); -#endif - - subtest("lib/t/test.c/loopback", test_loopback); - subtest("lib/fastcgi.c", test_lib__handler__fastcgi_c); - subtest("lib/file.c", test_lib__handler__file_c); - subtest("lib/gzip.c", test_lib__handler__gzip_c); - subtest("lib/redirect.c", test_lib__handler__redirect_c); - subtest("issues/293.c", test_issues293); - subtest("issues/percent-encode-zero-byte.c", test_percent_encode_zero_byte); - -#if H2O_USE_LIBUV - uv_loop_close(test_loop); - free(test_loop); -#else -// h2o_evloop_destroy(loop); -#endif - } - - { /* src tests */ - subtest("src/ssl.c", test_src__ssl_c); - } - - return done_testing(); -} diff --git a/web/server/h2o/libh2o/t/00unit/test.h b/web/server/h2o/libh2o/t/00unit/test.h deleted file mode 100644 index b1479eba3..000000000 --- a/web/server/h2o/libh2o/t/00unit/test.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2014 DeNA Co., Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ -#ifndef h2o__t__test_h -#define h2o__t__test_h - -#include "picotest.h" -#include "h2o.h" - -typedef struct st_h2o_loopback_conn_t { - h2o_conn_t super; - /** - * the response - */ - h2o_buffer_t *body; - /* internal structure */ - h2o_ostream_t _ostr_final; - int _is_complete; - /** - * the HTTP request / response (intentionally placed at the last, since it is a large structure and has it's own ctor) - */ - h2o_req_t req; -} h2o_loopback_conn_t; - -h2o_loopback_conn_t *h2o_loopback_create(h2o_context_t *ctx, h2o_hostconf_t **hosts); -void h2o_loopback_destroy(h2o_loopback_conn_t *conn); -void h2o_loopback_run_loop(h2o_loopback_conn_t *conn); - -extern h2o_loop_t *test_loop; - -char *sha1sum(const void *src, size_t len); - -void test_lib__common__cache_c(void); -void test_lib__common__hostinfo_c(void); -void test_lib__common__multithread_c(void); -void test_lib__common__serverutil_c(void); -void test_lib__common__socket_c(void); -void test_lib__common__string_c(void); -void test_lib__common__time_c(void); -void test_lib__common__url_c(void); -void test_lib__core__headers_c(void); -void test_lib__core__proxy_c(void); -void test_lib__core__util_c(void); -void test_lib__handler__fastcgi_c(void); -void test_lib__handler__file_c(void); -void test_lib__handler__gzip_c(void); -void test_lib__handler__headers_c(void); -void test_lib__handler__mimemap_c(void); -void test_lib__handler__redirect_c(void); -void test_lib__http2__hpack(void); -void test_lib__http2__scheduler(void); -void test_lib__http2__casper(void); -void test_lib__http2__cache_digests(void); -void test_src__ssl_c(void); -void test_issues293(void); -void test_percent_encode_zero_byte(void); - -#endif diff --git a/web/server/h2o/libh2o/t/10http1client.t b/web/server/h2o/libh2o/t/10http1client.t deleted file mode 100644 index 7461d146e..000000000 --- a/web/server/h2o/libh2o/t/10http1client.t +++ /dev/null @@ -1,13 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; - -my $fn = bindir() . "/examples-http1client"; - -plan skip_all => 'http1client not found' - unless -x $fn; - -is(system("$fn http://kazuhooku.com > /dev/null"), 0); - -done_testing; diff --git a/web/server/h2o/libh2o/t/40bad-request.t b/web/server/h2o/libh2o/t/40bad-request.t deleted file mode 100644 index 643e1f02d..000000000 --- a/web/server/h2o/libh2o/t/40bad-request.t +++ /dev/null @@ -1,28 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; - -plan skip_all => "nc not found" - unless prog_exists("nc"); - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - "/": - file.dir: @{[ DOC_ROOT ]} -EOT - -my $resp; - -$resp = `nc 127.0.0.1 $server->{port} < /dev/null 2>&1`; -is $resp, "", "silent close on empty request"; - -$resp = `echo "GET / HTTP/1.2\r\na\r\n\r" | nc 127.0.0.1 $server->{port} 2>&1`; -like $resp, qr{^HTTP/1\.1 400 .*Content-Length:\s*11\r\n\r\nBad Request$}is, "400 on broken request"; - -$resp = `echo "\r" | nc 127.0.0.1 $server->{port} 2>&1`; -is $resp, "", "silent close on CRLF"; - -done_testing; diff --git a/web/server/h2o/libh2o/t/40env.t b/web/server/h2o/libh2o/t/40env.t deleted file mode 100644 index daaa08665..000000000 --- a/web/server/h2o/libh2o/t/40env.t +++ /dev/null @@ -1,80 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use File::Temp qw(tempdir); -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -subtest "fastcgi" => sub { - my $server = spawn_h2o(<< "EOT"); -file.custom-handler: - extension: .cgi - fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" - unsetenv: - - "foo" -setenv: - "global": 123 -hosts: - default: - setenv: - "host": 234 - paths: - "/": - setenv: - "path": 345 - "foo": "abc" - file.dir: @{[ DOC_ROOT ]} - "/unset": - unsetenv: "host" - file.dir: @{[ DOC_ROOT ]} -EOT - subtest "basic" => sub { - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent $proto://127.0.0.1:$port/printenv.cgi`; - like $resp, qr{^global:123$}m; - like $resp, qr{^host:234$}m; - like $resp, qr{^path:345$}m; - unlike $resp, qr{^foo:}m; - }); - }; - subtest "unsetenv" => sub { - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent $proto://127.0.0.1:$port/unset/printenv.cgi`; - like $resp, qr{^global:123$}m; - unlike $resp, qr{^host:}m; - unlike $resp, qr{^path:}m; - unlike $resp, qr{^foo:}m; - }); - }; -}; - -subtest "mruby" => sub { - plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; - my $server = spawn_h2o(<< 'EOT'); -hosts: - default: - paths: - "/": - setenv: - foo: 123 - mruby.handler: | - Proc.new do |env| - [ - 200, - {"content-type" => "text/plain; charset=utf-8"}, - [(env.map {|k, v| k + ":" + String(v) + "\n"}).join] - ] - end -EOT - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent $proto://127.0.0.1:$port/`; - like $resp, qr{^foo:123$}m; - }); -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/40max-connections.t b/web/server/h2o/libh2o/t/40max-connections.t deleted file mode 100644 index 1fa7cbe6a..000000000 --- a/web/server/h2o/libh2o/t/40max-connections.t +++ /dev/null @@ -1,80 +0,0 @@ -use strict; -use warnings; -use IO::Socket::INET; -use Test::More; -use Time::HiRes qw(sleep); -use t::Util; - -my $MAX_CONN = 2; -my $WAIT = 0.1; - -subtest "single-threaded" => sub { - doit(1); -}; -subtest "multi-threaded" => sub { - doit(4); -}; - -done_testing; - -sub doit { - my $num_threads = shift; - my $server = spawn_h2o(<< "EOT"); -num-threads: $num_threads -max-connections: $MAX_CONN -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT - - my $port = $server->{port}; - my $tls_port = $server->{tls_port}; - - # establish connections to the maximum (and write partial requests so that the server would accept(2) the connections) - my @conns; - for (1..$MAX_CONN) { - my $conn = IO::Socket::INET->new( - PeerAddr => "127.0.0.1:$port", - Proto => "tcp", - ) or die "connection failed:$!"; - syswrite($conn, "GET / HTTP/1.0\r\n") - or die "failed to write partial request:$!"; - push @conns, $conn; - } - - sleep $WAIT; - - # create one more connection and send request - my $blocked_conn = IO::Socket::INET->new( - PeerAddr => "127.0.0.1:$port", - Proto => "tcp", - ) or die "connection failed:$!"; - syswrite($blocked_conn, "GET / HTTP/1.0\r\n\r\n") - or die "failed to write request:$!"; - - sleep $WAIT; - - ok ! data_ready($blocked_conn), "succeeding conn is not handled"; - - # close the preceeding connections - while (@conns) { - close shift @conns; - } - - sleep $WAIT; - - ok data_ready($blocked_conn), "succeeding conn should have been handled"; - - my $resp = do { local $/; <$blocked_conn> }; - like $resp, qr{^HTTP/1\.1 200 OK\r\n}s, "response is valid"; -} - -sub data_ready { - my $conn = shift; - my $rfds = ''; - vec($rfds, fileno($conn), 1) = 1; - my $nfound = select $rfds, undef, undef, 0; - return $nfound != 0; -} diff --git a/web/server/h2o/libh2o/t/40memcached-session-resumption.t b/web/server/h2o/libh2o/t/40memcached-session-resumption.t deleted file mode 100644 index 129affbe0..000000000 --- a/web/server/h2o/libh2o/t/40memcached-session-resumption.t +++ /dev/null @@ -1,62 +0,0 @@ -use strict; -use warnings; -use File::Temp qw(tempdir); -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => "could not find memcached" - unless prog_exists("memcached"); - -plan skip_all => "could not find openssl" - unless prog_exists("openssl"); - -my $tempdir = tempdir(CLEANUP => 1); - -doit("binary"); -doit("ascii"); - -done_testing; - -sub doit { - my $memc_proto = shift; - subtest $memc_proto => sub { - # start memcached - my $memc_port = empty_port(); - my $memc_guard = spawn_server( - argv => [ qw(memcached -l 127.0.0.1 -p), $memc_port, "-B", $memc_proto ], - is_ready => sub { - check_port($memc_port); - }, - ); - # the test - my $spawn_and_connect = sub { - my ($opts, $expected) = @_; - my $server = spawn_h2o(<< "EOT"); -ssl-session-resumption: - mode: cache - cache-store: memcached - memcached: - host: 127.0.0.1 - port: $memc_port - protocol: $memc_proto -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT - my $lines = do { - open my $fh, "-|", "openssl s_client -no_ticket $opts -connect 127.0.0.1:$server->{tls_port} 2>&1 < /dev/null" - or die "failed to open pipe:$!"; - local $/; - <$fh>; - }; - $lines =~ m{---\n(New|Reused),}s - or die "failed to parse the output of s_client:{{{$lines}}}"; - is $1, $expected; - }; - $spawn_and_connect->("-sess_out $tempdir/session", "New"); - $spawn_and_connect->("-sess_in $tempdir/session", "Reused"); - }; -} diff --git a/web/server/h2o/libh2o/t/40protocol.t b/web/server/h2o/libh2o/t/40protocol.t deleted file mode 100644 index e12f01604..000000000 --- a/web/server/h2o/libh2o/t/40protocol.t +++ /dev/null @@ -1,63 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use Test::More; -use t::Util; - -my %files = map { do { - my $fn = DOC_ROOT . "/$_"; - +($_ => { size => +(stat $fn)[7], md5 => md5_file($fn) }); -} } qw(index.txt halfdome.jpg); - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT - -my $port = $server->{port}; -my $tls_port = $server->{tls_port}; - -subtest 'curl' => sub { - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - for my $file (sort keys %files) { - my $content = `$curl --silent --show-error $proto://127.0.0.1:$port/$file`; - is length($content), $files{$file}->{size}, "$file (size)"; - is md5_hex($content), $files{$file}->{md5}, "$file (md5)"; - } - }); -}; - -subtest 'nghttp' => sub { - plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - my $doit = sub { - my ($proto, $port) = @_; - my $opt = $proto eq 'http' ? '-u' : ''; - for my $file (sort keys %files) { - my $content = `nghttp $opt $proto://127.0.0.1:$port/$file`; - is length($content), $files{$file}->{size}, "$proto://127.0.0.1/$file (size)"; - is md5_hex($content), $files{$file}->{md5}, "$proto://127.0.0.1/$file (md5)"; - } - my $out = `nghttp -u -m 100 $proto://127.0.0.1:$port/index.txt`; - is $out, "hello\n" x 100, "$proto://127.0.0.1/index.txt x 100 times"; - }; - $doit->('http', $port); - subtest 'https' => sub { - plan skip_all => 'OpenSSL does not support protocol negotiation; it is too old' - unless openssl_can_negotiate(); - $doit->('https', $tls_port); - }; -}; - -subtest 'ab' => sub { - plan skip_all => 'ab not found' - unless prog_exists('ab'); - ok(system("ab -c 10 -n 10000 -k http://127.0.0.1:$port/index.txt") == 0); - ok(system("ab -f tls1 -c 10 -n 10000 -k https://127.0.0.1:$tls_port/index.txt") == 0); -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/40proxy-protocol.t b/web/server/h2o/libh2o/t/40proxy-protocol.t deleted file mode 100644 index b6c5f149a..000000000 --- a/web/server/h2o/libh2o/t/40proxy-protocol.t +++ /dev/null @@ -1,153 +0,0 @@ -use strict; -use warnings; -use File::Temp qw(tempdir); -use IO::Socket::INET; -use IO::Socket::SSL; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -my $tempdir = tempdir(CLEANUP => 1); -my $port = empty_port(); - -sub spawn_h2o { - my ($proxy_protocol, $ssl) = @_; - - open my $fh, ">", "$tempdir/h2o.conf" - or die "failed to create file:$tempdir/h2o.conf:$!"; - print $fh <<"EOT"; -handshake-timeout: 3 -hosts: - default: - access-log: - format: "%h" - path: $tempdir/access_log - paths: - /: - file.dir: @{[ DOC_ROOT ]} - listen: - host: 127.0.0.1 - port: $port - proxy-protocol: @{[$proxy_protocol ? "ON" : "OFF"]} -EOT - if ($ssl) { - print $fh <<"EOT"; - ssl: - key-file: examples/h2o/server.key - certificate-file: examples/h2o/server.crt -EOT - } - close $fh; - - spawn_server( - argv => [ bindir() . "/h2o", "-c", "$tempdir/h2o.conf" ], - is_ready => sub { - check_port($port); - }, - ); -} - -sub fetch { - my $req = shift; - my $conn = IO::Socket::INET->new( - PeerHost => q(127.0.0.1), - PeerPort => $port, - Proto => q(tcp), - ) or die "failed to connect to host:$!"; - $conn->write($req); - $conn->read(my $buf, 1048576); - $buf; -} - -sub fetch_ssl { - my ($pre, $req) = @_; - my $conn = IO::Socket::INET->new( - PeerHost => q(127.0.0.1), - PeerPort => $port, - SSL_startHandshake => 0, - ) or die "failed to connect to host:$!"; - $conn->write($pre); - IO::Socket::SSL->start_SSL($conn, SSL_verify_mode => 0) - or die $SSL_ERROR; - $conn->write($req); - $conn->read(my $buf, 1048576); - $buf; -} - -sub last_log { - open my $fh, "<", "$tempdir/access_log" - or die "failed to open file:$tempdir/access_log:$!"; - my $last; - while (<$fh>) { - $last = $_; - } - chomp $last; - $last; -} - -sub test_timeout { - local $@; - my $gotsig = 0; - local $SIG{ALRM} = sub { - $gotsig = 1; - die "gotsig"; - }; - alarm(5); - eval { fetch("") }; - alarm(0); - ok ! $gotsig; -} - -subtest "http" => sub { - my $guard = spawn_h2o(1, 0); - subtest "with proxy" => sub { - my $resp = fetch("PROXY TCP4 1.2.3.4 5.6.7.8 1234 9999\r\nGET / HTTP/1.0\r\n\r\n"); - like $resp, qr{^HTTP/1.1 200 OK\r\n}s; - is last_log(), "1.2.3.4"; - }; - subtest "without proxy" => sub { - my $resp = fetch("GET / HTTP/1.0\r\n\r\n"); - like $resp, qr{^HTTP/1.1 200 OK\r\n}s; - is last_log(), "127.0.0.1"; - }; - subtest "timeout" => sub { - test_timeout(); - }; -}; - -subtest "https" => sub { - my $guard = spawn_h2o(1, 1); - subtest "with proxy" => sub { - my $resp = fetch_ssl("PROXY TCP4 1.2.3.4 5.6.7.8 1234 9999\r\n", "GET / HTTP/1.0\r\n\r\n"); - like $resp, qr{^HTTP/1.1 200 OK\r\n}s; - is last_log(), "1.2.3.4"; - }; - subtest "without proxy" => sub { - my $resp = fetch_ssl("", "GET / HTTP/1.0\r\n\r\n"); - like $resp, qr{^HTTP/1.1 200 OK\r\n}s; - is last_log(), "127.0.0.1"; - }; - subtest "timeout" => sub { - test_timeout(); - }; -}; - -subtest "off" => sub { - my $guard = spawn_h2o(0, 0); - subtest "with proxy" => sub { - my $resp = fetch("PROXY TCP4 1.2.3.4 5.6.7.8 1234 9999\r\nGET / HTTP/1.0\r\n\r\n"); - unlike $resp, qr{^HTTP/1.1 200 OK\r\n}s; - }; - subtest "without proxy" => sub { - my $resp = fetch("GET / HTTP/1.0\r\n\r\n"); - like $resp, qr{^HTTP/1.1 200 OK\r\n}s; - }; -}; - -subtest "https handshake timeout" => sub { - # timeout test for PROXY:OFF over HTTPS is implemented here since it is easier to do so - my $guard = spawn_h2o(0, 1); - test_timeout(); -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/40running-user.t b/web/server/h2o/libh2o/t/40running-user.t deleted file mode 100644 index 53ebc1176..000000000 --- a/web/server/h2o/libh2o/t/40running-user.t +++ /dev/null @@ -1,38 +0,0 @@ -use strict; -use warnings; -use English; -use Test::More; -use t::Util; - -plan skip_all => "not running as root" - if $UID != 0; -plan skip_all => "user 'nobody' does not exist" - unless defined getpwnam("nobody"); - - -subtest "set-user" => sub { - doit(<< 'EOT'); -user: nobody -EOT -}; - -subtest "automatic fallback to nobody" => sub { - doit(''); -}; - -done_testing; - -sub doit { - my $conf = shift; - my $server = spawn_h2o(<< "EOT"); -$conf -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT - - my $resp = `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/ 2>&1 > /dev/null`; - like $resp, qr{^HTTP/1}s; -} diff --git a/web/server/h2o/libh2o/t/40server-push-attrs.t b/web/server/h2o/libh2o/t/40server-push-attrs.t deleted file mode 100644 index 059152314..000000000 --- a/web/server/h2o/libh2o/t/40server-push-attrs.t +++ /dev/null @@ -1,65 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; -plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); -plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; - -subtest "basic" => sub { - # spawn upstream - my $upstream_port = empty_port(); - my $upstream = spawn_server( - argv => [ - qw(plackup -s Starlet --access-log /dev/null -p), $upstream_port, ASSETS_DIR . "/upstream.psgi", - ], - is_ready => sub { - check_port($upstream_port); - }, - ); - # spawn server - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /assets: - file.dir: @{[DOC_ROOT]} - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port -EOT - - my $pushes_encoded = "</assets/index.txt.gz>; rel=preload, </assets/index.txt.gz?1>; rel=preload, </assets/index.txt.gz?nopush>; rel=preload; nopush"; - $pushes_encoded =~ s{([^A-Za-z0-9_])}{sprintf "%%%02x", ord $1}eg; - my $resp = `nghttp -vn --stat 'https://127.0.0.1:$server->{tls_port}/push-attr?pushes=$pushes_encoded'`; - like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz}is, "index.txt.gz is pushed"; - like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz\?1}is, "index.txt.gz?1 is pushed"; - unlike $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz\?nopush}is, "index.txt.gz?nopush isn't pushed"; - - $pushes_encoded = "</assets/index.txt.gz>; rel=preload, </assets/index.txt.gz?1>; rel=preload, </assets/index.txt.gz?nopush>; rel=preload; nopush, </assets/index.txt.gz?push-only>; rel=preload; x-http2-push-only"; - $pushes_encoded =~ s{([^A-Za-z0-9_])}{sprintf "%%%02x", ord $1}eg; - $resp = `nghttp -vn --stat 'https://127.0.0.1:$server->{tls_port}/push-attr?pushes=$pushes_encoded'`; - - like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz}is, "index.txt.gz is pushed"; - like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz\?1}is, "index.txt.gz?1 is pushed"; - unlike $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz\?nopush}is, "index.txt.gz?nopush isn't pushed"; - like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz\?push-only}is, "index.txt.gz?push-only is pushed"; - like $resp, qr{link: </assets/index\.txt\.gz>; rel=preload, </assets/index\.txt\.gz\?1>; rel=preload, </assets/index\.txt\.gz\?nopush>; rel=preload; nopush\n}, "push-only doesn't appear in the link header"; - - # Check that the header is removed if there's only one link with x-http2-push-only - $pushes_encoded = "</assets/index.txt.gz?push-only>; rel=preload; x-http2-push-only"; - $pushes_encoded =~ s{([^A-Za-z0-9_])}{sprintf "%%%02x", ord $1}eg; - $resp = `nghttp -vn --stat 'https://127.0.0.1:$server->{tls_port}/push-attr?pushes=$pushes_encoded'`; - - like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz\?push-only}is, "index.txt.gz?push-only is pushed"; - unlike $resp, qr{link:\s*\n}, "push-only doesn't appear in the link header"; -}; - - -done_testing; diff --git a/web/server/h2o/libh2o/t/40server-push-multiple.t b/web/server/h2o/libh2o/t/40server-push-multiple.t deleted file mode 100644 index b43c9675f..000000000 --- a/web/server/h2o/libh2o/t/40server-push-multiple.t +++ /dev/null @@ -1,66 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; -plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); -plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; - -subtest "basic" => sub { - # spawn upstream - my $upstream_port = empty_port(); - my $upstream = spawn_server( - argv => [ - qw(plackup -s Starlet --access-log /dev/null -p), $upstream_port, ASSETS_DIR . "/upstream.psgi", - ], - is_ready => sub { - check_port($upstream_port); - }, - ); - # spawn server - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port - /mruby: - mruby.handler: | - Proc.new do |env| - [399, { "link" => "</index.txt.gz>; rel=preload, </index.txt.gz?1>; rel=preload, </index.txt.gz?nopush>; rel=preload; nopush" }, [] ] - end - proxy.reverse.url: http://127.0.0.1:$upstream_port - /assets: - file.dir: @{[DOC_ROOT]} -EOT - - my $doit = sub { - my ($proto, $opts, $port) = @_; - subtest 'push-prioritized' => sub { - my $resp = `nghttp $opts -n --stat '$proto://127.0.0.1:$port/mruby'`; - like $resp, qr{\nid\s*responseEnd\s.*\s/index\.txt\.gz}is, "index.txt.gz is pushed"; - like $resp, qr{\nid\s*responseEnd\s.*\s/index\.txt\.gz\?1}is, "index.txt.gz?1 is pushed"; - unlike $resp, qr{\nid\s*responseEnd\s.*\s/index\.txt\.gz\?nopush}is, "index.txt.gz?nopush isn't pushed"; - }; - }; - - subtest 'h2 direct' => sub { - $doit->('http', '', $server->{port}); - }; - subtest 'h2 upgrade' => sub { - $doit->('http', '-u', $server->{port}); - }; - subtest 'h2c' => sub { - $doit->('https', '', $server->{tls_port}); - }; -}; - - -done_testing; diff --git a/web/server/h2o/libh2o/t/40server-push.t b/web/server/h2o/libh2o/t/40server-push.t deleted file mode 100644 index 519d1be80..000000000 --- a/web/server/h2o/libh2o/t/40server-push.t +++ /dev/null @@ -1,245 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; -plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); -plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; - -subtest "basic" => sub { - # spawn upstream - my $upstream_port = empty_port(); - my $upstream = spawn_server( - argv => [ - qw(plackup -s Starlet --access-log /dev/null -p), $upstream_port, ASSETS_DIR . "/upstream.psgi", - ], - is_ready => sub { - check_port($upstream_port); - }, - ); - # spawn server - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port - /mruby: - mruby.handler: | - Proc.new do |env| - [399, { "link" => "</index.txt.gz>; rel=preload" }, [] ] - end - proxy.reverse.url: http://127.0.0.1:$upstream_port - /assets: - file.dir: @{[DOC_ROOT]} -EOT - - my $doit = sub { - my ($proto, $opts, $port) = @_; - subtest 'push-prioritized' => sub { - my $resp = `nghttp $opts -n --stat '$proto://127.0.0.1:$port/index.txt?resp:link=</assets/index.js>\%3b\%20rel=preload'`; - like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.js\n.*\s/index\.txt\?}is; - }; - subtest 'push-unprioritized' => sub { - my $resp = `nghttp $opts -n --stat '$proto://127.0.0.1:$port/index.txt?resp:link=</index.txt.gz>\%3b\%20rel=preload'`; - like $resp, qr{\nid\s*responseEnd\s.*\s/index\.txt\?.*\s/index\.txt.gz\n}is; - }; - subtest "push-1xx" => sub { - my $out = `nghttp $opts -n --stat '$proto://127.0.0.1:$port/1xx-push/'`; - # index.js arrives < 100ms, and /1xx-push/ arrives > 1sec - $out = (split /^.*?\nid *responseEnd .*?\n/s, $out, 2)[1]; - chomp $out; - my @responses = split /\n/, $out; - is scalar(@responses), 2, "2 responses"; - like $responses[0], qr{\+[0-9]{1,2}\.[0-9]*ms .* /index.js$}, "index.js arrives < 100ms"; - like $responses[1], qr{\+1\.[0-9]*s .* /1xx-push/$}, "/1xx-push/ arrives >= 1sec"; - }; - subtest 'push-while-sleep' => sub { - my $resp = `nghttp $opts -n --stat '$proto://127.0.0.1:$port/mruby/sleep-and-respond?sleep=1'`; - like $resp, qr{\nid\s*responseEnd\s.*\s/index\.txt\.gz\n.*\s/mruby/sleep-and-respond}is; - }; - }; - - subtest 'h2 direct' => sub { - $doit->('http', '', $server->{port}); - }; - subtest 'h2 upgrade' => sub { - $doit->('http', '-u', $server->{port}); - }; - subtest 'h2c' => sub { - $doit->('https', '', $server->{tls_port}); - }; -}; - -subtest "push-twice" => sub { - my $server = spawn_h2o(sub { - my ($port, $tls_port) = @_; - return << "EOT"; -hosts: - "127.0.0.1:$tls_port": - paths: - /: - mruby.handler: | - Proc.new do |env| - case env["PATH_INFO"] - when "/index.txt" - push_paths = [] - push_paths << "/index.js" - [399, push_paths.empty? ? {} : {"link" => push_paths.map{|p| "<#{p}>; rel=preload"}.join("\\n")}, []] - else - [399, {}, []] - end - end - file.dir: t/assets/doc_root -EOT - }); - my $resp = `nghttp -v -m 2 -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; - like $resp, qr{\s+200\s+16\s+/index\.js\n}is, "receives index.js"; - unlike $resp, qr{\s+200\s+16\s+/index\.js\n.*\s+200\s+16\s+/index\.js\n}is, "receives index.js only once"; -}; - - -subtest "push-after-reproxy" => sub { - subtest "authority-match" => sub { - my $server = spawn_h2o(sub { - my ($port, $tls_port) = @_; - return << "EOT"; -hosts: - "127.0.0.1:$tls_port": - paths: - /: - reproxy: ON - mruby.handler: | - Proc.new do |env| - case env["PATH_INFO"] - when "/reproxy" - [307, {"x-reproxy-url" => "/index.txt"}, ["should never see this"]] - when "/index.txt" - push_paths = [] - push_paths << "/index.js" - [399, push_paths.empty? ? {} : {"link" => push_paths.map{|p| "<#{p}>; rel=preload"}.join("\\n")}, []] - else - [399, {}, []] - end - end - file.dir: t/assets/doc_root -EOT - }); - my $resp = `nghttp -n --stat https://127.0.0.1:$server->{tls_port}/reproxy`; - like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n.*\s/reproxy}is, "receives index.js then /reproxy"; - }; - subtest "authority-mismatch" => sub { - my $server = spawn_h2o(sub { - my ($port, $tls_port) = @_; - return << "EOT"; -hosts: - default: - paths: - /: - reproxy: ON - mruby.handler: | - Proc.new do |env| - case env["PATH_INFO"] - when "/reproxy" - [307, {"x-reproxy-url" => "/index.txt"}, ["should never see this"]] - when "/index.txt" - push_paths = [] - push_paths << "/index.js?1" - push_paths << "https://127.0.0.1:$tls_port/index.js?2" - [399, push_paths.empty? ? {} : {"link" => push_paths.map{|p| "<#{p}>; rel=preload"}.join("\\n")}, []] - else - [399, {}, []] - end - end - file.dir: t/assets/doc_root -EOT - }); - my $resp = `nghttp -n --stat https://127.0.0.1:$server->{tls_port}/reproxy`; - like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\?2\n.*\s/reproxy}is, "receives index.js?2 then /reproxy"; - unlike $resp, qr{/index\.js\?1\n}is, "index.js?1 not received (authority mismatch)"; - }; -}; - -subtest "casper" => sub { - subtest "custom capacity-bits" => sub { - my $server = spawn_h2o(sub { - my ($port, $tls_port) = @_; - return << "EOT"; -hosts: - "127.0.0.1:$tls_port": - http2-casper: - capacity-bits: 11 - paths: - /: - reproxy: ON - mruby.handler: | - Proc.new do |env| - case env["PATH_INFO"] - when "/index.txt" - push_paths = [] - push_paths << "/index.js" - [399, push_paths.empty? ? {} : {"link" => push_paths.map{|p| "<#{p}>; rel=preload"}.join("\\n")}, []] - else - [399, {}, []] - end - end - file.dir: t/assets/doc_root -EOT - }); - my $resp = `nghttp -v -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; - like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n.*\s/index.txt}is, "receives index.js then /index.txt"; - my ($casper) = ($resp =~ qr{set-cookie:\s*(h2o_casper=[^\s;]+)}i); - - is length($casper), 17; - - { - my $resp = `nghttp -H'cookie: $casper' -v -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; - unlike $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n}is, "does not receives index.js"; - } - }; -}; - -subtest "cache-digest" => sub { - plan skip_all => 'node not found' - unless prog_exists('node'); - my $server = spawn_h2o(sub { - my ($port, $tls_port) = @_; - return << "EOT"; -hosts: - "127.0.0.1:$tls_port": - paths: - /: - mruby.handler: | - Proc.new do |env| - case env["PATH_INFO"] - when "/index.txt" - [399, {"link" => "</index.js>; rel=preload"}, []] - else - [399, {}, []] - end - end - file.dir: t/assets/doc_root -EOT - }); - my $calc_digest = sub { - my $cmd = "node misc/cache-digest.js/cli.js -b @{[join ' ', map { qq{https://127.0.0.1:$server->{tls_port}$_} } @_]}"; - my $digest = `$cmd`; - chomp $digest; - return "$digest; complete"; - }; - my $resp = `nghttp -H'cache-digest: @{[$calc_digest->()]}' -v -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; - like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n.*\s/index.txt}is, "receives index.js then /index.txt"; - $resp = `nghttp -H'cache-digest: @{[$calc_digest->("/index.js", "/style.css")]}' -v -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; - unlike $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n}is, "does not receive index.js"; - $resp = `nghttp -H'cache-digest: @{[$calc_digest->("/script.js", "/style.css")]}' -v -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; - like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n.*\s/index.txt}is, "receives index.js then /index.txt"; -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/40session-ticket.t b/web/server/h2o/libh2o/t/40session-ticket.t deleted file mode 100644 index 2e5d5e4ac..000000000 --- a/web/server/h2o/libh2o/t/40session-ticket.t +++ /dev/null @@ -1,133 +0,0 @@ -use strict; -use warnings; -use File::Temp qw(tempdir); -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => "could not find openssl" - unless prog_exists("openssl"); -#plan skip_all => "openssl 1.0.2 or above is required" -# unless `openssl version` =~ /^OpenSSL 1\.(?:0\.[2-9][^0-9]|[1-9])/s; - -my $tempdir = tempdir(CLEANUP => 1); - -subtest "internal" => sub { - spawn_with(<< "EOT", - mode: ticket -EOT - sub { - is test(), "New"; - test(); # openssl 0.9.8 seems to return "New" (maybe because in the first run we did not specify -sess_in) - is test(), "Reused"; - is test(), "Reused"; - }); - spawn_with(<< "EOT", - mode: ticket -EOT - sub { - is test(), "New"; - }); -}; - -subtest "file" => sub { - my $tickets_file = "t/40session-ticket/forever_ticket.yaml"; - spawn_with(<< "EOT", - mode: ticket - ticket-store: file - ticket-file: $tickets_file -EOT - sub { - is test(), "New"; - is test(), "Reused"; - is test(), "Reused"; - }); - spawn_with(<< "EOT", - mode: ticket - ticket-store: file - ticket-file: $tickets_file -EOT - sub { - sleep 1; - is test(), "Reused"; - }); -}; - -subtest "no-tickets-in-file" => sub { - my $tickets_file = "t/40session-ticket/nonexistent"; - spawn_with(<< "EOT", - mode: ticket - ticket-store: file - ticket-file: $tickets_file -EOT - sub { - is test(), "New"; - is test(), "New"; - is test(), "New"; - }); -}; - -subtest "memcached" => sub { - plan skip_all => "memcached not found" - unless prog_exists("memcached"); - my $memc_port = empty_port(); - my $doit = sub { - my $memc_proto = shift; - my $memc_guard = spawn_server( - argv => [ qw(memcached -l 127.0.0.1 -p), $memc_port, "-B", $memc_proto ], - is_ready => sub { - check_port($memc_port); - }, - ); - my $conf =<< "EOT"; - mode: ticket - ticket-store: memcached - memcached: - host: 127.0.0.1 - port: $memc_port - protocol: $memc_proto -EOT - spawn_with($conf, sub { - is test(), "New"; - is test(), "Reused"; - is test(), "Reused"; - }); - spawn_with($conf, sub { - sleep 1; - is test(), "Reused"; - }); - }; - $doit->("binary"); - $doit->("ascii"); -}; - -done_testing; - -my $server; - -sub spawn_with { - my ($opts, $cb) = @_; - $server = spawn_h2o(<< "EOT"); -ssl-session-resumption: -$opts -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT - $cb->(); -} - -sub test { - my $lines = do { - my $cmd_opts = (-e "$tempdir/session" ? "-sess_in $tempdir/session" : "") . " -sess_out $tempdir/session"; - open my $fh, "-|", "openssl s_client $cmd_opts -connect 127.0.0.1:$server->{tls_port} 2>&1 < /dev/null" - or die "failed to open pipe:$!"; - local $/; - <$fh>; - }; - $lines =~ m{---\n(New|Reused),}s - or die "failed to parse the output of s_client:{{{$lines}}}"; - $1; -} diff --git a/web/server/h2o/libh2o/t/40session-ticket/forever_ticket.yaml b/web/server/h2o/libh2o/t/40session-ticket/forever_ticket.yaml deleted file mode 100644 index 0d7157887..000000000 --- a/web/server/h2o/libh2o/t/40session-ticket/forever_ticket.yaml +++ /dev/null @@ -1,6 +0,0 @@ -- name: a397b6b7fab929366203f16fc81ffbed - cipher: aes-128-cbc - hash: sha1 - key: f1ed89cde68763630e80d2be827cfb98e3fe72644f64315a4a8ad63769a3577ccec4dd13b20eaf8c008886e5458db10e658cf2a83f04403ac4e98035d2422a75806730eb4f2fee12faff954895bc65d1 - not_before: 0 - not_after: 18446744073709551615 diff --git a/web/server/h2o/libh2o/t/40ssl-cipher-suite.t b/web/server/h2o/libh2o/t/40ssl-cipher-suite.t deleted file mode 100644 index bda718421..000000000 --- a/web/server/h2o/libh2o/t/40ssl-cipher-suite.t +++ /dev/null @@ -1,38 +0,0 @@ -use strict; -use warnings; -use File::Temp qw(tempfile); -use Net::EmptyPort qw(check_port empty_port); -use Scope::Guard qw(scope_guard); -use Test::More; -use t::Util; - -my $port = empty_port(); - -# spawn server that only accepts AES128-SHA -my ($conffh, $conffn) = tempfile(UNLINK => 1); -print $conffh <<"EOT"; -listen: - host: 127.0.0.1 - port: $port - ssl: - key-file: examples/h2o/server.key - certificate-file: examples/h2o/server.crt - cipher-suite: AES128-SHA -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT -my ($guard, $pid) = spawn_server( - argv => [ bindir() . "/h2o", "-c", $conffn ], - is_ready => sub { - check_port($port); - }, -); - -# connect to the server with AES256-SHA as the first choice, and check that AES128-SHA was selected -my $log = `openssl s_client -cipher AES256-SHA:AES128-SHA -host 127.0.0.1 -port $port < /dev/null 2>&1`; -like $log, qr/^\s*Cipher\s*:\s*AES128-SHA\s*$/m; - -done_testing; diff --git a/web/server/h2o/libh2o/t/40unix-socket.t b/web/server/h2o/libh2o/t/40unix-socket.t deleted file mode 100644 index 985e76d38..000000000 --- a/web/server/h2o/libh2o/t/40unix-socket.t +++ /dev/null @@ -1,28 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use File::Temp qw(tempdir); -use Test::More; -use t::Util; - -plan skip_all => 'nc -U not found' - unless prog_exists('nc') and `nc -h 2>&1` =~ /-U\t+Use UNIX domain socket/; - -my $tempdir = tempdir(CLEANUP => 1); -my $sock_path = "$tempdir/h2o.sock"; - -my $server = spawn_h2o(<< "EOT"); -listen: - type: unix - port: $sock_path -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT - -my $resp = `(echo "GET / HTTP/1.0" ; echo) | nc -U $sock_path 2>&1`; -like $resp, qr{^HTTP/1\.[0-9]+ 200 OK\r\n}s; - -done_testing; diff --git a/web/server/h2o/libh2o/t/40virtual-host.t b/web/server/h2o/libh2o/t/40virtual-host.t deleted file mode 100644 index aef1b6566..000000000 --- a/web/server/h2o/libh2o/t/40virtual-host.t +++ /dev/null @@ -1,83 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use Net::EmptyPort qw(check_port); -use File::Temp qw(tempfile); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -subtest "basic" => sub { - # create config - my ($global_port, $alternate_port) = empty_ports(2); - my ($conffh, $conffn) = tempfile(UNLINK => 1); - print $conffh <<"EOT"; -listen: - host: 127.0.0.1 - port: $global_port -hosts: - "default:$global_port": - paths: - /: - file.dir: examples/doc_root - "alternate:$global_port": - listen: - host: 127.0.0.1 - port: $alternate_port - paths: - /: - file.dir: examples/doc_root.alternate -EOT - - # start server - my ($guard, $pid) = spawn_server( - argv => [ bindir() . "/h2o", "-c", $conffn ], - is_ready => sub { - check_port($global_port) && check_port($alternate_port); - }, - ); - - my $resp = `curl --silent --resolve default:$global_port:127.0.0.1 http://default:$global_port/`; - is md5_hex($resp), md5_file("examples/doc_root/index.html"), "'host: default' against default port"; - - $resp = `curl --silent --resolve alternate:$global_port:127.0.0.1 http://alternate:$global_port/`; - is md5_hex($resp), md5_file("examples/doc_root.alternate/index.txt"), "'host: alternate' against default port"; - - $resp = `curl --silent --resolve default:$alternate_port:127.0.0.1 http://default:$alternate_port/`; - is md5_hex($resp), md5_file("examples/doc_root.alternate/index.txt"), "'host: default' against alternate port"; - - $resp = `curl --silent --resolve alternate:$alternate_port:127.0.0.1 http://alternate:$alternate_port/`; - is md5_hex($resp), md5_file("examples/doc_root.alternate/index.txt"), "'host: alternate' against alternate port"; -}; - -subtest "wildcard" => sub { - my $server = spawn_h2o(sub { - my ($port, $tls_port) = @_; - return << "EOT"; -hosts: - default: - paths: - /: - file.dir: examples/doc_root - "*.example.com:$port": - paths: - /: - file.dir: examples/doc_root.alternate -EOT - }); - - my $fetch = sub { - my $host = shift; - my $resp = `curl --silent --resolve $host:$server->{port}:127.0.0.1 http://$host:$server->{port}/`; - md5_hex($resp); - }; - - is $fetch->("www.example.com"), md5_file("examples/doc_root.alternate/index.txt"), "www.example.com"; - is $fetch->("xxx.example.com"), md5_file("examples/doc_root.alternate/index.txt"), "xxx.example.com"; - is $fetch->("example.com"), md5_file("examples/doc_root/index.html"), "example.com"; - is $fetch->("example.org"), md5_file("examples/doc_root/index.html"), "example.org"; -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/40websocket.t b/web/server/h2o/libh2o/t/40websocket.t deleted file mode 100644 index a321c034a..000000000 --- a/web/server/h2o/libh2o/t/40websocket.t +++ /dev/null @@ -1,114 +0,0 @@ -use strict; -use warnings; -use IO::Socket::INET; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; - -# spawn upstream -my $upstream_port = empty_port(); -my $upstream = spawn_server( - argv => [ - qw(plackup -s Starlet --access-log /dev/null -p), $upstream_port, ASSETS_DIR . "/upstream.psgi", - ], - is_ready => sub { - check_port($upstream_port); - }, -); - -sub silent_server { - return spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port/ - proxy.websocket: ON - proxy.websocket.timeout: 1000 -EOT -} - -subtest "http/1.1" => sub { - my $server = silent_server(); - plan skip_all => "curl not found" - unless prog_exists("curl"); - my $resp = `curl --silent --insecure 'http://127.0.0.1:$server->{port}/index.txt'`; - is $resp, "hello\n"; -}; - -sub doit { - my $conn = shift; - my $req = join( - "\r\n", - "GET /websocket/ HTTP/1.1", - "Connection: upgrade", - "Upgrade: websocket", - "Sec-Websocket-Key: abcde", - "Sec-Websocket-Version: 13", - "", - "", - ); - is $conn->syswrite($req), length($req), "send request"; - $conn->sysread(my $rbuf, 65536) > 0 - or die "failed to read HTTP response"; - like $rbuf, qr{^HTTP\/1\.1 101 }is; - like $rbuf, qr{\r\n\r\n$}is; - like $rbuf, qr{\r\nupgrade: websocket\r\n}is; - unlike $rbuf, qr{\r\nupgrade:.*\r\nupgrade:}is; - like $rbuf, qr{\r\nsec-websocket-accept: .*\r\n}is; - for my $i (1..10) { - my $msg = "hello world $i\n"; - is $conn->syswrite($msg), length($msg), "write text ($i)"; - is $conn->sysread($rbuf, 65536), length($msg), "read echo ($i)"; - is $rbuf, $msg, "echo is correct ($i)"; - } - $conn->close; -} - -subtest "ws" => sub { - my $server = silent_server(); - my $conn = IO::Socket::INET->new( - PeerHost => '127.0.0.1', - PeerPort => $server->{port}, - Proto => 'tcp', - ) or die "failed to connect to 127.0.0.1:$server->{port}:$!"; - doit($conn); -}; - -subtest "wss" => sub { - my $server = silent_server(); - eval q{use IO::Socket::SSL; 1} - or plan skip_all => "IO::Socket::SSL not found"; - my $conn = IO::Socket::SSL->new( - PeerAddr => "127.0.0.1:$server->{tls_port}", - SSL_verify_mode => 0, - ) or die "failed to connect via TLS to 127.0.0.1:$server->{tls_port}:". IO::Socket::SSL::errstr(); - doit($conn); -}; - -subtest "logged-ws" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port/ - proxy.websocket: ON - proxy.websocket.timeout: 1000 -access-log: /dev/null # enable logging -EOT - - my $conn = IO::Socket::INET->new( - PeerHost => '127.0.0.1', - PeerPort => $server->{port}, - Proto => 'tcp', - ) or die "failed to connect to 127.0.0.1:$server->{port}:$!"; - doit($conn); -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/50access-log.t b/web/server/h2o/libh2o/t/50access-log.t deleted file mode 100644 index fd96217c2..000000000 --- a/web/server/h2o/libh2o/t/50access-log.t +++ /dev/null @@ -1,281 +0,0 @@ -use strict; -use warnings; -use File::Temp qw(tempdir); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -my $tempdir = tempdir(CLEANUP => 1); - -sub doit { - my ($cmd, $args, @expected) = @_; - - unlink "$tempdir/access_log"; - - $args = { format => $args } - unless ref $args; - - my $server = spawn_h2o(<< "EOT"); -ssl-session-resumption: - mode: cache - cache-store: internal -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} - /fastcgi: - fastcgi.connect: - port: /nonexistent - type: unix - error-log.emit-request-errors: OFF - /set-cookie: - file.dir: @{[ DOC_ROOT ]} - header.add: "set-cookie: a=b" - header.add: "set-cookie: c=d" - header.add: "cache-control: must-revalidate" - header.add: "cache-control: no-store" - /compress: - file.dir: @{[ DOC_ROOT ]} - compress: [gzip] - access-log: - format: "$args->{format}" -@{[$args->{escape} ? " escape: $args->{escape}" : ""]} - path: $tempdir/access_log -EOT - - $cmd->($server); - - my @log = do { - open my $fh, "<", "$tempdir/access_log" - or die "failed to open access_log:$!"; - map { my $l = $_; chomp $l; $l } <$fh>; - }; - - for (my $i = 0; $i != @expected; ++$i) { - $expected[$i] = $expected[$i]->($server) - if ref $expected[$i] eq 'CODE'; - like $log[$i], $expected[$i]; - } -} - -subtest "custom-log" => sub { - doit( - sub { - my $server = shift; - system("curl --silent --referer http://example.com/ http://127.0.0.1:$server->{port}/ > /dev/null"); - }, - '%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"', - qr{^127\.0\.0\.1 - - \[[0-9]{2}/[A-Z][a-z]{2}/20[0-9]{2}:[0-9]{2}:[0-9]{2}:[0-9]{2} [+\-][0-9]{4}\] "GET / HTTP/1\.1" 200 6 "http://example.com/" "curl/.*"$}, - ); -}; - -subtest "strftime" => sub { - doit( - sub { - my $server = shift; - system("curl --silent http://127.0.0.1:$server->{port}/ > /dev/null"); - }, - '%{%Y-%m-%dT%H:%M:%S}t', - qr{^20[0-9]{2}-(?:0[1-9]|1[012])-(?:[012][0-9]|3[01])T[0-9]{2}:[0-9]{2}:[0-9]{2}$}, - ); -}; - -subtest "strftime-special" => sub { - doit( - sub { - my $server = shift; - system("curl --silent http://127.0.0.1:$server->{port}/ > /dev/null"); - }, - '%{msec_frac}t::%{usec_frac}t::%{sec}t::%{msec}t::%{usec}t', - qr{^([0-9]{3})::(\1[0-9]{3})::([0-9]+)::\3\1::\3\2$}, - ); -}; - -subtest "more-fields" => sub { - my $local_port = ""; - doit( - sub { - my $server = shift; - my $resp = `curl --silent -w ',\%{local_port}' http://127.0.0.1:$server->{port}/`; - like $resp, qr{,(\d+)$}s; - $local_port = do { $resp =~ /,(\d+)$/s; $1 }; - }, - '\"%A:%p\" \"%{local}p\" \"%{remote}p\"', - sub { my $server = shift; qr{^\"127\.0\.0\.1:$server->{port}\" \"$server->{port}\" \"$local_port\"$} }, - ); -}; - -subtest 'ltsv-related' => sub { - doit( - sub { - my $server = shift; - system("curl --silent http://127.0.0.1:$server->{port} > /dev/null"); - system("curl --silent http://127.0.0.1:$server->{port}/query?abc=d > /dev/null"); - }, - '%m::%U%q::%H::%V::%v', - qr{^GET::/::HTTP/1\.1::127\.0\.0\.1:[0-9]+::default$}, - qr{^GET::/query\?abc=d::HTTP/1\.1::127\.0\.0\.1:[0-9]+::default$}, - ); -}; - -subtest 'timings' => sub { - my $doit = sub { - my $opts = shift; - doit( - sub { - my $server = shift; - system("curl $opts --silent --data helloworld http://127.0.0.1:$server->{port}/ > /dev/null"); - system("curl $opts --silent --insecure --data helloworld https://127.0.0.1:$server->{tls_port}/ > /dev/null"); - }, - '%{connect-time}x:%{request-header-time}x:%{request-body-time}x:%{response-time}x:%{request-total-time}x:%{duration}x:%{undefined}x', - map { qr{^[0-9\.]+:[0-9\.]+:[0-9\.]+:[0-9\.]+:[0-9\.]+:[0-9\.]+:-$} } (1..2), - ); - }; - subtest 'http1' => sub { - $doit->(""); - }; - subtest 'http2' => sub { - plan skip_all => "curl does not support HTTP/2" - unless curl_supports_http2(); - $doit->("--http2"); - }; -}; - -subtest 'header-termination (issue 462)' => sub { - doit( - sub { - my $server = shift; - system("curl --user-agent foobar/1 --silent http://127.0.0.1:$server->{port} > /dev/null"); - }, - '%{user-agent}i', - qr{^foobar/1$}, - ); - doit( - sub { - my $server = shift; - system("curl --user-agent foobar/1 --silent http://127.0.0.1:$server->{port} > /dev/null"); - }, - '%{content-type}o', - qr{^text/plain$}, - ); -}; - -subtest 'extensions' => sub { - doit( - sub { - my $server = shift; - system("curl --silent http://127.0.0.1:$server->{port}/ > /dev/null"); - system("curl --silent --insecure @{[curl_supports_http2() ? ' --http1.1' : '']} https://127.0.0.1:$server->{tls_port}/ > /dev/null"); - if (prog_exists("nghttp")) { - system("nghttp -n https://127.0.0.1:$server->{tls_port}/"); - system("nghttp -n --weight=22 https://127.0.0.1:$server->{tls_port}/"); - } - }, - '%{connection-id}x %{ssl.protocol-version}x %{ssl.session-reused}x %{ssl.cipher}x %{ssl.cipher-bits}x %{http2.stream-id}x %{http2.priority.received}x', - do { - my @expected = ( - qr{^2 - - - - - -$}is, - qr{^3 TLSv[0-9.]+ 0 \S+RSA\S+ (?:128|256) - -$}is, - ); - if (prog_exists("nghttp")) { - push @expected, +( - qr{^4 TLSv[0-9.]+ 0 \S+RSA\S+ (?:128|256) [0-9]*[13579] 0:[0-9]+:16}is, - qr{^5 TLSv[0-9.]+ 0 \S+RSA\S+ (?:128|256) [0-9]*[13579] 0:[0-9]+:22}is, - ); - } - @expected; - }, - ); -}; - -subtest 'ssl-log' => sub { - doit( - sub { - my $server = shift; - system("curl --silent -k https://127.0.0.1:$server->{tls_port}/ > /dev/null"); - }, - '%{ssl.session-id}x', - qr{^\S+$}s, - ); -}; - -subtest 'error' => sub { - doit( - sub { - my $server = shift; - system("curl --silent http://127.0.0.1:$server->{port}/fastcgi > /dev/null"); - }, - '%{error}x', - qr{^\[lib/handler/fastcgi\.c\] connection failed:}s, - ); -}; - -subtest 'set-cookie' => sub { - # set-cookie header is the only header to be concatenated with %{...}o, according to Apache - doit( - sub { - my $server = shift; - system("curl --silent http://127.0.0.1:$server->{port}/set-cookie/ > /dev/null"); - }, - '\\"%<{set-cookie}o\\" \\"%>{set-cookie}o\\" \\"%{set-cookie}o\\" \\"%{cache-control}o\\"', - qr{^"-" "a=b, c=d" "a=b, c=d" "must-revalidate"$}s, - ); -}; - -subtest 'escape' => sub { - for my $i ([default => qr{^/\\xe3\\x81\\x82$}s], [apache => qr{^/\\xe3\\x81\\x82$}s], [json => qr{^/\\u00e3\\u0081\\u0082$}s]) { - my ($escape, $expected) = @$i; - subtest $escape => sub { - doit( - sub { - my $server = shift; - system("curl --silent http://127.0.0.1:$server->{port}/\xe3\x81\x82 > /dev/null"); - }, - $escape eq 'default' ? '%U' : { format => '%U', escape => $escape }, - $expected, - ); - }; - } -}; - -subtest "json-null" => sub { - doit( - sub { - my $server = shift; - system("curl --silent http://127.0.0.1:$server->{port}/ > /dev/null"); - }, - # single specifier surrounded by quotes that consist a string literal in JSON should be converted to `null` if the specifier - # resolves to null - { format => '\\"%h\\" %l \\"%l\\" \'%l\' \'%l \' \'\\"%l\\"\'', escape => 'json' }, - qr{^"127\.0\.0\.1" null null null 'null ' '"null"'$}, - ); -}; - -subtest 'compressed-body-size' => sub { - my $doit = sub { - my ($opts, $expected) = @_; - doit( - sub { - my $server = shift; - system("curl $opts --silent http://127.0.0.1:$server->{port}/compress/alice.txt > /dev/null"); - }, - '%b', - qr{^$expected$}, - ); - }; - subtest 'http1' => sub { - $doit->("", 1661); - $doit->("-H 'Accept-Encoding: gzip'", 908); # it doesn't contain chunked encoding overhead (12) - }; - subtest 'http2' => sub { - plan skip_all => "curl does not support HTTP/2" - unless curl_supports_http2(); - $doit->("--http2", 1661); - $doit->("--http2 -H 'Accept-Encoding: gzip'", 908); - }; -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/50chunked-encoding-proxying.t b/web/server/h2o/libh2o/t/50chunked-encoding-proxying.t deleted file mode 100644 index bb0dff806..000000000 --- a/web/server/h2o/libh2o/t/50chunked-encoding-proxying.t +++ /dev/null @@ -1,84 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; -use Time::HiRes qw(usleep); - -plan skip_all => 'nc not found' - unless prog_exists('nc'); - -plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - -my $upstream_port = empty_port(); -$| = 1; -my $socket = new IO::Socket::INET ( - LocalHost => '127.0.0.1', - LocalPort => $upstream_port, - Proto => 'tcp', - Listen => 1, - Reuse => 1 -); -die "cannot create socket $!\n" unless $socket; - -check_port($upstream_port) or die "can't connect to server socket"; -# accent and close check_port's connection -my $client_socket = $socket->accept(); -close($client_socket); - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - "/": - proxy.reverse.url: http://127.0.0.1:$upstream_port -EOT - -sub doit { - my $chunk = shift; - my $data = shift; - my $stream_window_bits = shift; - my $defer_close = shift; - my $expect_rst_stream = shift; - open my $nghttp, "-|", "nghttp -w $stream_window_bits -v http://127.0.0.1:$server->{'port'}/ -H 'host: host.example.com' 2>&1"; - - my $req; - $client_socket = $socket->accept(); - $client_socket->recv($req, 1024); - $client_socket->send("HTTP/1.1 200 Ok\r\nTransfer-Encoding:chunked\r\nConnection:close\r\n\r\n$chunk"); - if ($defer_close) { - usleep(50000); - } - close($client_socket); - - my $found_rst_stream=0; - my $found_data=""; - while(<$nghttp>) { - if (/^[\[|\s]/) { - if (/RST_STREAM/) { - $found_rst_stream = 1; - } - } else { - # reassamble the DATA output - if (/^([^\[|^\s]+)[\[|\s].*DATA.*/) { - $found_data = $found_data.$1; - } - } - } - if ($expect_rst_stream) { - ok($found_rst_stream == 1, "Found RST_STREAM"); - } else { - ok($found_rst_stream == 0, "RST_STREAM not found, as expected"); - } - ok($found_data eq $data, "Found the expected data"); -} - -for my $w (1 .. 5) { - doit("5\r\nHello\r\n50\r\nThere", "HelloThere", $w, 0, 1); - doit("5\r\nHello\r\n50\r\nThere", "HelloThere", $w, 1, 1); -} -doit("5\r\nHello\r\n5\r\nThere\r\n", "HelloThere", 14); - -$socket->close(); -done_testing(); diff --git a/web/server/h2o/libh2o/t/50compress-hint.t b/web/server/h2o/libh2o/t/50compress-hint.t deleted file mode 100644 index 23e52c50f..000000000 --- a/web/server/h2o/libh2o/t/50compress-hint.t +++ /dev/null @@ -1,88 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'nc not found' - unless prog_exists('nc'); - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -my $upstream_port = empty_port(); -$| = 1; -my $socket = new IO::Socket::INET ( - LocalHost => '127.0.0.1', - LocalPort => $upstream_port, - Proto => 'tcp', - Listen => 1, - Reuse => 1 -); -die "cannot create socket $!\n" unless $socket; - -check_port($upstream_port) or die "can't connect to server socket"; -# accent and close check_port's connection -my $client_socket = $socket->accept(); -close($client_socket); - -my $server = spawn_h2o(<< "EOT"); -compress: ON -compress-minimum-size: 10 -hosts: - default: - paths: - "/": - proxy.reverse.url: http://127.0.0.1:$upstream_port -EOT - -sub doit { - my $msg = shift; - my $x_compress_header = shift; - my $expect_content_encoding = shift; - my $accept_gzip = shift; - - my $ae_header = ""; - if ($accept_gzip) { - $ae_header = "-Haccept-encoding:gzip"; - } - open(CURL, "curl $ae_header -Hhost:host.example.com -svo /dev/null http://127.0.0.1:$server->{'port'}/ 2>&1 |"); - - my $req; - $client_socket = $socket->accept(); - $client_socket->recv($req, 1024); - my $cl = length($msg); - $client_socket->send("HTTP/1.1 200 Ok\r\ncontent-length:${cl}\r\ncontent-type:text/html\r\n${x_compress_header}Connection:close\r\n\r\n$msg"); - close($client_socket); - - my $seen_content_encoding = 0; - while(<CURL>) { - if (/< content-encoding/) { - $seen_content_encoding = 1; - } - } - - my $neg = ""; - if ($expect_content_encoding == 0) { - $neg = "not "; - } - ok($seen_content_encoding == $expect_content_encoding, "The body was ${neg}encoded as expected"); -} - -doit("This is large enough to be compressed", "", 1, 1); -doit("This is large enough to be compressed", "x-compress-hint: auto\r\n", 1, 1); -doit("This is large enough to be compressed", "x-compress-hint: on\r\n", 1, 1); -doit("This is large enough to be compressed", "x-compress-hint: off\r\n", 0, 1); - -doit("too small", "", 0, 1); -doit("too small", "x-compress-hint: auto\r\n", 0, 1); -doit("too small", "x-compress-hint: on\r\n", 1, 1); -doit("too small", "x-compress-hint: off\r\n", 0, 1); - -doit("This is large enough to be compressed", "", 0, 0); -doit("This is large enough to be compressed", "x-compress-hint: auto\r\n", 0, 0); -doit("This is large enough to be compressed", "x-compress-hint: on\r\n", 0, 0); -doit("This is large enough to be compressed", "x-compress-hint: off\r\n", 0, 0); - -$socket->close(); -done_testing(); diff --git a/web/server/h2o/libh2o/t/50compress.t b/web/server/h2o/libh2o/t/50compress.t deleted file mode 100644 index b8674f7fa..000000000 --- a/web/server/h2o/libh2o/t/50compress.t +++ /dev/null @@ -1,88 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /off: - file.dir: @{[DOC_ROOT]} - /on: - file.dir: @{[DOC_ROOT]} - compress: ON - /off-by-mime: - file.dir: @{[DOC_ROOT]} - compress: ON - file.mime.settypes: - text/plain: - extensions: [".txt"] - is_compressible: NO - /compress-jpg: - file.dir: @{[DOC_ROOT]} - compress: ON - file.mime.settypes: - image/jpg: - extensions: [".jpg"] - is_compressible: YES -EOT - -run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - plan skip_all => 'curl issue #661' - if $curl =~ /--http2/; - my $fetch_orig = sub { - my ($path, $opts) = @_; - run_prog("$curl --silent $opts $proto://127.0.0.1:$port$path/alice.txt"); - }; - my $fetch_gunzip = sub { - my ($path, $opts) = @_; - run_prog("$curl --silent $opts $proto://127.0.0.1:$port$path/alice.txt | gzip -cd"); - }; - my $expected = md5_file("@{[DOC_ROOT]}/alice.txt"); - - my $resp = $fetch_orig->("/off", ""); - is md5_hex($resp), $expected, "off wo. accept-encoding"; - $resp = $fetch_orig->("/on", ""); - is md5_hex($resp), $expected, "on wo. accept-encoding"; - $resp = $fetch_orig->("/off", "-H accept-encoding:gzip"); - is md5_hex($resp), $expected, "off with accept-encoding"; - $resp = $fetch_gunzip->("/on", "-H accept-encoding:gzip"); - is md5_hex($resp), $expected, "on with accept-encoding"; - $resp = $fetch_gunzip->("/on", "-H 'accept-encoding:gzip, deflate'"); - is md5_hex($resp), $expected, "on with accept-encoding: gzip, deflate"; - $resp = $fetch_gunzip->("/on", "-H 'accept-encoding:deflate, gzip'"); - is md5_hex($resp), $expected, "on with accept-encoding: deflate, gzip"; - $resp = $fetch_orig->("/on", "-H accept-encoding:deflate"); - is md5_hex($resp), $expected, "on with accept-encoding, deflate only"; - - $resp = $fetch_orig->("/off-by-mime", "-H accept-encoding:gzip"); - is md5_hex($resp), $expected, "off due to is_compressible:NO"; - - $resp = run_prog("$curl --silent -H accept-encoding:gzip $proto://127.0.0.1:$port/on/index.txt"); - is md5_hex($resp), md5_file("@{[DOC_ROOT]}/index.txt"), "tiny file not compressed"; - - $resp = run_prog("$curl --silent -H accept-encoding:gzip $proto://127.0.0.1:$port/on/halfdome.jpg"); - is md5_hex($resp), md5_file("@{[DOC_ROOT]}/halfdome.jpg"), "image not compressed"; - - $resp = run_prog("$curl --silent -H accept-encoding:gzip $proto://127.0.0.1:$port/compress-jpg/halfdome.jpg | gzip -cd"); - is md5_hex($resp), md5_file("@{[DOC_ROOT]}/halfdome.jpg"), "image compressed using gzip"; - - subtest "brotli-decompress" => sub { - plan skip_all => "bro not found" - unless prog_exists("bro"); - $resp = run_prog("$curl --silent -H accept-encoding:br $proto://127.0.0.1:$port/on/alice.txt | bro --decompress"); - is md5_hex($resp), md5_file("@{[DOC_ROOT]}/alice.txt"), "alice.txt"; - $resp = run_prog("$curl --silent -H accept-encoding:br $proto://127.0.0.1:$port/compress-jpg/halfdome.jpg | bro --decompress"); - is md5_hex($resp), md5_file("@{[DOC_ROOT]}/halfdome.jpg"), "halfdome.jpg"; - }; -}); - -undef $server; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50config-tag.t b/web/server/h2o/libh2o/t/50config-tag.t deleted file mode 100644 index dd37f996d..000000000 --- a/web/server/h2o/libh2o/t/50config-tag.t +++ /dev/null @@ -1,111 +0,0 @@ -use strict; -use warnings; -use File::Temp qw(tempfile); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -my $curl = "curl --silent --show-error --dump-header /dev/stderr"; - -subtest 'basic' => sub { - my $included = temp_config_file(<< "EOT"); -header.add: &marked "foo: FOO" -file.dir: @{[DOC_ROOT]} -EOT - - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: !file $included -EOT - - my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/"); - like $stderr, qr{^HTTP/[^ ]+ 200\s}s; - like $stderr, qr{^foo: ?FOO\r$}im; -}; - -subtest 'multi-hop' => sub { - my $included2 = temp_config_file(<< "EOT"); -header.add: &marked "foo: FOO" -file.dir: @{[DOC_ROOT]} -EOT - my $included1 = temp_config_file(<< "EOT"); -!file $included2 -EOT - - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: !file $included1 -EOT - - my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/"); - like $stderr, qr{^HTTP/[^ ]+ 200\s}s; - like $stderr, qr{^foo: ?FOO\r$}im; -}; - -subtest 'with-alias' => sub { - my $included = temp_config_file(<< "EOT"); -header.add: &marked "foo: FOO" -file.dir: @{[DOC_ROOT]} -EOT - - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: !file $included - /another: - header.add: *marked - file.dir: @{[DOC_ROOT]} -EOT - - subtest 'with_merge' => sub { - my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/"); - like $stderr, qr{^HTTP/[^ ]+ 200\s}s; - like $stderr, qr{^foo: ?FOO\r$}im; - }; - - subtest 'with_alias' => sub { - my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/another/"); - like $stderr, qr{^HTTP/[^ ]+ 200\s}s; - like $stderr, qr{^foo: ?FOO\r$}im; - }; -}; - -subtest 'with-merge' => sub { - my $included2 = temp_config_file(<< "EOT"); -header.add: "foo: FOO" -EOT - my $included1 = temp_config_file(<< "EOT"); -<<: !file $included2 -header.append: "bar: BAR" -EOT - - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - <<: !file $included1 - file.dir: @{[ DOC_ROOT ]} -EOT - - my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/"); - like $stderr, qr{^HTTP/[^ ]+ 200\s}s; - like $stderr, qr{^foo: ?FOO\r$}im; - like $stderr, qr{^bar: ?BAR\r$}im; -}; - -done_testing(); - -sub temp_config_file { - my ($content) = @_; - my ($fh, $fn) = tempfile(UNLINK => 1); - print $fh $content; - return $fn; -} diff --git a/web/server/h2o/libh2o/t/50errordoc.t b/web/server/h2o/libh2o/t/50errordoc.t deleted file mode 100644 index 6f847dae4..000000000 --- a/web/server/h2o/libh2o/t/50errordoc.t +++ /dev/null @@ -1,179 +0,0 @@ -use strict; -use warnings; -use Test::More; -use Test::Exception; -use t::Util; - -subtest 'basic' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[DOC_ROOT]} -error-doc: - status: 404 - url: /404.html -EOT - - my $expected = do { - open my $fh, '<', "@{[DOC_ROOT]}/404.html" - or die "failed to read file:@{[DOC_ROOT]}/404.html:$!"; - local $/; - <$fh>; - }; - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent $proto://127.0.0.1:$port/nonexist`; - is $resp, $expected, "content"; - $resp = `$curl --silent --dump-header /dev/stderr $proto://127.0.0.1:$port/nonexist 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]+ 404\s}s, "status"; - like $resp, qr{\r\ncontent-type:\s*text/html.*\r\n}is, "content-type"; - like $resp, qr{\r\ncontent-length:\s*@{[length $expected]}\r\n}is, "content-length"; - unlike $resp, qr{\r\nlast-modified:}is, "no last-modified"; - unlike $resp, qr{\r\etag:}is, "no etag"; - }); -}; - -subtest 'double-error' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[DOC_ROOT]} -error-doc: - status: 404 - url: /nonexist -EOT - - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent $proto://127.0.0.1:$port/nonexist`; - is $resp, "not found", "content"; - $resp = `$curl --silent --dump-header /dev/stderr $proto://127.0.0.1:$port/nonexist 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]+ 404\s}s, "status"; - like $resp, qr{\r\ncontent-type:\s*text/plain.*\r\n}is, "content-type"; - like $resp, qr{\r\ncontent-length:\s*@{[length "not found"]}\r\n}is, "content-length"; - unlike $resp, qr{\r\nlast-modified:}is, "no last-modified"; - unlike $resp, qr{\r\etag:}is, "no etag"; - }); -}; - -subtest 'redirect' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[DOC_ROOT]} -error-doc: - status: 404 - url: /subdir -EOT - - my $expected = do { - open my $fh, '<', "@{[DOC_ROOT]}/subdir/index.txt" - or die "failed to read file:@{[DOC_ROOT]}/subdir/index.txt:$!"; - local $/; - <$fh>; - }; - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent $proto://127.0.0.1:$port/nonexist`; - is $resp, $expected, "content"; - $resp = `$curl --silent --dump-header /dev/stderr $proto://127.0.0.1:$port/nonexist 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]+ 404\s}s, "status"; - like $resp, qr{\r\ncontent-type:\s*text/plain.*\r\n}is, "content-type"; - like $resp, qr{\r\ncontent-length:\s*@{[length $expected]}\r\n}is, "content-length"; - unlike $resp, qr{\r\nlast-modified:}is, "no last-modified"; - unlike $resp, qr{\r\etag:}is, "no etag"; - }); -}; - -subtest 'multi-error' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[DOC_ROOT]} -error-doc: - - status: 404 - url: /404.html - - status: 500 - url: /500.html -EOT - - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent --dump-header /dev/stderr $proto://127.0.0.1:$port/nonexist 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]+ 404\s}s, "status"; - }); -}; - -subtest 'multi-status-error' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[DOC_ROOT]} -error-doc: - - status: [404, 405] - url: /404.html -EOT - - my $expected = do { - open my $fh, '<', "@{[DOC_ROOT]}/404.html" - or die "failed to read file:@{[DOC_ROOT]}/404.html:$!"; - local $/; - <$fh>; - }; - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent $proto://127.0.0.1:$port/nonexist`; - is $resp, $expected, "content"; - $resp = `$curl --silent --dump-header /dev/stderr $proto://127.0.0.1:$port/nonexist 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]+ 404\s}s, "status"; - }); - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent -X POST $proto://127.0.0.1:$port/index.txt`; - is $resp, $expected, "content"; - $resp = `$curl --silent --dump-header /dev/stderr -X POST $proto://127.0.0.1:$port/index.txt 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]+ 405\s}s, "status"; - }); -}; - -subtest "empty status" => sub { - throws_ok sub { - spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[DOC_ROOT]} -error-doc: - - status: [] - url: /404.html -EOT - }, qr/server failed to start/, 'status must not be empty'; -}; - -subtest "duplicated statuses" => sub { - throws_ok sub { - spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[DOC_ROOT]} -error-doc: - - status: [@{[ join(', ', (400 .. 599), 599) ]}] - url: /error.html -EOT - }, qr/server failed to start/, 'duplicated statuses'; -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/50expires.t b/web/server/h2o/libh2o/t/50expires.t deleted file mode 100644 index d5c25701b..000000000 --- a/web/server/h2o/libh2o/t/50expires.t +++ /dev/null @@ -1,47 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -sub fetch { - my $extra_conf = shift; - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: examples/doc_root -$extra_conf -EOT - return `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/ 2>&1 > /dev/null`; -} - - -my $resp = fetch(''); -unlike $resp, qr/^cache-control:.*\Wmax-age/im, "off by default"; - -$resp = fetch(<< 'EOT'); -expires: OFF -EOT -unlike $resp, qr/^cache-control:.*\Wmax-age/im, "explicitly turned off"; - -$resp = fetch(<< 'EOT'); -expires: 1 day -EOT -like $resp, qr/^cache-control:.*\Wmax-age=86400\W/im, "expires 1 day"; - -$resp = fetch(<< 'EOT'); -expires: 1 month -EOT -like $resp, qr/^cache-control:.*\Wmax-age=2592000\W/im, "expires 1 month"; - -$resp = fetch(<< 'EOT'); - expires: OFF -expires: 1 day -EOT -unlike $resp, qr/^cache-control:.*\Wmax-age/im, "on at global, off at path-level"; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50fastcgi-cgi.t b/web/server/h2o/libh2o/t/50fastcgi-cgi.t deleted file mode 100644 index c9440f391..000000000 --- a/web/server/h2o/libh2o/t/50fastcgi-cgi.t +++ /dev/null @@ -1,35 +0,0 @@ -# this test checks the behavior of `file.custom-handler` and `fastcgi.spawn` -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use File::Temp qw(tempdir); -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); -eval q{use CGI; 1} - or plan skip_all => 'CGI.pm not found'; - -# spawn h2o -my $server = spawn_h2o(<< "EOT"); -file.custom-handler: - extension: .cgi - fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" -hosts: - default: - paths: - "/": - file.dir: @{[ DOC_ROOT ]} -EOT - -run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent $proto://127.0.0.1:$port/hello.cgi?name=world`; - is $resp, "Hello world", "GET"; - $resp = `$curl --silent -F name=world $proto://127.0.0.1:$port/hello.cgi`; - is $resp, "Hello world", "POST"; -}); - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50fastcgi-php.t b/web/server/h2o/libh2o/t/50fastcgi-php.t deleted file mode 100644 index 58678a936..000000000 --- a/web/server/h2o/libh2o/t/50fastcgi-php.t +++ /dev/null @@ -1,54 +0,0 @@ -# this test checks the behavior of `file.custom-handler` and `fastcgi.spawn` -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use File::Temp qw(tempdir); -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); -plan skip_all => 'php-cgi not found' - unless prog_exists('php-cgi'); - -# spawn h2o -my $server = spawn_h2o(<< "EOT"); -file.custom-handler: - extension: .php - fastcgi.spawn: "exec php-cgi" -hosts: - default: - paths: - "/": - file.dir: @{[ DOC_ROOT ]} -EOT - -my $resp = `curl --silent http://127.0.0.1:$server->{port}/index.txt`; -is $resp, "hello\n", 'ordinary file'; - -$resp = `curl --silent http://127.0.0.1:$server->{port}/hello.php`; -is $resp, 'hello world', 'php'; - -subtest 'server-push' => sub { - plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - my $doit = sub { - my ($proto, $port) = @_; - my $resp = `nghttp -n --stat '$proto://127.0.0.1:$port/hello.php?link=<index.js>\%3b\%20rel=preload'`; - like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n.*\s/hello\.php\?}is, $proto; - }; - $doit->('http', $server->{port}); - $doit->('https', $server->{tls_port}); -}; - -subtest 'huge-headers' => sub { - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent --dump-header /dev/stderr --max-redirs 0 $proto://127.0.0.1:$port/issues/951.php 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]* 302 ?}is; - like $resp, qr{^set-cookie: ?}im; - }); -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50fastcgi.t b/web/server/h2o/libh2o/t/50fastcgi.t deleted file mode 100644 index bdec377b4..000000000 --- a/web/server/h2o/libh2o/t/50fastcgi.t +++ /dev/null @@ -1,139 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use File::Temp qw(tempdir); -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); -plan skip_all => 'cannot run perl -MPlack::Handler::FCGI' - if system("perl -MPlack::Handler::FCGI /dev/null > /dev/null 2>&1") != 0; - -my $tempdir = tempdir(CLEANUP => 1); -my $fcgi_port = empty_port(); - -# gather information of test data -my %files = map { do { - my $fn = DOC_ROOT . "/$_"; - +($_ => { size => (stat $fn)[7], md5 => md5_file($fn) }); -} } qw(index.txt halfdome.jpg); - -sub doit { - my ($tcp, $keepalive) = @_; - subtest "tcp:$tcp,keepalive:$keepalive" => sub { - # spawn upstream - unlink "$tempdir/fcgi.sock"; - my $upstream = spawn_server( - argv => [ - qw(plackup -s FCGI --access-log /dev/null --listen), - ($tcp ? ":$fcgi_port" : "$tempdir/fcgi.sock"), - ASSETS_DIR . "/upstream.psgi", - ], - is_ready => sub { - $tcp ? check_port($fcgi_port) : -e "$tempdir/fcgi.sock"; - }, - ); - # spawn h2o - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - "/": - fastcgi.connect: - @{[$tcp ? "host: 127.0.0.1" : ""]} - port: @{[$tcp ? $fcgi_port : "$tempdir/fcgi.sock"]} - type: @{[$tcp ? "tcp" : "unix"]} -fastcgi.timeout.keepalive: @{[$keepalive ? 5000 : 0]} -EOT - # the tests - subtest 'files' => sub { - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - for my $file (sort keys %files) { - my $content = `$curl --silent --show-error $proto://127.0.0.1:$port/$file`; - is length($content), $files{$file}->{size}, "$proto://127.0.0.1/$file (size)"; - is md5_hex($content), $files{$file}->{md5}, "$proto://127.0.0.1/$file (md5)"; - } - }); - }; - subtest 'echo' => sub { - # send header that exceeds the max. length fcgi record (the size of the response also exceeds the record size, and uses chunked encoding) - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - plan skip_all => "skip due to curl bug #659" - if $curl =~ /--http2/; - my $content = `$curl --silent --show-error -H foo:@{["0123456789"x7000]} $proto://127.0.0.1:$port/echo-headers`; - like $content, qr/^foo: (0123456789){7000,7000}$/mi; - if ($proto eq 'https') { - like $content, qr/^https: on$/m; - } else { - unlike $content, qr/^https: on$/m; - } - }); - }; - subtest 'cookie-merge' => sub { - plan skip_all => "curl does not support HTTP/2" - unless curl_supports_http2(); - plan skip_all => "cowardly skipping to avoid https://github.com/plack/Plack/pull/511; unless PLACK_ENV=deployment is set" - unless $ENV{PLACK_ENV} && $ENV{PLACK_ENV} eq 'deployment'; - my $content = `curl --http2 --silent --show-error --insecure -H "cookie:a=b;c=d" https://127.0.0.1:$server->{tls_port}/echo-headers`; - like $content, qr/^cookie: a=b;\s*c=d$/mi; - }; - delete $server->{guard}; - }; -} - -doit(0, 0); -doit(1, 0); -doit(0, 1); -doit(1, 1); - -subtest 'httpoxy' => sub { - my $doit = sub { - my ($drop, $cb) = @_; - unlink "$tempdir/fcgi.sock"; - my $upstream = spawn_server( - argv => [ - qw(plackup -s FCGI --access-log /dev/null --listen), - "$tempdir/fcgi.sock", - ASSETS_DIR . "/upstream.psgi", - ], - is_ready => sub { - -e "$tempdir/fcgi.sock"; - }, - ); - # spawn h2o - my $dropconf = $drop ? << 'EOT' : ""; - setenv: - HTTP_PROXY: "" -EOT - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - "/": - fastcgi.connect: - port: $tempdir/fcgi.sock - type: unix -$dropconf -EOT - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $content = `$curl --silent --show-error -H proxy:foobar $proto://127.0.0.1:$port/echo-headers`; - $cb->($content); - }); - }; - $doit->(undef, sub { - like $_[0], qr{^proxy: foobar$}mi, "keep"; - }); - $doit->(1, sub { - like $_[0], qr{^proxy: $}mi, "drop"; - }); -}; - - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50file-config.t b/web/server/h2o/libh2o/t/50file-config.t deleted file mode 100644 index aa58e697d..000000000 --- a/web/server/h2o/libh2o/t/50file-config.t +++ /dev/null @@ -1,143 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -subtest 'root-redirect' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /abc: - file.dir: @{[ DOC_ROOT ]} -EOT - - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my ($stderr, $stdout) = run_prog("$curl --silent --show-error --max-redirs 0 --dump-header /dev/stderr $proto://127.0.0.1:$port/abc"); - like $stderr, qr{^HTTP/[^ ]+ 301\s}s, "is 301"; - like $stderr, qr{^location: ?/abc/\r$}im, "location header"; - }); -}; - -subtest 'etag' => sub { - my $fetch = sub { - my $extra_conf = shift; - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: examples/doc_root -$extra_conf -EOT - return `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/ 2>&1 > /dev/null`; - }; - - my $etag_re = qr/^etag: /im; - my $resp = $fetch->(''); - like $resp, $etag_re, "default is on"; - $resp = $fetch->('file.etag: off'); - unlike $resp, $etag_re, "off"; - $resp = $fetch->('file.etag: on'); - like $resp, $etag_re, "on"; -}; - -subtest 'send-compressed' => sub { - my $doit = sub { - my ($send_compressed, $curl_opts, $paths, $expected_length) = @_; - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: t/assets/doc_root -@{[ $send_compressed ? "file.send-compressed: $send_compressed" : "" ]} -EOT - my $fetch = sub { - my $path = shift; - subtest "send-compressed:@{[ $send_compressed || q(default) ]}, $curl_opts, $path" => sub { - my $resp = `curl --silent --dump-header /dev/stderr $curl_opts http://127.0.0.1:$server->{port}$path 2>&1 > /dev/null`; - if ($send_compressed ne 'gunzip') { - like $resp, qr/^content-length:\s*$expected_length\r$/im, "length is as expected"; - } - if ($send_compressed eq 'ON' || $send_compressed eq 'gunzip') { - like $resp, qr/^vary:\s*accept-encoding\r$/im, "has vary set"; - } else { - unlike $resp, qr/^vary:\s*accept-encoding\r$/im, "not has vary set"; - } - }; - }; - $fetch->($_) for @$paths; - }; - - my $index_orig_len = (stat 't/assets/doc_root/index.txt')[7]; - my $index_gz_len = (stat 't/assets/doc_root/index.txt.gz')[7]; - my $index_br_len = (stat 't/assets/doc_root/index.txt.br')[7]; - my $alice2_orig_len = `gzip -cd < t/assets/doc_root/alice2.txt.gz | wc -c`; - my $alice2_gz_len = (stat 't/assets/doc_root/alice2.txt.gz')[7]; - - $doit->("", "", ['/index.txt', '/'], $index_orig_len); - $doit->("", q{--header "Accept-Encoding: gzip"}, ['/index.txt', '/'], $index_orig_len); - $doit->("OFF", q{--header "Accept-Encoding: gzip"}, ['/index.txt', '/'], $index_orig_len); - $doit->("OFF", q{--header "Accept-Encoding: br, gzip"}, ['/index.txt', '/'], $index_orig_len); - - $doit->("ON", "", ['/index.txt', '/'], $index_orig_len); - $doit->("ON", q{--header "Accept-Encoding: gzip"}, ['/index.txt', '/'], $index_gz_len); - $doit->("ON", q{--header "Accept-Encoding: gzip, deflate"}, ['/index.txt', '/'], $index_gz_len); - $doit->("ON", q{--header "Accept-Encoding: deflate, gzip"}, ['/index.txt', '/'], $index_gz_len); - $doit->("ON", q{--header "Accept-Encoding: deflate"}, ['/index.txt', '/'], $index_orig_len); - $doit->("ON", q{--header "Accept-Encoding: br, gzip"}, ['/index.txt', '/'], $index_br_len); - $doit->("ON", q{--header "Accept-Encoding: gzip, br"}, ['/index.txt', '/'], $index_br_len); - $doit->("ON", q{--header "Accept-Encoding: br"}, ['/index.txt', '/'], $index_br_len); - - $doit->("gunzip", "", ['/alice2.txt'], $alice2_orig_len); - $doit->("gunzip", q{--header "Accept-Encoding: gzip"}, ['/alice2.txt'], $alice2_gz_len); - - - subtest 'MSIE-workaround' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: t/assets/doc_root - file.send-gzip: ON -EOT - my $resp = `curl --silent --dump-header /dev/stderr --user-agent "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" --header "Accept-Encoding: gzip" http://127.0.0.1:$server->{port}/ 2>&1 > /dev/null`; - like $resp, qr/^content-length:\s*$index_gz_len\r$/im, "length is as expected"; - like $resp, qr/^cache-control:.*private.*\r$/im, "cache-control: private"; - unlike $resp, qr/^vary:/im, "no vary"; - }; -}; - -subtest 'dir-listing' => sub { - my $server = spawn_h2o(<< 'EOT'); -hosts: - default: - paths: - /off: - file.dir: examples/doc_root - file.dirlisting: off - /on: - file.dir: examples/doc_root - file.dirlisting: on - file.index: [] -EOT - - my $fetch = sub { - my $path = shift; - run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}$path"); - }; - - my ($headers, $content) = $fetch->("/on/"); - like $headers, qr{^HTTP/1\.[0-9]+ 200 }s, "ON returns 200"; - unlike $content, qr{examples}, "result should not include internal info"; - ($headers, $content) = $fetch->("/off/"); - like $headers, qr{^HTTP/1\.[0-9]+ 403 }s, "OFF returns 403"; -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50file-custom-handler.t b/web/server/h2o/libh2o/t/50file-custom-handler.t deleted file mode 100644 index 1acc9c1e7..000000000 --- a/web/server/h2o/libh2o/t/50file-custom-handler.t +++ /dev/null @@ -1,96 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -subtest 'cgi file' => sub { - eval q{use CGI; 1} - or plan skip_all => 'CGI.pm not found'; - - # spawn h2o - my $server = spawn_h2o(<< "EOT"); -file.custom-handler: - extension: .cgi - fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" -hosts: - default: - paths: - /robots.txt: - file.file: @{[DOC_ROOT]}/hello.cgi -EOT - run_with_curl($server, sub { - my ($proto, $port, $cmd) = @_; - my $resp = `$cmd --silent $proto://127.0.0.1:$port/robots.txt?name=Tobor`; - is $resp, "Hello Tobor"; - }); -}; - -subtest 'directory containing cgi files' => sub { - eval q{use CGI; 1} - or plan skip_all => 'CGI.pm not found'; - - # spawn h2o - my $server = spawn_h2o(<< "EOT"); -file.custom-handler: - extension: [".cgi"] - fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" -hosts: - default: - paths: - /: - file.dir: @{[DOC_ROOT]} -EOT - run_with_curl($server, sub { - my ($proto, $port, $cmd) = @_; - my $resp = `$cmd --silent $proto://127.0.0.1:$port/hello.cgi?name=Tobor`; - is $resp, "Hello Tobor"; - }); -}; - -subtest 'SCRIPT_NAME and PATH_INFO for fastcgi' => sub { - eval q{use CGI; 1} - or plan skip_all => 'CGI.pm not found'; - - # spawn h2o - my $server = spawn_h2o(<< "EOT"); -file.index: ['printenv.cgi'] -file.custom-handler: - extension: .cgi - fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" -hosts: - default: - paths: - /: - file.dir: @{[DOC_ROOT]} - /foo: - file.dir: @{[DOC_ROOT]} -EOT - my $doit = sub { - my ($path, $expected) = @_; - subtest $path => sub { - my $resp = `curl --silent http://127.0.0.1:$server->{port}$path`; - my $env = +{ map { split(':', $_, 2) } split(/\n/, $resp) }; - for my $key (sort keys %$expected) { - is $env->{$key}, $expected->{$key}, $key; - } - }; - }; - - $doit->('/printenv.cgi', - +{ SCRIPT_NAME => '/printenv.cgi', PATH_INFO => undef }); - $doit->('/printenv.cgi/path/info', - +{ SCRIPT_NAME => '/printenv.cgi', PATH_INFO => '/path/info' }); - $doit->('/foo/printenv.cgi/path/info', - +{ SCRIPT_NAME => '/foo/printenv.cgi', PATH_INFO => '/path/info' }); - $doit->('/', - +{ SCRIPT_NAME => '/printenv.cgi', PATH_INFO => undef }); - $doit->('/foo/', - +{ SCRIPT_NAME => '/foo/printenv.cgi', PATH_INFO => undef }); - -}; - -done_testing; - diff --git a/web/server/h2o/libh2o/t/50file-file.t b/web/server/h2o/libh2o/t/50file-file.t deleted file mode 100644 index 7dd3b9228..000000000 --- a/web/server/h2o/libh2o/t/50file-file.t +++ /dev/null @@ -1,54 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -subtest 'static' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /favicon.ico: - file.file: @{[DOC_ROOT]}/halfdome.jpg -EOT - run_with_curl($server, sub { - my ($proto, $port, $cmd) = @_; - my $fetch = sub { - my $path = shift; - return `$cmd --silent --dump-header /dev/stderr --max-redirs 0 $proto://127.0.0.1:$port$path 2>&1 > /dev/null`; - }; - my $resp = $fetch->("/"); - like $resp, qr{^HTTP/[0-9\.]+ 404}is; - $resp = $fetch->("/favicon.ico"); - like $resp, qr{^HTTP/[0-9\.]+ 200}is; - like $resp, qr{^content-type:\s*image/jpeg\r$}im; # type is inferred from the extension of the real file - like $resp, qr{^content-length:\s*@{[(stat "@{[DOC_ROOT]}/halfdome.jpg")[7]]}\r$}im; - }); -}; - -subtest 'dynamic' => sub { - eval q{use CGI; 1} - or plan skip_all => 'CGI.pm not found'; - - # spawn h2o - my $server = spawn_h2o(<< "EOT"); -file.custom-handler: - extension: .cgi - fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" -hosts: - default: - paths: - /robots.txt: - file.file: @{[DOC_ROOT]}/hello.cgi -EOT - run_with_curl($server, sub { - my ($proto, $port, $cmd) = @_; - my $resp = `$cmd --silent $proto://127.0.0.1:$port/robots.txt?name=Tobor`; - is $resp, "Hello Tobor"; - }); -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/50file-range.t b/web/server/h2o/libh2o/t/50file-range.t deleted file mode 100644 index 826a2d283..000000000 --- a/web/server/h2o/libh2o/t/50file-range.t +++ /dev/null @@ -1,100 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -my $all_data = do { - open my $fh, "<", "@{[DOC_ROOT]}/halfdome.jpg" - or die "failed to open file:@{[DOC_ROOT]}/halfdome.jpg:$!"; - undef $/; - <$fh>; -}; - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT - -run_with_curl($server, sub { - my ($proto, $port, $curl_cmd) = @_; - $curl_cmd .= " --silent --show-error"; - my $url = "$proto://127.0.0.1:$port/halfdome.jpg"; - - subtest "non-ranged" => sub { - my $resp = `$curl_cmd $url`; - is $resp, $all_data; - }; - - subtest "single-ranged" => sub { - subtest "closed" => sub { - my $resp = `$curl_cmd -r 100-499 $url`; - is $resp, substr($all_data, 100, 400), "content"; - - my $headers = `$curl_cmd -r 100-499 --dump-header /dev/stderr $url 2>&1 > /dev/null`; - like $headers, qr{^content-type:\s*image/jpeg\r$}mi, "content-type"; - like $headers, qr{^content-range:\s*bytes 100-499/@{[length $all_data]}\r}mi, "content-range"; - }; - - subtest "closed-exceed-end" => sub { - my $resp = `$curl_cmd -r 100-999999 $url`; - is $resp, substr($all_data, 100), "content"; - - my $headers = `$curl_cmd -r 100-999999 --dump-header /dev/stderr $url 2>&1 > /dev/null`; - like $headers, qr{^content-type:\s*image/jpeg\r$}mi, "content-type"; - like $headers, qr{^content-range:\s*bytes 100-@{[length($all_data) - 1]}/@{[length $all_data]}\r}mi, "content-range"; - }; - - subtest "closed-unsatisfied" => sub { - my $headers = `$curl_cmd --dump-header /dev/stderr -r 999999-999999 $url 2>&1 > /dev/null`; - like $headers, qr{^HTTP/[^ ]+ 416\s}mi, "416 response"; - }; - - subtest "tail-open" => sub { - my $resp = `$curl_cmd -r 100- $url`; - is $resp, substr($all_data, 100), "content"; - - my $headers = `$curl_cmd -r 100- --dump-header /dev/stderr $url 2>&1 > /dev/null`; - like $headers, qr{^content-type:\s*image/jpeg\r$}mi, "content-type"; - like $headers, qr{^content-range:\s*bytes 100-@{[length($all_data) - 1]}/@{[length $all_data]}\r}mi, "content-range"; - }; - - subtest "suffix" => sub { - my $resp = `$curl_cmd -r -100 $url`; - is $resp, substr($all_data, -100), "content"; - - my $headers = `$curl_cmd -r -100 --dump-header /dev/stderr $url 2>&1 > /dev/null`; - like $headers, qr{^content-type:\s*image/jpeg\r$}mi, "content-type"; - like $headers, qr{^content-range:\s*bytes @{[length($all_data) - 100]}-@{[length($all_data) - 1]}/@{[length $all_data]}\r}mi, "content-range"; - }; - - subtest "suffix-exceed" => sub { - my $resp = `$curl_cmd -r -999999 $url`; - is $resp, $all_data, "content"; - - my $headers = `$curl_cmd -r -999999 --dump-header /dev/stderr $url 2>&1 > /dev/null`; - like $headers, qr{^content-type:\s*image/jpeg\r$}mi, "content-type"; - like $headers, qr{^content-range:\s*bytes 0-@{[length($all_data) - 1]}/@{[length $all_data]}\r}mi, "content-range"; - }; - }; - - subtest "multi-ranged" => sub { - my $resp = `$curl_cmd -r 100-199,1000-1099 $url`; - my @chunks = split /(?:^|\r\n)--[0-9A-Za-z]{20}/s, $resp; - is scalar(@chunks), 4, "number of ranges"; - is $chunks[0], "", "before first boundary"; - is substr($chunks[1], -104), "\r\n\r\n" . substr($all_data, 100, 100), "first chunk"; - is substr($chunks[2], -104), "\r\n\r\n" . substr($all_data, 1000, 100), "second chunk"; - is $chunks[3], "--\r\n", "last boundary"; - - my $headers = `$curl_cmd -r 100-199,1000-1099 --dump-header /dev/stderr $url 2>&1 > /dev/null`; - like $headers, qr{^content-type:\s*multipart/byteranges; boundary=[0-9A-Za-z]{20}\r$}mi, "content-type"; - }; -}); - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50file.t b/web/server/h2o/libh2o/t/50file.t deleted file mode 100644 index c3474068b..000000000 --- a/web/server/h2o/libh2o/t/50file.t +++ /dev/null @@ -1,22 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -subtest 'trailing-slash' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[DOC_ROOT]} -EOT - - my $resp = `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/index.txt/ 2>&1 > /dev/null`; - like $resp, qr{^HTTP/1.1 404 File Not Found}s, "status"; -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/50headers.t b/web/server/h2o/libh2o/t/50headers.t deleted file mode 100644 index b930a07c3..000000000 --- a/web/server/h2o/libh2o/t/50headers.t +++ /dev/null @@ -1,25 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload " -header.unset: last-modified -EOT - -my $resp = `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/index.txt 2>&1 > /dev/null`; -like $resp, qr{^HTTP/1\.1 200 }s, "200 response"; -like $resp, qr{^strict-transport-security: max-age=31536000; includeSubDomains; preload\r$}im, "hsts added"; -is +(() = $resp =~ m{^strict-transport-security:}img), 1, "header added only once"; -unlike $resp, qr{^last-modified: }, "last-modified unset"; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50http2_debug_state.t b/web/server/h2o/libh2o/t/50http2_debug_state.t deleted file mode 100644 index b78dee413..000000000 --- a/web/server/h2o/libh2o/t/50http2_debug_state.t +++ /dev/null @@ -1,69 +0,0 @@ -use strict; -use warnings; -use Test::More; -use Test::Exception; -use t::Util; -use JSON; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -subtest 'minimum' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - http2-debug-state: minimum - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT - - run_with_curl($server, sub { - my ($proto, $port, $curl_cmd) = @_; - $curl_cmd .= " --silent --show-error"; - my $url = "$proto://127.0.0.1:$port/.well-known/h2/state"; - - if ($curl_cmd =~ /--http2/) { - subtest "single stream itself" => sub { - my ($headers, $body) = run_prog("$curl_cmd --dump-header /dev/stderr $url"); - like($headers, qr!^HTTP/2(\.0)? 200!); - my $data; - lives_ok { $data = decode_json($body) }; - is($data->{streams}->{1}->{state}, 'HALF_CLOSED_REMOTE'); - }; - } else { - subtest "return_404_when_http1" => sub { - my ($headers, $body) = run_prog("$curl_cmd --dump-header /dev/stderr $url"); - like($headers, qr!^HTTP/1.1 404!); - }; - } - }); -}; - -subtest 'hpack' => sub { - plan skip_all => "curl does not support HTTP/2" - unless curl_supports_http2(); - - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - http2-debug-state: hpack - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT - - my ($proto, $port) = ('https', $server->{tls_port}); - my $curl_cmd = 'curl --insecure --http2 --silent --show-error --dump-header /dev/stderr'; - my $url = "$proto://127.0.0.1:$port/.well-known/h2/state"; - - subtest "with hpack state" => sub { - my ($headers, $body) = run_prog("$curl_cmd $url"); - like($headers, qr!^HTTP/2(\.0)? 200!); - my $data; - lives_ok { $data = decode_json($body) }; - ok(exists $data->{hpack}); - }; -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50internal-redirect.t b/web/server/h2o/libh2o/t/50internal-redirect.t deleted file mode 100644 index 01311e517..000000000 --- a/web/server/h2o/libh2o/t/50internal-redirect.t +++ /dev/null @@ -1,117 +0,0 @@ -use strict; -use warnings; -use File::Temp qw(tempfile); -use Net::EmptyPort qw(check_port empty_port); -use Digest::MD5 qw(md5_hex); -use Test::More; -use t::Util; - -plan skip_all => "curl not found" - unless prog_exists("curl"); - -my $upstream_port = empty_port(); -my $upstream = spawn_server( - argv => [ qw(plackup -s Starlet --access-log /dev/null --listen), $upstream_port, ASSETS_DIR . "/upstream.psgi" ], - is_ready => sub { - check_port($upstream_port); - }, -); - -subtest 'reproxy' => sub { - my ($port1, $port2) = empty_ports(2, { host => "0.0.0.0" }); - my $path_conf = << "EOT"; - proxy.reverse.url: http://127.0.0.1:$upstream_port -EOT - doit($port1, $path_conf, $port2, $path_conf, sub { - `curl --silent 'http://127.0.0.1:$port1/?resp:x-reproxy-url=http://127.0.0.1:$port2/'`; - }); -}; - -subtest 'location' => sub { - my ($port1, $port2) = empty_ports(2, { host => "0.0.0.0" }); - my $path_conf1 = << "EOT"; - redirect: - status: 302 - internal: YES - url: http://127.0.0.1:$port2/ -EOT - my $path_conf2 = << "EOT"; - file.dir: t/assets/doc_root -EOT - doit($port1, $path_conf1, $port2, $path_conf2, sub { - `curl --silent --max-redirs 0 'http://127.0.0.1:$port1/'`; - }); -}; - -subtest 'errordoc' => sub { - my ($port1, $port2) = empty_ports(2, { host => "0.0.0.0" }); - my $path_conf1 = << "EOT"; - file.dir: t/assets/doc_root - error-doc: - status: 404 - url: http://127.0.0.1:$port2/index.txt -EOT - my $path_conf2 = << "EOT"; - file.dir: t/assets/doc_root -EOT - doit($port1, $path_conf1, $port2, $path_conf2, sub { - `curl --silent 'http://127.0.0.1:$port1/404'`; - }); -}; - -done_testing; - -sub doit { - my ($port1, $path_conf1, $port2, $path_conf2, $cb) = @_; - (undef, my $access_log) = tempfile(UNLINK => 1); - my $conf = << "EOT"; -access-log: $access_log -reproxy: ON -hosts: - "127.0.0.1:$port1": - listen: - host: 0.0.0.0 - port: $port1 - paths: - "/": -$path_conf1 - "127.0.0.1:$port2": - listen: - host: 0.0.0.0 - port: $port2 - paths: - "/": -$path_conf2 -EOT - my $server = _spawn_h2o_raw($conf, [$port1, $port2]); - $cb->(); - - my @log = do { - open my $fh, '<', $access_log or die "failed to open log file: $!"; - <$fh>; - }; - is scalar(@log), 1, 'redirected internally'; -} - -sub _spawn_h2o_raw { - my ($conf, $ports) = @_; - my @opts; - - my ($conffh, $conffn) = tempfile(UNLINK => 1); - print $conffh $conf; - - my ($guard, $pid) = spawn_server( - argv => [ bindir() . "/h2o", "-c", $conffn ], - is_ready => sub { - check_port($_) or return for @$ports; - 1; - }, - ); - my $ret = { - guard => $guard, - pid => $pid, - conf_file => $conffn, - }; - return $ret; -} - diff --git a/web/server/h2o/libh2o/t/50mimemap.t b/web/server/h2o/libh2o/t/50mimemap.t deleted file mode 100644 index c85febd97..000000000 --- a/web/server/h2o/libh2o/t/50mimemap.t +++ /dev/null @@ -1,88 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; - -my $CURL_CMD = q{curl --silent --show-error --output /dev/null --write-out '%{content_type}'}; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -subtest "basic" => sub { - my $server = spawn_h2o(<< 'EOT'); -hosts: - default: - paths: - /: - file.dir: t/50mimemap/doc_root - /addtypes: - file.dir: t/50mimemap/doc_root - file.mime.addtypes: - application/xhtml+xml: .xhtml - /removetypes: - file.dir: t/50mimemap/doc_root - file.mime.removetypes: - - .xhtml - /settypes: - file.dir: t/50mimemap/doc_root - file.mime.settypes: - text/xml: .xhtml - file.mime.addtypes: - application/xml: .xhtml - default-type-test: - paths: - /: - file.dir: t/50mimemap/doc_root - file.mime.setdefaulttype: application/xhtml+xml -file.index: - - index.xhtml -EOT - - my $port = $server->{port}; - my %expected = ( - '/' => 'application/xml', - '/addtypes/' => 'application/xhtml+xml', - '/removetypes/' => 'application/octet-stream', - '/settypes/' => 'text/xml', - ); - - for my $path (sort keys %expected) { - my $ct = `$CURL_CMD http://127.0.0.1:$port$path`; - is $ct, $expected{$path}, "$path"; - $ct = `$CURL_CMD http://127.0.0.1:$port${path}index.xhtml`; - is $ct, $expected{$path}, "${path}index.xhtml"; - } - - my $ct = `$CURL_CMD --header 'host: default-type-test' http://127.0.0.1:$port/`; - is $ct, 'application/xhtml+xml', 'setdefaulttype'; -}; - -subtest "issue730" => sub { - my $server = spawn_h2o(<< 'EOT'); -hosts: - default: - paths: - /: - file.dir: t/assets/doc_root -file.mime.addtypes: - "text/plain; charset=mycharset": ".txt" -EOT - my $ct = `$CURL_CMD http://127.0.0.1:$server->{port}/index.txt`; - is $ct, "text/plain; charset=mycharset"; -}; - -subtest "reset mimemap to minimum" => sub { - my $server = spawn_h2o(<< 'EOT'); -file.mime.setdefaulttype: "application/octet-stream" -file.mime.settypes: {} -hosts: - default: - paths: - /: - file.dir: t/assets/doc_root -EOT - my $ct = `$CURL_CMD http://127.0.0.1:$server->{port}/index.txt`; - is $ct, "application/octet-stream"; -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/50mimemap/doc_root/index.xhtml b/web/server/h2o/libh2o/t/50mimemap/doc_root/index.xhtml deleted file mode 100644 index ce0136250..000000000 --- a/web/server/h2o/libh2o/t/50mimemap/doc_root/index.xhtml +++ /dev/null @@ -1 +0,0 @@ -hello diff --git a/web/server/h2o/libh2o/t/50mruby-acl.t b/web/server/h2o/libh2o/t/50mruby-acl.t deleted file mode 100644 index 0c84a6821..000000000 --- a/web/server/h2o/libh2o/t/50mruby-acl.t +++ /dev/null @@ -1,39 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use Test::More; -use Test::Exception; -use t::Util; - -plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; - -subtest "invalid configuration 1" => sub { - throws_ok sub { - spawn_h2o(<< 'EOT'); -hosts: - default: - paths: - /: - mruby.handler: | - acl { respond(403) } - acl { respond(200) } -EOT - }, qr/server failed to start/, 'acl cannot be called more than once'; -}; - -subtest "invalid configuration 2" => sub { - throws_ok sub { - spawn_h2o(<< 'EOT'); -hosts: - default: - paths: - /: - mruby.handler: | - acl { respond(403) } - proc {|env| [200, {}, []]} -EOT - }, qr/server failed to start/, 'acl configuration is ignored'; -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50mruby-dos-detector.t b/web/server/h2o/libh2o/t/50mruby-dos-detector.t deleted file mode 100644 index 6b7cdc561..000000000 --- a/web/server/h2o/libh2o/t/50mruby-dos-detector.t +++ /dev/null @@ -1,111 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use Test::More; -use t::Util; - -plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -subtest "default callback" => sub { - my $server = spawn_h2o(<< 'EOT'); -num-threads: 1 -hosts: - default: - paths: - /: - mruby.handler: | - require "share/h2o/mruby/dos_detector.rb" - DoSDetector.new({ - :strategy => DoSDetector::CountingStrategy.new({ :period => 1000, :threshold => 2, :ban_period => 1 << 32 }), - }) - mruby.handler: - Proc.new do |env| - [200, {}, []] - end -EOT - subtest "forbidden" => sub { - { - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 }s, "status"; - } - { - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 403 }s, "status"; - is $body, "Forbidden", "content"; - } - }; -}; - -subtest "fallthrough callback" => sub { - my $server = spawn_h2o(<< 'EOT'); -num-threads: 1 -hosts: - default: - paths: - /: - mruby.handler: | - require "share/h2o/mruby/dos_detector.rb" - DoSDetector.new({ - :strategy => DoSDetector::CountingStrategy.new({ :period => 1000, :threshold => 2, :ban_period => 1 << 32 }), - :callback => DoSDetector.fallthrough_callback, - }) - mruby.handler: - Proc.new do |env| - [200, {}, ["DOS_COUNT is ", env["DOS_COUNT"], ", DOS_IP is ", env["DOS_IP"]]] - end -EOT - subtest "success" => sub { - { - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 }s, "status"; - } - { - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 }s, "status"; - is $body, "DOS_COUNT is 2, DOS_IP is 127.0.0.1", "content"; - } - }; -}; - -subtest "customized callback" => sub { - my $server = spawn_h2o(<< 'EOT'); -num-threads: 1 -hosts: - default: - paths: - /: - mruby.handler: | - require "share/h2o/mruby/dos_detector.rb" - DoSDetector.new({ - :strategy => DoSDetector::CountingStrategy.new({ :period => 1000, :threshold => 2, :ban_period => 1 << 32 }), - :callback => Proc.new do |env, detected, ip| - if detected - [503, {}, ["Service Unavailable"]] - else - [399, {}, []] - end - end - }) - mruby.handler: - Proc.new do |env| - [200, {}, []] - end -EOT - subtest "success" => sub { - { - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 }s, "status"; - } - { - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 503 }s, "status"; - is $body, "Service Unavailable", "content"; - } - }; -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50mruby-htpasswd.t b/web/server/h2o/libh2o/t/50mruby-htpasswd.t deleted file mode 100644 index 31cbf5961..000000000 --- a/web/server/h2o/libh2o/t/50mruby-htpasswd.t +++ /dev/null @@ -1,48 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use Test::More; -use t::Util; - -plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -subtest "basic" => sub { - my $server = spawn_h2o(<< 'EOT'); -hosts: - default: - paths: - /: - mruby.handler: | - require "share/h2o/mruby/htpasswd.rb" - Htpasswd.new("t/assets/.htpasswd", "protected space") - mruby.handler: - Proc.new do |env| - [200, {}, ["hello ", env["REMOTE_USER"], "\n"]] - end -EOT - subtest "no-auth" => sub { - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 401 }s, "status"; - like $headers, qr{\r\nwww-authenticate: basic realm="protected space"\r}is, "www-authenticate header"; - unlike $body, qr/hello/; - }; - - subtest "fail" => sub { - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://aaa:aaa\@127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 401 }s, "status"; - like $headers, qr{\r\nwww-authenticate: basic realm="protected space"\r}is, "www-authenticate header"; - unlike $body, qr/hello/; - }; - - subtest "success" => sub { - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://dankogai:kogaidan\@127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 }s, "status"; - is $body, "hello dankogai\n", "content"; - }; -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50mruby-http-request.t b/web/server/h2o/libh2o/t/50mruby-http-request.t deleted file mode 100644 index 991d34ba0..000000000 --- a/web/server/h2o/libh2o/t/50mruby-http-request.t +++ /dev/null @@ -1,269 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use Net::EmptyPort qw(empty_port check_port); -use Test::More; -use t::Util; - -plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); - -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; - -my $upstream_hostport = "127.0.0.1:@{[empty_port()]}"; - -sub create_upstream { - my @args = ( - qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), - $upstream_hostport, - ASSETS_DIR . "/upstream.psgi", - ); - spawn_server( - argv => \@args, - is_ready => sub { - $upstream_hostport =~ /:([0-9]+)$/s - or die "failed to extract port number"; - check_port($1); - }, - ); -}; - -my $server = spawn_h2o(sub { - my ($port, $tls_port) = @_; - return << "EOT"; -proxy.timeout.io: 1000 -hosts: - default: - paths: - /: - mruby.handler: | - Proc.new do |env| - headers = {} - env.each do |key, value| - if /^HTTP_/.match(key) - headers[\$'] = value - end - end - headers["x-h2o-mruby"] = "1" - http_request("http://$upstream_hostport#{env["PATH_INFO"]}#{env["QUERY_STRING"]}", { - method: env["REQUEST_METHOD"], - headers: headers, - body: env["rack.input"], - }).join - end - /as_str: - mruby.handler: | - Proc.new do |env| - [200, {}, [http_request("http://$upstream_hostport/index.txt").join[2].join]] - end - /cl: - mruby.handler: | - Proc.new do |env| - if !/^\\/([0-9]+)/.match(env["PATH_INFO"]) - raise "failed to parse PATH_INFO" - end - cl = \$1 - body = ["abc", "def", "ghi", "jkl", "mno"] - if \$'.length != 0 - class T - def initialize(a) - \@a = a - end - def each(&b) - \@a.each(&b) - end - end - body = T.new(body) - end - [200, {"content-length" => cl}, body] - end - /esi: - mruby.handler: | - class ESIResponse - def initialize(input) - \@parts = input.split /(<esi:include +src=".*?" *\\/>)/ - \@parts.each_with_index do |part, index| - if /^<esi:include +src=" *(.*?) *"/.match(part) - \@parts[index] = http_request("http://$upstream_hostport/#{\$1}") - end - end - end - def each(&block) - \@parts.each do |part| - if part.kind_of? String - block.call(part) - else - part.join[2].each(&block) - end - end - end - end - Proc.new do |env| - resp = http_request("http://$upstream_hostport/esi.html").join - resp[2] = ESIResponse.new(resp[2].join) - resp - end - /fast-path-partial: - mruby.handler: | - Proc.new do |env| - resp = http_request("http://$upstream_hostport/streaming-body").join - resp[2].each do |x| - break - end - resp - end - /async-delegate: - mruby.handler: | - Proc.new do |env| - resp = http_request("http://$upstream_hostport#{env["PATH_INFO"]}").join - if resp[0] != 200 - resp = [399, {}, []] - end - resp - end - mruby.handler: | - Proc.new do |env| - [200, {}, ["delegated!"]] - end -EOT -}); - -run_with_curl($server, sub { - my ($proto, $port, $curl_cmd) = @_; - $curl_cmd .= ' --silent --dump-header /dev/stderr'; - subtest "connection-error" => sub { - my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/index.txt"); - like $headers, qr{HTTP/[^ ]+ 500\s}is; - }; - my $upstream = create_upstream(); - subtest "get" => sub { - my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/index.txt"); - like $headers, qr{HTTP/[^ ]+ 200\s}is; - is $body, "hello\n"; - }; - subtest "headers" => sub { - my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/echo-headers"); - like $headers, qr{^HTTP/[^ ]+ 200\s}is; - like $body, qr{^host: $upstream_hostport$}im; - unlike $body, qr{^host: 127.0.0.1:$port$}im; - like $body, qr{^user-agent: *curl/}im; - like $body, qr{^accept: *\*/\*$}im; - like $body, qr{^x-h2o-mruby:}im; - }; - subtest "post" => sub { - my ($headers, $body) = run_prog("$curl_cmd --data 'hello world' $proto://127.0.0.1:$port/echo"); - like $headers, qr{HTTP/[^ ]+ 200\s}is; - is $body, 'hello world'; - }; - subtest "slow-chunked" => sub { - my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/streaming-body"); - like $headers, qr{HTTP/[^ ]+ 200\s}is; - is $body, (join "", 1..30); - }; - subtest "as_str" => sub { - my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/as_str/"); - like $headers, qr{HTTP/[^ ]+ 200\s}is; - is $body, "hello\n"; - }; - subtest "content-length" => sub { - subtest "non-chunked" => sub { - for my $i (0..15) { - subtest "cl=$i" => sub { - my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/cl/$i"); - like $headers, qr{^HTTP/[^ ]+ 200\s.*\ncontent-length:\s*$i\r}is; - is $body, substr "abcdefghijklmno", 0, $i; - } - }; - for my $i (16..30) { - subtest "cl=$i" => sub { - my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/cl/$i"); - like $headers, qr{^HTTP/[^ ]+ 200\s.*\ncontent-length:\s*15\r}is; - is $body, "abcdefghijklmno"; - } - }; - }; - subtest "chunked" => sub { - for my $i (0..30) { - subtest "cl=$i" => sub { - my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/cl/$i/chunked"); - like $headers, qr{^HTTP/[^ ]+ 200\s.*\ncontent-length:\s*$i\r}is; - is $body, substr "abcdefghijklmno", 0, $i; - } - }; - }; - }; - subtest "esi" => sub { - my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/esi/"); - like $headers, qr{HTTP/[^ ]+ 200\s}is; - is $body, "Hello to the world, from H2O!\n"; - }; - subtest "fast-path-partial" => sub { - my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/fast-path-partial/"); - like $headers, qr{HTTP/[^ ]+ 200\s}is; - is $body, join "", 2..30; - }; - subtest "async-delegate" => sub { - subtest "non-delegated" => sub { - my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/async-delegate/index.txt"); - like $headers, qr{HTTP/[^ ]+ 200\s}is; - is $body, "hello\n"; - }; - subtest "delegated" => sub { - my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/async-delegate/notfound"); - like $headers, qr{HTTP/[^ ]+ 200\s}is; - is $body, "delegated!"; - }; - }; -}); - -subtest 'empty body' => sub { - my $upstream = create_upstream(); - my $server = spawn_h2o(sub { - my ($port, $tls_port) = @_; - return << "EOT"; -hosts: - default: - paths: - /no-content: - mruby.handler: | - proc {|env| - resp = http_request("http://$upstream_hostport/no-content").join - resp[2] = [resp[2].join] - resp - } - /head: - mruby.handler: | - proc {|env| - resp = http_request("http://$upstream_hostport/index.txt", { :method => 'HEAD' }).join - resp[2] = [resp[2].join] - resp - } -EOT - }); - - run_with_curl($server, sub { - my ($proto, $port, $curl_cmd) = @_; - $curl_cmd .= ' --silent --dump-header /dev/stderr'; - - subtest "no content" => sub { - my ($headers, $body) = run_prog("$curl_cmd -m 1 $proto://127.0.0.1:$port/no-content"); - like $headers, qr{HTTP/[^ ]+ 204\s}is; - is $body, ""; - }; - - subtest "head" => sub { - my ($headers, $body) = run_prog("$curl_cmd -m 1 $proto://127.0.0.1:$port/head"); - like $headers, qr{HTTP/[^ ]+ 200\s}is; - is $body, ""; - }; - }); -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50mruby.t b/web/server/h2o/libh2o/t/50mruby.t deleted file mode 100644 index d93f17e04..000000000 --- a/web/server/h2o/libh2o/t/50mruby.t +++ /dev/null @@ -1,541 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use File::Temp qw(tempdir); -use Test::More; -use t::Util; - -plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -subtest "handler-file" => sub { - my $server = spawn_h2o(<< 'EOT'); -hosts: - default: - paths: - /: - mruby.handler-file: t/50mruby/hello.rb -EOT - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - is $body, "hello from h2o_mruby\n"; - like $headers, qr{^HTTP/1\.1 200 OK\r\n}s; - like $headers, qr{^content-type: text/plain; charset=utf-8\r$}im; -}; - -subtest "basic" => sub { - my $server = spawn_h2o(<< 'EOT'); -hosts: - default: - paths: - /inline: - mruby.handler: | - Proc.new do |env| - [200, {}, ["hello from h2o_mruby\n"]] - end - /return-404: - mruby.handler: | - Proc.new do |env| - [404, {}, ["not found"]] - end - file.dir: examples/doc_root - /fallthru: - mruby.handler: | - Proc.new do |env| - [399, {}, []] - end - file.dir: t/50mruby/ - /echo: - mruby.handler: | - Proc.new do |env| - [200, {}, [JSON.generate(env)]] - end - /headers: - mruby.handler: | - Proc.new do |env| - [200, {"foo" => "123\n456", "bar" => "baz"}, []] - end - /headers-each: - mruby.handler: | - Proc.new do |env| - [200, [["content-type", "text/plain"], ["hello", "world"]], []] - end -EOT - my $fetch = sub { - my $path = shift; - run_prog("curl --silent -A h2o_mruby_test --dump-header /dev/stderr http://127.0.0.1:$server->{port}$path"); - }; - my ($headers, $body) = $fetch->("/inline/"); - is $body, "hello from h2o_mruby\n", "inline"; - subtest "return-404" => sub { - ($headers, $body) = $fetch->("/return-404/"); - like $headers, qr{^HTTP/1\.1 404 }is; - is $body, "not found"; - }; - subtest "fallthru" => sub { - ($headers, $body) = $fetch->("/fallthru/"); - like $headers, qr{^HTTP/1\.1 200 OK\r\n}is; - is md5_hex($body), md5_file("t/50mruby/index.html"); - }; - subtest "echo" => sub { - ($headers, $body) = $fetch->("/echo/abc?def"); - like $body, qr{"REQUEST_METHOD":"GET"}, "REQUEST_METHOD"; - like $body, qr{"SCRIPT_NAME":"/echo"}, "SCRIPT_NAME"; - like $body, qr{"PATH_INFO":"/abc"}, "PATH_INFO"; - like $body, qr{"QUERY_STRING":"def"}, "QUERY_STRING"; - like $body, qr{"SERVER_NAME":"default"}, "SERVER_NAME"; - like $body, qr{"SERVER_ADDR":"127.0.0.1"}, "SERVER_ADDR"; - like $body, qr{"SERVER_PORT":"$server->{port}"}, "SERVER_PORT"; - like $body, qr{"HTTP_HOST":"127.0.0.1:$server->{port}"}, "HTTP_HOST"; - like $body, qr{"SERVER_ADDR":"127.0.0.1"}, "REMOTE_ADDR"; - like $body, qr{"SERVER_PORT":"[0-9]+"}, "REMOTE_PORT"; - like $body, qr{"HTTP_USER_AGENT":"h2o_mruby_test"}, "HTTP_USER_AGENT"; - like $body, qr{"rack.url_scheme":"http"}, "url_scheme"; - like $body, qr{"SERVER_SOFTWARE":"h2o/[0-9]+\.[0-9]+\.[0-9]+}, "SERVER_SOFTWARE"; - }; - subtest "protocol" => sub { - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $content = `$curl --silent --show-error $proto://127.0.0.1:$port/echo`; - if ($curl =~ /http2/) { - like $content, qr{"SERVER_PROTOCOL":"HTTP/2"}, "SERVER_PROTOCOL"; - } else { - like $content, qr{"SERVER_PROTOCOL":"HTTP/1\.1"}, "SERVER_PROTOCOL"; - } - }); - }; - subtest "headers" => sub { - ($headers, $body) = $fetch->("/headers/"); - like $headers, qr{^foo: 123\r$}mi; - like $headers, qr{^foo: 456\r$}mi; - like $headers, qr{^bar: baz\r$}mi; - }; - subtest "headers-each" => sub { - ($headers, $body) = $fetch->("/headers-each/"); - like $headers, qr{^content-type: text/plain\r$}mi; - like $headers, qr{^hello: world\r$}mi; - }; -}; - -subtest "reprocess_request" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - reproxy: ON - paths: - /: - mruby.handler: | - Proc.new do |env| - [200, {"x-reproxy-url" => "http://default/dest#{env["PATH_INFO"]}"}, ["should never see this"]] - end - /307: - mruby.handler: | - Proc.new do |env| - [307, {"x-reproxy-url" => "http://default/dest#{env["PATH_INFO"]}"}, ["should never see this"]] - end - /dest: - mruby.handler: | - Proc.new do |env| - [200, {}, ["#{env["SCRIPT_NAME"]}#{env["PATH_INFO"]};#{env["CONTENT_LENGTH"]}"]] - end -EOT - my ($stderr, $stdout) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - is $stdout, "/dest/;"; - ($stderr, $stdout) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/hoge"); - is $stdout, "/dest/hoge;"; - subtest "preserve-method" => sub { - ($stderr, $stdout) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/307/"); - is $stdout, "/dest/;"; - ($stderr, $stdout) = run_prog("curl --data hello --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/307/"); - is $stdout, "/dest/;5"; - ($stderr, $stdout) = run_prog("curl --data hello --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - is $stdout, "/dest/;"; - }; -}; - -subtest "server-push" => sub { - plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - mruby.handler: | - Proc.new do |env| - push_paths = [] - if env["PATH_INFO"] == "/index.txt" - push_paths << "/index.js" - end - [399, push_paths.empty? ? {} : {"link" => push_paths.map{|p| "<#{p}>; rel=preload"}.join()}, []] - end - file.dir: t/assets/doc_root -EOT - my $resp = `nghttp -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; - like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n.*\s/index\.txt}is, "receives index.js then /index.txt"; -}; - -subtest "server-push / nopush" => sub { - plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - mruby.handler: | - Proc.new do |env| - push_paths = [] - if env["PATH_INFO"] == "/index.txt" - push_paths << "/index.js" - end - [399, push_paths.empty? ? {} : {"link" => push_paths.map{|p| "<#{p}>; rel=preload; nopush"}.join()}, []] - end - file.dir: t/assets/doc_root -EOT - my $resp = `nghttp -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; - unlike $resp, qr{/index\.js}is, "receives only /index.txt"; - like $resp, qr{/index\.txt}is, "receives only /index.txt"; -}; - -subtest "infinite-reprocess" => sub { - my $server = spawn_h2o(sub { - my ($port, $tls_port) = @_; - return << "EOT"; -hosts: - "127.0.0.1:$port": - paths: - /: - reproxy: ON - mruby.handler: | - Proc.new do |env| - [200,{"x-reproxy-url" => "http://127.0.0.1:$port/"},[]] - end -EOT - }); - my ($stderr, $stdout) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $stderr, qr{^HTTP\/1.1 502 }s, "502 response"; - like $stdout, qr{too many internal delegations}, "reason"; -}; - -subtest "send-file" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - mruby.handler: | - Proc.new do |env| - [200,{}, File::open("t/50mruby/index.html")] - end -EOT - my ($headers, $body) = run_prog("curl --silent -A h2o_mruby_test --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 OK\r\n}is; - is md5_hex($body), md5_file("t/50mruby/index.html"); -}; - -subtest "exception" => sub { - my $server = spawn_h2o(<< 'EOT'); -num-threads: 1 -hosts: - default: - paths: - /: - mruby.handler: | - cnt = 0 - Proc.new do |env| - cnt += 1 - if cnt % 2 != 0 - [200, {}, ["hello\n"]] - else - raise "error from rack" - end - end -EOT - my $fetch = sub { - run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}"); - }; - for (1..3) { - my ($headers, $body) = $fetch->(); - like $headers, qr{^HTTP/1\.1 200 }is; - is $body, "hello\n"; - ($headers, $body) = $fetch->(); - like $headers, qr{^HTTP/1\.1 500 }is; - } -}; - -subtest "post" => sub { - my $server = spawn_h2o(<< "EOT"); -num-threads: 1 -hosts: - default: - paths: - /: - mruby.handler: | - Proc.new do |env| - body = [] - 3.times do - env["rack.input"].rewind - body << env["rack.input"].read - body << "\\n" - end - [200, {}, body] - end -EOT - my ($headers, $body) = run_prog("curl --silent --data 'hello' --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 OK\r\n}is; - is $body, "hello\n" x 3; -}; - -subtest "InputStream#read-after-close" => sub { - my $server = spawn_h2o(<< "EOT"); -num-threads: 1 -hosts: - default: - paths: - /: - mruby.handler: | - prev_input = nil - Proc.new do |env| - if !prev_input - prev_input = env["rack.input"] - resp = "not cached" - else - begin - prev_input.read - resp = "must not seed this" - rescue IOError => e - resp = "got IOError" - end - end - [200, {}, [resp]] - end -EOT - my ($headers, $body) = run_prog("curl --silent --data 'hello' --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 OK\r\n}is; - is $body, "not cached"; - ($headers, $body) = run_prog("curl --silent --data 'hello' --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 OK\r\n}is; - is $body, "got IOError"; -}; - -subtest "header-concat" => sub { - my $server = spawn_h2o(<< "EOT"); -num-threads: 1 -hosts: - default: - paths: - /: - mruby.handler: | - Proc.new do |env| - [200, {}, [env["HTTP_COOKIE"]]] - end -EOT - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my ($headers, $body) = run_prog("$curl --silent -H 'cookie: a=b' -H 'cookie: c=d' --dump-header /dev/stderr $proto://127.0.0.1:$port/"); - like $headers, qr{^HTTP/\S+ 200}is; - like $body, qr{^a=b;\s*c=d$}is; - }); -}; - -subtest "close-called" => sub { - my $server = spawn_h2o(<< "EOT"); -num-threads: 1 -hosts: - default: - paths: - /: - mruby.handler: | - is_open = false - lambda do |env| - if is_open - return [500, {}, ["close not called"]] - end - is_open = true - return [ - 200, - {}, - Class.new do - def each - yield "hello" - end - define_method(:close) do - is_open = false - end - end.new, - ] - end -EOT - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 }is; - is $body, "hello"; - ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 }is; - is $body, "hello"; -}; - -subtest "close-called-on-exception" => sub { - my $server = spawn_h2o(<< "EOT"); -num-threads: 1 -hosts: - default: - paths: - /: - mruby.handler: | - is_open = false - lambda do |env| - if is_open - return [500, {}, ["close not called"]] - end - is_open = true - return [ - 200, - {}, - Class.new do - def each - yield "hello" - raise "yeah!" - end - define_method(:close) do - is_open = false - end - end.new, - ] - end -EOT - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 }is; - is $body, "hello"; - ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 }is; - is $body, "hello"; -}; - -subtest "log lineno" => sub { - my $tester = sub { - my ($name, $conf, $expected) = @_; - - subtest $name => sub { - my $tempdir = tempdir(CLEANUP => 1); - unlink "$tempdir/error_log"; - my $server = spawn_h2o(<< "EOT"); -$conf -error-log: $tempdir/error_log -EOT - run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - my @log = do { - open my $fh, "<", "$tempdir/error_log" - or die "failed to open error_log:$!"; - map { my $l = $_; chomp $l; $l } <$fh>; - }; - @log = grep { $_ =~ /^\[h2o_mruby\]/ } @log; - like $log[$#log], qr{\[h2o_mruby\] in request:/:mruby raised: @{[$server->{conf_file}]}:$expected:\s*hoge \(RuntimeError\)}; - }; - }; - $tester->("flow style", <<"EOT", 5); -hosts: - default: - paths: - /: - mruby.handler: Proc.new do |env| raise "hoge" end -EOT - $tester->("block style", <<"EOT", 7); -hosts: - default: - paths: - /: - mruby.handler: | - Proc.new do |env| - raise "hoge" - end -EOT -}; - -subtest 'response with specific statuses should not contain content-length header' => sub { - my $server = spawn_h2o(<< "EOT"); -num-threads: 1 -hosts: - default: - paths: - /: - mruby.handler: | - proc {|env| - [204, {}, []] - } -EOT - my ($headers, $body) = run_prog("curl --silent --data 'hello' --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 204 OK\r\n}is; - unlike $headers, qr{^content-length:}im; -}; - -subtest 'PATH_INFO and SCRIPT_NAME' => sub { - plan skip_all => "nc not found" - unless prog_exists("nc"); - - my $server = spawn_h2o(<< "EOT"); -num-threads: 1 -hosts: - default: - paths: - /: - mruby.handler: | - proc {|env| - [200, {}, ['handler1, ' + env['SCRIPT_NAME'] + ', ' + env['PATH_INFO']]] - } - /abc: - mruby.handler: | - proc {|env| - [200, {}, ['handler2, ' + env['SCRIPT_NAME'] + ', ' + env['PATH_INFO']]] - } - "/foo bar": - mruby.handler: | - proc {|env| - [200, {}, ['handler3, ' + env['SCRIPT_NAME'] + ', ' + env['PATH_INFO']]] - } -EOT - my $nc = sub { - my $path = shift; - my $cmd = "echo 'GET $path HTTP/1.1\\r\\nHost: 127.0.0.1\\r\\n\\r' | nc 127.0.0.1 $server->{port}"; - (undef, my $r) = run_prog($cmd); - split(/\r\n\r\n/, $r, 2); - }; - - my $body; - (undef, $body) = $nc->('/abc/def%20ghi'); - is $body, 'handler2, /abc, /def%20ghi', 'should be kept undecoded'; - - (undef, $body) = $nc->('/abc/def/../ghi/../jhk'); - is $body, 'handler2, /abc, /def/../ghi/../jhk', 'https://github.com/h2o/h2o/pull/1480#issuecomment-339614160'; - - (undef, $body) = $nc->('/123/../abc/def/../ghi'); - is $body, 'handler2, /abc, /def/../ghi', 'https://github.com/h2o/h2o/pull/1480#issuecomment-339658134'; - - (undef, $body) = $nc->('/foo%20bar/baz'); - is $body, 'handler3, /foo bar, /baz', 'paths should be decoded'; - - (undef, $body) = $nc->('/xxx/../hoge'); - is $body, 'handler1, , /xxx/../hoge', 'string size is too big issue 1'; - - (undef, $body) = $nc->('/../abc'); - is $body, 'handler2, /abc, ', 'string size is too big issue 2'; - - (undef, $body) = $nc->('abc'); - is $body, 'handler2, /abc, ', 'no leading slash 1'; - - (undef, $body) = $nc->('abc/def'); - is $body, 'handler2, /abc, /def', 'no leading slash 2'; - - (undef, $body) = $nc->('123/../abc/def/../ghi'); - is $body, 'handler2, /abc, /def/../ghi', 'no leading slash 3'; - - (undef, $body) = $nc->('xyz'); - is $body, 'handler1, , xyz', 'no leading slash 4'; - - (undef, $body) = $nc->(''); - is $body, 'handler1, , ', 'empty path'; -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50mruby/hello.rb b/web/server/h2o/libh2o/t/50mruby/hello.rb deleted file mode 100644 index 34f32140c..000000000 --- a/web/server/h2o/libh2o/t/50mruby/hello.rb +++ /dev/null @@ -1,3 +0,0 @@ -Proc.new do |env| - [200, {"content-type" => "text/plain; charset=utf-8"}, ["hello from h2o_mruby\n"]] -end diff --git a/web/server/h2o/libh2o/t/50mruby/index.html b/web/server/h2o/libh2o/t/50mruby/index.html deleted file mode 100644 index d0287e655..000000000 --- a/web/server/h2o/libh2o/t/50mruby/index.html +++ /dev/null @@ -1 +0,0 @@ -I'm index.html diff --git a/web/server/h2o/libh2o/t/50post-size-limit.t b/web/server/h2o/libh2o/t/50post-size-limit.t deleted file mode 100644 index 970cdd807..000000000 --- a/web/server/h2o/libh2o/t/50post-size-limit.t +++ /dev/null @@ -1,77 +0,0 @@ -use strict; -use warnings; -use File::Temp qw(tempfile); -use Test::More; -use t::Util; - -my $server = spawn_h2o(<< 'EOT'); -hosts: - default: - paths: - /: - file.dir: examples/doc_root -limit-request-body: 6 -EOT - -subtest 'http1' => sub { - plan skip_all => 'curl not found' - unless prog_exists('curl'); - - my $doit = sub { - my ($proto, $port, $chunked) = @_; - my $url = "$proto://127.0.0.1:$port/"; - my $extra = ""; - if ($proto eq 'https') { - $extra .= " --insecure"; - $extra .= " --http1.1" - if curl_supports_http2(); - } - $extra .= " --header 'Transfer-Encoding: chunked'" - if $chunked; - subtest "$proto, @{[ $chunked ? 'chunked' : 'content-length' ]}" => sub { - my $resp = `curl --silent --dump-header /dev/stderr --data hello $extra $url 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]+ 405\s}s, 'shorter than the limit'; - $resp = `curl --silent --dump-header /dev/stderr --data helloworld $extra $url 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]+ 413\s}s, 'longer than the limit'; - }; - }; - $doit->("http", $server->{port}); - $doit->("http", $server->{port}, 1); - $doit->("https", $server->{tls_port}); - $doit->("https", $server->{tls_port}, 1); -}; - -subtest 'http2' => sub { - plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - - my $doit = sub { - my ($proto, $opts, $port) = @_; - my $url = "$proto://127.0.0.1:$port/"; - { - my ($tempfh, $tempfn) = tempfile(UNLINK => 1); - print $tempfh 'hello'; - close $tempfh; - my $resp = `nghttp $opts -d $tempfn -s $url 2>&1`; - like $resp, qr/(^|\s)405(\s|$)/im, 'shorter than the limit'; - } - { - my ($tempfh, $tempfn) = tempfile(UNLINK => 1); - print $tempfh 'helloworld'; - close $tempfh; - my $resp = `nghttp $opts -v -d $tempfn -s $url 2>&1`; - like $resp, qr/recv RST_STREAM[^\n]*\n[^\n]*error_code=REFUSED_STREAM/is, 'longer than the limit'; - } - }; - subtest "http (direct)" => sub { - $doit->("http", "", $server->{port}); - }; - subtest "http (upgrade)" => sub { - $doit->("http", "-u", $server->{port}); - }; - subtest "https" => sub { - $doit->("https", "", $server->{tls_port}); - }; -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50redirect.t b/web/server/h2o/libh2o/t/50redirect.t deleted file mode 100644 index b407063a0..000000000 --- a/web/server/h2o/libh2o/t/50redirect.t +++ /dev/null @@ -1,92 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; - -subtest "basic" => sub { - plan skip_all => 'curl not found' - unless prog_exists('curl'); - - my $curl = "curl --insecure"; - $curl .= " --http1.1" - if curl_supports_http2(); - - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - redirect: https://example.com/ - /abc/: - redirect: - status: 301 - url: http://example.net/bar/ -EOT - - my $doit = sub { - my ($url, $expected_status, $expected_location) = @_; - subtest $url => sub { - my ($stderr, $stdout) = run_prog("$curl --silent --show-error --max-redirs 0 --dump-header /dev/stderr $url"); - like $stderr, qr{^HTTP/[^ ]+ $expected_status\s}s, "status"; - like $stderr, qr{^location: ?$expected_location\r$}im, "location"; - }; - }; - - $doit->("http://127.0.0.1:$server->{port}/foo", 302, "https://example.com/foo"); - $doit->("https://127.0.0.1:$server->{tls_port}/foo", 302, "https://example.com/foo"); - $doit->("http://127.0.0.1:$server->{port}/abc/foo/baz", 301, "http://example.net/bar/foo/baz"); - $doit->("http://127.0.0.1:$server->{port}/abc/foo:baz", 301, "http://example.net/bar/foo:baz"); - $doit->("http://127.0.0.1:$server->{port}/foo?abc=def", 302, qr{https://example.com/foo\?abc=def}); - $doit->("http://127.0.0.1:$server->{port}/foo%0D%0Aa:1", 302, "https://example\.com/foo\%0d\%0aa:1"); -}; - -subtest "trailing-slash" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /p1: - redirect: /dest - /p2: - redirect: /dest/ - /p3/: - redirect: /dest - /p4/: - redirect: /dest/ -EOT - - run_with_curl($server, sub { - my ($proto, $port, $cmd) = @_; - my $fetch = sub { - my $path = shift; - my ($stderr, $stdout) = run_prog("$cmd --silent --show-error --max-redirs 0 --dump-header /dev/stderr $proto://127.0.0.1:$port$path"); - $stderr; - }; - subtest "p1" => sub { - like $fetch->("/p1"), qr{^location:\s*/dest\r$}im; - like $fetch->("/p12"), qr{^HTTP/\S*\s+404}is; - like $fetch->("/p1?abc"), qr{^location:\s*/dest\?abc\r$}im; - like $fetch->("/p1/"), qr{^location:\s*/dest/\r$}im; - like $fetch->("/p1/abc"), qr{^location:\s*/dest/abc\r$}im; - }; - subtest "p2" => sub { - like $fetch->("/p2"), qr{^location:\s*/dest/\r$}im; - like $fetch->("/p12"), qr{^HTTP/\S*\s+404}is; - like $fetch->("/p2?abc"), qr{^location:\s*/dest/\?abc\r$}im; - like $fetch->("/p2/"), qr{^location:\s*/dest/\r$}im; - like $fetch->("/p2/abc"), qr{^location:\s*/dest/abc\r$}im; - }; - subtest "p3" => sub { - like $fetch->("/p3"), qr{^HTTP/\S*\s+404}is; - like $fetch->("/p3/"), qr{^location:\s*/dest/\r$}im; - like $fetch->("/p3/abc"), qr{^location:\s*/dest/abc\r$}im; - }; - subtest "p4" => sub { - like $fetch->("/p4"), qr{^HTTP/\S*\s+404}is; - like $fetch->("/p4/"), qr{^location:\s*/dest/\r$}im; - like $fetch->("/p4/abc"), qr{^location:\s*/dest/abc\r$}im; - }; - }); -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-0.t b/web/server/h2o/libh2o/t/50reverse-proxy-0.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-0.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-1.t b/web/server/h2o/libh2o/t/50reverse-proxy-1.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-1.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-10.t b/web/server/h2o/libh2o/t/50reverse-proxy-10.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-10.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-11.t b/web/server/h2o/libh2o/t/50reverse-proxy-11.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-11.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-12.t b/web/server/h2o/libh2o/t/50reverse-proxy-12.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-12.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-13.t b/web/server/h2o/libh2o/t/50reverse-proxy-13.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-13.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-14.t b/web/server/h2o/libh2o/t/50reverse-proxy-14.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-14.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-15.t b/web/server/h2o/libh2o/t/50reverse-proxy-15.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-15.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-2.t b/web/server/h2o/libh2o/t/50reverse-proxy-2.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-2.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-3.t b/web/server/h2o/libh2o/t/50reverse-proxy-3.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-3.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-4.t b/web/server/h2o/libh2o/t/50reverse-proxy-4.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-4.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-5.t b/web/server/h2o/libh2o/t/50reverse-proxy-5.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-5.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-6.t b/web/server/h2o/libh2o/t/50reverse-proxy-6.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-6.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-7.t b/web/server/h2o/libh2o/t/50reverse-proxy-7.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-7.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-8.t b/web/server/h2o/libh2o/t/50reverse-proxy-8.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-8.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-9.t b/web/server/h2o/libh2o/t/50reverse-proxy-9.t deleted file mode 100644 index 28e191ff4..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-9.t +++ /dev/null @@ -1,4 +0,0 @@ -$0 =~ /-([0-9]+)\.t$/s - or die "failed to extract mode"; -exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; -die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-added-headers.t b/web/server/h2o/libh2o/t/50reverse-proxy-added-headers.t deleted file mode 100644 index 0e87a198c..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-added-headers.t +++ /dev/null @@ -1,73 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; - -my $upstream_port = empty_port(); - -my $guard = spawn_server( - argv => [ qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), $upstream_port, ASSETS_DIR . "/upstream.psgi" ], - is_ready => sub { - check_port($upstream_port); - }, -); - -sub do_test { - my $emit_xff = shift; - my $emit_via = shift; - my $emit_xff_str = $emit_xff ? "ON" : "OFF"; - my $emit_via_str = $emit_via ? "ON" : "OFF"; - - my $server = spawn_h2o(<< "EOT"); -proxy.emit-x-forwarded-headers: $emit_xff_str -proxy.emit-via-header: $emit_via_str -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1.XIP.IO:$upstream_port -EOT - - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent $proto://127.0.0.1:$port/echo-headers`; - if ($emit_xff) { - like $resp, qr/^x-forwarded-for: ?127\.0\.0\.1$/mi, "x-forwarded-for"; - like $resp, qr/^x-forwarded-proto: ?$proto$/mi, "x-forwarded-proto"; - } else { - unlike $resp, qr/^x-forwarded-for: ?127\.0\.0\.1$/mi, "x-forwarded-for not present"; - unlike $resp, qr/^x-forwarded-proto: ?$proto$/mi, "x-forwarded-proto not present"; - } - if ($emit_via) { - like $resp, qr/^via: ?[^ ]+ 127\.0\.0\.1:$port$/mi, "via"; - } else { - unlike $resp, qr/^via: ?[^ ]+ 127\.0\.0\.1:$port$/mi, "via"; - } - $resp = `$curl --silent --header 'X-Forwarded-For: 127.0.0.2' --header 'Via: 2 example.com' $proto://127.0.0.1:$port/echo-headers`; - if ($emit_xff) { - like $resp, qr/^x-forwarded-for: ?127\.0\.0\.2, 127\.0\.0\.1$/mi, "x-forwarded-for (append)"; - } else { - like $resp, qr/^x-forwarded-for: ?127\.0\.0\.2$/mi, "x-forwarded-for only contains the original header"; - } - if ($emit_via) { - like $resp, qr/^via: ?2 example.com, [^ ]+ 127\.0\.0\.1:$port$/mi, "via (append)"; - } else { - like $resp, qr/^via: 2 example.com$/mi, "via left as-is"; - } - }); -} - -do_test(0, 0); -do_test(0, 1); -do_test(1, 0); -do_test(1, 1); - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-config.t b/web/server/h2o/libh2o/t/50reverse-proxy-config.t deleted file mode 100644 index 62b34668a..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-config.t +++ /dev/null @@ -1,104 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); - -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -# start upstream -my $upstream_port = empty_port(); -my $upstream = spawn_server( - argv => [ - qw(plackup -MPlack::App::File -s Starlet --access-log /dev/null -p), $upstream_port, - ASSETS_DIR . "/upstream.psgi", - ], - is_ready => sub { - check_port($upstream_port); - }, -); - -subtest 'preserve-host' => sub { - my $doit = sub { - my $flag = shift; - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port - proxy.preserve-host: @{[ $flag ? 'ON' : 'OFF' ]} -EOT - my $res = `curl --silent http://127.0.0.1:$server->{port}/echo-headers`; - like $res, qr/^host: 127.0.0.1:@{[ $flag ? $server->{port} : $upstream_port ]}$/im, 'host header'; - - $res = `curl --silent --dump-header /dev/stdout "http://127.0.0.1:$server->{port}/?resp:status=302&resp:location=http://127.0.0.1:$server->{port}/foo"`; - like $res, qr{^location: http://127\.0\.0\.1:$server->{port}/foo}im, 'location: :server_port'; - warn qq{curl --silent --dump-header /dev/stdout "http://127.0.0.1:$server->{port}/?resp:status=302&resp:location=http://127.0.0.1:$upstream_port/foo"}; - $res = `curl --silent --dump-header /dev/stdout "http://127.0.0.1:$server->{port}/?resp:status=302&resp:location=http://127.0.0.1:$upstream_port/foo"`; - like $res, qr{^location: http://127\.0\.0\.1:$server->{port}/foo}im, 'location :upstream_port'; - }; - - subtest 'ON' => sub { - $doit->(1); - }; - subtest 'OFF' => sub { - $doit->(0); - }; -}; - -subtest 'timeout.io' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port - proxy.timeout.io: 2000 -EOT - my $fetch = sub { - my $sleep = shift; - `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/sleep-and-respond?sleep=$sleep 2>&1 > /dev/null`; - }; - my $resp = $fetch->(1); - like $resp, qr{^HTTP/1\.1 200 }s, "respond before timeout"; - $resp = $fetch->(3); - like $resp, qr{^HTTP/1\.1 502 }s, "respond after timeout"; -}; - -subtest 'infinite-internal-redirect' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port -reproxy: ON -EOT - my $resp = `curl --silent --dump-header /dev/stderr "http://127.0.0.1:$server->{port}/?resp:x-reproxy-url=http://127.0.0.1:$upstream_port/infinite-redirect" 2>&1 > /dev/null`; - like $resp, qr{^HTTP/1\.1 502 }s; -}; - -subtest 'max-delegations' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port -reproxy: ON -max-delegations: 0 -EOT - my $resp = `curl --silent --dump-header /dev/stderr "http://127.0.0.1:$server->{port}/?resp:x-reproxy-url=http://127.0.0.1:$upstream_port/index.txt" 2>&1 > /dev/null`; - like $resp, qr{^HTTP/1\.1 502 }s; -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-disconnected-keepalive.t b/web/server/h2o/libh2o/t/50reverse-proxy-disconnected-keepalive.t deleted file mode 100644 index 4e35cba97..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-disconnected-keepalive.t +++ /dev/null @@ -1,77 +0,0 @@ -use strict; -use warnings; -use File::Temp qw(tempfile); -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; - -subtest "tcp" => sub { - my $port = empty_port(); - my $upstream = spawn_upstream($port); - doit("127.0.0.1:$port"); -}; - -subtest "unix-socket" => sub { - plan skip_all => 'skipping unix-socket tests, requires Starlet >= 0.25' - if `perl -MStarlet -e 'print \$Starlet::VERSION'` < 0.25; - - (undef, my $sockfn) = tempfile(UNLINK => 0); - unlink $sockfn; - my $guard = Scope::Guard->new(sub { - unlink $sockfn; - }); - - my $upstream = spawn_upstream($sockfn); - doit("[unix:$sockfn]"); -}; - -done_testing; - -sub doit { - my $upaddr = shift; - - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://$upaddr - proxy.timeout.io: 1000 - proxy.timeout.keepalive: 10000 -EOT - my $port = $server->{port}; - - my $check_req = sub { - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$port/index.txt 2>&1"); - like $headers, qr{^HTTP/1\.1 200 }is; - is $body, "hello\n"; - }; - subtest "first-connect" => $check_req; - subtest "redo-immediate" => $check_req; - sleep 2; - subtest "redo-after-upstream-disconnect" => $check_req; - sleep 2; - subtest "once-more" => $check_req; -}; - -sub spawn_upstream { - my $addr = shift; - spawn_server( - argv => [ - qw(plackup -s Starlet --max-keepalive-reqs 100 --keepalive-timeout 1 --access-log /dev/null --listen), $addr, - ASSETS_DIR . "/upstream.psgi" - ], - is_ready => sub { - if ($addr =~ /^\d+$/) { - check_port($addr); - } else { - !! -e $addr; - } - }, - ); -} diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-drop-headers.t b/web/server/h2o/libh2o/t/50reverse-proxy-drop-headers.t deleted file mode 100644 index 0ae1e61dd..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-drop-headers.t +++ /dev/null @@ -1,57 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; - -my $upstream_port = empty_port(); - -my $guard = spawn_server( - argv => [ qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), "127.0.0.1:$upstream_port", ASSETS_DIR . "/upstream.psgi" ], - is_ready => sub { - check_port($upstream_port); - }, -); - -subtest 'request-header' => sub { -# proxy-authenticate - - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1.XIP.IO:$upstream_port -EOT - - my $curl = 'curl --silent --dump-header /dev/stderr'; - my ($headers, $body) = run_prog("$curl" - . " -H 'Proxy-Authenticate: hoge'" - . " -H 'Date: Thu, 01 Jan 1970 00:00:00 GMT'" - . " http://127.0.0.1:@{[$server->{port}]}/echo-headers"); - unlike $body, qr/^proxy-authenticate:/mi, 'proxy-authenticate header should be dropped'; - like $body, qr/^date:/mi, 'date request header is not dropped'; -}; - -subtest 'response header' => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1.XIP.IO:$upstream_port -EOT - - my $curl = 'curl --silent --dump-header /dev/stderr'; - my ($headers, $body) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/fixed-date-header"); - unlike $headers, qr/Thu, 01 Jan 1970 00:00:00 GMT/, "date response header from upstream should be dropped and replaced"; -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-https.t b/web/server/h2o/libh2o/t/50reverse-proxy-https.t deleted file mode 100644 index 1bb499f97..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-https.t +++ /dev/null @@ -1,70 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); - -my $upstream_port = empty_port(); -my $upstream = spawn_server( - argv => [ - qw( - plackup -s Standalone --ssl=1 --ssl-key-file=examples/h2o/server.key --ssl-cert-file=examples/h2o/server.crt --port - ), - $upstream_port, ASSETS_DIR . "/upstream.psgi" - ], - is_ready => sub { - check_port($upstream_port); - }, -); - -subtest "reverse-proxy" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - "/verify": - proxy.reverse.url: https://127.0.0.1:$upstream_port - "/no-verify": - proxy.reverse.url: https://127.0.0.1:$upstream_port - proxy.ssl.verify-peer: OFF - "/wikipedia": - proxy.reverse.url: https://en.wikipedia.org/wiki/Main_Page -EOT - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent --dump-header /dev/stderr --max-redirs 0 $proto://127.0.0.1:$port/verify/ 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]* 502\s}is; - $resp = `$curl --silent --dump-header /dev/stderr --max-redirs 0 $proto://127.0.0.1:$port/no-verify/ 2>&1 > /dev/null`; - unlike $resp, qr{^HTTP/[^ ]* 502\s}is; - $resp = `$curl --silent --dump-header /dev/stderr --max-redirs 0 $proto://127.0.0.1:$port/wikipedia/ 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]* 200\s}is; - }); -}; - -subtest "reproxy" => sub { - plan skip_all => "mruby support is off" - unless server_features()->{mruby}; - my $server = spawn_h2o(<< "EOT"); -proxy.ssl.verify-peer: OFF -hosts: - default: - paths: - "/": - reproxy: ON - mruby.handler: | - Proc.new do |env| - [200, {"x-reproxy-url" => "https://127.0.0.1:$upstream_port/index.txt"}, ["should never see this"]] - end -EOT - run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - my $resp = `$curl --silent --dump-header /dev/stdout --max-redirs 0 $proto://127.0.0.1:$port/`; - like $resp, qr{^HTTP/[^ ]* 200}im; - like $resp, qr{^hello$}m; - }); -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-preserve-case.t b/web/server/h2o/libh2o/t/50reverse-proxy-preserve-case.t deleted file mode 100644 index da2aee2c2..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-preserve-case.t +++ /dev/null @@ -1,68 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; - -my $upstream_port = empty_port(); - -my $upstream = new IO::Socket::INET ( - LocalHost => '127.0.0.1', - LocalPort => $upstream_port, - Proto => 'tcp', - Listen => 1, - Reuse => 1 -); -die "cannot create socket $!\n" unless $upstream; - -sub handler_curl { - my $socket = shift; - my $client_socket = $socket->accept(); - - my $data = ""; - $client_socket->recv($data, 4906); - - my $resp = "HTTP/1.0 200 Ok\r\nMyResponseHeader:1\r\nContent-Length:2\r\nConnection: close\r\n\r\nOk"; - $client_socket->send($resp); - $client_socket->flush; - - close($client_socket); - return $data; -}; - - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port -EOT - -run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - open(CURL, "$curl -HUpper-Case:TheValue -kv $proto://127.0.0.1:$port/ 2>&1 |"); - my $forwarded = handler_curl($upstream); - my @lines; - while (<CURL>) { - push(@lines, $_); - - } - my $resp = join("", @lines); - if ($curl =~ /http2/) { - like($forwarded, qr{upper-case:\s*TheValue}, "Request header name is lowercased"); - like($resp, qr{myresponseheader:\s*1}, "Response header name is lowercase"); - } else { - like($forwarded, qr{Upper-Case:\s*TheValue}, "Request header name is not lowercased"); - like($resp, qr{MyResponseHeader:\s*1}, "Response header name has case preserved"); - } - }); - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-proxy-protocol.t b/web/server/h2o/libh2o/t/50reverse-proxy-proxy-protocol.t deleted file mode 100644 index 0bb1a821e..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-proxy-protocol.t +++ /dev/null @@ -1,55 +0,0 @@ -use strict; -use warnings; -use IO::Socket::INET; -use Test::TCP; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use Scope::Guard qw(guard); -use t::Util; - -my $upstream_port = empty_port(); - -my $listen = IO::Socket::INET->new( - LocalAddr => '127.0.0.1', - LocalPort => $upstream_port, - Listen => 5, -) or die "failed to listen to 127.0.0.1:$upstream_port:$!"; - -my $upstream_guard = do { - my $pid = fork; - die "fork failed:$!" - unless defined $pid; - if ($pid == 0) { - # server process - while (1) { - if (my $conn = $listen->accept) { - sysread $conn, my $buf, 4096; -print STDERR "**** $buf"; - syswrite $conn, "HTTP/1.1 200 OK\r\nconnection: close\r\n\r\n$buf"; -print STDERR "**** yeoh"; - $conn->close; - } - } - } - guard { - kill 'TERM', $pid; - }; -}; - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - "/": - proxy.reverse.url: http://127.0.0.1:$upstream_port/ - proxy.proxy-protocol: ON - proxy.timeout.keepalive: 0 -EOT - -run_with_curl($server, sub { - my ($proto, $port, $curl_cmd) = @_; - my $resp = `$curl_cmd --silent $proto://127.0.0.1:$port/hello`; - like $resp, qr{^PROXY TCP4 127\.0\.0\.1 127\.0\.0\.1 [0-9]{1,5} $port\r\nGET /hello HTTP/1\.}is; -}); - -done_testing; diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-session-resumption.t b/web/server/h2o/libh2o/t/50reverse-proxy-session-resumption.t deleted file mode 100644 index acf6a7813..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-session-resumption.t +++ /dev/null @@ -1,210 +0,0 @@ -use strict; -use warnings; -use File::Temp qw(tempdir); -use Net::EmptyPort qw(check_port empty_port); -use Test::Builder; -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; - -my $tempdir = tempdir(CLEANUP => 1); - -sub create_upstream { - unlink "$tempdir/access_log"; - return spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} - access-log: - path: $tempdir/access_log - format: "%{ssl.session-reused}x" -EOT -} - -sub doit { - my ($conf, $scenario, $opts) = @_; - local $Test::Builder::Level = $Test::Builder::Level + 1; - $opts ||= +{}; - - my $upstream = $opts->{upstream} || create_upstream(); - if (ref($conf) eq 'CODE') { - $conf = $conf->($upstream); - } - my $server = spawn_h2o($conf); - my $port = $server->{port}; - - for my $s (@$scenario) { - my $path = $s->{path} || '/'; - Time::HiRes::sleep($s->{interval}) if $s->{interval}; - my $res = `curl --silent --dump-header /dev/stderr http://127.0.0.1:@{[$server->{port}]}$path 2>&1 > /dev/null`; - like $res, qr{^HTTP/1\.1 200 }, $s->{desc}; - } - - my @log = do { - open my $fh, "<", "$tempdir/access_log" - or die "failed to open access_log:$!"; - map { my $l = $_; chomp $l; $l } <$fh>; - }; - - for my $i (0..scalar(@$scenario)-1) { - my $s = $scenario->[$i]; - next unless defined($s->{expected}); - - my $reused = $log[$i] + 0; - is($reused, $s->{expected}, $s->{desc}); - } -}; - -subtest 'default' => sub { - doit(sub { - my ($upstream) = @_; - return <<"EOC"; -proxy.ssl.verify-peer: OFF -proxy.timeout.keepalive: 0 -hosts: - default: - paths: - /: - proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} -EOC - }, [ - +{}, - +{ expected => 1 }, - ]); -}; - -subtest 'off' => sub { - doit(sub { - my ($upstream) = @_; - return <<"EOC"; -proxy.timeout.keepalive: 0 -proxy.ssl.session-cache: OFF -hosts: - default: - paths: - /: - proxy.ssl.verify-peer: OFF - proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} -EOC - }, [ - +{}, - +{ expected => 0 }, - ]); -}; - -subtest 'lifetime' => sub { - doit(sub { - my ($upstream) = @_; - return <<"EOC"; -proxy.ssl.verify-peer: OFF -proxy.timeout.keepalive: 0 -hosts: - default: - paths: - /: - proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} - proxy.ssl.session-cache: - capacity: 4096 - lifetime: 2 -EOC - }, [ - +{}, - +{ interval => 1, expected => 1 }, - +{ interval => 2, expected => 0, desc => 'expire' }, - ]); -}; - -subtest 'config' => sub { - doit(sub { - my ($upstream) = @_; - return <<"EOC"; -proxy.ssl.verify-peer: OFF -proxy.timeout.keepalive: 0 -hosts: - default: - proxy.ssl.session-cache: OFF - paths: - /: - proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} - proxy.ssl.session-cache: ON - /sample.txt: - proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} - proxy.ssl.session-cache: - capacity: 4096 - lifetime: 2 - -EOC - }, [ - +{ path => '/' }, - +{ path => '/', interval => 0, expected => 1, desc => 'reuse on second request to /' }, - +{ path => '/sample.txt', interval => 0, expected => 0, desc => 'not reuse on first request to /sample.txt' }, - +{ path => '/sample.txt', interval => 1, expected => 1, desc => 'reuse on second request to /sample.txt' }, - +{ path => '/sample.txt', interval => 2, expected => 0, desc => 'expire on third request to /sample.txt' }, - ]); -}; - -subtest 'reproxy' => sub { - my $upstream = create_upstream(); - my $upstream_port = $upstream->{tls_port}; - my $app_port = empty_port(); - my $app_server = spawn_server( - argv => [ - qw( - plackup -s Starlet --max-workers=1 --port - ), - $app_port, "-e sub { [200, ['X-Reproxy-URL' => 'https://127.0.0.1:$upstream_port/'], []] }" - ], - is_ready => sub { - check_port($app_port); - }, - ); - - doit(sub { - return <<"EOC"; -proxy.ssl.verify-peer: OFF -proxy.timeout.keepalive: 0 -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$app_port - reproxy: ON -EOC - }, [ - +{}, - +{ expected => 1 }, - ], +{ upstream => $upstream }); -}; - -subtest 'multiple-hosts' => sub { - doit(sub { - my ($upstream) = @_; - return <<"EOC"; -proxy.ssl.verify-peer: OFF -proxy.timeout.keepalive: 0 -proxy.ssl.session-cache: ON -hosts: - default: - paths: - /: - proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} - example.com: - paths: - /: - proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} - proxy.ssl.verify-peer: ON - proxy.ssl.session-cache: OFF -EOC - }, [ - +{}, - +{ expected => 1 }, - ]); -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50reverse-proxy-upstream-down.t b/web/server/h2o/libh2o/t/50reverse-proxy-upstream-down.t deleted file mode 100644 index 3f30a4471..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy-upstream-down.t +++ /dev/null @@ -1,35 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -sub doit { - my $persistent = shift; - my $upstream_port = empty_port(); - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port - proxy.timeout.io: 2000 -@{[ $persistent ? "" : "proxy.timeout.keepalive: 0" ]} -EOT - my $port = $server->{port}; - my $res = `curl --max-time 5 --silent --dump-header /dev/stderr http://127.0.0.1:$port/ 2>&1 > /dev/null`; - like $res, qr{^HTTP/1\.1 502 }, "502 response on upstream error"; -}; - -subtest 'non-persistent' => sub { - doit(0); -}; - -subtest 'persistent' => sub { - doit(1); -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50reverse-proxy/hello.txt b/web/server/h2o/libh2o/t/50reverse-proxy/hello.txt deleted file mode 100644 index ce0136250..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy/hello.txt +++ /dev/null @@ -1 +0,0 @@ -hello diff --git a/web/server/h2o/libh2o/t/50reverse-proxy/test.pl b/web/server/h2o/libh2o/t/50reverse-proxy/test.pl deleted file mode 100755 index 3781cba3c..000000000 --- a/web/server/h2o/libh2o/t/50reverse-proxy/test.pl +++ /dev/null @@ -1,249 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use File::Temp qw(tempfile); -use Getopt::Long; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use URI::Escape; -use t::Util; - -my ($aggregated_mode, $h2o_keepalive, $starlet_keepalive, $starlet_force_chunked, $unix_socket); - -GetOptions( - "mode=i" => sub { - (undef, my $m) = @_; - $h2o_keepalive = ($m & 1) != 0; - $starlet_keepalive = ($m & 2) != 0; - $starlet_force_chunked = ($m & 4) != 0; - $unix_socket = ($m & 8) != 0; - }, - "h2o-keepalive=i" => \$h2o_keepalive, - "starlet-keepalive=i" => \$starlet_keepalive, - "starlet-force-chunked=i" => \$starlet_force_chunked, - "unix-socket=i" => \$unix_socket, -) or exit(1); - -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); - -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; -plan skip_all => 'skipping unix-socket tests, requires Starlet >= 0.25' - if $unix_socket && `perl -MStarlet -e 'print \$Starlet::VERSION'` < 0.25; - -my %files = map { do { - my $fn = DOC_ROOT . "/$_"; - +($_ => { size => (stat $fn)[7], md5 => md5_file($fn) }); -} } qw(index.txt halfdome.jpg); - -my $huge_file_size = 50 * 1024 * 1024; # should be larger than the mmap_backend threshold of h2o -my $huge_file = create_data_file($huge_file_size); -my $huge_file_md5 = md5_file($huge_file); - -my ($unix_socket_file, $unix_socket_guard) = do { - (undef, my $fn) = tempfile(UNLINK => 0); - unlink $fn; - +( - $fn, - Scope::Guard->new(sub { - unlink $fn; - }), - ); -} if $unix_socket; - -my $upstream = $unix_socket_file ? "[unix:$unix_socket_file]" : "127.0.0.1:@{[empty_port()]}"; - -my $guard = do { - local $ENV{FORCE_CHUNKED} = $starlet_force_chunked; - my @args = (qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), $unix_socket_file || $upstream); - if ($starlet_keepalive) { - push @args, "--max-keepalive-reqs=100"; - } - push @args, ASSETS_DIR . "/upstream.psgi"; - spawn_server( - argv => \@args, - is_ready => sub { - if ($unix_socket_file) { - !! -e $unix_socket_file; - } else { - $upstream =~ /:([0-9]+)$/s - or die "failed to extract port number"; - check_port($1); - } - }, - ); -}; - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://$upstream - /gzip: - proxy.reverse.url: http://$upstream - gzip: ON - /files: - file.dir: @{[ DOC_ROOT ]} -@{[ $h2o_keepalive ? "" : " proxy.timeout.keepalive: 0" ]} -reproxy: ON -EOT - -run_with_curl($server, sub { - my ($proto, $port, $curl) = @_; - for my $file (sort keys %files) { - my $content = `$curl --silent --show-error $proto://127.0.0.1:$port/$file`; - is length($content), $files{$file}->{size}, "$proto://127.0.0.1/$file (size)"; - is md5_hex($content), $files{$file}->{md5}, "$proto://127.0.0.1/$file (md5)"; - } - for my $file (sort keys %files) { - my $content = `$curl --silent --show-error --data-binary \@@{[ DOC_ROOT ]}/$file $proto://127.0.0.1:$port/echo`; - is length($content), $files{$file}->{size}, "$proto://127.0.0.1/echo (POST, $file, size)"; - is md5_hex($content), $files{$file}->{md5}, "$proto://127.0.0.1/echo (POST, $file, md5)"; - } - if ($curl !~ /--http2/) { - for my $file (sort keys %files) { - my $content = `$curl --silent --show-error --header 'Transfer-Encoding: chunked' --data-binary \@@{[ DOC_ROOT ]}/$file $proto://127.0.0.1:$port/echo`; - is length($content), $files{$file}->{size}, "$proto://127.0.0.1/echo (POST, chunked, $file, size)"; - is md5_hex($content), $files{$file}->{md5}, "$proto://127.0.0.1/echo (POST, chunked, $file, md5)"; - } - } - my $content = `$curl --silent --show-error --data-binary \@$huge_file $proto://127.0.0.1:$port/echo`; - is length($content), $huge_file_size, "$proto://127.0.0.1/echo (POST, mmap-backed, size)"; - is md5_hex($content), $huge_file_md5, "$proto://127.0.0.1/echo (POST, mmap-backed, md5)"; - if ($curl !~ /--http2/) { - $content = `$curl --silent --show-error --header 'Transfer-Encoding: chunked' --data-binary \@$huge_file $proto://127.0.0.1:$port/echo`; - is length($content), $huge_file_size, "$proto://127.0.0.1/echo (POST, chunked, mmap-backed, size)"; - is md5_hex($content), $huge_file_md5, "$proto://127.0.0.1/echo (POST, chunked, mmap-backed, md5)"; - } - subtest 'rewrite-redirect' => sub { - $content = `$curl --silent --dump-header /dev/stdout --max-redirs 0 "$proto://127.0.0.1:$port/?resp:status=302&resp:location=http://@{[uri_escape($upstream)]}/abc"`; - like $content, qr{HTTP/[^ ]+ 302\s}m; - like $content, qr{^location: ?$proto://127.0.0.1:$port/abc\r$}m; - }; - subtest "x-reproxy-url ($proto)" => sub { - my $fetch_test = sub { - my $url_prefix = shift; - for my $file (sort keys %files) { - my $content = `$curl --silent --show-error "$proto://127.0.0.1:$port/404?resp:status=200&resp:x-reproxy-url=$url_prefix$file"`; - is length($content), $files{$file}->{size}, "$file (size)"; - is md5_hex($content), $files{$file}->{md5}, "$file (md5)"; - } - }; - subtest "abs-url" => sub { - $fetch_test->("http://@{[uri_escape($upstream)]}/"); - }; - subtest "abs-path" => sub { - $fetch_test->("/"); - }; - subtest "rel-path" => sub { - $fetch_test->(""); - }; - my $content = `$curl --silent --show-error "$proto://127.0.0.1:$port/streaming-body?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/index.txt"`; - is $content, "hello\n", "streaming-body"; - $content = `$curl --silent "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=https://default/files/index.txt"`; - is length($content), $files{"index.txt"}->{size}, "to file handler (size)"; - is md5_hex($content), $files{"index.txt"}->{md5}, "to file handler (md5)"; - $content = `$curl --silent "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/?resp:status=302%26resp:location=index.txt"`; - is length($content), $files{"index.txt"}->{size}, "reproxy & internal redirect to upstream (size)"; - is md5_hex($content), $files{"index.txt"}->{md5}, "reproxy & internal redirect to upstream (md5)"; - $content = `$curl --silent "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/?resp:status=302%26resp:location=https://default/files/index.txt"`; - is length($content), $files{"index.txt"}->{size}, "reproxy & internal redirect to file (size)"; - is md5_hex($content), $files{"index.txt"}->{md5}, "reproxy & internal redirect to file (md5)"; - $content = `$curl --silent "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=http://default/files"`; - is length($content), $files{"index.txt"}->{size}, "redirect handled internally after delegation (size)"; - is md5_hex($content), $files{"index.txt"}->{md5}, "redirect handled internally after delegation (md5)"; - }; - subtest "x-forwarded ($proto)" => sub { - my $resp = `$curl --silent $proto://127.0.0.1:$port/echo-headers`; - like $resp, qr/^x-forwarded-for: ?127\.0\.0\.1$/mi, "x-forwarded-for"; - like $resp, qr/^x-forwarded-proto: ?$proto$/mi, "x-forwarded-proto"; - like $resp, qr/^via: ?[^ ]+ 127\.0\.0\.1:$port$/mi, "via"; - $resp = `$curl --silent --header 'X-Forwarded-For: 127.0.0.2' --header 'Via: 2 example.com' $proto://127.0.0.1:$port/echo-headers`; - like $resp, qr/^x-forwarded-for: ?127\.0\.0\.2, 127\.0\.0\.1$/mi, "x-forwarded-for (append)"; - like $resp, qr/^via: ?2 example.com, [^ ]+ 127\.0\.0\.1:$port$/mi, "via (append)"; - }; - subtest 'issues/266' => sub { - my $resp = `$curl --dump-header /dev/stderr --silent -H 'cookie: a=@{['x' x 4000]}' $proto://127.0.0.1:$port/index.txt 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]+ 200\s}m; - }; - subtest 'gzip' => sub { - plan skip_all => 'curl issue #661' - if $curl =~ /--http2/; - my $resp = `$curl --silent -H Accept-Encoding:gzip $proto://127.0.0.1:$port/gzip/alice.txt | gzip -cd`; - is md5_hex($resp), md5_file("@{[DOC_ROOT]}/alice.txt"); - }; -}); - -subtest 'nghttp' => sub { - plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - my $doit = sub { - my ($proto, $opt, $port) = @_; - for my $file (sort keys %files) { - my $content = `nghttp $opt $proto://127.0.0.1:$port/$file`; - is length($content), $files{$file}->{size}, "$proto://127.0.0.1/$file (size)"; - is md5_hex($content), $files{$file}->{md5}, "$proto://127.0.0.1/$file (md5)"; - } - my $out = `nghttp $opt -d t/50reverse-proxy/hello.txt $proto://127.0.0.1:$port/echo`; - is $out, "hello\n", "$proto://127.0.0.1/echo (POST)"; - $out = `nghttp $opt -m 10 $proto://127.0.0.1:$port/index.txt`; - is $out, "hello\n" x 10, "$proto://127.0.0.1/index.txt x 10 times"; - $out = `nghttp $opt -d $huge_file $proto://127.0.0.1:$port/echo`; - is length($out), $huge_file_size, "$proto://127.0.0.1/echo (mmap-backed, size)"; - is md5_hex($out), $huge_file_md5, "$proto://127.0.0.1/echo (mmap-backed, md5)"; - subtest 'cookies' => sub { - plan skip_all => 'nghttp issues #161' - if $opt eq '-u'; - $out = `nghttp $opt -H 'cookie: a=b' -H 'cookie: c=d' $proto://127.0.0.1:$port/echo-headers`; - like $out, qr{^cookie: a=b; c=d$}m; - }; - subtest "x-reproxy-url ($proto)" => sub { - for my $file (sort keys %files) { - my $content = `nghttp $opt "$proto://127.0.0.1:$port/404?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/$file"`; - is length($content), $files{$file}->{size}, "$file (size)"; - is md5_hex($content), $files{$file}->{md5}, "$file (md5)"; - } - my $content = `nghttp $opt "$proto://127.0.0.1:$port/streaming-body?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/index.txt"`; - is $content, "hello\n", "streaming-body"; - $content = `nghttp $opt "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=https://default/files/index.txt"`; - is length($content), $files{"index.txt"}->{size}, "to file handler (size)"; - is md5_hex($content), $files{"index.txt"}->{md5}, "to file handler (md5)"; - $content = `nghttp $opt "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/?resp:status=302%26resp:location=index.txt"`; - is length($content), $files{"index.txt"}->{size}, "reproxy & internal redirect to upstream (size)"; - is md5_hex($content), $files{"index.txt"}->{md5}, "reproxy & internal redirect to upstream (md5)"; - $content = `nghttp $opt "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/?resp:status=302%26resp:location=https://default/files/index.txt"`; - is length($content), $files{"index.txt"}->{size}, "reproxy & internal redirect to file (size)"; - is md5_hex($content), $files{"index.txt"}->{md5}, "reproxy & internal redirect to file (md5)"; - $content = `nghttp -v $opt "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=http://default/files"`; - unlike $content, qr/ :status: 3/, "once delegated, redirects of the file handler should be handled internally"; - }; - subtest 'issues/185' => sub { - my $out = `nghttp $opt -v "$proto://127.0.0.1:$port/?resp:access-control-allow-origin=%2a"`; - is $?, 0; - like $out, qr/ access-control-allow-origin: \*$/m; - }; - subtest 'issues/192' => sub { - my $cookie = '_yohoushi_session=ZU5tK2FhcllVQ1RGaTZmZE9MUXozZnAzdTdmR250ZjRFU1hNSnZ4Y2JxZm9pYzJJSEpISGFKNmtWcW1HcjBySmUxZzIwNngrdlVIOC9jdmg0R3I3TFR4eVYzaHlFSHdEL1M4dnh1SmRCbVl3ZE5FckZEU1NyRmZveWZwTmVjcVV5V1JhNUd5REIvWjAwQ3RiT1ZBNGVMUkhiN0tWR0c1RzZkSVhrVkdoeW1lWXRDeHJPUW52NUwxSytRTEQrWXdoZ1EvVG9kak9aeUxnUFRNTDB4Vis1RDNUYWVHZm12bDgwL1lTa09MTlJYcGpXN2VUWmdHQ2FuMnVEVDd4c3l1TTJPMXF1dGhYcGRHS2U2bW9UaG0yZGIwQ0ZWVzFsY1hNTkY5cVFvWjNqSWNrQ0pOY1gvMys4UmRHdXJLU1A0ZTZQc3pSK1dKcXlpTEF2djJHLzUwbytwSnVpS0xhdFp6NU9kTDhtcmgxamVXMkI0Nm9Nck1rMStLUmV0TEdUeGFSTjlKSzM0STc3NTlSZ05ZVjJhWUNibkdzY1I1NUg4bG96dWZSeGorYzF4M2tzMGhKSkxmeFBTNkpZS09HTFgrREN4SWd4a29kamRxT3FobDRQZ2xMVUE9PS0tQUxSWU5nWmVTVzRoN09sS3pmUVM3dz09--3a411c0cf59845f0b8ccf61f69b8eb87aa1727ac; path=/; HttpOnly'; - my $cookie_encoded = $cookie; - $cookie_encoded =~ s{([^A-Za-z0-9_])}{sprintf "%%%02x", ord $1}eg; - $out = `nghttp $opt -v $proto://127.0.0.1:$port/?resp:set-cookie=$cookie_encoded`; - is $?, 0; - like $out, qr/ set-cookie: $cookie$/m; - }; - }; - subtest 'http (upgrade)' => sub { - $doit->('http', '-u', $server->{port}); - }; - subtest 'http (direct)' => sub { - $doit->('http', '', $server->{port}); - }; - subtest 'https' => sub { - plan skip_all => 'OpenSSL does not support protocol negotiation; it is too old' - unless openssl_can_negotiate(); - $doit->('https', '', $server->{tls_port}); - }; -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/50server-starter.t b/web/server/h2o/libh2o/t/50server-starter.t deleted file mode 100644 index 9be37d378..000000000 --- a/web/server/h2o/libh2o/t/50server-starter.t +++ /dev/null @@ -1,103 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use File::Temp qw(tempdir); -use Test::More; -use t::Util; - -plan skip_all => 'start_server not found' - unless prog_exists('start_server'); - -my $tempdir = tempdir(CLEANUP => 1); - -subtest "master-mode" => sub { - my $server = spawn_h2o({ - opts => [ qw(--mode=master) ], - conf => << "EOT", -pid-file: $tempdir/h2o.pid -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT - }); - - subtest 'before-HUP' => sub { - is read_file("$tempdir/h2o.pid"), "$server->{pid}\n", "pid"; - fetch_test($server->{port}, $server->{tls_port}); - }; - kill 'HUP', $server->{pid}; - sleep 1; - subtest 'after-HUP' => sub { - fetch_test($server->{port}, $server->{tls_port}); - is read_file("$tempdir/h2o.pid"), "$server->{pid}\n", "pid unchanged"; - }; - - undef $server; - - ok ! stat("$tempdir/h2o.pid"), "pid-file is unlinked"; -}; - -subtest "daemon-mode" => sub { - my $server = spawn_h2o({ - opts => [ qw(--mode=daemon) ], - conf => << "EOT", -pid-file: $tempdir/h2o.pid -error-log: $tempdir/h2o.error -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT - }); - my ($port, $tls_port) = map { $server->{$_} } qw(port tls_port); - - sleep 1; - undef $server; # should have performed a double-fork by now - - my $pid = read_file("$tempdir/h2o.pid"); - chomp $pid; - - subtest 'before-HUP' => sub { - fetch_test($port, $tls_port); - }; - kill 'HUP', $pid; - sleep 1; - subtest 'after-HUP' => sub { - fetch_test($port, $tls_port); - is read_file("$tempdir/h2o.pid"), "$pid\n", "pid unchanged"; - }; - - kill 'TERM', $pid; - sleep 1; - ok ! stat("$tempdir/h2o.pid"), "pid-file is unlinked"; -}; - -done_testing; - -sub fetch_test { - my ($port, $tls_port) = @_; - - plan skip_all => 'curl not found' - unless prog_exists('curl'); - my $curl = "curl --insecure"; - $curl .= " --http1.1" - if curl_supports_http2(); - - my $doit = sub { - my ($proto, $port) = @_; - my $content = `$curl --silent --show-error $proto://127.0.0.1:$port/`; - is md5_hex($content), md5_file(DOC_ROOT . "/index.txt"), $proto; - }; - $doit->("http", $port); - $doit->("https", $tls_port); -} - -sub read_file { - my $fn = shift; - open my $fh, '<', $fn - or die "failed to open file:$fn:$!"; - join '', <$fh>; -} diff --git a/web/server/h2o/libh2o/t/50servername.t b/web/server/h2o/libh2o/t/50servername.t deleted file mode 100644 index 62b30aade..000000000 --- a/web/server/h2o/libh2o/t/50servername.t +++ /dev/null @@ -1,97 +0,0 @@ -use strict; -use warnings; -use Test::More; -use Net::EmptyPort qw(check_port empty_port); -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -subtest "default server header" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -EOT - - my $resp = `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/index.txt 2>&1 > /dev/null`; - like $resp, qr{^HTTP/1\.1 200 }s, "200 response"; - like $resp, qr{^server: h2o/.*\r$}im, "h2o default Server: header found"; - is +(() = $resp =~ m{^server}img), 1, "header added only once"; -}; - -subtest "alternate server header" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -server-name: h2oalternate -EOT - - my $resp = `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/index.txt 2>&1 > /dev/null`; - like $resp, qr{^HTTP/1\.1 200 }s, "200 response"; - like $resp, qr{^server: h2oalternate\r$}im, "alternate h2o Server: header found"; - is +(() = $resp =~ m{^server}img), 1, "header added only once"; -}; - -subtest "no server header" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} -server-name: h2oalternate -send-server-name: OFF -EOT - my $resp = `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/index.txt 2>&1 > /dev/null`; - like $resp, qr{^HTTP/1\.1 200 }s, "200 response"; - unlike $resp, qr{\nserver}, "server unset"; -}; - -my $upstream_port = empty_port(); - -my $upstream = spawn_server( - argv => [ qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), $upstream_port, ASSETS_DIR . "/upstream.psgi" ], - is_ready => sub { - check_port($upstream_port); - }, -); - -subtest "preserve server header" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port -server-name: not-sent -send-server-name: preserve -EOT - my $resp = `curl --silent -Hserver:this-one-is-sent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/echo-server-header 2>&1 > /dev/null`; - like $resp, qr{^HTTP/1\.1 200 }s, "200 response"; - like $resp, qr{\nserver: this-one-is-sent}i, "server: set to expected value"; - unlike $resp, qr{\nserver: not-sent}i, "server: not set to the internal value"; -}; - -subtest "do not preserve server header" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port -server-name: sent-this-time -send-server-name: ON -EOT - my $resp = `curl --silent -Hserver:this-one-is-not-sent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/echo-server-header 2>&1 > /dev/null`; - like $resp, qr{^HTTP/1\.1 200 }s, "200 response"; - like $resp, qr{\nserver: sent-this-time}i, "server: set to the internal value"; - unlike $resp, qr{\nserver: this-one-is-not-sent}i, "server: not set to the backend value"; -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50status.t b/web/server/h2o/libh2o/t/50status.t deleted file mode 100644 index 64adf9604..000000000 --- a/web/server/h2o/libh2o/t/50status.t +++ /dev/null @@ -1,88 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; -use JSON; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -subtest "default json handler" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} - /s: - status: ON -EOT - - my $resp = `curl --silent -o /dev/stderr http://127.0.0.1:$server->{port}/s/json 2>&1 > /dev/null`; - my $jresp = decode_json("$resp"); - my @requests = @{$jresp->{'requests'}}; - is $jresp->{'connections'}, 1, "One connection"; - is scalar @requests, 1, "One request"; -}; - -subtest "json hander without requests" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} - /s: - status: ON -EOT - - my $resp = `curl --silent -o /dev/stderr 'http://127.0.0.1:$server->{port}/s/json?show=main,events' 2>&1 > /dev/null`; - my $jresp = decode_json("$resp"); - is $jresp->{'connections'}, 1, "One connection"; - is $jresp->{'requests'}, undef, "Requests not present"; - is $jresp->{'status-errors.404'}, 0, "Internal errors monitoring"; -}; - -subtest "json hander check 404 error counter" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} - /s: - status: ON -EOT - my $resp = `curl --silent -o /dev/stderr 'http://127.0.0.1:$server->{port}/beeb98fcf148317be5fe5d763c658bc9ea9c087a' 2>&1 > /dev/null`; - my $resp = `curl --silent -o /dev/stderr 'http://127.0.0.1:$server->{port}/s/json?show=events' 2>&1 > /dev/null`; - my $jresp = decode_json("$resp"); - is $jresp->{'connections'}, undef, "Connections not present"; - is $jresp->{'requests'}, undef, "Requests not present"; - is $jresp->{'status-errors.404'}, 1, "Found the 404 error"; -}; - -subtest "duration stats" => sub { - my $server = spawn_h2o(<< "EOT"); -duration-stats: ON -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} - /s: - status: ON -EOT - - my $resp = `curl --silent -o /dev/stderr http://127.0.0.1:$server->{port}/s/json?noreqs 2>&1 > /dev/null`; - my $jresp = decode_json("$resp"); - my @nr_requests = @{ $jresp->{'requests'} }; - is $jresp->{'connections'}, 1, "One connection"; - is scalar @nr_requests, 1, "One request"; - is $jresp->{'status-errors.404'}, 0, "Additional errors"; - is $jresp->{'connect-time-0'}, 0, "Duration stats"; -}; - - - - -done_testing(); diff --git a/web/server/h2o/libh2o/t/50throttle-response.t b/web/server/h2o/libh2o/t/50throttle-response.t deleted file mode 100644 index 4fba4d238..000000000 --- a/web/server/h2o/libh2o/t/50throttle-response.t +++ /dev/null @@ -1,42 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; -use Time::HiRes qw(time); - -plan skip_all => 'curl not found' - unless prog_exists('curl'); - -my $all_data = do { - open my $fh, "<", "@{[DOC_ROOT]}/halfdome.jpg" - or die "failed to open file:@{[DOC_ROOT]}/halfdome.jpg:$!"; - undef $/; - <$fh>; -}; - -my $server = spawn_h2o(<< "EOT"); -throttle-response: ON -hosts: - default: - paths: - /: - file.dir: @{[ DOC_ROOT ]} - header.add: "X-Traffic: 100000" -EOT - -run_with_curl($server, sub { - my ($proto, $port, $curl_cmd) = @_; - $curl_cmd .= " --silent --show-error"; - my $url = "$proto://127.0.0.1:$port/halfdome.jpg"; - - subtest "throttle-to-low-speed" => sub { - my $start_time = time; - my $resp = `$curl_cmd $url`; - my $end_time = time; - is $resp, $all_data; - my $speed = length($resp) / ($end_time - $start_time); - cmp_ok($speed, '<=', 100000 * 1.1); # the implementation may cause response speed is a bit larger than the limitation, especially when file is not big enough. - }; -}); - -done_testing(); diff --git a/web/server/h2o/libh2o/t/80dup-host-headers.t b/web/server/h2o/libh2o/t/80dup-host-headers.t deleted file mode 100644 index eae679b99..000000000 --- a/web/server/h2o/libh2o/t/80dup-host-headers.t +++ /dev/null @@ -1,51 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - -my $upstream_port = empty_port(); -$| = 1; -my $socket = new IO::Socket::INET ( - LocalHost => '127.0.0.1', - LocalPort => $upstream_port, - Proto => 'tcp', - Listen => 1, - Reuse => 1 -); -die "cannot create socket $!\n" unless $socket; - -check_port($upstream_port) or die "can't connect to server socket"; -# accent and close check_port's connection -my $client_socket = $socket->accept(); -close($client_socket); - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - "/": - proxy.reverse.url: http://127.0.0.1:$upstream_port -EOT - -system("nghttp http://127.0.0.1:$server->{'port'}/ -H 'host: host.example.com' &"); - -my $req; -$client_socket = $socket->accept(); -$client_socket->recv($req, 1024); -$client_socket->send("HTTP/1.1 200 Ok\r\nConnection:close\r\n\r\nBody\r\n"); -close($client_socket); -$socket->close(); - -my $host_headers = 0; -foreach (split(/\r\n/, $req)) { - if (/^host:/i) { - $host_headers++ - } -} - -ok($host_headers == 1, "Only saw one host: header"); -done_testing(); diff --git a/web/server/h2o/libh2o/t/80graceful-shutdown.t b/web/server/h2o/libh2o/t/80graceful-shutdown.t deleted file mode 100644 index cdc904f94..000000000 --- a/web/server/h2o/libh2o/t/80graceful-shutdown.t +++ /dev/null @@ -1,80 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); - -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; - -my $upstream_port = empty_port(); -my $upstream_hostport = "127.0.0.1:$upstream_port"; - -sub create_upstream { - my @args = ( - qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), - $upstream_hostport, - ASSETS_DIR . "/upstream.psgi", - ); - spawn_server( - argv => \@args, - is_ready => sub { - $upstream_hostport =~ /:([0-9]+)$/s - or die "failed to extract port number"; - check_port($1); - }, - ); -}; - -sub doit { - my $timeout = shift; - my $server = spawn_h2o(<< "EOT"); -http2-graceful-shutdown-timeout: $timeout -hosts: - default: - paths: - "/": - proxy.reverse.url: http://127.0.0.1:$upstream_port -EOT - - my $upstream = create_upstream(); - my $nghttp_pid = open(NGHTTP, "nghttp -w 1 -v http://127.0.0.1:$server->{'port'}/infinite-stream 2>&1 |"); - - my $nghttp_interrupted=0; - eval { - local $SIG{ALRM} = sub { die "Timeout" }; - my $stopped=0; - alarm(5); - while (<NGHTTP>) { - if (/recv DATA frame/ && !$stopped) { - # after the request started, stop H2O - kill 'TERM', $server->{pid}; - $stopped = 1; - } - if (/Some requests were not processed/) { - $nghttp_interrupted = 1; - } - } - alarm(0); - }; - my $err = $@; - if ($timeout == 1) { - ok($nghttp_interrupted == 1, "nghttp was interrupted"); - ok($err !~ /^Timeout/, "nghttp didn't timeout"); - } else { - kill 'TERM', $nghttp_pid; - ok($nghttp_interrupted == 0, "nghttp was not interrupted"); - ok($err =~ /^Timeout/, "nghttp did timeout"); - } -} - -doit(0); -doit(1); - -done_testing(); diff --git a/web/server/h2o/libh2o/t/80invalid-h2-chars-in-headers.t b/web/server/h2o/libh2o/t/80invalid-h2-chars-in-headers.t deleted file mode 100644 index 0d277f9fb..000000000 --- a/web/server/h2o/libh2o/t/80invalid-h2-chars-in-headers.t +++ /dev/null @@ -1,44 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - "/": - file.dir: @{[ DOC_ROOT ]} -EOT - -my $resp = `nghttp -v http://127.0.0.1:$server->{'port'}/ -H 'h\rost: host.example.com' 2>&1`; -like $resp, qr{.*error_code=NO_ERROR.*}, "No protocol error for a bogus header name"; -like $resp, qr{.*:status: 400}, "400 bad headers sent"; -like $resp, qr{found an invalid character in header name}, "Found expected error message"; - -$resp = `nghttp -v http://127.0.0.1:$server->{'port'}/ -H 'host: host.\rexample.com' 2>&1`; -like $resp, qr{.*error_code=NO_ERROR.*}, "No protocol error for a bogus header value"; -like $resp, qr{.*:status: 400}, "400 bad headers sent"; -like $resp, qr{found an invalid character in header value}, "Found expected error message"; - -$resp = `nghttp -nv http://127.0.0.1:$server->{'port'}/test/ -H 'host: host.example.com' -H'blah:1' -H'blah:2' -H'blah:3' 2>&1`; -like $resp, qr{.*error_code=NO_ERROR.*}, "No error for no bogus error value"; - -$resp = `nghttp -nv http://127.0.0.1:$server->{'port'}/test/ -H 'host: host.example.com' -H'bl\ah:1' -H'bl\ah:2' -H'bl\ah:3' 2>&1`; -like $resp, qr{.*error_code=NO_ERROR.*}, "No protocol error for repeated bogus headers"; -like $resp, qr{.*:status: 400}, "400 bad headers sent"; - -$resp = `nghttp -nv http://127.0.0.1:$server->{'port'}/ -H ':bad: 1234' -H'x-reproxy-url: http://www.example.com' 2>&1`; -like $resp, qr{.*error_code=PROTOCOL_ERROR.*}, "Error for an invalid pseudo-header"; - -$resp = `nghttp -nv http://127.0.0.1:$server->{'port'}/test/ -H 'host: host.example.com' -H'bl\ah:1' -H':badpseudo:2' 2>&1`; -like $resp, qr{.*error_code=PROTOCOL_ERROR.*}, "Protocol error for an invalid pseudo-header, even when a bad header was present"; - -$resp = `nghttp -nv http://127.0.0.1:$server->{'port'}/test/ -H 'host: host.उदाहरण.com' 2>&1`; -like $resp, qr{.*error_code=NO_ERROR.*}, "No error for utf-8 in value"; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/80issues-from-proxy-reproxy-to-different-host.t b/web/server/h2o/libh2o/t/80issues-from-proxy-reproxy-to-different-host.t deleted file mode 100644 index 9a05a1db4..000000000 --- a/web/server/h2o/libh2o/t/80issues-from-proxy-reproxy-to-different-host.t +++ /dev/null @@ -1,79 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; - -# start upstream -my $upstream = empty_port(); -my $upstream_guard = spawn_server( - argv => [ - qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), "127.0.0.1:$upstream", - ASSETS_DIR . "/upstream.psgi", - ], - is_ready => sub { - check_port($upstream); - }, -); - -my $error_upstream = empty_port(); -my $error_upstream_guard = spawn_server( - argv => [ - qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), "127.0.0.1:$error_upstream", - "-e", 'sub { [200, [], [123]] }', - ], - is_ready => sub { - check_port($error_upstream); - }, -); - -subtest "internal-redirect-from-proxy" => sub { - my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - "/": - proxy.reverse.url: http://127.0.0.1:$upstream/ - error-doc: - status: 404 - url: http://127.0.0.1:$error_upstream/ -EOT - my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/index.txt"); - like $headers, qr{^HTTP/1\.1 200 }is; - is $body, "hello\n"; - - ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/notfound"); - like $headers, qr{^HTTP/1\.1 404 }is; - is $body, "123"; -}; - -subtest "internal-redirect-within-proxy" => sub { - plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; - my $server = spawn_h2o(<< "EOT"); -reproxy: ON -hosts: - default: - paths: - "/": - mruby.handler: | - Proc.new do |env| - [200, { "x-reproxy-url" => "/proxy/?resp:status=302&resp:location=/index.txt" }, ["from mruby"]] - end - "/proxy": - proxy.reverse.url: http://127.0.0.1:$upstream/ -EOT - my ($headers, $body) = run_prog("curl --max-redirs 0 --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); - like $headers, qr{^HTTP/1\.1 200 }is; - is $body, "hello\n"; -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/80issues579.t b/web/server/h2o/libh2o/t/80issues579.t deleted file mode 100644 index 046e188ad..000000000 --- a/web/server/h2o/libh2o/t/80issues579.t +++ /dev/null @@ -1,45 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; -plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - -# spawn upstream -my $upstream_port = empty_port(); -my $upstream = spawn_server( - argv => [ - qw(plackup -s Starlet --access-log /dev/null -p), $upstream_port, ASSETS_DIR . "/upstream.psgi", - ], - is_ready => sub { - check_port($upstream_port); - }, -); - -# spawn server -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - mruby.handler: | - Proc.new do |env| - [399, {"link" => "</assets/index.js>; rel=preload"}, []] - end - proxy.reverse.url: http://127.0.0.1:$upstream_port - /assets: - file.dir: @{[DOC_ROOT]} -EOT - -my $resp = `nghttp -n --stat "http://127.0.0.1:$server->{port}/index.txt"`; -like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.js\n.*\s/index\.txt\n}is, 'should receive pushed blocking asset from file handler before the main response'; - -done_testing; diff --git a/web/server/h2o/libh2o/t/80issues595.t b/web/server/h2o/libh2o/t/80issues595.t deleted file mode 100644 index 721e054ed..000000000 --- a/web/server/h2o/libh2o/t/80issues595.t +++ /dev/null @@ -1,42 +0,0 @@ -use strict; -use warnings; -use Test::More; -use t::Util; - -plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - file.dir: @{[DOC_ROOT]} -EOT - -subtest "trailing HEADERS" => sub { - my $doit = sub { - my ($proto, $opts, $port) = @_; - my $resp = `nghttp $opts -M 1 -m 3 -H ':method: GET' -d /dev/null --trailer 'foo: bar' '$proto://127.0.0.1:$port/'`; - is $resp, "hello\n" x 3, $proto; - }; - $doit->("http", "", $server->{port}); - $doit->("https", "", $server->{tls_port}); -}; - -subtest "trailing HEADERS with CONTINUATION" => sub { - my $doit = sub { - my ($proto, $opts, $port) = @_; - my $cmd = "nghttp $opts -M 1 -m 3 -H ':method: GET' -d /dev/null"; - $cmd .= join "", map { - " --trailer 'foo$_: 0123456789abcdef:$_'" - } 1..1000; - $cmd .= " '$proto://127.0.0.1:$port/'"; - my $resp = `$cmd`; - is $resp, "hello\n" x 3, $proto; - }; - $doit->("http", "", $server->{port}); - $doit->("https", "", $server->{tls_port}); -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/80issues61.t b/web/server/h2o/libh2o/t/80issues61.t deleted file mode 100644 index bdcfd6ea5..000000000 --- a/web/server/h2o/libh2o/t/80issues61.t +++ /dev/null @@ -1,57 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'plackup not found' - unless prog_exists('plackup'); -plan skip_all => 'Starlet not found' - unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; - -my $upstream_port = empty_port(); - -my $upstream = spawn_server( - argv => [ - qw(plackup -s Starlet --access-log /dev/null -p), $upstream_port, ASSETS_DIR . "/upstream.psgi", - ], - is_ready => sub { - check_port($upstream_port); - }, -); - -my $h2o = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - /: - proxy.reverse.url: http://127.0.0.1:$upstream_port -EOT - -subtest 'http1' => sub { - plan skip_all => 'curl not found' - unless prog_exists('curl'); - - my $doit = sub { - my ($proto, $port) = @_; - my $extra = ''; - if ($proto eq 'https') { - $extra .= ' --insecure'; - $extra .= ' --http1.1' - if curl_supports_http2(); - } - subtest $proto => sub { - my $resp = `curl --max-time 1 $extra $proto://127.0.0.1:$port/streaming-body 2>&1`; - like $resp, qr/operation timed out/i, "operation should time out"; - sleep 1; - $resp = `curl --silent --dump-header /dev/stderr $extra $proto://127.0.0.1:$port/ 2>&1 > /dev/null`; - like $resp, qr{^HTTP/[^ ]+ 404\s}s, "server is still alive"; - }; - }; - $doit->('http', $h2o->{port}); - $doit->('https', $h2o->{tls_port}); -}; - -# note: implement test using HTTP/2, nghttp --timeout 2 does not seem to work like above - -done_testing; diff --git a/web/server/h2o/libh2o/t/80one-byte-window.t b/web/server/h2o/libh2o/t/80one-byte-window.t deleted file mode 100644 index f2d0813cb..000000000 --- a/web/server/h2o/libh2o/t/80one-byte-window.t +++ /dev/null @@ -1,56 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'nc not found' - unless prog_exists('nc'); - -plan skip_all => 'nghttp not found' - unless prog_exists('nghttp'); - -my $upstream_port = empty_port(); -$| = 1; -my $socket = new IO::Socket::INET ( - LocalHost => '127.0.0.1', - LocalPort => $upstream_port, - Proto => 'tcp', - Listen => 1, - Reuse => 1 -); -die "cannot create socket $!\n" unless $socket; - -check_port($upstream_port) or die "can't connect to server socket"; -# accent and close check_port's connection -my $client_socket = $socket->accept(); -close($client_socket); - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - "/": - proxy.reverse.url: http://127.0.0.1:$upstream_port -EOT - -my $msg = "this is the message"; -open(NGHTTP, "nghttp -t 3 -w 1 -v http://127.0.0.1:$server->{'port'}/ -H 'host: host.example.com' 2>&1 |"); - -my $req; -$client_socket = $socket->accept(); -$client_socket->recv($req, 1024); -$client_socket->send("HTTP/1.1 200 Ok\r\nConnection:close\r\n\r\n$msg"); -close($client_socket); - -my $worked = 1; -while(<NGHTTP>) { - if (/Timeout/) { - $worked = 0; - } -} - -ok($worked == 1, "The connection didn't timeout"); - -$socket->close(); -done_testing(); diff --git a/web/server/h2o/libh2o/t/80reverse-proxy-missing-content-length-for-post.t b/web/server/h2o/libh2o/t/80reverse-proxy-missing-content-length-for-post.t deleted file mode 100644 index 4afd9f8c7..000000000 --- a/web/server/h2o/libh2o/t/80reverse-proxy-missing-content-length-for-post.t +++ /dev/null @@ -1,76 +0,0 @@ -use strict; -use warnings; -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); -plan skip_all => 'curl does not support HTTP/2' - unless curl_supports_http2(); - -my $upstream_port = empty_port(); -$| = 1; -my $socket = new IO::Socket::INET ( - LocalHost => '127.0.0.1', - LocalPort => $upstream_port, - Proto => 'tcp', - Listen => 1, - Reuse => 1 -); -die "cannot create socket $!\n" unless $socket; - -check_port($upstream_port) or die "can't connect to server socket"; -# accept and close check_port's connection -my $client_socket = $socket->accept(); -close($client_socket); - -my $server = spawn_h2o(<< "EOT"); -hosts: - default: - paths: - "/": - proxy.reverse.url: http://127.0.0.1:$upstream_port -EOT - -sub doit { - my $cmd = shift; - my $should_see_cl = shift; - my $cl_value = shift; - system($cmd); - - my $req; - $client_socket = $socket->accept(); - $client_socket->recv($req, 1 * 1024); - $client_socket->send("HTTP/1.1 200 Ok\r\nConnection:close\r\n\r\nBody\r\n"); - close($client_socket); - - my $cl_actual_value = -1; - my $cl_headers = 0; - foreach (split(/\r\n/, $req)) { - if (/^content-length:(.*)$/i) { - $cl_headers++; - $cl_actual_value = $1; - } - } - if ($should_see_cl) { - ok($cl_headers == 1, "Saw one, and only one content-length: header"); - ok($cl_actual_value == $cl_value, "content-length: header has the expected value"); - } else { - ok($cl_headers == 0, "Saw no content-length: header"); - } -} -my $file_size = 512; -my $file = create_data_file($file_size); - -# curl doesn't add a CL header when using -X POST -doit("curl -so /dev/null --http2 -X POST http://127.0.0.1:$server->{'port'}/ &", 1, 0); -# curl adds a content-length:0 header when using --data '' -doit("curl -so /dev/null --http2 --data '' http://127.0.0.1:$server->{'port'}/ &", 1, 0); - -# check that an existing CL header is preserved -doit("curl -so /dev/null --http2 --data 'a=b' http://127.0.0.1:$server->{'port'}/ &", 1, 3); -doit("curl -so /dev/null --http2 --header 'transfer-encoding: chunked' --data-binary \@$file -X POST http://127.0.0.1:$server->{'port'}/ &", 1, $file_size); - -$socket->close(); -done_testing(); diff --git a/web/server/h2o/libh2o/t/80yaml-merge.t b/web/server/h2o/libh2o/t/80yaml-merge.t deleted file mode 100644 index 55cd3911d..000000000 --- a/web/server/h2o/libh2o/t/80yaml-merge.t +++ /dev/null @@ -1,82 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use File::Temp qw(tempdir); -use Net::EmptyPort qw(check_port); -use Test::More; -use t::Util; - -plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; - -plan skip_all => 'nc not found' - unless prog_exists('nc'); - -my @ports = empty_ports(3); - -my $tempdir = tempdir(CLEANUP => 1); - -{ # create configuration file - open my $fh, ">", "$tempdir/h2o.conf" - or die "failed to create file:$tempdir/h2o.conf:$!"; - print $fh <<"EOT"; -hosts: - host1: \&default - listen: $ports[0] - paths: - /: - mruby.handler: | - Proc.new do |env| - [200, {}, [env["SERVER_NAME"]]] - end - host2: - listen: $ports[1] - <<: *default - host3: - <<: *default - listen: $ports[2] -EOT -}; - -my $guard = spawn_server( - argv => [ bindir() . "/h2o", "-c", "$tempdir/h2o.conf" ], - is_ready => sub { - for (@ports) { - return unless check_port($_); - } - return 1; - }, -); - -subtest "port1" => sub { - subtest "no-host" => sub { - my $resp = `(echo "GET / HTTP/1.0"; echo) | nc 127.0.0.1 $ports[0] 2>&1`; - like $resp, qr{^HTTP/1\.[0-9]+ 200 OK\r\n}s; - like $resp, qr{\r\n\r\nhost1$}s; - }; - subtest "host=host2" => sub { - my $resp = `(echo "GET / HTTP/1.0"; echo "Host: host2"; echo) | nc 127.0.0.1 $ports[0] 2>&1`; - like $resp, qr{^HTTP/1\.[0-9]+ 200 OK\r\n}s; - like $resp, qr{\r\n\r\nhost2$}s; - }; - subtest "host=host3" => sub { - # host3 is not listening on the default port - my $resp = `(echo "GET / HTTP/1.0"; echo) | nc 127.0.0.1 $ports[0] 2>&1`; - like $resp, qr{^HTTP/1\.[0-9]+ 200 OK\r\n}s; - like $resp, qr{\r\n\r\nhost1$}s; - }; -}; - -subtest "port2" => sub { - my $resp = `(echo "GET / HTTP/1.0"; echo) | nc 127.0.0.1 $ports[1] 2>&1`; - like $resp, qr{^HTTP/1\.[0-9]+ 200 OK\r\n}s; - like $resp, qr{\r\n\r\nhost2$}s; -}; - -subtest "port3" => sub { - my $resp = `(echo "GET / HTTP/1.0"; echo) | nc 127.0.0.1 $ports[2] 2>&1`; - like $resp, qr{^HTTP/1\.[0-9]+ 200 OK\r\n}s; - like $resp, qr{\r\n\r\nhost3$}s; -}; - -done_testing; diff --git a/web/server/h2o/libh2o/t/90live-fetch-ocsp-response.t b/web/server/h2o/libh2o/t/90live-fetch-ocsp-response.t deleted file mode 100644 index 112098dfa..000000000 --- a/web/server/h2o/libh2o/t/90live-fetch-ocsp-response.t +++ /dev/null @@ -1,50 +0,0 @@ -use strict; -use warnings; -use File::Temp qw(tempfile); -use Test::More; - -plan skip_all => "skipping live tests (setenv LIVE_TESTS=1 to run them)" - unless $ENV{LIVE_TESTS}; - -my @HOSTS = qw( - www.verisign.com - www.thawte.com - www.cybertrust.ne.jp - www.comodo.com - www.godaddy.com - www.startssl.com -); - -for my $host (@HOSTS) { - subtest $host => sub { - doit($host); - }; -} - -done_testing; - -sub doit { - my $host = shift; - my $input = do { - open my $fh, "-|", "openssl s_client -showcerts -host $host -port 443 -CAfile /dev/null < /dev/null 2>&1" - or die "failed to invoke openssl:$!"; - local $/; - <$fh>; - }; - my @certs; - while ($input =~ /(-----BEGIN CERTIFICATE-----.*?-----END CERTIFICATE-----)/sg) { - push @certs, $1; - } - ok @certs >= 2, "chain has more than 2 certificates"; - - my ($cert_fh, $cert_fn) = tempfile(UNLINK => 1); - print $cert_fh join "\n", @certs; - close $cert_fh; - - my $ret = system("share/h2o/fetch-ocsp-response $cert_fn > /dev/null"); - if ($ret == 0) { - pass "successfully fetched and verified OCSP response"; - } else { - fail "fetch-ocsp-response exitted with status:$?"; - } -} diff --git a/web/server/h2o/libh2o/t/90live-sni.t b/web/server/h2o/libh2o/t/90live-sni.t deleted file mode 100644 index eb5bb5d8d..000000000 --- a/web/server/h2o/libh2o/t/90live-sni.t +++ /dev/null @@ -1,91 +0,0 @@ -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use Test::More; -use t::Util; - -our $CA_CERT = "misc/test-ca/ca.crt"; - -# using wget since curl of OS X 10.9.5 returns invalid certificate chain error with the test -plan skip_all => 'wget not found' - unless prog_exists('wget'); - -plan skip_all => 'only wget >= 1.14 supports SNI' - unless `wget --version` =~ /^GNU Wget 1\.([0-9]+)/ && $1 >= 14; - -plan skip_all => "skipping live tests (setenv LIVE_TESTS=1 to run them)" - unless $ENV{LIVE_TESTS}; - -subtest "basic" => sub { - my $server = spawn_h2o(sub { - my ($port, $tls_port) = @_; - return << "EOT"; -hosts: - "127.0.0.1.xip.io:$tls_port": - paths: - /: - file.dir: examples/doc_root - "alternate.127.0.0.1.xip.io:$tls_port": - listen: - port: $tls_port - ssl: - key-file: examples/h2o/alternate.key - certificate-file: examples/h2o/alternate.crt - paths: - /: - file.dir: examples/doc_root.alternate -EOT - }); - - do_test( - "127.0.0.1.xip.io:$server->{tls_port}", - md5_file("examples/doc_root/index.html"), - ); - - do_test( - "alternate.127.0.0.1.xip.io:$server->{tls_port}", - md5_file("examples/doc_root.alternate/index.txt"), - ); -}; - -subtest "wildcard" => sub { - my $server = spawn_h2o(sub { - my ($port, $tls_port) = @_; - return << "EOT"; -hosts: - "127.0.0.1.xip.io:$tls_port": - paths: - /: - file.dir: examples/doc_root - "*.127.0.0.1.xip.io:$tls_port": - listen: - port: $tls_port - ssl: - key-file: examples/h2o/alternate.key - certificate-file: examples/h2o/alternate.crt - paths: - /: - file.dir: examples/doc_root.alternate -EOT - }); - - do_test( - "127.0.0.1.xip.io:$server->{tls_port}", - md5_file("examples/doc_root/index.html"), - ); - - do_test( - "alternate.127.0.0.1.xip.io:$server->{tls_port}", - md5_file("examples/doc_root.alternate/index.txt"), - ); -}; - - -done_testing(); - -sub do_test { - my ($authority, $md5_expected) = @_; - my $content = `wget -nv --ca-certificate=$CA_CERT -O - https://$authority/`; - is $?, 0, "wget returns success"; - is md5_hex($content), $md5_expected, "content is as expected"; -} diff --git a/web/server/h2o/libh2o/t/90root-fastcgi-php.t b/web/server/h2o/libh2o/t/90root-fastcgi-php.t deleted file mode 100644 index 94010984e..000000000 --- a/web/server/h2o/libh2o/t/90root-fastcgi-php.t +++ /dev/null @@ -1,78 +0,0 @@ -# this test checks the behavior of `file.custom-handler` and `fastcgi.spawn` -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use File::Temp qw(tempdir); -use Net::EmptyPort qw(check_port empty_port); -use Test::More; -use t::Util; - -plan skip_all => 'test requires root privileges' - unless $< == 0; -plan skip_all => 'user: nobody does not exist' - unless getpwnam 'nobody'; -plan skip_all => 'user: daemon does not exist' - unless getpwnam 'daemon'; - -plan skip_all => 'curl not found' - unless prog_exists('curl'); -plan skip_all => 'php-cgi not found' - unless prog_exists('php-cgi'); - -sub check_resp { - my $port = shift; - my $resp = `curl --silent http://127.0.0.1:$port/index.txt`; - is $resp, "hello\n", 'ordinary file'; - $resp = `curl --silent http://127.0.0.1:$port/hello.php`; - is $resp, 'hello world', 'php'; -} - -subtest 'user-in-global-conf' => sub { - my $server = spawn_h2o(<< "EOT"); -user: nobody -file.custom-handler: - extension: .php - fastcgi.spawn: "exec php-cgi" -hosts: - default: - paths: - "/": - file.dir: @{[ DOC_ROOT ]} -EOT - check_resp($server->{port}); -}; - -subtest 'user-in-fastcgi.spawn' => sub { - my $server = spawn_h2o(<< "EOT"); -user: nobody -file.custom-handler: - extension: .php - fastcgi.spawn: - command: "exec php-cgi" - user: daemon -hosts: - default: - paths: - "/": - file.dir: @{[ DOC_ROOT ]} -EOT - check_resp($server->{port}); -}; - -subtest 'user-not-in-map-style-fastcgi.spawn' => sub { - my $server = spawn_h2o(<< "EOT"); -user: nobody -file.custom-handler: - extension: .php - fastcgi.spawn: - command: "exec php-cgi" -hosts: - default: - paths: - "/": - file.dir: @{[ DOC_ROOT ]} -EOT - check_resp($server->{port}); -}; - -done_testing(); diff --git a/web/server/h2o/libh2o/t/README.md b/web/server/h2o/libh2o/t/README.md deleted file mode 100644 index a2f203959..000000000 --- a/web/server/h2o/libh2o/t/README.md +++ /dev/null @@ -1,9 +0,0 @@ -The tests are numbered using the following rule. - -- 00 - unit tests -- 10 - module-level end-to-end tests -- (library level tests may go in here) -- 40 - protocol tests -- 50 - end-to-end tests -- 80 - issue tests -- 90 - author tests? diff --git a/web/server/h2o/libh2o/t/Util.pm b/web/server/h2o/libh2o/t/Util.pm deleted file mode 100644 index 220bb631b..000000000 --- a/web/server/h2o/libh2o/t/Util.pm +++ /dev/null @@ -1,283 +0,0 @@ -package t::Util; - -use strict; -use warnings; -use Digest::MD5 qw(md5_hex); -use File::Temp qw(tempfile); -use Net::EmptyPort qw(check_port empty_port); -use POSIX ":sys_wait_h"; -use Path::Tiny; -use Scope::Guard qw(scope_guard); -use Test::More; -use Time::HiRes qw(sleep); - -use base qw(Exporter); -our @EXPORT = qw(ASSETS_DIR DOC_ROOT bindir server_features exec_unittest exec_mruby_unittest spawn_server spawn_h2o empty_ports create_data_file md5_file prog_exists run_prog openssl_can_negotiate curl_supports_http2 run_with_curl); - -use constant ASSETS_DIR => 't/assets'; -use constant DOC_ROOT => ASSETS_DIR . "/doc_root"; - -sub bindir { - $ENV{BINARY_DIR} || '.'; -} - -sub server_features { - open my $fh, "-|", bindir() . "/h2o", "--version" - or die "failed to invoke: h2o --version:$!"; - <$fh>; # skip h2o version - +{ - map { chomp($_); split /:/, $_, 2 } <$fh> - }; -} - -sub exec_unittest { - my $base = shift; - my $fn = bindir() . "/t-00unit-$base.t"; - plan skip_all => "unit test:$base does not exist" - if ! -e $fn; - - if (prog_exists("memcached")) { - my $port = empty_port(); - pipe my $rfh, my $wfh - or die "pipe failed:$!"; - my $pid = fork; - die "fork failed:$!" - unless defined $pid; - if ($pid == 0) { - # child process - close $wfh; - POSIX::dup2($rfh->fileno, 5) - or die "dup2 failed:$!"; - exec qw(share/h2o/kill-on-close -- memcached -l 127.0.0.1 -p), $port; - exit 1; - } - close $rfh; - POSIX::dup($wfh->fileno) - or die "dup failed:$!"; - sleep 1; - if (waitpid($pid, WNOHANG) == $pid) { - die "failed to launch memcached"; - } - $ENV{MEMCACHED_PORT} = $port; - } - - exec $fn; - die "failed to exec $fn:$!"; -} - -sub exec_mruby_unittest { - plan skip_all => 'mruby support is off' - unless server_features()->{mruby}; - - my $test_dir = path('t/00unit.mruby'); - my $bin = path(bindir(), 'mruby/host/bin/mruby'); - unless (-e $bin) { - die "unit test: mruby binary $bin does not exist"; - } - - my $k = 0; - $test_dir->visit(sub { - my ($path) = @_; - return unless $path =~ /\.rb$/; - - my $fn = "$bin $path"; - my $output = `$fn`; - - # parse mruby test output - $output =~ /# Running tests:\n\n([SFE\.]+)\n/ - or die "cannot parse test output for $path"; - my ($i, $j) = (0, 0); - my @results = map { +{ type => $_, index => ++$i, failed => ($_ eq 'F' || $_ eq 'E') } } split(//, $1); - while ($output =~ /\d\) (Skipped|Failure|Error):\n([^\n]+)/g) { - my ($type, $detail) = (substr($1, 0, 1), $2); - while ($results[$j]->{type} ne $type) { $j++; } - $results[$j++]->{detail} = $detail; - } - - # print TAP compatible output - printf("%s %s\n", $path, '.' x (51 - length($path))); - for my $r (@results) { - printf(" %s %d - %s\n", $r->{failed} ? 'not ok' : 'ok', $r->{index}, $r->{detail} || ''); - printf STDERR ("# Error - %s\n", $r->{detail}) if $r->{failed}; - } - printf(" 1..%d\n", scalar(@results)); - printf("%s %d - %s\n", (grep { $_->{failed} } @results) ? 'not ok' : 'ok', ++$k, $path); - - }, +{ recurse => 1 }); - - printf("1..%d\n", $k); -} - -# spawns a child process and returns a guard object that kills the process when destroyed -sub spawn_server { - my %args = @_; - my $pid = fork; - die "fork failed:$!" - unless defined $pid; - if ($pid != 0) { - print STDERR "spawning $args{argv}->[0]... "; - if ($args{is_ready}) { - while (1) { - if ($args{is_ready}->()) { - print STDERR "done\n"; - last; - } - if (waitpid($pid, WNOHANG) == $pid) { - die "server failed to start (got $?)\n"; - } - sleep 0.1; - } - } - my $guard = scope_guard(sub { - print STDERR "killing $args{argv}->[0]... "; - my $sig = 'TERM'; - Retry: - if (kill $sig, $pid) { - my $i = 0; - while (1) { - if (waitpid($pid, WNOHANG) == $pid) { - print STDERR "killed (got $?)\n"; - last; - } - if ($i++ == 100) { - if ($sig eq 'TERM') { - print STDERR "failed, sending SIGKILL... "; - $sig = 'KILL'; - goto Retry; - } - print STDERR "failed, continuing anyways\n"; - last; - } - sleep 0.1; - } - } else { - print STDERR "no proc? ($!)\n"; - } - }); - return wantarray ? ($guard, $pid) : $guard; - } - # child process - exec @{$args{argv}}; - die "failed to exec $args{argv}->[0]:$!"; -} - -# returns a hash containing `port`, `tls_port`, `guard` -sub spawn_h2o { - my ($conf) = @_; - my @opts; - - # decide the port numbers - my ($port, $tls_port) = empty_ports(2); - - # setup the configuration file - my ($conffh, $conffn) = tempfile(UNLINK => 1); - $conf = $conf->($port, $tls_port) - if ref $conf eq 'CODE'; - if (ref $conf eq 'HASH') { - @opts = @{$conf->{opts}} - if $conf->{opts}; - $conf = $conf->{conf}; - } - print $conffh <<"EOT"; -$conf -listen: - host: 0.0.0.0 - port: $port -listen: - host: 0.0.0.0 - port: $tls_port - ssl: - key-file: examples/h2o/server.key - certificate-file: examples/h2o/server.crt -EOT - - # spawn the server - my ($guard, $pid) = spawn_server( - argv => [ bindir() . "/h2o", "-c", $conffn, @opts ], - is_ready => sub { - check_port($port) && check_port($tls_port); - }, - ); - my $ret = { - port => $port, - tls_port => $tls_port, - guard => $guard, - pid => $pid, - conf_file => $conffn, - }; - return $ret; -} - -sub empty_ports { - my $n = shift; - my @ports; - while (@ports < $n) { - my $t = empty_port(); - push @ports, $t - unless grep { $_ == $t } @ports; - } - return @ports; -} - -sub create_data_file { - my $sz = shift; - my ($fh, $fn) = tempfile(UNLINK => 1); - print $fh '0' x $sz; - close $fh; - return $fn; -} - -sub md5_file { - my $fn = shift; - open my $fh, "<", $fn - or die "failed to open file:$fn:$!"; - local $/; - return md5_hex(join '', <$fh>); -} - -sub prog_exists { - my $prog = shift; - system("which $prog > /dev/null 2>&1") == 0; -} - -sub run_prog { - my $cmd = shift; - my ($tempfh, $tempfn) = tempfile(UNLINK => 1); - my $stderr = `$cmd 2>&1 > $tempfn`; - my $stdout = do { local $/; <$tempfh> }; - return ($stderr, $stdout); -} - -sub openssl_can_negotiate { - my $openssl_ver = `openssl version`; - $openssl_ver =~ /^\S+\s(\d+)\.(\d+)\.(\d+)/ - or die "cannot parse OpenSSL version: $openssl_ver"; - $openssl_ver = $1 * 10000 + $2 * 100 + $3; - return $openssl_ver >= 10001; -} - -sub curl_supports_http2 { - return !! (`curl --version` =~ /^Features:.*\sHTTP2(?:\s|$)/m); -} - -sub run_with_curl { - my ($server, $cb) = @_; - plan skip_all => "curl not found" - unless prog_exists("curl"); - subtest "http/1" => sub { - $cb->("http", $server->{port}, "curl"); - }; - subtest "https/1" => sub { - my $cmd = "curl --insecure"; - $cmd .= " --http1.1" - if curl_supports_http2(); - $cb->("https", $server->{tls_port}, $cmd); - }; - subtest "https/2" => sub { - plan skip_all => "curl does not support HTTP/2" - unless curl_supports_http2(); - $cb->("https", $server->{tls_port}, "curl --insecure --http2"); - }; -} - -1; diff --git a/web/server/h2o/libh2o/t/assets/.htpasswd b/web/server/h2o/libh2o/t/assets/.htpasswd deleted file mode 100644 index ae2071650..000000000 --- a/web/server/h2o/libh2o/t/assets/.htpasswd +++ /dev/null @@ -1 +0,0 @@ -dankogai:$apr1$UZu91fLT$LZuXFeu3wSYdgLY6Wez5m/ diff --git a/web/server/h2o/libh2o/t/assets/doc_root/404.html b/web/server/h2o/libh2o/t/assets/doc_root/404.html deleted file mode 100644 index 1990b40f9..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/404.html +++ /dev/null @@ -1 +0,0 @@ -hi I fixed ur webpage diff --git a/web/server/h2o/libh2o/t/assets/doc_root/alice.txt b/web/server/h2o/libh2o/t/assets/doc_root/alice.txt deleted file mode 100644 index adace8072..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/alice.txt +++ /dev/null @@ -1,31 +0,0 @@ -Alice was beginning to get very tired of sitting by her sister on the -bank, and of having nothing to do: once or twice she had peeped into the -book her sister was reading, but it had no pictures or conversations in -it, 'and what is the use of a book,' thought Alice 'without pictures or -conversations?' - -So she was considering in her own mind (as well as she could, for the -hot day made her feel very sleepy and stupid), whether the pleasure -of making a daisy-chain would be worth the trouble of getting up and -picking the daisies, when suddenly a White Rabbit with pink eyes ran -close by her. - -There was nothing so VERY remarkable in that; nor did Alice think it so -VERY much out of the way to hear the Rabbit say to itself, 'Oh dear! -Oh dear! I shall be late!' (when she thought it over afterwards, it -occurred to her that she ought to have wondered at this, but at the time -it all seemed quite natural); but when the Rabbit actually TOOK A WATCH -OUT OF ITS WAISTCOAT-POCKET, and looked at it, and then hurried on, -Alice started to her feet, for it flashed across her mind that she had -never before seen a rabbit with either a waistcoat-pocket, or a watch -to take out of it, and burning with curiosity, she ran across the field -after it, and fortunately was just in time to see it pop down a large -rabbit-hole under the hedge. - -In another moment down went Alice after it, never once considering how -in the world she was to get out again. - -The rabbit-hole went straight on like a tunnel for some way, and then -dipped suddenly down, so suddenly that Alice had not a moment to think -about stopping herself before she found herself falling down a very deep -well. diff --git a/web/server/h2o/libh2o/t/assets/doc_root/alice2.txt.gz b/web/server/h2o/libh2o/t/assets/doc_root/alice2.txt.gz Binary files differdeleted file mode 100644 index 42ff445da..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/alice2.txt.gz +++ /dev/null diff --git a/web/server/h2o/libh2o/t/assets/doc_root/esi.html b/web/server/h2o/libh2o/t/assets/doc_root/esi.html deleted file mode 100644 index fea3eec6d..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/esi.html +++ /dev/null @@ -1 +0,0 @@ -Hello to the <esi:include src="echo-query?world" />, from <esi:include src="echo-query?H2O" />! diff --git a/web/server/h2o/libh2o/t/assets/doc_root/halfdome.jpg b/web/server/h2o/libh2o/t/assets/doc_root/halfdome.jpg Binary files differdeleted file mode 100644 index 4e96991a0..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/halfdome.jpg +++ /dev/null diff --git a/web/server/h2o/libh2o/t/assets/doc_root/hello.cgi b/web/server/h2o/libh2o/t/assets/doc_root/hello.cgi deleted file mode 100755 index 4401481bf..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/hello.cgi +++ /dev/null @@ -1,13 +0,0 @@ -#! /usr/bin/env perl - -use strict; -use warnings; -use CGI; - -my $q = CGI->new; - -print $q->header("text/plain; charset=utf-8"); -print "Hello ", $q->param("name") || "unknown"; - -close STDOUT; -print STDERR "hello.cgi is shutting down\n"; diff --git a/web/server/h2o/libh2o/t/assets/doc_root/hello.php b/web/server/h2o/libh2o/t/assets/doc_root/hello.php deleted file mode 100644 index 905beefec..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/hello.php +++ /dev/null @@ -1,6 +0,0 @@ -<?php -if (isset($_GET['link'])) { - header('Link: ' . $_GET['link']); -} -echo "hello world"; -?> diff --git a/web/server/h2o/libh2o/t/assets/doc_root/index.js b/web/server/h2o/libh2o/t/assets/doc_root/index.js deleted file mode 100644 index 3254c9294..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/index.js +++ /dev/null @@ -1 +0,0 @@ -alert("hello"); diff --git a/web/server/h2o/libh2o/t/assets/doc_root/index.txt b/web/server/h2o/libh2o/t/assets/doc_root/index.txt deleted file mode 100644 index ce0136250..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/index.txt +++ /dev/null @@ -1 +0,0 @@ -hello diff --git a/web/server/h2o/libh2o/t/assets/doc_root/index.txt.br b/web/server/h2o/libh2o/t/assets/doc_root/index.txt.br deleted file mode 100644 index b931f4d7a..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/index.txt.br +++ /dev/null @@ -1,2 +0,0 @@ -‹€hello -
\ No newline at end of file diff --git a/web/server/h2o/libh2o/t/assets/doc_root/index.txt.gz b/web/server/h2o/libh2o/t/assets/doc_root/index.txt.gz Binary files differdeleted file mode 100644 index c15976b94..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/index.txt.gz +++ /dev/null diff --git a/web/server/h2o/libh2o/t/assets/doc_root/issues/951.php b/web/server/h2o/libh2o/t/assets/doc_root/issues/951.php deleted file mode 100644 index 871b47765..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/issues/951.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -header("Cache-Control: no-cache"); -header("Strict-Transport-Security: max-age=31536000; includeSubDomains"); -header("X-Content-Type-Options: nosniff"); -header("X-XSS-Protection: 1; mode=block"); -header("Content-Security-Policy: default-src 'self' data: *.fortifi.cloud *.fortifi.io *.fortifiio.xyz *.fortifi.xyz *.fortifi.me:* https://storage.googleapis.com/cdn.fortifi.co/ https://maxcdn.bootstrapcdn.com/font-awesome/ https://www.google.com/ https://www.youtube.com/ https://ajax.googleapis.com/ https://www.gstatic.com https://maps.googleapis.com https://static.twilio.com/libs/ https://*.static.twilio.com/ https://www.google-analytics.com *.fortel.li *.fortel.fortifi.me; style-src 'self' data: *.fortifi.cloud *.fortifi.io *.fortifiio.xyz *.fortifi.xyz *.fortifi.me:* https://storage.googleapis.com/cdn.fortifi.co/ https://maxcdn.bootstrapcdn.com/font-awesome/ https://www.google.com/ https://www.youtube.com/ https://ajax.googleapis.com/ https://www.gstatic.com https://maps.googleapis.com https://static.twilio.com/libs/ https://*.static.twilio.com/ https://www.google-analytics.com *.fortel.li *.fortel.fortifi.me 'unsafe-inline' https://fonts.googleapis.com; script-src 'self' data: *.fortifi.cloud *.fortifi.io *.fortifiio.xyz *.fortifi.xyz *.fortifi.me:* https://storage.googleapis.com/cdn.fortifi.co/ https://maxcdn.bootstrapcdn.com/font-awesome/ https://www.google.com/ https://www.youtube.com/ https://ajax.googleapis.com/ https://www.gstatic.com https://maps.googleapis.com https://static.twilio.com/libs/ https://*.static.twilio.com/ https://www.google-analytics.com *.fortel.li *.fortel.fortifi.me 'unsafe-inline' 'unsafe-eval'; font-src 'self' data: *.fortifi.cloud *.fortifi.io *.fortifiio.xyz *.fortifi.xyz *.fortifi.me:* https://storage.googleapis.com/cdn.fortifi.co/ https://maxcdn.bootstrapcdn.com/font-awesome/ https://www.google.com/ https://www.youtube.com/ https://ajax.googleapis.com/ https://www.gstatic.com https://maps.googleapis.com https://static.twilio.com/libs/ https://*.static.twilio.com/ https://www.google-analytics.com *.fortel.li *.fortel.fortifi.me https://fonts.gstatic.com; frame-ancestors *.fortifi.me:8090; connect-src 'self' data: *.fortifi.cloud *.fortifi.io *.fortifiio.xyz *.fortifi.xyz *.fortifi.me:* https://storage.googleapis.com/cdn.fortifi.co/ https://maxcdn.bootstrapcdn.com/font-awesome/ https://www.google.com/ https://www.youtube.com/ https://ajax.googleapis.com/ https://www.gstatic.com https://maps.googleapis.com https://static.twilio.com/libs/ https://*.static.twilio.com/ https://www.google-analytics.com *.fortel.li *.fortel.fortifi.me wss://screenshare.fortifiio.xyz https://screenshare.fortifiio.xyz ws://chat.fortifi.me:8443 wss://call.fortifi.xyz wss://call.fortifiio.xyz wss://*.twilio.com; media-src 'self' data: *.fortifi.cloud *.fortifi.io *.fortifiio.xyz *.fortifi.xyz *.fortifi.me:* https://storage.googleapis.com/cdn.fortifi.co/ https://maxcdn.bootstrapcdn.com/font-awesome/ https://www.google.com/ https://www.youtube.com/ https://ajax.googleapis.com/ https://www.gstatic.com https://maps.googleapis.com https://static.twilio.com/libs/ https://*.static.twilio.com/ https://www.google-analytics.com *.fortel.li *.fortel.fortifi.me blob: *.fortifi.cloud *.fortifi.xyz *.fortifiio.xyz *.fortifi.co *.fortifi.me:* https://storage.googleapis.com/fortifi-stage-attachments/ https://storage.googleapis.com/storage.fortifi.co/ https://api.twilio.com/"); -header("X-Content-Security-Policy: default-src 'self' data: *.fortifi.cloud *.fortifi.io *.fortifiio.xyz *.fortifi.xyz *.fortifi.me:* https://storage.googleapis.com/cdn.fortifi.co/ https://maxcdn.bootstrapcdn.com/font-awesome/ https://www.google.com/ https://www.youtube.com/ https://ajax.googleapis.com/ https://www.gstatic.com https://maps.googleapis.com https://static.twilio.com/libs/ https://*.static.twilio.com/ https://www.google-analytics.com *.fortel.li *.fortel.fortifi.me; style-src 'self' data: *.fortifi.cloud *.fortifi.io *.fortifiio.xyz *.fortifi.xyz *.fortifi.me:* https://storage.googleapis.com/cdn.fortifi.co/ https://maxcdn.bootstrapcdn.com/font-awesome/ https://www.google.com/ https://www.youtube.com/ https://ajax.googleapis.com/ https://www.gstatic.com https://maps.googleapis.com https://static.twilio.com/libs/ https://*.static.twilio.com/ https://www.google-analytics.com *.fortel.li *.fortel.fortifi.me 'unsafe-inline' https://fonts.googleapis.com; script-src 'self' data: *.fortifi.cloud *.fortifi.io *.fortifiio.xyz *.fortifi.xyz *.fortifi.me:* https://storage.googleapis.com/cdn.fortifi.co/ https://maxcdn.bootstrapcdn.com/font-awesome/ https://www.google.com/ https://www.youtube.com/ https://ajax.googleapis.com/ https://www.gstatic.com https://maps.googleapis.com https://static.twilio.com/libs/ https://*.static.twilio.com/ https://www.google-analytics.com *.fortel.li *.fortel.fortifi.me 'unsafe-inline' 'unsafe-eval'; font-src 'self' data: *.fortifi.cloud *.fortifi.io *.fortifiio.xyz *.fortifi.xyz *.fortifi.me:* https://storage.googleapis.com/cdn.fortifi.co/ https://maxcdn.bootstrapcdn.com/font-awesome/ https://www.google.com/ https://www.youtube.com/ https://ajax.googleapis.com/ https://www.gstatic.com https://maps.googleapis.com https://static.twilio.com/libs/ https://*.static.twilio.com/ https://www.google-analytics.com *.fortel.li *.fortel.fortifi.me https://fonts.gstatic.com; frame-ancestors *.fortifi.me:8090; connect-src 'self' data: *.fortifi.cloud *.fortifi.io *.fortifiio.xyz *.fortifi.xyz *.fortifi.me:* https://storage.googleapis.com/cdn.fortifi.co/ https://maxcdn.bootstrapcdn.com/font-awesome/ https://www.google.com/ https://www.youtube.com/ https://ajax.googleapis.com/ https://www.gstatic.com https://maps.googleapis.com https://static.twilio.com/libs/ https://*.static.twilio.com/ https://www.google-analytics.com *.fortel.li *.fortel.fortifi.me wss://screenshare.fortifiio.xyz https://screenshare.fortifiio.xyz ws://chat.fortifi.me:8443 wss://call.fortifi.xyz wss://call.fortifiio.xyz wss://*.twilio.com; media-src 'self' data: *.fortifi.cloud *.fortifi.io *.fortifiio.xyz *.fortifi.xyz *.fortifi.me:* https://storage.googleapis.com/cdn.fortifi.co/ https://maxcdn.bootstrapcdn.com/font-awesome/ https://www.google.com/ https://www.youtube.com/ https://ajax.googleapis.com/ https://www.gstatic.com https://maps.googleapis.com https://static.twilio.com/libs/ https://*.static.twilio.com/ https://www.google-analytics.com *.fortel.li *.fortel.fortifi.me blob: *.fortifi.cloud *.fortifi.xyz *.fortifiio.xyz *.fortifi.co *.fortifi.me:* https://storage.googleapis.com/fortifi-stage-attachments/ https://storage.googleapis.com/storage.fortifi.co/ https://api.twilio.com/"); -header("X-Frame-Options: SAMEORIGIN"); -header("Set-Cookie: e1d0dd2c6a_login=eyJpdiI6Ilhjb21JeVZDQnZWNUcyellWYVM5cWc9PSIsInZhbHVlIjoiUUVcL250NkNpQjRMOUlPdm9TXC9GTmhOcFwvdGtsSnhtZnNCdFNzVTF1U3dcL0UyXC9UdWc0aUJsUFZmVzZOT3Y3WkoydmZpUG5LamFEMDhGdzNSdlhcL2E2Sjd1NHZJMk5GdDZDeFRJMzdMN3FSS3VDWFwvTlg5QXdrbHVvSmtwRFdvaEp1NGJiaTA5blNza3ltdGp4SG1wR1wvRnk3NkRwQmZvNHgwM1RZenVZc1wvXC84cFEycjN5M0RWSDI0TmRDb1RaQXUwYXZEbG5mZW9tSFVcL2wxdjdsMnI0UHlFYkRXdHdPb2U4a1hMMm4wcEg1OWlrZlwvejVQR2xNRjNBMEt2aTZWWlg4dU9yZ3pqRjB1WE9Vd3A4TVdqWHdIUk54VCtaNGNSMWNpTTYxQVJcL3lJXC9oZ3R1MzNIVXl1WTVsZmpUamgyMUVRUzRzcVRNSWdXUGhtWnpUbHc1RFBicm0xUVwvbWQ0bW1PVkIzUTBTSGwxcGx4a0Z6NVdNTUxMbGlFMDd6R2oybFZDN1lRKzFVczVrRmxmdjBzQVIwS3NiczdMRzBlZklpenRjMlY1TWhHcTEwcFVZZ3IxN0tnXC9relhDVG4wbGhNSHlHOVR1XC9VRGZYM0oxY1VTR2RiQUxQVTJLbkkxVytvcVwvNlNpMkVlXC9QQ2E4YnZSbXNqN1E3RFdQeDVQSHk0N0pTeWZTbW1UVko2UUFcLzA4aWpXclZ0NEtGUzV1YldRcFZpRGdPbjMrNEd2ajd1MUl1Y2dpN0xtcklnczB2Zm1KN1RUeFp6Y284MVd2K0REUXAySUFIK0ZJMkNta29OeGNqOXdROWFTTjRCNjJLVlBsMFQrZFwvV3RvTEZmTUdFWk1VZndObW1Hd2tHXC9FUktIYno4QlB6XC9TNFBDUWZ6RFhFYTRaNm9WUUdVXC9DbjlOM0RlTGZ1eGw0dEdvUmViWURDT3NoaldXUkMwaldHcGM3ZlRLWWxjMmpWWTVTSW1EaE1DQ0ZGM0JGWGJPQ1RBNUF0bGNkSktBTWlaeHpoa0NwdllyNWltZmRjTmwySHE3ZHZRcEwxeXlvNVp3MXNqMXMrRDByeElXcE4xbXB6bUFzbG9IT1ZuNEVITmxDcTdEWDJnMk5yZzEyeWRZU2pIRWU5dFVDZWRVODZ1VCs0OVRVdU8xc2dhajJPTGVJVFRxTFl4YWFaalphRmdKV1c2YVhsVzREMjF0SnFhZWtTUnp2V3hGdnFZSlZSUXV4bTloMmNjelJYaTFWMDFEVDRZTWY2RUNPQzUxOTRcL3N5S1o1VTAxTDI4TmlGbnU5bEtYSmR4YWlPN1FMbktFdTlxUXFUSVVlclp3XC9jcjVWbDVPWVpqcllqVHljNlwvb0RDK1Z1b2FDZkc3YmJVUmJxRmZWZDJyV0ZkVmt3VkN2VVVtSTJkMmVOaUJtcURxWml0aWJTeHk2OWxIVkI4WDRYY1AyaHZpNmdxWDV5V0hyVUFqODcwTWhwVFE5TFhvZWorNzBHQllcL0pmeXJFTHNzeVorR1RiSGRVNlwvYlpicUV5UHJXYzVcL1NBYWsxZzk4bDREb2lIT2pqVVwvZ0VcL2JvaVBHbU9kTUJmMG5GbDdiN0RSVXoyTnVqVVhkbU44NG5mWkJraDY3RlhVMTErK3V6ZHNsZHU0TENoUEF0Uksrd0dza3NjTGFaQXZXcE9DWWhsRGRCeXRkRkU1SjRGQWxQZTZPMm5Ec25raFAzVEVjdE1uZXRvOEJ3c0g5alY1ZHJqNjNWazdNWmpCV2pqOVkrODBYTU5nS0ZPTWxueTJSSTFVT2lFTlhRc0VhdThCQTRGd2dmM1FCVUJpZEJYSUc2VDVYbCtkSFFMQ0ZNSHY4Mm8ySzBoWnBcL1A5ZDF0WTllT3JENnpHUkFmcEpVRjFkVDRsbExBUWw0QlZBMDFzaWlGWG1wMkZjSVc2VzBTMmQ5SU1nUnErMjJWVUp4aVpHbUpcL0J0NjNcL3Ria1FUT1dreVRiNGlyMm1uNkZ1OFZOMmIyZ3QwRmxXbzVycG4wMDVGazl3MUJMRlJZQzM2UDdhNGF3K3lLWU1lbGFGWk5oT0ZoXC94dGRGckhhZmRDVU9QYVJiM1lnbElsWUpQNVFwdVE3XC9nQUJFVDNlQlAyVjBVNWd0XC93NXZwWFRsNWlOOWtMRDUxTGNWd0RHTEtZeTZWZHJvcjBOOW5kcUEyS0RGcmlFR3NKV2N0NkZYeFBxTjRJSFwvNzZYZGVhckplWWpkM1dcLytad1YwNzRCbFpUQU1vWWFsSUR5a0k1SWVCRG1GVW84K1IrSytOemNFUnRpU2g1bFZ5WVp4OXhpeEd3MXVcL2tSc1ZLbVwveTBqWEVlUm5QUldwU1c4REN0eHdLWWZJSGVLWTdLdGlsVnBFaVhJNmQrZmlnNnY4Mk1VZytHT3BWUEJkWnJjSVY2T2xSM1FzTTQ4cXd2c3Urd1pHTTNWdzhVbFFwa1pRdlhDbmM4Z1prXC8yVjFZMGZYYTBGMEMwK1MxNnZxUnRRa2ZVUjJDWk9RVEtJV3NqZ3VEdTdYU0pIMkhZR0loK2l2aG1qT256MEVoXC84TVwveHo2amhMYmExSzhYc25ONFpCQm1BbGN3b2hKWmlaWUtYR3ZQQ3g4Znl6OFJYNHNQTzY1ZXlkZzlsOHNJRnZZMVllVmt4OWZlalloQ3MyRmVRblFUM01qU2g1SXFSbTRcL0dLZFljU09sOXMyWE11elpvOFdcL3lcL0RRbzA2MnlsSk11c3FlN3Nzd2NPSnFYUUZzOTZGXC83cGxyK056NWJxbWZ3eXBcL3ZFbUtHVWp6VkE4VVpicW5TclZEXC9CVHljcStOUDhUSXcyeHdVXC94VEhIcGowTlFUV3pWZmxwbFE9PSIsIm1hYyI6IjE0NTI1NGRjMjM5MzMzMmE0MDBmZTI2YjkyNmQ2YWNkM2EzNzVhMGQ4NGM5MWQyNzZiZmU5ZmMzN2Y5OTZkNTYifQ%3D%3D; expires=Wed, 26-May-2021 09:34:04 GMT; Max-Age=155520000; path=/; domain=fortel.fortifi.me; HttpOnly"); -header("Location: /locked?return=/customers/40673510/billing/invoices&qs=currency%3DUSD%26customerId%3D40673510"); -?>
\ No newline at end of file diff --git a/web/server/h2o/libh2o/t/assets/doc_root/printenv.cgi b/web/server/h2o/libh2o/t/assets/doc_root/printenv.cgi deleted file mode 100755 index efe9b74c0..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/printenv.cgi +++ /dev/null @@ -1,9 +0,0 @@ -#! /bin/sh -exec ${H2O_PERL:-perl} -x $0 "$@" -#! perl - -print "content-type: text/plain; charset=utf-8\r\n\r\n"; - -for my $k (sort keys %ENV) { - print "$k:$ENV{$k}\n"; -} diff --git a/web/server/h2o/libh2o/t/assets/doc_root/subdir/index.txt b/web/server/h2o/libh2o/t/assets/doc_root/subdir/index.txt deleted file mode 100644 index 1fa86464d..000000000 --- a/web/server/h2o/libh2o/t/assets/doc_root/subdir/index.txt +++ /dev/null @@ -1 +0,0 @@ -subdir index diff --git a/web/server/h2o/libh2o/t/assets/session_tickets.yaml b/web/server/h2o/libh2o/t/assets/session_tickets.yaml deleted file mode 100644 index f97285299..000000000 --- a/web/server/h2o/libh2o/t/assets/session_tickets.yaml +++ /dev/null @@ -1,12 +0,0 @@ -- name: a397b6b7fab929366203f16fc81ffbed - cipher: aes-128-cbc - hash: sha1 - key: f1ed89cde68763630e80d2be827cfb98e3fe72644f64315a4a8ad63769a3577ccec4dd13b20eaf8c008886e5458db10e658cf2a83f04403ac4e98035d2422a75806730eb4f2fee12faff954895bc65d1 - not_before: 1437092430 - not_after: 1437096029 -- name: e7e3c6980b1832bd5d23917572e8448f - cipher: aes-256-cbc - hash: sha256 - key: f6e071d993b05f77ce51cb0fe2e0e18c7200c2a7873a66008c8e1d75ae7b8e2af4fcb86fdf03a7f335632e668a8fe956c5bfe77a41412d269979634768999add6a84cafea41b6b2c47aaf1a514ca9d2a84f48d1f5f7018ff1740cf9b944b8fcf - not_before: 1437093330 - not_after: 1437096929 diff --git a/web/server/h2o/libh2o/t/assets/upstream.psgi b/web/server/h2o/libh2o/t/assets/upstream.psgi deleted file mode 100644 index 95427428a..000000000 --- a/web/server/h2o/libh2o/t/assets/upstream.psgi +++ /dev/null @@ -1,225 +0,0 @@ -use strict; -use warnings; -use Digest::SHA qw(sha1_base64); -use Plack::App::File; -use Plack::Builder; -use Plack::Request; -use Plack::TempBuffer; -use Time::HiRes qw(sleep); -use t::Util; - -my $force_chunked = $ENV{FORCE_CHUNKED} || 0; - -builder { - enable sub { - my $app = shift; - return sub { - my $env = shift; - my $query = Plack::Request->new($env)->query_parameters; - my $res = $app->($env); - Plack::Util::response_cb($res, sub { - my $res = shift; - if ($query->{"resp:status"}) { - $res->[0] = $query->get("resp:status"); - $query->remove("resp:status"); - } - push @{$res->[1]}, map { - my $n = $_; - +(substr($n, length "resp:") => $query->get($n)) - } grep { - $_ =~ /^resp:/ - } $query->keys; - $res; - }); - }; - }; - if ($force_chunked) { - enable sub { - my $app = shift; - return sub { - my $env = shift; - my $res = $app->($env); - Plack::Util::response_cb($res, sub { - my $res = shift; - my @headers; - for (my $i = 0; $i != @{$res->[1]}; $i += 2) { - push @headers, $res->[1][$i], $res->[1][$i + 1] - if lc $res->[1][$i] ne 'content-length'; - } - $res->[1] = \@headers; - return $res; - }); - }; - }; - } - mount "/" => Plack::App::File->new(root => DOC_ROOT)->to_app; - mount "/echo-query" => sub { - my $env = shift; - return [ - 200, - [ - 'content-type' => 'text/plain', - ], - [$env->{QUERY_STRING}], - ]; - }; - mount "/echo" => sub { - my $env = shift; - my $content = Plack::TempBuffer->new; - if ($env->{'psgi.input'}) { - my $buf; - while ($env->{'psgi.input'}->read($buf, 65536)) { - $content->print($buf); - } - } - return [ - 200, - [ - 'content-type' => 'text/plain', - 'content-length' => $content->size(), - ], - $content->rewind(), - ]; - }; - mount "/echo-headers" => sub { - my $env = shift; - return [ - 200, - [ - 'content-type' => 'text/plain', - ], - [ - join "\n", map { my $n = lc $_; $n=~ s/^http_//; $n =~ tr/_/-/; "$n: $env->{$_}" } sort grep { /^(HTTP_|HTTPS$)/ } keys %$env, - ] - ]; - }; - mount "/echo-server-header" => sub { - my $env = shift; - my @resph = [ 'content-type' => 'text/plain' ]; - if ($env->{HTTP_SERVER}) { - @resph = [ 'content-type' => 'text/plain', 'server' => $env->{HTTP_SERVER} ]; - } - return [ - 200, @resph, [ "Ok" ] - ]; - }; - mount "/streaming-body" => sub { - my $env = shift; - return sub { - my $responder = shift; - my $writer = $responder->([ 200, [ 'content-type' => 'text/plain' ] ]); - for my $i (1..30) { - sleep 0.1; - $writer->write($i); - } - $writer->close; - }; - }; - mount "/sleep-and-respond" => sub { - my $env = shift; - my $query = Plack::Request->new($env)->parameters; - sleep($query->{sleep} || 0); - return [ - 200, - [ - 'content-type' => 'text/plain; charset=utf-8', - ], - [ - 'hello world', - ], - ]; - }; - mount "/fixed-date-header" => sub { - my $env = shift; - return [ - 200, - [ - 'content-type' => 'text/plain', - 'date' => 'Thu, 01 Jan 1970 00:00:00 GMT', - ], - [] - ]; - }; - mount "/infinite-stream" => sub { - my $env = shift; - return sub { - my $responder = shift; - my $writer = $responder->([ 200, [ 'content-type' => 'text/plain' ] ]); - while ($writer->write("lorem ipsum dolor sit amet")) { - sleep 0.1; - } - $writer->close; - }; - }; - mount "/infinite-redirect" => sub { - my $env = shift; - return [ - 302, - [ - location => '/infinite-redirect', - ], - [], - ]; - }; - mount "/websocket" => sub { - my $env = shift; - my $key = $env->{HTTP_SEC_WEBSOCKET_KEY} - or return [400, [], ["no Sec-WebSocket-Key"]]; - $key .= "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; - my $accept_key = sha1_base64($key); - my $fh = $env->{"psgix.io"}; - print $fh join( - "\r\n", - "HTTP/1.1 101 Switching Protocols", - "Upgrade: websocket", - "Sec-Websocket-Accept: $accept_key", - "", - "", - ); - while (1) { - my $rfds = ''; - vec($rfds, fileno($fh), 1) = 1; - next if select($rfds, undef, undef, undef) <= 0; - $fh->sysread(my $data, 65536) <= 0 - and last; - while (length($data) != 0) { - my $wfds = ''; - vec($wfds, fileno($fh), 1) = 1; - next if select(undef, $wfds, undef, undef) <= 0; - my $wlen = $fh->syswrite($data); - last if $wlen <= 0; - $data = substr $data, $wlen; - } - } - close $fh; - exit 0; - }; - mount "/1xx-push" => sub { - my $env = shift; - my $fh = $env->{"psgix.io"}; - print $fh join( - "\r\n", - "HTTP/1.1 100 Continue", - "link: </index.js>; rel=preload", - "", - "", - ); - sleep 1.1; - [200, ["content-type" => "text/plain; charset=utf-8", "content-length" => 11], ["hello world"]]; - }; - mount "/push-attr" => sub { - my $env = shift; - my $query = Plack::Request->new($env)->query_parameters; - [200, ["content-type" => "text/plain; charset=utf-8", "content-length" => 11, "link" => "$query->{'pushes'}"], ["hello world"]]; - }; - mount "/no-content" => sub { - my $env = shift; - return [ - 204, - [ - 'content-type' => 'text/plain', - ], - [], - ]; - }; -}; |