From 3ff7949c284c844e650bc77f47eb5ec89cb85981 Mon Sep 17 00:00:00 2001 From: "Phyks (Lucas Verney)" Date: Fri, 2 Aug 2019 23:20:43 +0200 Subject: [PATCH 1/8] Add living_street=yes as an alias for highway=living_street See #174. --- misc/profiles2/car-eco-suspect_scan.brf | 12 +++++---- misc/profiles2/car-eco.brf | 12 +++++---- misc/profiles2/car-fast.brf | 12 +++++---- misc/profiles2/car-traffic_analysis.brf | 10 ++++--- misc/profiles2/car-vario.brf | 12 +++++---- misc/profiles2/fastbike-asia-pacific.brf | 10 ++++--- misc/profiles2/fastbike-lowtraffic.brf | 14 +++++----- misc/profiles2/fastbike.brf | 12 +++++---- misc/profiles2/lookups.dat | 2 ++ misc/profiles2/moped.brf | 10 ++++--- misc/profiles2/shortest.brf | 6 +++-- misc/profiles2/trekking.brf | 9 ++++--- misc/profiles2/vm-forum-liegerad-schnell.brf | 26 +++++++++---------- misc/profiles2/vm-forum-velomobil-schnell.brf | 26 +++++++++---------- 14 files changed, 98 insertions(+), 75 deletions(-) diff --git a/misc/profiles2/car-eco-suspect_scan.brf b/misc/profiles2/car-eco-suspect_scan.brf index f2e4f8b..802f394 100644 --- a/misc/profiles2/car-eco-suspect_scan.brf +++ b/misc/profiles2/car-eco-suspect_scan.brf @@ -32,6 +32,8 @@ assign initialcost switch route=ferry 20000 0 # # calculate logical car access # +assign isresidentialorliving = or highway=residential|living_street living_street=yes + assign caraccess switch motorcar= switch motor_vehicle= @@ -44,7 +46,7 @@ assign caraccess switch highway=tertiary|tertiary_link 1 switch highway=unclassified 1 switch route=ferry 1 - switch highway=residential|living_street 1 + switch isresidentialorliving 1 switch highway=service 1 0 access=yes|permissive|designated|destination @@ -104,7 +106,7 @@ assign maxspeed_implicit = switch highway=unclassified 50 switch route=ferry 10 switch highway=bridleway 10 - switch highway=residential|living_street 30 + switch isresidentialorliving 30 switch highway=service 30 switch highway=track|road|path switch tracktype=grade1 30 5 0 @@ -148,7 +150,7 @@ assign priorityclassifier = else if ( highway=tertiary ) then 22 else if ( highway=tertiary_link ) then 21 else if ( highway=unclassified ) then 20 - else if ( highway=residential|living_street ) then 6 + else if ( isresidentialorliving ) then 6 else if ( highway=service ) then 6 else if ( highway=track ) then if tracktype=grade1 then 4 else 2 else if ( highway=bridleway|road ) then 2 @@ -165,7 +167,7 @@ assign costfactor = if equal maxspeed 0 assign isgoodoneway = if reversedirection=yes then oneway=-1 else if oneway= then implicitoneway else oneway=yes|true|1 assign isgoodforcars = if greater priorityclassifier 6 then true - else if highway=residential|living_street|service then true + else if or isresidentialorliving highway=service then true else if ( and highway=track tracktype=grade1 ) then true else false @@ -176,7 +178,7 @@ assign classifiermask add isbadoneway add multiply isroundabout 4 add multiply islinktype 8 add multiply isgoodforcars 16 - multiply highway=residential|living_street 32 + multiply isresidentialorliving 32 ---context:node # following code refers to node tags diff --git a/misc/profiles2/car-eco.brf b/misc/profiles2/car-eco.brf index 97a1c7e..e8f14d8 100644 --- a/misc/profiles2/car-eco.brf +++ b/misc/profiles2/car-eco.brf @@ -36,6 +36,8 @@ assign classifier_ferry = 2 # # calculate logical car access # +assign isresidentialorliving = or highway=residential|living_street living_street=yes + assign caraccess switch motorcar= switch motor_vehicle= @@ -48,7 +50,7 @@ assign caraccess switch highway=tertiary|tertiary_link 1 switch highway=unclassified 1 switch route=ferry 1 - switch highway=residential|living_street 1 + switch isresidentialorliving 1 switch highway=service 1 0 access=yes|permissive|designated|destination @@ -111,7 +113,7 @@ assign maxspeed_implicit = switch highway=unclassified 50 switch route=ferry 10 switch highway=bridleway 10 - switch highway=residential|living_street 30 + switch isresidentialorliving 30 switch highway=service 30 switch highway=track|road|path switch tracktype=grade1 30 5 0 @@ -197,7 +199,7 @@ assign priorityclassifier = else if ( highway=tertiary ) then 22 else if ( highway=tertiary_link ) then 21 else if ( highway=unclassified ) then 20 - else if ( highway=residential|living_street ) then 6 + else if ( isresidentialorliving ) then 6 else if ( highway=service ) then 6 else if ( highway=track ) then if tracktype=grade1 then 4 else 2 else if ( highway=bridleway|road ) then 2 @@ -209,7 +211,7 @@ assign isgoodoneway = if reversedirection=yes then oneway=-1 else if oneway= then junction=roundabout else oneway=yes|true|1 assign isroundabout = junction=roundabout assign isgoodforcars = if greater priorityclassifier 6 then true - else if highway=residential|living_street|service then true + else if or isresidentialorliving highway=service then true else if ( and highway=track tracktype=grade1 ) then true else false @@ -220,7 +222,7 @@ assign classifiermask add isbadoneway add multiply isroundabout 4 add multiply islinktype 8 add multiply isgoodforcars 16 - add multiply highway=residential|living_street 32 + add multiply isresidentialorliving 32 multiply caraccess_destination 64 ---context:node # following code refers to node tags diff --git a/misc/profiles2/car-fast.brf b/misc/profiles2/car-fast.brf index 3914d69..57bd102 100644 --- a/misc/profiles2/car-fast.brf +++ b/misc/profiles2/car-fast.brf @@ -36,6 +36,8 @@ assign classifier_ferry = 2 # # calculate logical car access # +assign isresidentialorliving = or highway=residential|living_street living_street=yes + assign caraccess switch motorcar= switch motor_vehicle= @@ -48,7 +50,7 @@ assign caraccess switch highway=tertiary|tertiary_link 1 switch highway=unclassified 1 switch route=ferry 1 - switch highway=residential|living_street 1 + switch isresidentialorliving 1 switch highway=service 1 0 access=yes|permissive|designated|destination @@ -111,7 +113,7 @@ assign maxspeed_implicit = switch highway=unclassified 50 switch route=ferry 10 switch highway=bridleway 10 - switch highway=residential|living_street 30 + switch isresidentialorliving 30 switch highway=service 30 switch highway=track|road|path switch tracktype=grade1 30 5 0 @@ -197,7 +199,7 @@ assign priorityclassifier = else if ( highway=tertiary ) then 22 else if ( highway=tertiary_link ) then 21 else if ( highway=unclassified ) then 20 - else if ( highway=residential|living_street ) then 6 + else if ( isresidentialorliving ) then 6 else if ( highway=service ) then 6 else if ( highway=track ) then if tracktype=grade1 then 4 else 2 else if ( highway=bridleway|road ) then 2 @@ -209,7 +211,7 @@ assign isgoodoneway = if reversedirection=yes then oneway=-1 else if oneway= then junction=roundabout else oneway=yes|true|1 assign isroundabout = junction=roundabout assign isgoodforcars = if greater priorityclassifier 6 then true - else if highway=residential|living_street|service then true + else if or isresidentialorliving highway=service then true else if ( and highway=track tracktype=grade1 ) then true else false @@ -220,7 +222,7 @@ assign classifiermask add isbadoneway add multiply isroundabout 4 add multiply islinktype 8 add multiply isgoodforcars 16 - add multiply highway=residential|living_street 32 + add multiply isresidentialorliving 32 multiply caraccess_destination 64 ---context:node # following code refers to node tags diff --git a/misc/profiles2/car-traffic_analysis.brf b/misc/profiles2/car-traffic_analysis.brf index 127bbf4..ba12476 100644 --- a/misc/profiles2/car-traffic_analysis.brf +++ b/misc/profiles2/car-traffic_analysis.brf @@ -30,6 +30,8 @@ assign initialcost switch route=ferry 20000 0 # # calculate logical car access # +assign isresidentialorliving = or highway=residential|living_street living_street=yes + assign caraccess switch motorcar= switch motor_vehicle= @@ -42,7 +44,7 @@ assign caraccess switch or highway=tertiary highway=tertiary_link 1 switch highway=unclassified 1 switch route=ferry 1 - switch or highway=residential highway=living_street 1 + switch isresidentialorliving 1 switch highway=service 1 0 or access=yes or access=permissive or access=designated access=destination @@ -82,7 +84,7 @@ assign costfactor switch highway=unclassified 2.5 switch route=ferry 5.67 switch highway=bridleway 5 - switch or highway=residential highway=living_street 3.5 + switch isresidentialorliving 3.5 switch highway=service 3.5 switch or highway=track or highway=road highway=path switch tracktype=grade1 5 @@ -91,12 +93,12 @@ assign costfactor 10000 assign trafficsourcedensity = - if highway=residential|living_street then 1 + if isresidentialorliving then 1 else if and maxspeed=30|50 highway=tertiary|secondary|primary then 1 else 0 assign istrafficbackbone - if greater costfactor 9999 then false + if greater costfactor 9999 then false else if highway=motorway|motorway_link then true else false diff --git a/misc/profiles2/car-vario.brf b/misc/profiles2/car-vario.brf index 97a1c7e..c68722b 100644 --- a/misc/profiles2/car-vario.brf +++ b/misc/profiles2/car-vario.brf @@ -36,6 +36,8 @@ assign classifier_ferry = 2 # # calculate logical car access # +assign isresidentialorliving = or highway=residential|living_street living_street=yes + assign caraccess switch motorcar= switch motor_vehicle= @@ -48,7 +50,7 @@ assign caraccess switch highway=tertiary|tertiary_link 1 switch highway=unclassified 1 switch route=ferry 1 - switch highway=residential|living_street 1 + switch isresidentialorliving 1 switch highway=service 1 0 access=yes|permissive|designated|destination @@ -111,7 +113,7 @@ assign maxspeed_implicit = switch highway=unclassified 50 switch route=ferry 10 switch highway=bridleway 10 - switch highway=residential|living_street 30 + switch isresidentialorliving 30 switch highway=service 30 switch highway=track|road|path switch tracktype=grade1 30 5 0 @@ -197,7 +199,7 @@ assign priorityclassifier = else if ( highway=tertiary ) then 22 else if ( highway=tertiary_link ) then 21 else if ( highway=unclassified ) then 20 - else if ( highway=residential|living_street ) then 6 + else if ( isresidentialorliving ) then 6 else if ( highway=service ) then 6 else if ( highway=track ) then if tracktype=grade1 then 4 else 2 else if ( highway=bridleway|road ) then 2 @@ -209,7 +211,7 @@ assign isgoodoneway = if reversedirection=yes then oneway=-1 else if oneway= then junction=roundabout else oneway=yes|true|1 assign isroundabout = junction=roundabout assign isgoodforcars = if greater priorityclassifier 6 then true - else if highway=residential|living_street|service then true + else if ( or isresidentialorliving highway=service ) then true else if ( and highway=track tracktype=grade1 ) then true else false @@ -220,7 +222,7 @@ assign classifiermask add isbadoneway add multiply isroundabout 4 add multiply islinktype 8 add multiply isgoodforcars 16 - add multiply highway=residential|living_street 32 + add multiply isresidentialorliving 32 multiply caraccess_destination 64 ---context:node # following code refers to node tags diff --git a/misc/profiles2/fastbike-asia-pacific.brf b/misc/profiles2/fastbike-asia-pacific.brf index 51f0758..3e994e5 100644 --- a/misc/profiles2/fastbike-asia-pacific.brf +++ b/misc/profiles2/fastbike-asia-pacific.brf @@ -116,6 +116,8 @@ assign onewaypenalty = ) else 0.0 +assign isresidentialorliving = or highway=residential|living_street living_street=yes + assign costfactor switch and highway= not route=ferry 10000 @@ -135,7 +137,7 @@ assign costfactor switch route=ferry 5.67 switch highway=bridleway 5 switch highway=cycleway 1.3 - switch or highway=residential highway=living_street switch isunpaved 10 1.2 + switch isresidentialorliving switch isunpaved 10 1.2 switch highway=service switch isunpaved 10 1.2 switch or highway=track or highway=road or highway=path highway=footway switch tracktype=grade1 switch isunpaved 3 1.2 @@ -162,7 +164,7 @@ assign priorityclassifier = else if ( highway=tertiary ) then 22 else if ( highway=tertiary_link ) then 21 else if ( highway=unclassified ) then 20 - else if ( highway=residential|living_street ) then 6 + else if ( isresidentialorliving ) then 6 else if ( highway=service ) then 6 else if ( highway=cycleway ) then 6 else if ( bicycle=designated ) then 6 @@ -181,7 +183,7 @@ assign isgoodoneway = if reversedirection=yes then oneway=-1 assign isroundabout = junction=roundabout assign islinktype = highway=motorway_link|trunk_link|primary_link|secondary_link|tertiary_link assign isgoodforcars = if greater priorityclassifier 6 then true - else if highway=residential|living_street|service then true + else if ( or isresidentialorliving highway=service ) then true else if ( and highway=track tracktype=grade1 ) then true else false @@ -216,7 +218,7 @@ assign footaccess assign initialcost switch bikeaccess - 0 + 0 switch footaccess 300 1000000 diff --git a/misc/profiles2/fastbike-lowtraffic.brf b/misc/profiles2/fastbike-lowtraffic.brf index 6605c0d..84e6d43 100644 --- a/misc/profiles2/fastbike-lowtraffic.brf +++ b/misc/profiles2/fastbike-lowtraffic.brf @@ -4,7 +4,7 @@ # to fallback to this one. # # Structure is similar to trekking.brf, see this for documenation. -# +# ---context:global # following code refers to global config @@ -114,7 +114,7 @@ assign trafficpenalty0 = ( if estimated_traffic_class=4 then 0.2 else if estimated_traffic_class=5 then 0.4 - else if estimated_traffic_class=6|7 then 0.6 + else if estimated_traffic_class=6|7 then 0.6 else 0 ) else if highway=secondary|secondary_link then @@ -139,6 +139,8 @@ assign trafficpenalty = if hascycleway then min 0.3 trafficpenalty0 else trafficpenalty0 +assign isresidentialorliving = or highway=residential|living_street living_street=yes + assign costfactor switch and highway= not route=ferry 10000 @@ -159,7 +161,7 @@ assign costfactor switch route=ferry 5.67 switch highway=bridleway 5 switch highway=cycleway|footway 1.3 - switch or highway=residential highway=living_street switch isunpaved 10 1.2 + switch isresidentialorliving switch isunpaved 10 1.2 switch highway=service switch isunpaved 10 1.2 switch or highway=track or highway=road or highway=path highway=footway switch tracktype=grade1 switch isunpaved 3 1.2 @@ -186,7 +188,7 @@ assign priorityclassifier = else if ( highway=tertiary ) then 22 else if ( highway=tertiary_link ) then 21 else if ( highway=unclassified ) then 20 - else if ( highway=residential|living_street ) then 6 + else if ( isresidentialorliving ) then 6 else if ( highway=service ) then 6 else if ( highway=cycleway ) then 6 else if ( bicycle=designated ) then 6 @@ -205,7 +207,7 @@ assign isgoodoneway = if reversedirection=yes then oneway=-1 assign isroundabout = junction=roundabout assign islinktype = highway=motorway_link|trunk_link|primary_link|secondary_link|tertiary_link assign isgoodforcars = if greater priorityclassifier 6 then true - else if highway=residential|living_street|service then true + else if ( or isresidentialorliving highway=service ) then true else if ( and highway=track tracktype=grade1 ) then true else false @@ -240,7 +242,7 @@ assign footaccess assign initialcost switch bikeaccess - 0 + 0 switch footaccess 300 1000000 diff --git a/misc/profiles2/fastbike.brf b/misc/profiles2/fastbike.brf index 719c4c1..1bff5d6 100644 --- a/misc/profiles2/fastbike.brf +++ b/misc/profiles2/fastbike.brf @@ -4,7 +4,7 @@ # to fallback to this one. # # Structure is similar to trekking.brf, see this for documenation. -# +# ---context:global # following code refers to global config @@ -111,6 +111,8 @@ assign onewaypenalty = ) else 0.0 +assign isresidentialorliving = or highway=residential|living_street living_street=yes + assign costfactor switch and highway= not route=ferry 10000 @@ -130,7 +132,7 @@ assign costfactor switch route=ferry 5.67 switch highway=bridleway 5 switch highway=cycleway 1.3 - switch or highway=residential highway=living_street switch isunpaved 10 1.2 + switch isresidentialorliving switch isunpaved 10 1.2 switch highway=service switch isunpaved 10 1.2 switch or highway=track or highway=road or highway=path highway=footway switch tracktype=grade1 switch isunpaved 3 1.2 @@ -157,7 +159,7 @@ assign priorityclassifier = else if ( highway=tertiary ) then 22 else if ( highway=tertiary_link ) then 21 else if ( highway=unclassified ) then 20 - else if ( highway=residential|living_street ) then 6 + else if ( isresidentialorliving ) then 6 else if ( highway=service ) then 6 else if ( highway=cycleway ) then 6 else if ( bicycle=designated ) then 6 @@ -176,7 +178,7 @@ assign isgoodoneway = if reversedirection=yes then oneway=-1 assign isroundabout = junction=roundabout assign islinktype = highway=motorway_link|trunk_link|primary_link|secondary_link|tertiary_link assign isgoodforcars = if greater priorityclassifier 6 then true - else if highway=residential|living_street|service then true + else if ( or isresidentialorliving highway=service ) then true else if ( and highway=track tracktype=grade1 ) then true else false @@ -220,7 +222,7 @@ assign footaccess assign initialcost switch bikeaccess - 0 + 0 switch footaccess 300 1000000 diff --git a/misc/profiles2/lookups.dat b/misc/profiles2/lookups.dat index bc496c8..29356d8 100644 --- a/misc/profiles2/lookups.dat +++ b/misc/profiles2/lookups.dat @@ -634,6 +634,8 @@ embedded_rails;0000000928 tram embedded_rails;0000000007 yes embedded_rails;0000000003 rail +living_street;0000000404 yes + ---context:node highway;0001314954 bus_stop diff --git a/misc/profiles2/moped.brf b/misc/profiles2/moped.brf index 41df418..5a5a260 100644 --- a/misc/profiles2/moped.brf +++ b/misc/profiles2/moped.brf @@ -29,6 +29,8 @@ assign initialcost switch route=ferry 20000 0 # # calculate logical car access # +assign isresidentialorliving = or highway=residential|living_street living_street=yes + assign motorverhicleaccess switch motor_vehicle= switch vehicle= @@ -39,7 +41,7 @@ assign motorverhicleaccess switch or highway=tertiary highway=tertiary_link 1 switch highway=unclassified 1 switch route=ferry 1 - switch or highway=residential highway=living_street 1 + switch isresidentialorliving 1 switch highway=service 1 0 or access=yes or access=designated access=destination @@ -90,7 +92,7 @@ assign costfactor switch highway=unclassified 1.2 switch route=ferry 5.67 switch highway=bridleway 5 - switch or highway=residential highway=living_street 2 + switch isresidentialorliving 2 switch highway=service 2 switch or highway=track or highway=road highway=path switch tracktype=grade1 5 @@ -113,7 +115,7 @@ assign priorityclassifier = else if ( highway=tertiary ) then 22 else if ( highway=tertiary_link ) then 21 else if ( highway=unclassified ) then 20 - else if ( highway=residential|living_street ) then 6 + else if ( isresidentialorliving ) then 6 else if ( highway=service ) then 6 else if ( highway=track ) then if tracktype=grade1 then 4 else 2 else if ( highway=bridleway|road ) then 2 @@ -126,7 +128,7 @@ assign isgoodoneway = if reversedirection=yes then oneway=-1 else if oneway= then junction=roundabout else oneway=yes|true|1 assign isroundabout = junction=roundabout assign isgoodforcars = if greater priorityclassifier 6 then true - else if highway=residential|living_street|service then true + else if ( or isresidentialorliving highway=service ) then true else if ( and highway=track tracktype=grade1 ) then true else false diff --git a/misc/profiles2/shortest.brf b/misc/profiles2/shortest.brf index ee1eacb..97667fe 100644 --- a/misc/profiles2/shortest.brf +++ b/misc/profiles2/shortest.brf @@ -67,6 +67,8 @@ assign costfactor # way priorities used for voice hint generation +assign isresidentialorliving = or highway=residential|living_street living_street=yes + assign priorityclassifier = if ( highway=motorway ) then 30 @@ -80,7 +82,7 @@ assign priorityclassifier = else if ( highway=tertiary ) then 22 else if ( highway=tertiary_link ) then 21 else if ( highway=unclassified ) then 20 - else if ( highway=residential|living_street ) then 6 + else if ( isresidentialorliving ) then 6 else if ( highway=service ) then 6 else if ( highway=cycleway ) then 6 else if ( bicycle=designated ) then 6 @@ -95,7 +97,7 @@ assign priorityclassifier = assign isroundabout = junction=roundabout assign islinktype = highway=motorway_link|trunk_link|primary_link|secondary_link|tertiary_link assign isgoodforcars = if greater priorityclassifier 6 then true - else if highway=residential|living_street|service then true + else if ( or isresidentialorliving highway=service ) then true else if ( and highway=track tracktype=grade1 ) then true else false diff --git a/misc/profiles2/trekking.brf b/misc/profiles2/trekking.brf index 8def1e0..e284d86 100644 --- a/misc/profiles2/trekking.brf +++ b/misc/profiles2/trekking.brf @@ -157,6 +157,7 @@ assign onewaypenalty = # must be >=1 and it's supposed to be close to 1 for # the type of way the routing profile is searching for # +assign isresidentialorliving = or highway=residential|living_street living_street=yes assign costfactor # @@ -185,7 +186,7 @@ assign costfactor # # steps and ferries are special. Note this is handled # before the cycleroute-switch, to be able - # to really exlude them be setting cost to infinity + # to really exlude them be setting cost to infinity # if ( highway=steps ) then ( if allow_steps then 40 else 10000 ) else if ( route=ferry ) then ( if allow_ferries then 5.67 else 10000 ) @@ -203,7 +204,7 @@ assign costfactor if ( highway=pedestrian ) then 3 else if ( highway=bridleway ) then 5 else if ( highway=cycleway ) then 1 - else if ( highway=residential|living_street ) then ( if isunpaved then 1.5 else 1.1 ) + else if ( isresidentialorliving ) then ( if isunpaved then 1.5 else 1.1 ) else if ( highway=service ) then ( if isunpaved then 1.6 else 1.3 ) # @@ -256,7 +257,7 @@ assign priorityclassifier = else if ( highway=tertiary ) then 22 else if ( highway=tertiary_link ) then 21 else if ( highway=unclassified ) then 20 - else if ( highway=residential|living_street ) then 6 + else if ( isresidentialorliving ) then 6 else if ( highway=service ) then 6 else if ( highway=cycleway ) then 6 else if ( bicycle=designated ) then 6 @@ -274,7 +275,7 @@ assign isgoodoneway = if reversedirection=yes then oneway=-1 assign isroundabout = junction=roundabout assign islinktype = highway=motorway_link|trunk_link|primary_link|secondary_link|tertiary_link assign isgoodforcars = if greater priorityclassifier 6 then true - else if highway=residential|living_street|service then true + else if ( or isresidentialorliving highway=service ) then true else if ( and highway=track tracktype=grade1 ) then true else false diff --git a/misc/profiles2/vm-forum-liegerad-schnell.brf b/misc/profiles2/vm-forum-liegerad-schnell.brf index 1575235..2f2a9b4 100644 --- a/misc/profiles2/vm-forum-liegerad-schnell.brf +++ b/misc/profiles2/vm-forum-liegerad-schnell.brf @@ -15,7 +15,7 @@ assign low_memory_cutoff = false # mit true werden Wege mit hohen Kosten aus der assign turnInstructionMode 1 #Ausgabe von Abiegehinweise 0=keine, 1=automatische Wahl, 2=locus-Style, 3=osmand-Style assign turnInstructionCatchingRange 20 # innerhalb dieser Strecke werden mehrere Abiegehinweise zu einem zusammengefasst und die Abiegewinkel werden besser an die generelle Richtung angenähert -assign turnInstructionRoundabouts true # mit "false" werden keine speziellen Abiegehinweise für den Kreisverkehr generiert +assign turnInstructionRoundabouts true # mit "false" werden keine speziellen Abiegehinweise für den Kreisverkehr generiert assign downhillcost 80 # Kosten für die Höhenmeter bergab assign downhillcutoff 0.1 # Gefälle unter diesem Wert in Prozent werden nicht gewertet @@ -55,7 +55,7 @@ assign cycleway assign footway or highway=footway and highway=path foot=designated|yes -assign turncost +assign turncost switch junction=roundabout 0 150 # Kosten die für eine 90 Grad Abbiegung berechnet werden. Für kleinere Winkel werden sie mit turncost*cos(Winkel) berechnet, bei Kreisverkehr keine weitere Kosten @@ -157,7 +157,7 @@ assign maxspeed_backward switch maxspeed:backward=rural 100 0 -assign maxspeed +assign maxspeed switch and reversedirection=yes maxspeed_backward maxspeed_backward switch and not reversedirection=yes maxspeed_forward maxspeed_forward switch maxspeed=50 50 @@ -203,7 +203,7 @@ assign upspeedpenalty assign surfacepenalty add switch embedded_rails=tram|yes|rail 10 # Zusatzkosten bei Schienen in der Fahrbahn - 0 + 0 switch surface=asphalt|paved 0 #Zusatzkosten für Teer oder versiegelte Flächen switch concrete=plates 1 # Zusatzkosten für Betonplattenwege switch concrete=lanes 2 # Zusatzkosten für Betonspurplatten @@ -253,7 +253,7 @@ assign costfactor switch tracktype=grade5 add lmc 50 # Kosten für kaum erkennbare Feldwege add lmc 20 # Kosten für Feldwege ohne Oberflächenangabe switch cycleway 1.3 # Kosten für Fahrradwege - switch highway=living_street 4 # Kosten für Spielstraßen + switch ( or highway=living_street living_street=yes ) 4 # Kosten für Spielstraßen switch highway=road 7 # Kosten für noch nicht genauer beschriebene Straße switch footway 15 # Kosten für Fußwege switch highway=pedestrian 20 # Kosten für Gehwege @@ -296,13 +296,13 @@ assign uphillcostfactor switch tracktype=grade5 add lmc 50 add lmc 20 switch cycleway 1 - switch highway=living_street 2.5 + switch ( or highway=living_street living_street=yes ) 2.5 switch highway=road 5 switch footway 15 switch highway=pedestrian 20 switch highway=steps 30 switch highway=path - switch surface= add lmc 30 + switch surface= add lmc 30 1 switch highway=bridleway add lmc 80 add lmc 20 @@ -339,13 +339,13 @@ assign downhillcostfactor switch tracktype=grade5 add lmc 50 add lmc 20 switch cycleway 2 - switch highway=living_street 8 + switch ( or highway=living_street living_street=yes ) 8 switch highway=road 10 switch footway 20 switch highway=pedestrian 30 switch highway=steps 40 switch highway=path - switch surface= add lmc 40 + switch surface= add lmc 40 2 switch highway=bridleway add lmc 80 add lmc 20 @@ -366,7 +366,7 @@ assign priorityclassifier = else if ( highway=tertiary ) then 22 else if ( highway=tertiary_link ) then 21 else if ( highway=unclassified ) then 20 - else if ( highway=residential|living_street ) then 6 + else if ( or highway=residential|living_street living_street=yes ) then 6 else if ( highway=service ) then 6 else if ( highway=cycleway ) then 6 else if ( bicycle=designated ) then 6 @@ -384,7 +384,7 @@ assign isgoodoneway = if reversedirection=yes then oneway=-1 assign isroundabout = junction=roundabout assign islinktype = highway=motorway_link|trunk_link|primary_link|secondary_link|tertiary_link assign isgoodforcars = if greater priorityclassifier 6 then true - else if highway=residential|living_street|service then true + else if ( or highway=residential|living_street|service living_street=yes ) then true else if ( and highway=track tracktype=grade1 ) then true else false @@ -435,7 +435,7 @@ assign initialcost switch railway=crossing|level_crossing 200 # Kosten für Bahnübergang 0 switch bikeaccess - 0 + 0 switch footaccess 10000 # Kosten fürs Absteigen - 1000000 #Kosten für verbotene oder private Wege \ No newline at end of file + 1000000 #Kosten für verbotene oder private Wege diff --git a/misc/profiles2/vm-forum-velomobil-schnell.brf b/misc/profiles2/vm-forum-velomobil-schnell.brf index e11f933..4b35602 100644 --- a/misc/profiles2/vm-forum-velomobil-schnell.brf +++ b/misc/profiles2/vm-forum-velomobil-schnell.brf @@ -15,7 +15,7 @@ assign low_memory_cutoff = false # mit true werden Wege mit hohen Kosten aus der assign turnInstructionMode 1 #Ausgabe von Abiegehinweise 0=keine, 1=automatische Wahl, 2=locus-Style, 3=osmand-Style assign turnInstructionCatchingRange 20 # innerhalb dieser Strecke werden mehrere Abiegehinweise zu einem zusammengefasst und die Abiegewinkel werden besser an die generelle Richtung angenähert -assign turnInstructionRoundabouts true # mit "false" werden keine speziellen Abiegehinweise für den Kreisverkehr generiert +assign turnInstructionRoundabouts true # mit "false" werden keine speziellen Abiegehinweise für den Kreisverkehr generiert assign downhillcost 80 # Kosten für die Höhenmeter bergab assign downhillcutoff 0.1 # Gefälle unter diesem Wert in Prozent werden nicht gewertet @@ -55,7 +55,7 @@ assign cycleway assign footway or highway=footway and highway=path foot=designated|yes -assign turncost +assign turncost switch junction=roundabout 0 150 # Kosten die für eine 90 Grad Abbiegung berechnet werden. Für kleinere Winkel werden sie mit turncost*cos(Winkel) berechnet, bei Kreisverkehr keine weitere Kosten @@ -157,7 +157,7 @@ assign maxspeed_backward switch maxspeed:backward=rural 100 0 -assign maxspeed +assign maxspeed switch and reversedirection=yes maxspeed_backward maxspeed_backward switch and not reversedirection=yes maxspeed_forward maxspeed_forward switch maxspeed=50 50 @@ -203,7 +203,7 @@ assign upspeedpenalty assign surfacepenalty add switch embedded_rails=tram|yes|rail 20 # Zusatzkosten bei Schienen in der Fahrbahn - 0 + 0 switch surface=asphalt|paved 0 #Zusatzkosten für Teer oder versiegelte Flächen switch concrete=plates 1 # Zusatzkosten für Betonplattenwege switch concrete=lanes 5 # Zusatzkosten für Betonspurplatten @@ -253,7 +253,7 @@ assign costfactor switch tracktype=grade5 add lmc 50 # Kosten für kaum erkennbare Feldwege add lmc 20 # Kosten für Feldwege ohne Oberflächenangabe switch cycleway 2.5 # Kosten für Fahrradwege - switch highway=living_street 5 # Kosten für Spielstraßen + switch ( or highway=living_street living_street=yes ) 5 # Kosten für Spielstraßen switch highway=road 10 # Kosten für noch nicht genauer beschriebene Straße switch footway 30 # Kosten für Fußwege switch highway=pedestrian 30 # Kosten für Gehwege @@ -296,13 +296,13 @@ assign uphillcostfactor switch tracktype=grade5 add lmc 50 add lmc 20 switch cycleway 2 - switch highway=living_street 5 + switch ( or highway=living_street living_street=yes ) 5 switch highway=road 10 switch footway 30 switch highway=pedestrian 30 switch highway=steps 40 switch highway=path - switch surface= add lmc 40 + switch surface= add lmc 40 10 switch highway=bridleway add lmc 80 add lmc 20 @@ -339,13 +339,13 @@ assign downhillcostfactor switch tracktype=grade5 add lmc 50 add lmc 20 switch cycleway 5 - switch highway=living_street 8 + switch ( or highway=living_street living_street=yes ) 8 switch highway=road 10 switch footway 30 switch highway=pedestrian 30 switch highway=steps 40 switch highway=path - switch surface= add lmc 40 + switch surface= add lmc 40 10 switch highway=bridleway add lmc 80 add lmc 20 @@ -366,7 +366,7 @@ assign priorityclassifier = else if ( highway=tertiary ) then 22 else if ( highway=tertiary_link ) then 21 else if ( highway=unclassified ) then 20 - else if ( highway=residential|living_street ) then 6 + else if ( or highway=residential|living_street living_street=yes ) then 6 else if ( highway=service ) then 6 else if ( highway=cycleway ) then 6 else if ( bicycle=designated ) then 6 @@ -384,7 +384,7 @@ assign isgoodoneway = if reversedirection=yes then oneway=-1 assign isroundabout = junction=roundabout assign islinktype = highway=motorway_link|trunk_link|primary_link|secondary_link|tertiary_link assign isgoodforcars = if greater priorityclassifier 6 then true - else if highway=residential|living_street|service then true + else if ( or highway=residential|living_street|service living_street=yes ) then true else if ( and highway=track tracktype=grade1 ) then true else false @@ -435,7 +435,7 @@ assign initialcost switch railway=crossing|level_crossing 350 # Kosten für Bahnübergang 0 switch bikeaccess - 0 + 0 switch footaccess 10000 # Kosten fürs Absteigen - 1000000 #Kosten für verbotene oder private Wege \ No newline at end of file + 1000000 #Kosten für verbotene oder private Wege From 603e72bb7cd8102a58371b525ada63a952b6dce6 Mon Sep 17 00:00:00 2001 From: "Phyks (Lucas Verney)" Date: Fri, 2 Aug 2019 23:24:50 +0200 Subject: [PATCH 2/8] Add support for sidewalk:bicycle tag in lookups.dat, close #166. --- misc/profiles2/lookups.dat | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/misc/profiles2/lookups.dat b/misc/profiles2/lookups.dat index 29356d8..e84e559 100644 --- a/misc/profiles2/lookups.dat +++ b/misc/profiles2/lookups.dat @@ -1,5 +1,5 @@ ---lookupversion:10 ----minorversion:11 +---minorversion:12 ---context:way @@ -636,6 +636,10 @@ embedded_rails;0000000003 rail living_street;0000000404 yes +sidewalk:bicycle;0000000439 yes designated +sidewalk:left:bicycle;0000001722 yes designated +sidewalk:right:bicycle;0000002667 yes designated + ---context:node highway;0001314954 bus_stop From 5fe5cca3a179761f95131d542725978458887d2f Mon Sep 17 00:00:00 2001 From: "Phyks (Lucas Verney)" Date: Sun, 4 Aug 2019 13:08:27 +0200 Subject: [PATCH 3/8] Add support for bicycle_road=yes --- misc/profiles2/fastbike-asia-pacific.brf | 52 ++++++++++--------- misc/profiles2/fastbike-lowtraffic.brf | 43 +++++++-------- misc/profiles2/fastbike.brf | 52 ++++++++++--------- misc/profiles2/lookups.dat | 2 + misc/profiles2/shortest.brf | 50 +++++++++--------- misc/profiles2/trekking.brf | 43 +++++++-------- misc/profiles2/vm-forum-liegerad-schnell.brf | 44 ++++++++-------- misc/profiles2/vm-forum-velomobil-schnell.brf | 44 ++++++++-------- 8 files changed, 172 insertions(+), 158 deletions(-) diff --git a/misc/profiles2/fastbike-asia-pacific.brf b/misc/profiles2/fastbike-asia-pacific.brf index 3e994e5..6d0e528 100644 --- a/misc/profiles2/fastbike-asia-pacific.brf +++ b/misc/profiles2/fastbike-asia-pacific.brf @@ -63,11 +63,13 @@ assign defaultaccess = assign bikeaccess or any_cycleroute switch bicycle= - switch vehicle= - defaultaccess - switch or vehicle=private vehicle=no - 0 - 1 + switch bicycle_road=yes + 1 + switch vehicle= + defaultaccess + switch or vehicle=private vehicle=no + 0 + 1 not or bicycle=private or bicycle=no bicycle=dismount # @@ -145,7 +147,7 @@ assign costfactor switch tracktype=grade3 10.0 switch tracktype=grade4 20.0 switch tracktype=grade5 30.0 - switch bicycle=designated 2.0 + switch or bicycle=designated bicycle_road=yes 2.0 switch ispaved 2.0 100.0 10.0 @@ -153,25 +155,25 @@ assign costfactor assign priorityclassifier = - if ( highway=motorway ) then 30 - else if ( highway=motorway_link ) then 29 - else if ( highway=trunk ) then 28 - else if ( highway=trunk_link ) then 27 - else if ( highway=primary ) then 26 - else if ( highway=primary_link ) then 25 - else if ( highway=secondary ) then 24 - else if ( highway=secondary_link ) then 23 - else if ( highway=tertiary ) then 22 - else if ( highway=tertiary_link ) then 21 - else if ( highway=unclassified ) then 20 - else if ( isresidentialorliving ) then 6 - else if ( highway=service ) then 6 - else if ( highway=cycleway ) then 6 - else if ( bicycle=designated ) then 6 - else if ( highway=track ) then if tracktype=grade1 then 6 else 4 - else if ( highway=bridleway|road|path|footway ) then 4 - else if ( highway=steps ) then 2 - else if ( highway=pedestrian ) then 2 + if ( highway=motorway ) then 30 + else if ( highway=motorway_link ) then 29 + else if ( highway=trunk ) then 28 + else if ( highway=trunk_link ) then 27 + else if ( highway=primary ) then 26 + else if ( highway=primary_link ) then 25 + else if ( highway=secondary ) then 24 + else if ( highway=secondary_link ) then 23 + else if ( highway=tertiary ) then 22 + else if ( highway=tertiary_link ) then 21 + else if ( highway=unclassified ) then 20 + else if ( isresidentialorliving ) then 6 + else if ( highway=service ) then 6 + else if ( highway=cycleway ) then 6 + else if ( or bicycle=designated bicycle_road=yes ) then 6 + else if ( highway=track ) then if tracktype=grade1 then 6 else 4 + else if ( highway=bridleway|road|path|footway ) then 4 + else if ( highway=steps ) then 2 + else if ( highway=pedestrian ) then 2 else 0 diff --git a/misc/profiles2/fastbike-lowtraffic.brf b/misc/profiles2/fastbike-lowtraffic.brf index 84e6d43..7e3b22e 100644 --- a/misc/profiles2/fastbike-lowtraffic.brf +++ b/misc/profiles2/fastbike-lowtraffic.brf @@ -48,7 +48,8 @@ assign bikeaccess = if any_cycleroute then true else if bicycle= then ( - if vehicle= then + if bicycle_road=yes then true + else if vehicle= then ( if access= then not or motorroad=yes highway=footway else if access=private|no then false @@ -169,7 +170,7 @@ assign costfactor switch tracktype=grade3 10.0 switch tracktype=grade4 20.0 switch tracktype=grade5 30.0 - switch bicycle=designated 1.3 + switch or bicycle=designated bicycle_road=yes 1.3 switch ispaved 2.0 100.0 10.0 @@ -177,25 +178,25 @@ assign costfactor assign priorityclassifier = - if ( highway=motorway ) then 30 - else if ( highway=motorway_link ) then 29 - else if ( highway=trunk ) then 28 - else if ( highway=trunk_link ) then 27 - else if ( highway=primary ) then 26 - else if ( highway=primary_link ) then 25 - else if ( highway=secondary ) then 24 - else if ( highway=secondary_link ) then 23 - else if ( highway=tertiary ) then 22 - else if ( highway=tertiary_link ) then 21 - else if ( highway=unclassified ) then 20 - else if ( isresidentialorliving ) then 6 - else if ( highway=service ) then 6 - else if ( highway=cycleway ) then 6 - else if ( bicycle=designated ) then 6 - else if ( highway=track ) then if tracktype=grade1 then 6 else 4 - else if ( highway=bridleway|road|path|footway ) then 4 - else if ( highway=steps ) then 2 - else if ( highway=pedestrian ) then 2 + if ( highway=motorway ) then 30 + else if ( highway=motorway_link ) then 29 + else if ( highway=trunk ) then 28 + else if ( highway=trunk_link ) then 27 + else if ( highway=primary ) then 26 + else if ( highway=primary_link ) then 25 + else if ( highway=secondary ) then 24 + else if ( highway=secondary_link ) then 23 + else if ( highway=tertiary ) then 22 + else if ( highway=tertiary_link ) then 21 + else if ( highway=unclassified ) then 20 + else if ( isresidentialorliving ) then 6 + else if ( highway=service ) then 6 + else if ( highway=cycleway ) then 6 + else if ( or bicycle=designated bicycle_road=yes ) then 6 + else if ( highway=track ) then if tracktype=grade1 then 6 else 4 + else if ( highway=bridleway|road|path|footway ) then 4 + else if ( highway=steps ) then 2 + else if ( highway=pedestrian ) then 2 else 0 diff --git a/misc/profiles2/fastbike.brf b/misc/profiles2/fastbike.brf index 1bff5d6..93747de 100644 --- a/misc/profiles2/fastbike.brf +++ b/misc/profiles2/fastbike.brf @@ -58,11 +58,13 @@ assign defaultaccess assign bikeaccess or any_cycleroute switch bicycle= - switch vehicle= - defaultaccess - switch or vehicle=private vehicle=no - 0 - 1 + switch bicycle_road=yes + 1 + switch vehicle= + defaultaccess + switch or vehicle=private vehicle=no + 0 + 1 not or bicycle=private or bicycle=no bicycle=dismount # @@ -140,7 +142,7 @@ assign costfactor switch tracktype=grade3 10.0 switch tracktype=grade4 20.0 switch tracktype=grade5 30.0 - switch bicycle=designated 2.0 + switch or bicycle=designated bicycle_road=yes 2.0 switch ispaved 2.0 100.0 10.0 @@ -148,25 +150,25 @@ assign costfactor assign priorityclassifier = - if ( highway=motorway ) then 30 - else if ( highway=motorway_link ) then 29 - else if ( highway=trunk ) then 28 - else if ( highway=trunk_link ) then 27 - else if ( highway=primary ) then 26 - else if ( highway=primary_link ) then 25 - else if ( highway=secondary ) then 24 - else if ( highway=secondary_link ) then 23 - else if ( highway=tertiary ) then 22 - else if ( highway=tertiary_link ) then 21 - else if ( highway=unclassified ) then 20 - else if ( isresidentialorliving ) then 6 - else if ( highway=service ) then 6 - else if ( highway=cycleway ) then 6 - else if ( bicycle=designated ) then 6 - else if ( highway=track ) then if tracktype=grade1 then 6 else 4 - else if ( highway=bridleway|road|path|footway ) then 4 - else if ( highway=steps ) then 2 - else if ( highway=pedestrian ) then 2 + if ( highway=motorway ) then 30 + else if ( highway=motorway_link ) then 29 + else if ( highway=trunk ) then 28 + else if ( highway=trunk_link ) then 27 + else if ( highway=primary ) then 26 + else if ( highway=primary_link ) then 25 + else if ( highway=secondary ) then 24 + else if ( highway=secondary_link ) then 23 + else if ( highway=tertiary ) then 22 + else if ( highway=tertiary_link ) then 21 + else if ( highway=unclassified ) then 20 + else if ( isresidentialorliving ) then 6 + else if ( highway=service ) then 6 + else if ( highway=cycleway ) then 6 + else if ( or bicycle=designated bicycle_road=yes ) then 6 + else if ( highway=track ) then if tracktype=grade1 then 6 else 4 + else if ( highway=bridleway|road|path|footway ) then 4 + else if ( highway=steps ) then 2 + else if ( highway=pedestrian ) then 2 else 0 diff --git a/misc/profiles2/lookups.dat b/misc/profiles2/lookups.dat index e84e559..10bc38d 100644 --- a/misc/profiles2/lookups.dat +++ b/misc/profiles2/lookups.dat @@ -640,6 +640,8 @@ sidewalk:bicycle;0000000439 yes designated sidewalk:left:bicycle;0000001722 yes designated sidewalk:right:bicycle;0000002667 yes designated +bicycle_road;0000006521 yes designated + ---context:node highway;0001314954 bus_stop diff --git a/misc/profiles2/shortest.brf b/misc/profiles2/shortest.brf index 97667fe..4295e29 100644 --- a/misc/profiles2/shortest.brf +++ b/misc/profiles2/shortest.brf @@ -36,11 +36,13 @@ assign defaultaccess assign bikeaccess or any_cycleroute switch bicycle= - switch vehicle= - defaultaccess - switch or vehicle=private vehicle=no - 0 - 1 + switch bicycle_road=yes + 1 + switch vehicle= + defaultaccess + switch or vehicle=private vehicle=no + 0 + 1 not or bicycle=private or bicycle=no bicycle=dismount # @@ -71,25 +73,25 @@ assign isresidentialorliving = or highway=residential|living_street living_stree assign priorityclassifier = - if ( highway=motorway ) then 30 - else if ( highway=motorway_link ) then 29 - else if ( highway=trunk ) then 28 - else if ( highway=trunk_link ) then 27 - else if ( highway=primary ) then 26 - else if ( highway=primary_link ) then 25 - else if ( highway=secondary ) then 24 - else if ( highway=secondary_link ) then 23 - else if ( highway=tertiary ) then 22 - else if ( highway=tertiary_link ) then 21 - else if ( highway=unclassified ) then 20 - else if ( isresidentialorliving ) then 6 - else if ( highway=service ) then 6 - else if ( highway=cycleway ) then 6 - else if ( bicycle=designated ) then 6 - else if ( highway=track ) then if tracktype=grade1 then 6 else 4 - else if ( highway=bridleway|road|path|footway ) then 4 - else if ( highway=steps ) then 2 - else if ( highway=pedestrian ) then 2 + if ( highway=motorway ) then 30 + else if ( highway=motorway_link ) then 29 + else if ( highway=trunk ) then 28 + else if ( highway=trunk_link ) then 27 + else if ( highway=primary ) then 26 + else if ( highway=primary_link ) then 25 + else if ( highway=secondary ) then 24 + else if ( highway=secondary_link ) then 23 + else if ( highway=tertiary ) then 22 + else if ( highway=tertiary_link ) then 21 + else if ( highway=unclassified ) then 20 + else if ( isresidentialorliving ) then 6 + else if ( highway=service ) then 6 + else if ( highway=cycleway ) then 6 + else if ( or bicycle=designated bicycle_road=yes ) then 6 + else if ( highway=track ) then if tracktype=grade1 then 6 else 4 + else if ( highway=bridleway|road|path|footway ) then 4 + else if ( highway=steps ) then 2 + else if ( highway=pedestrian ) then 2 else 0 # some more classifying bits used for voice hint generation... diff --git a/misc/profiles2/trekking.brf b/misc/profiles2/trekking.brf index e284d86..b4d3543 100644 --- a/misc/profiles2/trekking.brf +++ b/misc/profiles2/trekking.brf @@ -52,7 +52,7 @@ assign is_ldcr = if ignore_cycleroutes then false else any_cycleroute -assign isbike = or bicycle=yes or or bicycle=permissive bicycle=designated lcn=yes +assign isbike = or bicycle_road=yes or bicycle=yes or or bicycle=permissive bicycle=designated lcn=yes assign ispaved = surface=paved|asphalt|concrete|paving_stones assign isunpaved = not or surface= or ispaved surface=fine_gravel|cobblestone assign probablyGood = or ispaved and isbike not isunpaved @@ -102,7 +102,8 @@ assign bikeaccess = if any_cycleroute then true else if bicycle= then ( - if vehicle= then defaultaccess + if bicycle_road=yes then true + else if vehicle= then defaultaccess else not vehicle=private|no ) else not bicycle=private|no|dismount @@ -246,25 +247,25 @@ assign costfactor assign priorityclassifier = - if ( highway=motorway ) then 30 - else if ( highway=motorway_link ) then 29 - else if ( highway=trunk ) then 28 - else if ( highway=trunk_link ) then 27 - else if ( highway=primary ) then 26 - else if ( highway=primary_link ) then 25 - else if ( highway=secondary ) then 24 - else if ( highway=secondary_link ) then 23 - else if ( highway=tertiary ) then 22 - else if ( highway=tertiary_link ) then 21 - else if ( highway=unclassified ) then 20 - else if ( isresidentialorliving ) then 6 - else if ( highway=service ) then 6 - else if ( highway=cycleway ) then 6 - else if ( bicycle=designated ) then 6 - else if ( highway=track ) then if tracktype=grade1 then 6 else 4 - else if ( highway=bridleway|road|path|footway ) then 4 - else if ( highway=steps ) then 2 - else if ( highway=pedestrian ) then 2 + if ( highway=motorway ) then 30 + else if ( highway=motorway_link ) then 29 + else if ( highway=trunk ) then 28 + else if ( highway=trunk_link ) then 27 + else if ( highway=primary ) then 26 + else if ( highway=primary_link ) then 25 + else if ( highway=secondary ) then 24 + else if ( highway=secondary_link ) then 23 + else if ( highway=tertiary ) then 22 + else if ( highway=tertiary_link ) then 21 + else if ( highway=unclassified ) then 20 + else if ( isresidentialorliving ) then 6 + else if ( highway=service ) then 6 + else if ( highway=cycleway ) then 6 + else if ( or bicycle=designated bicycle_road=yes ) then 6 + else if ( highway=track ) then if tracktype=grade1 then 6 else 4 + else if ( highway=bridleway|road|path|footway ) then 4 + else if ( highway=steps ) then 2 + else if ( highway=pedestrian ) then 2 else 0 # some more classifying bits used for voice hint generation... diff --git a/misc/profiles2/vm-forum-liegerad-schnell.brf b/misc/profiles2/vm-forum-liegerad-schnell.brf index 2f2a9b4..414e0a0 100644 --- a/misc/profiles2/vm-forum-liegerad-schnell.brf +++ b/misc/profiles2/vm-forum-liegerad-schnell.brf @@ -50,7 +50,7 @@ assign any_cycleroute or route_bicycle_icn=yes or route_bicycle_ncn=yes or route assign nodeaccessgranted or any_cycleroute lcn=yes assign cycleway - or highway=cycleway and highway=path|footway bicycle=designated|yes + or bicycle_road=yes or highway=cycleway and highway=path|footway bicycle=designated|yes assign footway or highway=footway and highway=path foot=designated|yes @@ -99,8 +99,10 @@ assign defaultaccess assign bikeaccess or any_cycleroute switch bicycle= - switch vehicle= - defaultaccess + switch bicycle_road=yes + 1 + switch vehicle= + defaultaccess switch or vehicle=private vehicle=no 0 1 @@ -355,25 +357,25 @@ assign downhillcostfactor assign priorityclassifier = - if ( highway=motorway ) then 30 - else if ( highway=motorway_link ) then 29 - else if ( highway=trunk ) then 28 - else if ( highway=trunk_link ) then 27 - else if ( highway=primary ) then 26 - else if ( highway=primary_link ) then 25 - else if ( highway=secondary ) then 24 - else if ( highway=secondary_link ) then 23 - else if ( highway=tertiary ) then 22 - else if ( highway=tertiary_link ) then 21 - else if ( highway=unclassified ) then 20 + if ( highway=motorway ) then 30 + else if ( highway=motorway_link ) then 29 + else if ( highway=trunk ) then 28 + else if ( highway=trunk_link ) then 27 + else if ( highway=primary ) then 26 + else if ( highway=primary_link ) then 25 + else if ( highway=secondary ) then 24 + else if ( highway=secondary_link ) then 23 + else if ( highway=tertiary ) then 22 + else if ( highway=tertiary_link ) then 21 + else if ( highway=unclassified ) then 20 else if ( or highway=residential|living_street living_street=yes ) then 6 - else if ( highway=service ) then 6 - else if ( highway=cycleway ) then 6 - else if ( bicycle=designated ) then 6 - else if ( highway=track ) then if tracktype=grade1 then 6 else 4 - else if ( highway=bridleway|road|path|footway ) then 4 - else if ( highway=steps ) then 2 - else if ( highway=pedestrian ) then 2 + else if ( highway=service ) then 6 + else if ( highway=cycleway ) then 6 + else if ( or bicycle=designated bicycle_road=yes ) then 6 + else if ( highway=track ) then if tracktype=grade1 then 6 else 4 + else if ( highway=bridleway|road|path|footway ) then 4 + else if ( highway=steps ) then 2 + else if ( highway=pedestrian ) then 2 else 0 diff --git a/misc/profiles2/vm-forum-velomobil-schnell.brf b/misc/profiles2/vm-forum-velomobil-schnell.brf index 4b35602..bfa2ebd 100644 --- a/misc/profiles2/vm-forum-velomobil-schnell.brf +++ b/misc/profiles2/vm-forum-velomobil-schnell.brf @@ -50,7 +50,7 @@ assign any_cycleroute or route_bicycle_icn=yes or route_bicycle_ncn=yes or route assign nodeaccessgranted or any_cycleroute lcn=yes assign cycleway - or highway=cycleway and highway=path|footway bicycle=designated|yes + or bicycle_road=yes or highway=cycleway and highway=path|footway bicycle=designated|yes assign footway or highway=footway and highway=path foot=designated|yes @@ -99,8 +99,10 @@ assign defaultaccess assign bikeaccess or any_cycleroute switch bicycle= - switch vehicle= - defaultaccess + switch bicycle_road=yes + 1 + switch vehicle= + defaultaccess switch or vehicle=private vehicle=no 0 1 @@ -355,25 +357,25 @@ assign downhillcostfactor assign priorityclassifier = - if ( highway=motorway ) then 30 - else if ( highway=motorway_link ) then 29 - else if ( highway=trunk ) then 28 - else if ( highway=trunk_link ) then 27 - else if ( highway=primary ) then 26 - else if ( highway=primary_link ) then 25 - else if ( highway=secondary ) then 24 - else if ( highway=secondary_link ) then 23 - else if ( highway=tertiary ) then 22 - else if ( highway=tertiary_link ) then 21 - else if ( highway=unclassified ) then 20 + if ( highway=motorway ) then 30 + else if ( highway=motorway_link ) then 29 + else if ( highway=trunk ) then 28 + else if ( highway=trunk_link ) then 27 + else if ( highway=primary ) then 26 + else if ( highway=primary_link ) then 25 + else if ( highway=secondary ) then 24 + else if ( highway=secondary_link ) then 23 + else if ( highway=tertiary ) then 22 + else if ( highway=tertiary_link ) then 21 + else if ( highway=unclassified ) then 20 else if ( or highway=residential|living_street living_street=yes ) then 6 - else if ( highway=service ) then 6 - else if ( highway=cycleway ) then 6 - else if ( bicycle=designated ) then 6 - else if ( highway=track ) then if tracktype=grade1 then 6 else 4 - else if ( highway=bridleway|road|path|footway ) then 4 - else if ( highway=steps ) then 2 - else if ( highway=pedestrian ) then 2 + else if ( highway=service ) then 6 + else if ( highway=cycleway ) then 6 + else if ( or bicycle=designated bicycle_road=yes ) then 6 + else if ( highway=track ) then if tracktype=grade1 then 6 else 4 + else if ( highway=bridleway|road|path|footway ) then 4 + else if ( highway=steps ) then 2 + else if ( highway=pedestrian ) then 2 else 0 From 79eba309d51a4ec4338133c2511293fb098a0752 Mon Sep 17 00:00:00 2001 From: "Phyks (Lucas Verney)" Date: Fri, 30 Aug 2019 08:23:04 +0200 Subject: [PATCH 4/8] Add direction tag in lookups.dat, see #183 --- misc/profiles2/lookups.dat | 3 +++ 1 file changed, 3 insertions(+) diff --git a/misc/profiles2/lookups.dat b/misc/profiles2/lookups.dat index 10bc38d..ba41dbb 100644 --- a/misc/profiles2/lookups.dat +++ b/misc/profiles2/lookups.dat @@ -887,3 +887,6 @@ traffic_calming;0000000186 dip ford;0000037927 yes ford;0000000310 stepping_stones + +direction;0000274642 forward +direction;0000249637 backward From 333aa265f3838ecc0c21e894ab20b2b736e581b6 Mon Sep 17 00:00:00 2001 From: "Phyks (Lucas Verney)" Date: Sun, 1 Sep 2019 22:46:31 +0200 Subject: [PATCH 5/8] Add support for traffic_signals:direction, see #183. --- misc/profiles2/lookups.dat | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/misc/profiles2/lookups.dat b/misc/profiles2/lookups.dat index ba41dbb..32fce07 100644 --- a/misc/profiles2/lookups.dat +++ b/misc/profiles2/lookups.dat @@ -1,5 +1,5 @@ ---lookupversion:10 ----minorversion:12 +---minorversion:13 ---context:way @@ -890,3 +890,8 @@ ford;0000000310 stepping_stones direction;0000274642 forward direction;0000249637 backward +direction;0000021634 both + +traffic_signals:direction;0000062645 forward +traffic_signals:direction;0000033961 backward +traffic_signals:direction;0000007309 both From 6ed18505189c01570f28f66fb755e08b5f24020b Mon Sep 17 00:00:00 2001 From: "Phyks (Lucas Verney)" Date: Thu, 5 Sep 2019 12:09:22 +0200 Subject: [PATCH 6/8] Improve documentation * Improve documentation about BRouter usage and the provided scripts (misc/scripts). * Document how to use BRouter with third-party apps on Android (Locus / OSMAnd). * Improved process_planet_pbf.sh map creation script to make use of osmupdate if available and avoid downloading the planet file if not needed. --- README.md | 139 ++++++++++++++---- misc/readmes/mapcreation.md | 81 ++++++++++ misc/readmes/osmand/README.md | 64 ++++++++ misc/readmes/osmand/brouter-grid.png | Bin 0 -> 44777 bytes misc/readmes/osmand/brouter-main.png | Bin 0 -> 20910 bytes misc/readmes/osmand/brouter-osmand.png | Bin 0 -> 57794 bytes .../osmand/brouter-profiles-summary.png | Bin 0 -> 48727 bytes misc/readmes/osmand/brouter-profiles.png | Bin 0 -> 38028 bytes .../scripts/mapcreation/process_pbf_planet.sh | 17 ++- 9 files changed, 274 insertions(+), 27 deletions(-) create mode 100644 misc/readmes/mapcreation.md create mode 100644 misc/readmes/osmand/README.md create mode 100644 misc/readmes/osmand/brouter-grid.png create mode 100644 misc/readmes/osmand/brouter-main.png create mode 100644 misc/readmes/osmand/brouter-osmand.png create mode 100644 misc/readmes/osmand/brouter-profiles-summary.png create mode 100644 misc/readmes/osmand/brouter-profiles.png diff --git a/README.md b/README.md index 290c09f..9d4d9ec 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,129 @@ BRouter ======= -BRouter is a configurable OSM offline router with elevation awareness, Java + Android. Designed to be multi-modal with a particular emphasis on bicycle routing. +BRouter is a configurable OSM offline router with elevation awareness, Java + +Android. Designed to be multi-modal with a particular emphasis on bicycle +and energy-based car routing. -For more infos see http://brouter.de/brouter +For more infos see [http://brouter.de/brouter](http://brouter.de/brouter). + + +## BRouter on Android + +You can install the BRouter app on your Android device from +[F-Droid](https://f-droid.org/packages/btools.routingapp) or [Google Play +Store](https://play.google.com/store/apps/details?id=btools.routingapp). You +can also [build BRouter](#build-and-install) yourself. You can find detailed +documentation of the BRouter Android app in +[`misc/readmes/readme.txt`](misc/readmes/readme.txt). Get it on F-Droid Get it on Google Play +### Android with Locus -## Build and Install +You can use BRouter as the offline routing engine for [Locus +Map](https://www.locusmap.eu/) on your Android device. This is currently the +most featureful and maintained solutions for using BRouter on your Android +device. -Compile with (Java 6!): - -> mvn clean install -Dandroid.sdk.path= - -To skip building for Android, add ``-pl '!brouter-routing-app'``. - -Next, download one or more [data file(s)](http://brouter.de/brouter/segments4/) (rd5) into the ``misc/segments4`` directory. - -## Run - -On Linux: -> ./misc/scripts/standalone/server.sh - -On Windows (using Bash): -> ./misc/scripts/standalone/server.sh - -On Windows (using CMD): -> misc\scripts\standalone\server.cmd +A full documentation on how to set this up is available at +[https://www.locusmap.eu/locus-map-can-navigate-offline/](https://www.locusmap.eu/locus-map-can-navigate-offline/). -Related Projects -================ +### Android with OSMAnd -* https://github.com/nrenner/brouter-web -* https://github.com/poutnikl/Brouter-profiles/wiki +Alternatively, you can also use BRouter as the offline routing engine for +[OSMAnd](https://osmand.net/) on your Android device. + +A full documentation on how to set this up is available at +[`misc/readmes/osmand/README.md`](misc/readmes/osmand/README.md). + + +## BRouter on Windows/Linux/Mac OS + +### Build and Install + +To compile BRouter (including the BRouter Android app), use + +``` +mvn clean install -Dandroid.sdk.path= +``` + +If you only want to compile BRouter and the server part (skipping the Android +app), use + +``` +mvn clean install -pl '!brouter-routing-app' +``` + +You can use `-Dmaven.javadoc.skip=true` to skip the JavaDoc processing and +`-DskipTests` to skip running the unitary tests. + + +### Get the required segments (data) files + +Routing data files are organised as 5*5 degree files, +with the filename containing the south-west corner +of the square, which means: + +- You want to route near West48/North37 -> you need `W50_N35.rd5` +- You want to route near East7/North47 -> you need `E5_N45.rd5` + +These data files, called "segments" across BRouter, are generated from +[OpenStreetMap](https://www.openstreetmap.org/) data and stored in a custom +binary format (rd5) for improved efficiency of BRouter routing. + + +#### Download them from brouter.de + +Segments files from the whole planet are generated weekly at +[http://brouter.de/brouter/segments4/](http://brouter.de/brouter/segments4/). + +You can download one or more segments files, covering the area of the planet +your want to route, into the `misc/segments4` directory. + +#### Generate your own segments files + +You can also generate the segments files you need directly from a planet dump +of OpenStreetMap data (or a [GeoFabrik extract](https://download.geofabrik.de/)). + +More documentation of this is available in the +[`misc/readmes/mapcreation.md`](misc/readmes/mapcreation.md) file. + + +### Run the BRouter HTTP server + +Helpers scripts are provided in `misc/scripts/standalone` to quickly spawn a +BRouter HTTP server for various platforms. + +* Linux/Mac OS: `./misc/scripts/standalone/server.sh` +* Windows (using Bash): `./misc/scripts/standalone/server.sh` +* Windows (using CMD): `misc\scripts\standalone\server.cmd` + +The API endpoints exposed by this HTTP server are documented in the +[`brouter-server/src/main/java/btools/server/request/ServerHandler.java`](brouter-server/src/main/java/btools/server/request/ServerHandler.java) +file. + + +## Documentation + +More documentation is available in the [`misc/readmes`](misc/readmes) folder. + + +## Related Projects + +* [nrenner/BRouter-web](https://github.com/nrenner/brouter-web), a web interface on + top of the BRouter HTTP server. An online instance is available at + [http://brouter.de/brouter-web/](http://brouter.de/brouter-web/). +* [poutnikl/Brouter-profiles](https://github.com/poutnikl/Brouter-profiles/wiki), + a collection of BRouter profiles. +* [Phyks/BRouterTesting](https://github.com/Phyks/BrouterTesting), a + collection of test cases for helping develop new BRouter profiles. + + +## License + +BRouter is released under an [MIT License](LICENSE). diff --git a/misc/readmes/mapcreation.md b/misc/readmes/mapcreation.md new file mode 100644 index 0000000..debc738 --- /dev/null +++ b/misc/readmes/mapcreation.md @@ -0,0 +1,81 @@ +Build your own BRouter segments files +===================================== + +BRouter uses its own data format (`.rd5` files), split in tiles of 5 x 5 +in latitude and longitude. You can download the official segment files (weekly +built) from [brouter.de](http://brouter.de/brouter/segments4/) but you can +also build them yourself from an OSM dump. + + +## Build the pbfparser + +First, there are two file formats available to download OSM data: `bzip`-ed +XML files (very large) and `.pbf` +([Protobuf](https://github.com/protocolbuffers/protobuf) format) which is much +more efficient. If you want to use the latter one, you will have to build the +`pbfparser` (located in `misc/pbfparser` first): + +* Download [the latest + version](https://bretth.dev.openstreetmap.org/osmosis-build/osmosis-latest.zip) + of [Osmosis](https://wiki.openstreetmap.org/wiki/Osmosis) and unzip it + somewhere. +* Copy the `lib/default/protobuf-java-*.jar` and + `lib/default/osmosis-osm-binary-*.jar` files from the unzipped Osmosis + archive to `misc/pbfparser/protobuf.jar` and `misc/pbfparser/osmosis.jar`. +* Build BRouter and copy + `brouter-server/target/brouter-server-*-jar-with-dependencies.jar` to + `misc/pbfparser/brouter.jar`. +* You can build the `pbfparser` using, in the `misc/pbfparser/` + folder, + +``` +javac -d . -cp "brouter.jar:protobuf.jar:osmosis.jar" *.java +``` + +* Finally, you can build a `jar` file from these files using + +``` +jar cf pbfparser.jar btools/**/*.class +``` + +_Note:_ If the `jar` file is not properly created, everything else will seem +to work normally but there will not be any data extracted from the OSM data +dump. You can check what is actually inside the built `jar` file using +`jar tf pbfparser.jar`. + + +## Run the map creation script + +If you want to have elevation information in the generated segments files, you +should download the required [SRTM +files](https://cgiarcsi.community/data/srtm-90m-digital-elevation-database-v4-1/) +and set the `SRTM_PATH` variable when running the `process_pbf_planet.sh` +script. + +Any flavor of the 90m SRTM database should be working, but the one used by the +official BRouter segments files are the ones provided by +[CGIAR](https://cgiarcsi.community/data/srtm-90m-digital-elevation-database-v4-1/). +If you are working with rather small geographical extracts, you can download +tiles manually using [this +interface](http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp) (use the +"ArcInfo ASCII" format), instead of having to ask for an access for bulk +download of data. There is no need to unzip the downloaded files, the +`process_pbf_planet.sh` script expects a folder with all the ZIP files inside +and will manage it. + +Note that if you don't have the SRTM data available, the segments files will +still be generated without any issue (but they will miss the elevation data). +If you are not sure which SRTM files you have to download, you can run the +script once and it will log all the SRTM files it is looking for. + +You can now run the `misc/scripts/mapcreation/process_pbf_planet.sh` script to +build the segments. Have a look at the variables defined at the beginning of +the files and overwrite them according to your needs. By default, the script +will download the latest full planet dump from +[planet.osm.org](https://planet.osm.org/). You can also download a +geographical extract provided by [Geofabrik](https://download.geofabrik.de/) +and set the `PLANET_FILE` variable to point to it. + +_Note:_ It is possible that you encounter an error complaining about not being +able to run `bash^M` on Linux/Mac OS. You can fix this one by running +`sed -i -e 's/\r$//' process_pbf_planet.sh`. diff --git a/misc/readmes/osmand/README.md b/misc/readmes/osmand/README.md new file mode 100644 index 0000000..bf0059b --- /dev/null +++ b/misc/readmes/osmand/README.md @@ -0,0 +1,64 @@ +Using BRouter on Android with OSMAnd +==================================== + +BRouter integration in OSMAnd changed a lot during the summer of 2019. This +guide assumes you are using the BRouter Android app in version 1.5.0 or higher +as well as OSMAnd in version 3.4 or higher. + + +## Installing BRouter app on your Android device + +First, install the BRouter app on your Android device from +[F-Droid](https://f-droid.org/packages/btools.routingapp) or [Google Play +Store](https://play.google.com/store/apps/details?id=btools.routingapp). You +can also build the BRouter Android app yourself. + + +Get it on F-Droid + +Get it on Google Play + + +## Downloading BRouter segments + +Then, launch the BRouter app and choose "Download Manager". Zoom in and select +the areas you want to route in. Then click "Start Download" and BRouter will +start downloading the [segments](http://brouter.de/brouter/segments4/) files +for the selected areas. + +Main menu of BRouter android app + +Grid selection of segments to download + +Note that you will have to repeat this step periodically, whenever you want to have an +updated version of the OSM data used for the routing. + + +## Selecting profiles to use + +Once this is done, start again the BRouter app and choose the "BRouter App" +entry on the main menu. Select the routing profile you want to use and click +"Server-Mode". Then, tick the boxes for the routing modes you want to use this +profile for. You can use two different profiles per transportation mode, which +will be mapped to the "shortest" and "fastest" presets (these are just +labelling) in OSMAnd. + +Profiles selection + +Profiles selection summary + + +## Configure OSMAnd to make use of BRouter offline navigation + +You can now create an "Application profile" in OSMAnd which will be using +BRouter for offline routing. Go to Settings -> Application profiles -> Add and +create a new profile based on the base profile of your choice (cycling here, +for bicycle routing), with a custom name of your choice ("BRouter" on the +screenshot below) and making use of "BRouter (offline)" for navigation. + +BRouter configuration in OSMAnd
+application profiles + +The BRouter app should be launched before OSMAnd for this specific entry to +appear in OSMAnd. Therefore, if you cannot find "BRouter (offline)" navigation +option, you should force quit OSMAnd and restart it. diff --git a/misc/readmes/osmand/brouter-grid.png b/misc/readmes/osmand/brouter-grid.png new file mode 100644 index 0000000000000000000000000000000000000000..0d97c684fcd8b0e0c30cc6dd32cc0c94800b148c GIT binary patch literal 44777 zcmZ^KV~}Ri&hFdY)3!ZrOxw0?+qP}n-P5*h+qP}nymQW}@8?}ryH;w|-c>t!lB^_^ zgv-f@!a`v|0RRA4aWNqU005*H0072;0RDH<%qvF)0Fat_D5*Iq=)2#auGQ-p*K5Q zuiw3uJ>1hTJFPvbUpk*RJtxB^YI`1k+T9eyzQ0&~u9MV+vCQv3PI^erDT8@O7T;_o z_HsT>x-TGpEI>kk-qL(8bAIaTA1yg~(BJRWo@%_`eYlf)y0d+@dA{rN5qj{#d%E*< zS%rQ^YIdG)bS_@9XBMWka5t2D;GYfc)AaeW87AZgTo~w`6<5)9*?r z-iCBV!Y*H7+11kaLLPi}^cx0oWUW4bAHG~T=4p8o$3_1L#$8Utx+zcHXTq2#xMB3p#VX? zbd(%j+1lmoeD3t1tP1^_*f^ecF44`AtVHrTQt_~t>1N|e|0>ZDXt)7gCA`*FlM)l^ zRYl@l+|`Vt{`FjkoHI6VIBt*VFQ*kgOkpTfhLri++195x_+?FP|74;U+Mm3vSj3DR zHz3(@EZO6taMp<=Sxcg9Mj2}GuoWuO>iEnfD zrD3~KugLOZ6!t`!U3?*UzqrJ*_O$u^$d8=`Uj4UlJP%cOxzcKNvr8?iNt5`HOJCXs z@g4_KgD14{;_H1rJUGR$w|{a7!ie{h52h(l_Zi-9xf~BD6wy(a=W7x(d2#^hQ*r}RHCR}V@xP*zB4bQVNY}Q z&~B%xekC-CfHLvKe9Y7$zytIbwx&&0CExj?_MgE{&V8!Obn2B0HOT%_c$#U^Gl^b+)_MS@(%r+?Eto zd8Icr?{wA-2`3@jzKP+8*V?GT*7Iewj-KoWR88Z_c%h<(72ZW*nAPrR*l=PMTO4z?uEzcR^d?>iDc{J@y@=m-E6}s8T6z;OfC&6tL)O!S`O(u&ucaKrjUHat{u7#&ANs zg`Q>K5LOzQ85i*w(c@)$J{jaW7}Ig(mAmkJt6KD?LKlK6LRPwPMc4x-y0YPrYH|t+ zm30o(9;C^pt0CJT71;!#0i z0}w`P}ttd}GE7GC@+S*ZQu?-_qEF1n84k4%!jPzw}4S z(z7HMp7za&d+ou&FpP-D2Cj$1%C0Sr`87$5*GpfLe}P5gGxw~S;e)l+k~7b;7ZNjH zx6hD4FX#4Vl=VrJ?v`l6XI41nlgm+-!P*m|!Z-!c9XYKc#ycqtXTOK0`KR}bAKL5=dj zLgQo)C*znZh?bLSXjlvM9@H%#CV0);$!ly2kzi~BeBUAxX+!#{B^{bXq7jgs5X^R$ zwH&iRpo$OF^IZ#;=Pn_@;x6Ef{hb$w?&q+j0P~ldL2lOB8d&*z+0@Q3w1!I#>#vio z|LTZL0h#$M;cY=AT+kR$8?h<$Vm!(4YZA*J+st?pXg>dqc-7tml$|94Rv~pVG}ClF zMF1K5&Tp2GL2PkB&TcdC2zHM#hbMX+mVm=9-E^#6UFrl5O#kIztq1lP#G(QT`n(MU z9sKb^tRI5`@r8^)tuVm~sEN)FIKPwy+AD&yehQQekB%WMW)*u4Tml?ja?X%b)XyC$ zBmt#hP|ihqX{HNK6BiZd6`{Atj0GMH6j`X3se$kj!ntw8Z#)qHpqWE2K{8v>3gM6* zKkVJl4+1O#n+hf)h-}iZ!Ch$#O-^ntKiZHyE3PTjn@n#Ns*ES|5gRTqaVnlmm>|tI zBa4tpdfXInfSFegLz_4yOYTSSI=~{ZWZ9QsiQ3;YzEB2qTo;e^+6BEHO@Yf8z*H$O zhP2kD_bqlz+93xKS#D~NYL2&3=C`Vf+nN;3L#>ub{?(}*sWuVvE!qa}B2TQqPmLhB z6I2@$gtUJ5JM=KD95f)~*`PtEu6DW(Fq)MY-@R+?A}*t zp^$ORQS|zBs01wR%i&X+^M*15n21_ia&7%3b2-GxKw%39hxuB_hWNb8G$SWtaSKl$7?i2NWQ=SqK`kYgC!5^YelGj z$27WwsvvTvLuvrNKz@gQElxbj14f$S9?w#22HuYBdq`&6kE0qRvY zHq-rtNkHv}c{M8prp&LLWlC#>7S(TCs_WCjFP1w^G!91=7gb0|0#h5MOQO^v6C)6L z0$)$RE^ssLn{et!N*&Aocv1b%x^W6PL5>BOv8{E=A^7^>GofVYLD6uk=_VQ46kkQ@ z*>BY}#QEV|ShT(4EYkM}(?TS;-M4B0?P( z-NJ*S%}S$FieMI%DL?{*h5T*~T$&z6EnfW&vvR*kaOvUvP>;NXSRkNnl#`GTZmWQz z3J`YVW;vY}y@0Rc28i)7qS?%`>jeu6e(?zn5CcrrHbEGMNN{9o+*7eLRH0N{z`^hQ zAGv>zM@f)B<-WL`i=g)TfXD1^b14i9(KZLk?aKzFQuA1x_PK;i322Z*D)R=VTK;;B zrOl2g(lA2Wvnvgn44wA^!Zc1QLl9SlNws>e8j5GP5X;{o=<8FC?s-5cohA`M4E7V{ zgGh#O(nJo7rBsC=x@Y6jgA0yhOZmI%o5_tOQ+6gkTucAs$KWL55e-)Fq{V-;W;*^V zrc@Wemi}o30mr#{OS!1+8LjFi8btzZ1&b=xydw$w@TMa5b6-UTBz~?lBl{TQqSn+_ zJ`YsSq6VdUV2~4^XE#=(4@)0H0P#i$e&OiV%KnR%lhJwA0o@4z*$x=*#1aBi+QEVfWreNYjtxi@ z50#Rsnr7f7)ESx9xq^;R;YA}03+{^}#D!zaDy5k&K_&vzj%DIWWP7hp9k|Ci{ALcc z1%jkYq9aOxN|t>B4-GoMlZX85*_-m;?M;Id#H>?Gm~x#D|1hLkLL}NmuNa%A4uiDG z_`oUD9Y_~@B>K&uKzi+}1%6C6$g(^1v^R|9r+7{LyTHp|byT7}12&le*68^#9T7Zf z2uJKO;}yFtQW=Yu_0NG78O|*-dN}%ing1hj+0@D%Ol^$ddL|Q!N=r>tokVxD4>p^Splvp_!2JXyg4FC0# zov4z%eH<==3h-aqEfaq9^H3u~pN{4g(u&Xc3jZe65|C{2+zt+&%m~sg=ZGt%_*qaJ zw1b&}I7WlOARMkzizew&w8~$@fWNR@%*Z+VtpwimzX4$yyL0t2%D1y6`V;`uG21#8 zCn(obvwTxEeqVRpKZ^p`Uv*Y^qQ?ov6i z70@Y+rNDr)FszzIB~yFJyyDyEyD^#8{0CxubhLoYwt#|_Yyz8E#|tMT z(AGfR#+7*>O68A0s3Rr_7IUy148JL0azgHR9e;OfNiu0cLJKeTE7Rh^`f-9M*MK1G z!X@BKF(X}b;((buS>(I0aA+TeyOiNR+P27~_`mX9*@|P3oOkdsP#XAv*h` zn6gTjxG`QOI7ISKWdoi;Y`N6IK5rgwQHt}S`S529BG@p>AMK>~ASv$T__e+17m-5z zBFdj`v3=}vs195mg1P1t5ZHLdJaYNEC>A6_f1?8f@zn8W;lE3O5kPfcmXUy;&)etBkn$QTzF()P%Z+l~(+(!L42A+OWTM=VgQtO~} z?E{gk1Ez*ZG!dD%|6@tw(w=U4Gab`5JN`M0&);t5KSUk zkEs4Hv^O=eP@;2d(=0c^0`f5FKQkLRE`LT5^>}_|;D^mYuYuVtsn|A0i1``>5HK1B10LuANTUhFAkBLfx_~pTj-W zK5s)&EaL>6K#x*13BU^ynuiB@SlZz1SNOFP=?2rN|v0Z055-U>Qt8;&`n zvmx1?Uv2|C>193Iy|=MV!yB|yIsxhO4=Cj#X|X>RkA)fCZ}Y1!6J&Sxc|{(F;*L@- zqMIQhsQXesP`50->C?d`=ZCB&@1Th2b?V?|1t|dJ8qmnpkYi-1mio{3F3RKtAlXjTk~Lh#AL zjN`zu4)a?{bT;k|^kfIJrE56d1SG-ZHGzoepd|NlyS8O)|a1(~TIl6n#4rZ-qB*-Nj5#J@+UEoA_tEFiQf>`K+pKsvvpgZh_l zKlO!+l;@@cP{Zsx!5U6Nqtt9nrM*pA3gl;T0e;QQRKjZqcDb=_x+PhYV8Bw(e+o)m zeQE#OJzPq_RCdch4$};NqPI4C1tW=NRJdwj|9@CKsas2v8-AP49T$zffe-p zw?dq2UC8^R0}Mp5c7Nsg`P4&5o5o8c(>FzAwNf`{dF*$%&G6d|D`5MT`lHtlTO4wf zMhiv({$(K)&lsYR#npG3Rd0P#5rNYR*ic1e1q2aI&qTW9vao%A1Q(VyXw zhb0_mGvkE_2(lrJW|xuRkb(dc9=)wbS(x=3=~#N!`3BEu&Xm%X!-gtOh_+m*IU3<8 ztIG#^7Ux8Rk)o=qnF^B`Nh^3sQTU*&y;mD!koYeFchu4h{4iD)qVyRmgUn5x{%&Q` zvLOIlJze@NR7)z9jmfki)eH}XGF?&yM|<_klz9(-AAxxL^x-><@7=fTYYy=EJ2xnJN` zj&l2)X_T$wR8@4T(+5rKZA=^a#j=H1H=Ly{j^#3Qwci}0$}1OyAmeso#heKuV8d0g z*|m~%Gs3jPrH(@53W6G^atH1RDX-;IMUX3;!#d+X^i1&L>;jFdYTHuzQ;bde8?f4CA5A);wNHLns zdSZ()5&ohOCjf8;cHzK($f5|*7hW^T3@Pvg!jRdg7;XqKX5&w^#D-_K^$ZowuW*C; zkX>UhZXZ=e!+T3hEs|MpLP-Vjy4x+EMJ89l$(vN`aX%wC(zlWx__TGTe{nb*9Vf;= z`}eZ;Mp^g~KwK`j)%roY<}if^cL`kw?m%c5DXl=7Qjhn$Xy=XFs&>F|M@;iMNk(Z) zgbeyOAeBp$faf{EGQ~)&ucswSpu^OZsqc(;iBOtbQjbL9W#mzEVEGMLyu0Hqe6{wp0Uw zV^~gKDWqdA1Ti{b_49&~@arej8;QX-+}X`W(En9RRfq_bpzRDS!Zk)2enDXJA+_Ac zj-l6Ns;^KM)wX!Y3VS9<6UHr#m5<5!n!`*f@tnvbRBOqUFSig=*k@Gjtuh}bIQIe1 zVJjL&{B#CqUThN+L>Gx4=wt#pcSjW3dTO*Mun=>a9^zHorg>+jro$!5ORaE3w-=Qs z1i5wRQ)@c)Q%x}|ApG|b(X1tpXwX*pd7=zoN^Yt&)T_5rU>(RN>=!IJO%sMZq+F_q z!7egHsh?~XgqevFDpsV&dzkJ$?P(MqP48nI1}X3Z1mA{=xZXF`C86mp8Oopb2n~Yu zzM+7`%K5Cq{1`fJzC2`*Ibz>NR`K@V`plj8kPq+cqnD)&1WqWA3SjB(h|b`+Q-m8#%M}FTxQN4GU<1Dq z?B?$($A+4KQ7r_J71lT~J19?oVND`giuZ8;veMuEF7@gny~6OpcF6193dYLN7p z!@22bGZ|qVRj_>ccldsg;{_!*fN-Osz4OT<-8LBR^uJ~T^6i)@11RI0lma1gfqtAf z^B=G(W#2#FJ3ShzBp^%ASH4dVS#wN#m(j zhVC?cTB%{q0gXFO;{#Vi!@>$fklbn!Z0YE9trq7+tn9w zxKm{VNKeSxL&NDp9KeRRJ9Zz)O?ekzh%lyeW+lgV&{&X^a3&Yhe(TSrd*7A3FQPy; zQyEXFVh{?sQ0$KZpj0pGWV}4;iwmtBT2$O7fBS2pnqMeg;JG%URxJ zGVPK-l^CTN&!uWCXX9={h$3yk!T+pl*Cao)pX|j?&;CN5rZ61!IMVRQA&qdL_cxZ{ z#rw?|AyF#S6oqi9qZ&}SBu07g)G}H^2-30?zR;n6{s?StMf~Qt9YvJ@Qzl|@QwW47 z`x>u}1%gdx&yIWP`Bamupq^T;2dr zQ~k3BQO4?wHd#IV-qBs80$#ZTbcWKo&;h(!nkxu1HCkP1LXQJn(k*EF1TzbSig-!Z z=f({Yg@l^1S6$`1uHm02^oEA5nsrLEN7OlRP)n5UPK zK&`kzokO(Q{yKg`G^^tDOGPswPec9?w}L;XiR)NS)04x7&bh8d{uOL95I2Tggfy&j z^pyM5r(yo~27+F730B;UZEj~;;?84O5d=yCVu9b$>IQ4;BH3Qyqq-LYjbD~#m6t-d z1z{ZDc(Ry_ehmH5aUFd6*kirap(loVH;~$`MY3v59fJfeEz^FX9y5WrcqcKSw5Iz`aaSXy0>%BU6Y5leJPUZt%w(4D3MO{?KXvc|l7rfPAL-7QGE zhy*_fyd2%`ZFc;W;SL4!UkwBWx0|H)y8L{YdcJUI&Pcxyr2e)V4$p;00*PI7(Ibe} z^fE<19^dYuCP(XpJGPT;X2F3Omc zD;MWEi+L}GwI!BpkNp^}gBy#S13`YgA+&fFlr=>y)~hN}Y;>7V%Ovkou-dmq2O5an zxex@y3*}>@jI>_J>2sFp39X2fTxnDMIUf-Qd*2iTdjNnD;*|K>_t$RPD<4&v$*T3U^pPxE(jGQ zvf>cG#;O>E%0-Kq9>$Nn_u_q5I|+;)!8a2JnM^l5ZYePL38Fa)^Pi2AVS0M>2-1vW zUmc~98_YiSMd1rM^HaNV7Q*$ZfRAC8#7F4n{8g>bhEdqU>!I&wrm&jMVfo!=m4p+} z6);*Gc8tNNaS5zd%Kx&6*xYx}sy42kaP>}}9&F&bMU7w774BuVHJ`_Zwd^FY9rid( ztXx;6BiN5+u}oVo-I+(^T*E~CxJ_&9Y@KvAwC>lUX%{wq#ELdHKrZcgx65#j>E>dTyF=}N+a*0D`Ve5WQzrO1Qu?dCQ6^ex7 z2cB7M>yKl{%a@5vuy~Lzfaa)T^>0Xd=(I0St7`n?vt!aun2so&Z#Dt8s zdr1p-8>x}=3TC=y8b7kvEAhRT;Q~kS@>SKy1bctoO7%LSwqTtkp&G6WargGes2q2_ zdAJ(0r&AxEGge%VITNk}|A+;p+QMSacBcTv>!moi#5fMpy;KxtEJ~~JY0}A}XDPo^ z7-N9Jj~Ap>0*%C5L4xC`P|A2Qks zbJ<1W_I9|%r_(8M@;Hsf=$_bg=iR8W$66=_MtWCVFLT!9-KgJGmugL)$IDKiyM9|q z7=j}J02E{{C@3c`DENOpXa73QGQH!u#Rm9rhIADpH8gN8@z3M(IMfkP?H4If@&rmz zHJs_%9--5ji2u;U1X%X<#SWDRMmAK#RR`d|0`2dg7oHN5eAoPG47=NH#k;xYzTO5B z=$d4zu*8{l+K?jIHz4hxaOufM2MVGO%AKS#lu1aq#nFAay?de=Zs?r(V(+(@Ht>@r z&NdD)N47Ksz1R8_yo{tV8`?5>}5P9G4{LzIle7vM)FNzx}0sgQ{XM!6c{ z{tT4v5uyp!BB67j$_0jXSb+Zq@9Ai|Peis+Acy;vS6wi+SXY$0c(Za@QBE z`mwo30o;T~yr!w?6mhl%R!gge*%-cc69_CDW-TcrA*VQQ2IR){QCdCs2MwaSt*hzT z{vA+QR&fYxX9p35M((+Fu*IF#_2pT-v;z-b>fpufrlb6?6%f)+O#L4&G(`V-fZU3B zUH%<{JBdpRgC9VG!s6gJK=(ib0QdlLA$}#d^~)|-Hx$+MXKxL5Qvw42AYgn3LP;Y! z_P>Wgb+BxcZYEp}9Sw{f4^y2TA6FmO*PT0B+gXQoBWtT{e)MaHQ9+~ZL_q*!f~1D` z55e>kc53I+>8+)goBjRviVB(Fl5&|H@5f9>CU#T}{j^InX_=xrSid3sW{8@vS&O%I zJRNSq_V!mETSZNYbxL9pnr^*yxp_RV_ADnMp;CnXD!k8E_?vI>g9F)|6;$wh1 zJY8NmPsxVP@r{vG+VKhKWItF-Fd^iB5d2$=xBL(QIUon4=b><@pp=O z`ZEQ^ic}fpTJr~=`9Fpwi845JLJ$Olv7t0>ZF%Xg$(8Qp=&JMQR0kIoj*pj+15Xy5 z_TT%|?sv~aIP>B}^>=1K=wx)nQBKh@?a_z8oE{#}H@gi6LXcNXUjy*X634Al2>(BMINH83XqwvNKr1 z9269r=?G)K@LUe0IZn$Dy!0D&;?z@MEq4zil6x4lz_9;g4uf?y?W@}~@i$ypG_jnthRF)qKm7bdVx zCcpTg|9{Ln#kqj^VL?R4ur`+B()%}ZC0`^eOoK{A%$Gr3r-CNfn3oY>GTHq z1a`|{*^yfkVsLcxh09_Zk=Vi{pKO0*!ku7z);*eFZ zw?3htFF>m%#Kpn5T&09k1y#J+{)%`VN+ylzcmbX%K~zr9TX&SnPf zO4yzUXU>-YUwGMYqh|>r{s%Sr5LwB5THtidGR6)-4aT72`j&_0nC1^I?p0yNMVsvQ zlAxv-Sut!4JvR>`thU~XV z1;trnzT?LctV&I0bxcWVRkZD9YR7c^HLp341(*`__0ZM9CYkNiKK(J8t=aA$NtT;& zqOJAu2LDP=ePzc9B8|tVC0>cXZjephn$}>;!Z5b1?=T)?RdIOC#n{H49=x+xw`veg z4UMDyp&{c!T5ZZ*DC%Iczfd>HdZ!+mSnk7#``Dk?EsHC+kS|Bq8S>$O9PDlJ9z@K{ z%4^1sIMU80mr|fXpa(>Q+5cry~ty~{`9NA!<{rniw-5 z#KBmc0BsEzcqT5JF*(@3b;(R;8r@*KUX9Ak=lOTvQ`EdWAid1s7R@jgQw@UHs-9O+ zh~=z4BAx*iG;~};82tLLfczXTmw>5Rt&z+QegV|Nhbdzkn+s5YfB=A8Fp#Phj)@Ar z0wBP0hv~n!`C!4;!`8FK_)YvX$>VJ(;c6uwEgD62k)4Oafm1Ye`}p4F<}B9B9--9DuAaCdAs zl6D`vXa{w@;h_i`o&HVYi-Cq_5bMcpiDhc!(-4Wwy--5c7YWb``rO>QH*nVHIa_v- z+5a)}rZ@NHoo>zIrqrbQjXT86;`212D&F(uIUNcIu_Ue)gE@$*+V{_4cfH?}+dc`e zJgML^ztoI(Sim2lw+)0cCXCRyhhIblVvCm$3yls12DG}s&e}DfCz2V{xE+X0`A#pA z(iZbHLCLmG^|apLyvaZi=pd{-TR}iByA6vF1vUswQD>im7Sy4b=K?vJCT^*?6X!|=qU%H%6 zy-`f=%BCayU4qR|IN<^}W;Pz+m8Yo;36Iw=J0xGb=j!eaqubsbLzO^x9EiyKZsL&$ zgvR}sPZ=z;C)Cy)1W=J@#>)={h#d4cIbC6oi3$CnL<;8gCx?BPkc?*b*PDOfDq=nh zyHyOq$l|)~2vkq9;qYj;fMFWpaU{gF>O0+D@*j018}fw;Ux>IJp;jO@TksMhSC*C~ zi`v`-w3yC9iqW!Gh~ql0qca-h6|tj?S}b#c4HXpMKG#u~Ss5CSk!e{tt#2%&Hlg zlQTa?B?pKOoh;D6O!Cf@?B%vZ-_JMNnN03VS7q4?sn2899|~e@>vhZXhM_FHbr-oq zo8`Z0C^sdj`)=XL<-wVW;CpfZKyL+>F~dK*G$?H;$P?E!US?TNV(yOanwh0PF+ajI z88VZ)?kf~--dQqdKGx3dx1{f0OPgEp@L@BuOBpM0T{oN9Y?yL4ImZyZR&Sn*DWf?& z{*Sfx3fD?QJJ|%ML{%+*q7^&@OjcZ5!S&+b`X*c6?j1uz$)9I8;mQc){;0f)KK<@~epIgAqE= zJDFS&$jlFQs89ryQc)oZLc~CMKToyq)|QWpP2LObZd@BoX^V!ECrq(<2eQSn)?*YR zGm3K5hsOp_XkCo6r!wp0wvV%9d1sh#;_#~7NlGfUAqWn`l_r^HF%wTH+vZSL9*%h# z2ZYb3qJT2Z&u>1&betddf6v2OE2sq+ij%_pj=uS=2fzOTpNKB#`Lx$AAYt&FQ2(&w z{o_5)`_qx?dwV3#z!|Jh`3^#s}$%QS6x<};(D|c>4`;b zBu#?LozM{X1?(1p`je|iLg3+ag>#k*A#)rfCB~w3I98=tSQ0aX-(`GqQn)}iofsJ; z{NhkBQv5w;I8U-7GhWgE<;D=-b^!ixvIlZyPpU{76Nk=v)rP;N+h96c?&cO-a{=Y5 z@|QWeXPNwFZS$9z{s0PGS5?$;ItIzW-def)#`_oL+B`$zdD=sxvZ_GW2YtQch*p+} zWnhKe^z{W-!;0*(i#O!gd(OA`2=|5I&Grq-?|!+6hR-%@N3QL+N5>Ct7LzW}9G@qW zPQ-r-x6+qFJ?oKi5d|Np_oZ5?-7`(S(Zh|EmxT>}vcFkz;lk=j*_eMEo)xo14L%?} z_UES7!Q{rKm-}D9D%aponrdZb^=m*zW6z3e`IV0H#rB5LspdiHm9F&ZTq?itZB6=2 zYA5yQ*sNEU6=`sP=-MJ}tqH5ER#nN)m zo?h1WE9p_oyg^ykG`y*^)#eI*l6$YX7>z(E_i>E##)l*b0&tRHk_fO{->dL0L z$HlMU$;`jhv@w|d>MJX7j@-M*{gB0bkbep*uC8~fmie&Qfe~Y zOt(mc!2tk2vV+;b5Xmpq4KL^=9bWVuukPuSOY}aF*@m&(9~U`dJ?$xE437>=W!XDB zje-z&>k+{oD=yOlwx`e1(lF^3b|bdrzA(Gl|1Q8@zKgqAu|qlV5YlzKacv*1&ss_0 z3oji93-GhYM;~tJ5U%cgqn|An&2~2q+D~38BBK7oscapt#KugsqXWZPK2_c_RDn;a z_ru^5bO?gaFR!!2ovttWmG7b{4GoPT1Ws4nBH0viOUV`W`Pfk}}Y%@w5-Il$9V1!{)`=rn-PB%BzlC(^2g^1dg$WGFM(Bk;(*=+*v zYXnn5QrBZaQCHXrEF8q(bI{d@)5Gu2eYXcsd4+L906cc4$&vhU6i%+Hs_II@bdRnW z2Uq&cp-NT^f%r0OT?In^y*|%PbL;Hv-z0Rq?3ett1F;gU(;_<3g)?LXys_Bc#enLO7AMGwIj|C-%g<9J0q z-}1vlx@)yU;|J!SEHWO--3+fNOkeec0)z=R)*?0++66I@;3`RV-|f%NllK0AB}tTcEJrU|S_h zIPd1rB#^DgMdvMTJZ!&E1*a^&MOn~xbmHtpI(-(GGz2*dO??PLs5pKI+Q#nr(11Y1 z#f&Kb7qt6jV44*&cVL~{d@=htFCCG1@V-2s>?Jk~!_FNHJ$akmnQ)&iRZt4rY^4`H z>Khs+=3RY#eg+}zoAQ>(683j&3=Tzpr)Yd-_!hwPYWHZ12@1I$JWOR`a~mx~&GYB& zZ8a~ZE%ebFKccwbsc@hC6v?Pdtp})>x=*ew+AnleMdS4dLD-)ZPQT_7S-N-5jE>r& zdxabsbr%Z#UiG+Xs}O*QCmnyNfg%VH)eke%V-(1LwdLaSSFmdo<0%!U) z7P3_c65z~We{*7W@(e-!5wR`L#q<3*1_FaS=ZV#0{Qd2-ocX!S&t>=23nX5ck>M`m zw*@XUAv~SKDa4V7XPVOD_RvHIi!IoGxGcO~+%C1P92ctsL68zA%Dw}8J_EV=bpn&z zP3v_R#QA#z9$0U){f}*@Qa7GwPD$IwD$AeEe-XsPf?})Vhj!NTkPrXp)|Lkn&iu?$ zIamh|%YU3GOyep0aKkpw2WgK-aullcN8N7Z=KEL1X5f7T!~U(-Iak$=d&?EBoiptu z#s!pZYIDJ2VJIBj*~(cq?m^xP&rj#q|I~$Gl?uH51aCQ7lZhy>=NV^wJVdR>_sH|q zJvwBZVrSmK3R~PVKyRgD!l4dbYC7oparV9ljPnrZ`=I6LsY3T#Q5N2NcN;llNB!S_ z^&;0ALxuL!E@n3%X>|UFA!g6oZ5=iDY|_Y#PQ>M$?5BoOH7{qZRD0L0^*mU4UDaJe zvdgp)?0+BI=`yj4^guKeFtaD8cqvl6O>`J@(l_EkGsI4<_gK>|RPqLEx@U7oUSz!w z8b}%)bu}+68H-vT694^q&*6=;u|CC`|6%RfZ<_uF99jyHj+;4m6R$wnKfabdgkA1#Tm`LIpPz@CmzL(b z@aJlp>ON2nM&Q+GIG(}tr3%7mJ2mbe!Ya((0G#l&OO#fWC!uFxolBuX#_p~3X!35w zxcIc&;C{zA3DN!BwN(Y@495YocqLL(?rj|__tG{X(o->zF?aAq*c{cS>?2q|)0HcmehsN|B( zXnf(kc)Zm3-1#~9`8-Frl(s3Zg;E!r7a&D<5M_Skl`+WK9`6t99+zoIowrGxZ_u-%>7BT|Jg$CGDLUPP zf3={-;j9|%Zu_OCe^)8o8J70R_qh8EENmvY`wdXZjux-)zZ7fP2{M}LV`h|{^3J8h zIhr_#+}AGF$x4CZtb?8Fub4nkix!u3y6FglyQoZ@Oir_wj`Pv3%Df`uN5XF=a_O1Mu?FON2|21r)l4o zk4e8?lqAfm|IiZRq82kgS8?H2^z`IJZU!G73U%d7td)YyCj=q*BKdkt(r4>^nTmq zJW`jPrlXBF@t5&&RB`ds=S1z@aIg>KxQRAQpY zh)Mt@s3%=yVFx1OY_zf^bMF-Yv#v<}VckdVD-SIo*+rQ*%heD;!T*M07nnX?`gnb<~ITA7r7a_&T+zRtYx z0L@2s(=z&@%ZhjP486^7&Wmum7_jJu{?jEkqf?|P`TBY)t6*z+AoMIaG9AC|{7PjG z?U2g|Mtrs;5SEgnGJpSi+N(Y|a#x_NqB52LuKB%pZQu4X#t`%{ZF6>n#FcTLuN@# zZWwE%Edr81i&xpWwb7v0Yn8}$23}My^MKV&>x_$0>tJqD7>E5xcmUu!cuFHzniOOd zo2^BEzG$-n2mFYDA^TA8Q*%~K-E))3bH`GU^Ty>b?PONB{tE$Rtg_or07Aa)&UPtV z)J}{fCr^Q_iR=;3uUMQTUQJcj$p1&!o5w@_{r$sAp=4{DvSv?;%FZxlvL#eP_E7fS z*!OH9>)4l(OxZ%R@5)XLV`q%r82d7e-TfY)@ArHCuIs+9`!|13(mdYhoY#51UeD#6 z$*4cEL`i#X%?CGEQq@TnC7L!0+`oTSwsvPB%EtB+jSZ$C=&gYjeAmQNOqSnE9bE26 zK}LqVWeyi{whg+;s)IXx&F^@xOkNh*e2(dI*@vESJh45P=3V-9ylc{9Q=M$Z*jC?y z+}`5*T54;&EZ5cq18)fyM0~#D+Qw`1q&kk=TL{IVkX9c@i1bcXq}xOtA%b{6T zxdl6jswM}I78e&ccJU8t#+7JcsPv2x4Aix0cv#^wLpI8?wl16N!bo|wruMj#i9QW} zV*LbEw5Jx6Ad#sq3eIE~l+$$%)${6fQ+=koB-L(eSn=AH@B?q6gq!61sm^?K z7MbSlb9|tWhVw+q+hZ8Vk@k0)eR`T$N@9!dLRWt;1dpXmN?3+fb-10+-WaoVK`E%M zRJ@~`z?A5thI&u*^YZUvuLI==LLOl`#%A zA4=@Q;Q%Xi2V>50!$~E{A!O-$)=IAD*V|tW9gP*JJCutIoxw zX0VtD*T{`ec<0e=FzCGGh5`L2! zH)_5N7n@U7A33rfMbU*A6=y?q1}+EzI2>X8C4G_ehD#rm7v}j4`?2BDNLRyi?}4zw zv^cE-Zx=@V)KsJGMNicd<8P-W*5pQcT`95B;2QH{nvCt>F-!N&18k9!R(xWN>g~rL z3A+>H&upM5DdU87!Y{c-{k67u%{N-Zm)TDa=`#9pS)hWo>){ID`a&-9x~j!=-ki66 z^vg_Ve5^Cw{CF0vp*_8KaU(wk4N)=B@N%@u{uDW7qxm4iG$-umHJjI33kwT3y%chi zAay1Fgft0tB?SeAJK_&}B~^l59)IB>T0E|My5DQ(A^5vog6pPX(ADKoHnO4S{Y&r;(Bzya07D_+ zf`67{FMmU7pQ{T~Amw9rE39O8wuq}IGDBnJgL-Qj%Qph*ev?_D@^aNND7C>ki0a3w zZR*Y=7;<{8ifz2w%$-i>!}^+8Y6S_}`j!0DzN~<%)i6`R*!FTIj3~w&=^h+19cpy%nwziSWmt{|zi!yKw%xE^;^)yQQzHYS5yhI$%5SN++oPK>kC*U+093RdL_vyd+>Q|CCrK6HzjYkN9 zfS;X`d-Jz_8Z3w!b<*17^KR}Z-cLbI+-8pcNN4>qLS5XEzf_**bD4srzsmPDr;GQ+ zm87`8juhR-YSSEPKS}{8NBtv>()y}_cy&h{jZ&$R*Gh3+%<-+U_!te^`nS5pZkVZ- zS&CUtfTnn1+?HEQQ^n0x?#;LkT71pgvtahYo8vi(nJN21TW0`c7}ShEw{{zNQ&)q( zuHnOIk5jI7qk6MphnuGfFGn)fryD;G37HavQ`@E&L&MXJm*z%)MPOZ)80%Tiku_4e zq=o)05z*=JyCn)+UHfzqLLL|LXRZe?NWSZYx+#`3e$=a34qcb3w3_^_|LvO?J_Ezj z`#$?gl$@#{4=NAFI4))S`Z$#svs_FPRAJZtpkn$+Ch z2UN-^O}LEoj@%EVqNaJ)(ihSAF#VhgJUBu`8<|s?#xiY^ZiLLr`eQTiZLjj@odf>$>#s2eeK+?B)-9U0|j+*V~Lkmi!#PuXjUQ5p_?|naS*F1qOxapTm;}*vU`tuS!b%Pmj_rf4pv~F-#d(KY~?=> zuYOaSlkfAxHC0=PH=0%QZc8((;kzm~gYueZhs1STj&xCf%C`?C{^Wd^eZpTSg*M0V zg}y>&*(46+Q`Gzr*;{6$K?mP$aD^H$M>Ef2`3F<}?FHcA74;aPM*}m&aa=qwVO$uu zosuvFa_xtT`^K=1#dn!<-mwiy)Xk{7*d$dco1fjXHu?xO<456BD$PWcPbd@b^xPXw zg=~#HOgS<$_tX;ZH}?c;a~Y$#!kGFEE<5ortD_&Xki=IGjkjflEG`&0zoVnJ;tj|r z4#$z-ueX$+28J#6u(y@wD@|Q`fmi015Db}FI*7W#k22h`X=*rLpY;4>CxoSnfSkWe zD3bqbWBt!i=KHxa1T@>wv4AQvi1urAJo<@KE?-a^Hjf*8+Cee z#hFWsSq3X|b(O$ZqE$2AQBf`o_wgcrt+nhE>et^0gno3V+JA0WXy-|cWN6%eE9`q2 z->pj*?c+Uh`9fR3mD1i}xxeMJCn;r4bs@dWTP#WyoR%UVDf&hDUtSh$b_-N7s87c@ zRlqAw?xMPH6%n_64}$2w)_4})ZNSe6&hhEfJ*Y7X^2%P$^gU{2lCAYm>Cy9uY+IR{ zPOeG!+c_NeJPEd5C{(@};|A!sjStITOuxi_Lusp|s-~%r{RSD&bLVUoRTQoxI-vZc zD|EgGbqsW?#jc~}H#I|TG$yaF)d<{}S_3MJgEjbbI##$r6}!9L z!2h@vKs$MbjI6V7?$+_WGPg#pcUPN-cn0DU+rz&lMmdKiYRPPm4jcC31ZB44$W_0W zl|__Rh@HA;7ZjuuCTi#uCo8*V{|veAb=5r2n7cR2ZeDg2w}4x{Ci}zSq1kbdbUlj- z!96;oXT2DIEd)-RuqESvl>}dPn4}i?hqsk7q)@(Lo0nHxqA<rUiHhl5bjTHHJY zS!@06z8%>qAi9B>z&_se+qakp_mv#jm#Vj%tWXW|54~JzCYTT_ii8 zN~o@L*=4*?NT>6Kgh>BC2ACbdY(9m(lJx7Xf!FKpKo~Z+3rOsoigc_=e;V%4@JegF zc@tCb6#!@C&lAtoMo7p}F$mdT!RORlAazq1l_-O%wRdgo-wWe^?)h+uuC~X|^yaA- zG}{N3eH7{|@-9my{QO<3V&YVzr`KaMXfDiy`dMCXU;s{QBG%1KL(vRIPmx-MX+^-0 zTe}apjNdJZqmz}z$7Sw_H(yjcIgv=ey~4k)Kc83~1|Mcq8h=l#hRYt9-rgA)a&$cH z%1>OZef+y5e&8XQy^2P2i5ob9)s6kxoA=@~vnf*(|I2cw(K>$d_nZaYdT;K~L+2xR zaMA)tT4mUmkAlWkJ6c50@BaE2fp3|;LA#;7DO1y97G{^TBh85!!VRep!;RSr?QP@Y z9NgfCU8&wYG}*@kTszGl_j|&Ya@~+J~OiBr>`$9KHm{r zQq)ruozjY*E$B`Qn#7LDN{VxI{^p(R>)BuX5ag<)bzM46EIfR+LJ%BSlwbZmn6SHg zsFbKR)ZSv1=l&{xa4XC(yj!;#QP@c4W4+LwZoL-txrg~h^>Z-`kvEL}ATsXeW_v9- z9b}BF$YZ%JKZu^=iLhA3-r*s;W+D0ie;6=uMJ4&&5oeKr)^!Xg!kl0Es}@}E+%Gb; zl_+%8a_Gp#TO1U)}3VPo2l(G7x#zluZm!P6EDZ zf5!Wnpu0v$oTL}7ha64QZG)`yzT$IHSZn}Z==SzWb>WX_*PY6wCwtZf2Wmq|6^M=ra$48CG(4Lhec%PnDgV5&MoxZTCE2S4h^Xu?5>`NrgHQ0M$=xt zJiwNr@C|8Y>9z|`N>XGGT;%TTVxwj^Hpw#Au;M2k)i~i~@H4LwMaVB-wX+?GJG?A? zAvoRJ!bEPgv&N0uaZH`#CUzQ&6jJwut1=435@ND!UcXptZ!uGu4rM=o{%B&^pzByL zKQB*-i0^WsqMbH~?dxN3TlW8aG!hrLp}X6`JGsT5(0**I5XJc7;7?HgR^fT_;~;wD zua$1oOQExRWvU3_Fqoz$k41!hz@8Mv|7B^cEPmw2fR@8;;Xe4}Q{RMB^mKQ+28G%@z@sm#+7m8ahKEz8hY zMU$bOAEaqAUCnqt21#@JE~xKuCy-t(G$8R_ApHZ4L<&n>mFVTEjog`#ykt_dmjNSLQob}TAGDirqi?I$al@h#*% z*R|`>z{Y3Z#H+V0g2^cyC;cx+n@LC@oDlge6MtvJF0Z9UOBmn5&v)UXS;cHG;KM;h za8`&aPUUkbeu?^#$w6RTTs^^EwMQH6yT2?3BwyI$El$pTImGdsn`>Wap8oH4Hj;0X zGyjai)(PxjCHXdW+sYLgS4NBK6|wJH-}kJRJZ2*V>`ZPKdT;~vL+lgG&AK*o=ElVe zMJ>qGeW;+It(3X#&}|tBhdE(%=Br1@GW1BJtD}oDa1wUS#A8>_BBHg0ZQ^4Z3o=7j zyyu((*x{r4-=;rqcjrq>x!i@^7tQxgwE@#+Ayn5AuD?3bg`eHJH7)yTv_zs}ysd5A z$&!L8c=%C!Q+`ExIpf$$stWj-hl&U>$ZdW;`&)=avxrH}rmoEX*cb&m{zg0!Brx^d zuJ?;@RVBtEvo3x42?SyYt~USQ>M|*jr&Ab*Z&Y9060f8a$ha;G7L#U*xoCR`9_LZ2 zs7z`j$L<`zN{3SQc>6l9K1PKWI5~Z>f>FX6v^G8w{9rvlA-*w(a%ti{EE2|^a<|8v zo;$Lk)t%dpT#7~(aF9F4`0P}r(}Q6M$LeyvkaYX^?nA}I1kLE4_Nh1c+x@Mvwzjr0 z;T4M73r3m0?|H)d{-^13_bKN_#alAJ!nqBAR^lKD}<>u(P=p;6Czn zJ9#+F@IW6LB2)36@BGC#J5s%Wf3$_rg)7;OI|P;%74;-lDrX>+BzYwNIL+WO%!^%G zYwh8wqN^M%pviDTDPI;qcsOC5^z=#gQWu=OW?U%oJ)%1C!ZGej2 zp;RXoB!4Xg1iT@Tne8tOeu$cDNobWvW3i^gS4$3wkGtlAOuKi|Uh3izQp7J}wW~G- zTgDm|G1!?K6+JNq51o^&F}IS3sKOE8 z&?slEUx$C1Bx$Q@n}WZ0g-57h;zN+U&LWEGQi~nkeZR#uI`!PzS|KyQaija z9}@5du39Fo8-+j`?aIfVzT?DSlK@q^oZ{DbBzosqw9S?=a;;=P5)W6Z6e6n%4rR>g@MXN?Hw^Or7BgFSHKI43KGL9gD%7%q&&ao2Z0^{wNb1*s`4l? zL11%adBp@30O1(pgdckT2+?$$ZY9s*szu;4<129!o()Y*m(RN9 zMyO}BXK;wjK5|M(F)fPx3Es@#9OOmdxY106)Cte7uDIrbrjmo6;q&)td0 z08{a$?>DykvUL>=>k`yFfQ_qFDM>0v)(e>`wzKT3z2%Om$85HHf96CH59u;wiJyr8 z3j_qJU&yXG@d_Oc@yfqO*(9y|k=N6lG{j{;W^*#XRq4`e+nInPR>|-Pv1&S2nT(u8 zhupe{MPn2_G+ik0i#hgaEjtXS_xtf|q;KiM4S06N{J`MUVq590s|+8!4r{V$0k6{c zjW0c`t1Vb;or;G_yta~OB`)LSy>qs?xp^$a@U%q~?{3bmuin&jiE{5SR>n(QO8_wv zvfeWjr2dLsJiT4f#~mav=kabkfgCyC>^gOymKDq=sHvp^uXorMz^6;mIo@Dol$Df` zkryy{t*0vKGk6ks(q56lVv*TuOyhhcXYtSQ5K(~j8_T>=ZI;TM zUspH66WI@+0K6S<$w^`!>sUIbB-@=d6=&ietBwup*yh@(6Id7{1Q^S#vePb`Oxgo1 zA#);I#h}VlYX$@2pXh!OeC+B(Q6W=0Ij^fDan1luo-MF|a@yaX8Bd&_na$W|$D^GN z6&rqfRkzR8u7G{Z{582g&J%cRpn=XCT_Kn~;^FR|J7PSx zgub%chWUx9Qdg}0`tjQ6wW}T-sS}mIlj8v69($c>_hWPngV9nx2MJBu?jX~_&Y^_; z?csS1Kx9V_*Z;a+T=u}M$3EasN52x@9q+}B+``oJx@2TO`S00= zXf7gFJ!pr-71c<2;$5Pl2(Yh!SyY)Q(UB%i*;ytTSjg0Glg>v$Nva{KJ$wSp>L8{h z<)2xV_F2lhmRa)TY%XV118=^a)03L4ImAUq7Yh1v6+LGZ3xQdgu;ANU3lT=zv!)}M z>DvwwqL}z)rk7IbwFQz4I!|X7D zw@MhbLT;~1bFtj$&>u1dTzqYrQj(H$E#JSJvOiO_Z>T;vUuBh5AzT)sdq+)+(EVK+ zY3Obd8eq5Br0@YrVohYB_8;M>T?;C3{L)?4UV6&=O^#rs_+Hq84dN@M z?`Y+ug~rAOKB&C0>J}oUPgP%-g*(p&fhOTf1e`uF`EF^Sa2J^cqd%k66<~4is5@@Jka$`DT z87!#Q5XXg9LeD*C6ig59E6#GajNRCHX*Kgwy~$g)+!pfeAoupQz1th;Ty(`c_=Ti! zT$GG+=PmT6L!W9xOM>)S7b8wnVIERm;aSdR+ed3-2jmqpmtsM8|gNLhF&GJ?jzS^E(_>`=@t^(N~zVF$Ne|CGFBzL-{5DLea_ z!n$!u=MU%1xQD{&-An3|;Yx=(F{}m6ziPsp`Yn}Jsx=~bdSVjEi9Z5M2V^{Ul7$kL zT&a8}n9~R=d@>y&3VJ>^6OQQa?gz-pQ+v1`vOY70fDBFMp?meVeP?ceTWemUs6e-m z@8*M~@}>PCg1h=Pwz~Ry1WZ{uRnMzSR8=#fKkEi9XF&|2aA`>g&7X+kNp}ratNc+a zD{!*X>5ha#12lHuk)Y7jRpv^q500t(B_OGV_XBf?_>6+4u}o4`B^^}xa*wV+hPd*Y zm2nNQJ(KWU-d3-rGfH6Q>{ph^NPx~Nw+L`VP;b}sO22<+2&i)3Vt0u+_BV7H?J?nr zA=u9mx6O|}si6#?tLBqSDbwVt*yky(4@;xuj$ut&|$Z$;Roadvc;&0 zqB=dqMN>u?Q&J%Ai@%8<9uiP^!rU5f<+?AR$mt{|CeoEUQLX>vptakR$CZh`u}_)DK8WxL=44oF>r(RHfJztm5cIrdOLE=HmOAGWsfPfUQdXH|yZtA-=5#_mQ#@UM{_`tzbHK*=@olkH z!u=7){ZB9lyb1ca|Ef|*;D%_)_lQTv1uw>me*Szj>MvabW5l;bu8nG@Nqa^Rrk>)dJ~id!&tfJ6C@Y&<(b*XstMlLbnUmwCH^3R?; z2nVUE6C)Dfh#-14@7iQoM)O;=aG)rOPbjqA`r&FZbp1_5las9*Y4L0?1NEU1s=|sX zacZLeSLq~kee7Y)+*cc#O1%>9;@5Rn5}(0w6yQ)iFyBYSetVl zw=Sb%0F3<7`|W}<9I039l?s!U6(m+?i+#ge57pKN5&*tHmg%%AUbS5yNOqt;etUx?0umnC1Ql}))XS0$)Ne>Kf$>6{y%^J!V?XI z=g)-dw)w4@W9lko|G{S9d1a7FSwV+7;wLq61+&3Xp5U;j$O<5aHugKavn!)rTQh1t zrI#NuR15uC8TE}Nq)P=M`}^T5FaibN;n6^HK2lKW_}r0~H_eUp#6Rk;-<}^#5bJrQ z-Ry_co}JXo*quyCl&I33wQi#BJQaQBGyi_TFEXSjz9$CExa#LC#?=21n`OyhaqwXa zW${I_oEv8m#C_+DS>?P#mm#;l`{8+foq{0#0qbJ^wzALP_7fyj_TzO%5$c7M;3joe zZt6ebBRXoHo|G1xRftB9nOSEFQ2~JkAC@}LHVzqCSIlygf@+KmqAT9(-McS(@86hG z;7=^PRan1fWkC&&Y`f0+fW~x`8g^zu1y#|x>aBz$`_8$(g*8gj2;!4~XB)mG2t4ac zKxQB#QxkT#ciW{V{oo9koIO0{(K8@Z-T*jDGQYu{PemEEw-{Ua0y1aKlJ8?NF9ikH zI;9k<>oRqA?T|W5%Zd;Yi(B~SW~1k-NfZw$Ofw%|W1KF#F(^`o%+K4?-`G}cuZ(EJ$6dSpdr}^z5u$(N3vY^%y3#ivWr@}apbH6dSEhlb zVgmAkUt5(~5}302GVlXZ(e%s12)#g%e+}F?Pd0Gb5m;>1R>? z?S3}x;i0nKWa`(#!l%_cjA-BEDJB_ssSk2}(pS-AZ{rHoj3Z=zX!Sf$)hHCqBR^4b zOS|?wLsQbu#~{Q)@>3uU+f{2$%TK$*y<@K`;&7nOeC$DoCHk_^`UiyeBi$B{p z{65{YJXC@3p7^7gnX~pE;AGEBJi;b2O&&UOzCavfgup%grez7@hRP0@u4U(#X>xzD zNo=@K$YN`Eb#f>-`#JpL-hsz+8w&?)iKedQuOGZbzWV|Kyy+RJI?kwrTN~e?gMzq`^SLh$xOv;oI-O8?fBHYbURK^YRpQgEo1@B(dmvM7QOjN27CS%87cCC_8OXx-Cu+P zl#_JXh)I*xhoYyYz+le0KaI89tYd}17hoDlCGZ~LYVoS`<_DKbpUqDr^a-sn*^{z0 zi91QW>g{^J5(w$F0n4r|Z>4>|Z?YWha~sqpjOS9)JrDBKq}|Gta^L%zL_l~~A$<>q zx{wnbbtehJxnYTMIq4!sfwiM_lWs#lCW3>4?vDP*%nT)zS-C3Gu}J#CyuGvZkiUL~ z!Ct@q*a3YeAME)i;$B*vA%IZxVhklM!DWZsvF`?l8H;MpEJKA0-;h+2-1c{c!W}c#K~#Wu-i*Yw+o2 zI@ZBdx<@6bX4J`g%xzpjHwEtwdwvQB*>#4yXA8#IS}d@C4fsf|Xc!%KA!re)4#N5> z9<UGKV{S$pqcV+P^tMfHJAFXmG3$$C-%#H=Z``>DrcpTdudb^y z&kq(>DLq^@47GR#>#JQPECdBhm<~Jn-O^@>C)F_oA%2`<&Ai7Qy-rP#s!F`Al@%P6 zpKk?70rF;Zrt@A6xIio_HN|ZOH#POdYv(N)sf;7$5jWhjt}dtF#gvFBJSCY3NLvrn zDxE(Ft@(7eK4+Qd@J-Yzu*Fx`c$=pfnQiPj!cEkJN zC!GO?mGAE93XtaxIy=)KA^XuKp`V?U{%xYpi1}|802zuu>EB-zG#V z1uW)x7TB&ANSzGpDgycyW}QrIA4N7u+lR3j^j~AIcX!wq0_LSZB6qyXOp;q{N!{&e z?>4$W+pHsB)VspaE@tB=J$ifLMQNM1bE?&BS5X76v|-96ZjrK-Tel6!$o{z(peVLZ zzrj6%o2GJdL2weg^D8@MIfK*zu1iHj ztG~`%!td?fs@nTBO|H~%IBcg#d0{as0PNm5rj^i{|MBDbZpm$1VX^H%K0~i6cxh3T z7{Faup~s82Kk0e3e!hh4e|2+pFujrM5}a7 zeTa({i97jc_ur_-sfL9WRe$MF_dlDvO6qnXD>OD70O4%#w``gP}K)hfnjUz95=<&%_vym{q)hKb^E zGpbmpFY|ohA-fTF5Sz5eEr5G@h~{+^j5eq+y^S{vpNxywKpX4m#2yZ5G15#=%xO`1jmDMMe(Pk2uJ(shP(xM;%ok}xq z&G;g2pGHOW{IHtsNcnM4OE@q~sZ82~HD=WpKz~D6lO;Y8DvO)quZMn`vK~-L-M0fd zAve9D(2sK*uG?&}36z9Y7B-dYMFzt?tD?f_a8Gv!CT*7?Dzxw3EDp)ZDXS!C@K8el zk(2{jIqs+75i|SnA+LxP-c(7jQ02r{EkCs2l<1|MTHJI(QeJrxqxHZ*d?H1<$e=}J zJQM1UoP<+Uus({N3{o29q|rzfedgoM$e5xC9AIfrrMdlgAM^A#k32_FUSW5KgrM(L zewz1)m>Btk!LqIz)+=6Zq;k7TB@ff^Yif0W(Q1=m1e}PUREGQ8PHyp zAUn&vm1ZP#S z)V<$);S~PjR$DHbsbKPZ*ep4)H~{L3V9#6p|9~e{*sCazaO}_ zOqn{z0kFw0XR?HZ{z@CGvO;hm)HXq*cRKvJ#zXP-@H#vg$HnFZy{ zj@*a4@d+#i9h=B?u);@xG+FxDUKOvS=7a*sbflo|;ah{9KVi3#oE(3yGa7QH^4-3u z?Y8v9j)$}V_DyK2gt+-~!<5W-z}m`@juw2yQqiP*ZFssIm6`VXe&9&$F%`r#^B^PR zYmJzDY66A(U@F850caB^J*I<$W$3J&_+=Vsu{T%5{&9Ef1kzBaE(r#MA(x*yuh%o9 zzs+kb+*}{$MZf?l7j2TT6`nt$^4{0m+4HDXupNT0Ps-+ z6iFI;ozEknts|?6T^{wl{IjBFXG2MT>R$!;pD?%pzycCo>lxfp63`Lg@a!%bu)(h7 z0tFh;-83FzRztNE&s8*5>JGuzcYw!ES8kh>ja?Nia(gR(=xz=|4ZW?iWWYzsOvvgW zj+=R;zdjM$Wsy{=t}m8b7aiOIqzFuJE|PP`Z7Z(24HI9mhh;&Rl}TQ^XM_D^Sls}w z0qmxfpxoI}wOU~eoJ;(znPh5Vn@P~f-fI2Q661l_A2&o|+c!zt&cBFwo2ZGC@rL72 z0?M~u^|Jn#bOA1><|pWEHN&N95w|kH9gK?11U?2}ZM2Y;@hM=Tryx-Rm=Y;>bKrBx zD9NT^(SOd7{e1MCqFf!-BH%z^c=Q99A5usFJkljhLInw&o*FsYw>K>ZhrY0~%8$*uaA6Og0N-PQTI*fGV``O=*{ZAsP9vJrChlXq`);M1d0d&PCZYc+!;`ESW<R@sNL-KnwW4m?AETixWfKMtN+8RU{iLR2+x+?4bC;Qy zRuUVUksvQ(K2It7|pk0!z#rhzM79`WLsGeU(g@BF#guV^>=D+>0)x->TYUhU~i zyBL3R^||i%UAE`2SnKY#h}*Iroyb>66rx7HI!CeX0xvJ`*u2BRI2{G4=_S41MZ)E& z&i+L9l9nViiMD3(yylas(lF4IgoG0$@OHWG*=|3+i5Z^8h$uAcvCB8!89i&J{d8k* z6#RZ4DEsLZCq=XX@M&Cr_V}6jAy zlCsBuTN-TY8cVCf_`-we-@lbtA6kr5)31acILw=%H;-ReJ>hrV;V-aFa2*_^e)v{c zRP^G-iz(pzt+2MOnc6D2;^BVryeCn5ErfVrg^E>u{`{rmDscY~I-tAe!Ckkzc0(A9 zad(82_rhiTSB^E+jj5*$_>m+{BqABBpyY~tC$F);z#`zPiJVajo%$j@amwDG|Q+5FA!I&K1 z`_e)YZ;X9f^DFno`?0Yxr3{FxoPmhR*jrJr*T1$-PlydAol*yju2IJaqg&@##UE;{ zFLSEh>_`6@9jU2@@PK?zM%`V!3(xeE%kYztCV=r?-2hh|Yjl)lHF5t-EnL;6RSP}c ze(`_mO4Gm37;p?ZDH;G>Dx&87;2hNI+cR9kcX|E(A!mOXneQR$8fzP+W3S-}eNJ1M z69dx3)$vrAoI5wEryF2(X@T4igN-#`+!cTJIgW0^DP~a!U>xgz;+W6@Jl*WxA~-+2 zxh|DM;2`9O&H3-%sG=mfj4l&dPfsV4#aegu`5C7A0|d-iRuC;@_Sv;4wbJ;up{I%p z3m$UhAdNRX-e!sfbCVhx=8%w5==hK{|0MR>SZ3eu6*Bvaq(u{jDv_5gN&kaR|4sD) zuu1kA z(W3efuIDvLhXh}USxW?NE`9j0@ti_~Z$lDcl%J>=60+4NguXh@ap`r2P(*8l@1~{H znEu?0kDOUbYF=w09u>DA>SP;kWjTdN$vK&9^BS&vMd4&b{9%@tCo89$DB4@*TU@cn zv4jD>tWm0i%H$ih-Zg%NnHC|XevC%sIZ~_Z>23}m&-uh4^8bCqL~`vlHj>};cR{Fwa>`Gnh;HG8Q4x%O}g=5ZL+GXn`L*1W`-v# z_-;I5^BPW(O~xYure__PIfKV{AiceJd|e@4Z+Qe+rM&}SPxK`5*lP*VwpJEA>00*c zI0=YDAffq%%>KD!IA&QpjAq_mWB|<0a{cD?N3(JM57D(FSWNs?7RY2b>J~;i~jZ@e#`V)D-ACTBct_p{~73IU>%zi zwH>Biy$lTc6(*mB(FTyNK$K^a_iF2!w)cMqO=h{>TeyH2oI6`&+jAt?OS{v%hM+5G zo{{RBuJV*A#Z}^l4fUT&LNY>b2==SYSlg}NIo`~kRBF+RwY9O~tb?qV>v>I;&cC+a zfmGC=fN5cW8X30kxo?hjQzHcpAU&+Iwn4gFtj|NMysvszDVFkn?g9K6xQysXB{n5V z;IMAGLSL6fcX-53+1AXeGANMV_*bPj{-f{9Ti&cw>t<^RI9$S6oE^C7ijvJ+*<+Po zd7i_-pm5|bBNLO{K{p#%!J{d0e7+ldI>m(cJ$1FR_F*JZ_2OgD@n$3mgvGQl=cnn-xQ)%W(=p~7K734tYE*_E4O0i3i#ctg*g!rlfSuK`s z)nF~Tr|rQOFj?yAhg;!AQjOceG*XIcX~HRlo;r7ASHAllT)m0uQtOZ@WA)GI zQqBBrk2M*OAVNM0WgkPuCX=RI{XH*?(8*AYq+=cB0$o~b3V75;WLs!2p}9m6NKK>F@B<9e57v1OoR295$YcXWB*@0C4_NZXiLr!Xw3-n-SU}Jwf8=fH4 zqxB$z2UO)y;s?W?V^tLwkIe7H-cANwe_pGwEx-uHrAWlhM^`c2anoMV zpv=7ILS4urH%jZ~>D zaYcUGIo-v)6cBXZ{7WgHUmJD)FQpIAde68+Mr*E*%@~Oym#$p7^MKA_lBVjk+yB~drJH$R ztdNDpOeE*=;j`Ga)b?wX;QNJlyz@7T^)P~WDseK2-5$@^i|etz_uni@a0ODW$2T_g zeY<3gh?9Bm9mT7+LEP5x5qBymx0%=uu2Tr27gDg-LKu`UvV3UP8|zS)9O+5%6nFQC zd?2N^;rU8iS(39r46k$z_Pu&zb5qk1#(S_M<+`umUZo=|$>$VStNrAslyltQ$RTDy zt69mHDJgS7A29u0BDmRy2k*D~-|Fe9dZ7Bckp0;Y;Nc@)Jom#J`Yx-oaj`6on>u>3 zWtONc^j=4YL?XELwYm%+btO8obpu{KN=!@?Wc+z`aSZQO%O6FFVoVVK26x^MQNq8V zf+~6;`(@|OgsS!h;JmT1yUiM6(4TYstZ2PtJJTA7y@&+_3;sU^YU-sZOGjBnh~{gs z*0)j3-G4&448WOy7G3S;#)M3Mxuv$k#d38#1ZEQ7V7x6ue1oe|HAak!lS zXXxp=J&ioyKcR;$S}>ld-cPjdn=Rbo1lHs2f^jK1K`e*&w5XxU zPvMAH=ys*NAI?_%`yS+-g0YA+X<3%x@!noVk69vaPJ=vK(AlA>cj!-U6UfEp&V)`; zzfyHoXpzGr)tUwUTo-S@V6s#l^80Stv{FKXqe8k}!z@G*TNSV7u?AKxYVgi}DR6=* z*;Zo8c+>Kpw$!UgSEt%k`i%S^>}YVs&WUz`QjR0OVWjh!JWJ2~0AFlL!H-x3mSGk5 zUu$vIdaQm_lT|0w^90Cz()Vi1x6U$)8Xy1z#wzFE8|7t=f7T|Nz@PAW^ZiQ00|PO; zL?U1XrKHTO`eh&S8}?w=OwO07QRIE$uLKx5gl@CQ!?L zQ~I#NIjobh=MMq?cp!-WQh>bDVX4cP8_?rtxpw9)$GTfMk&EDZyPO6Mg`(&}hpE42 zie0l=`DH`#A!_wo(x=S&+st&ESes^B;{4klZujC`5Y9bBzNPw$Q9Hyb5C)t^v8*f3 zmBZdIpL~MGqL0WTJ`k0FTkN6@YTdr;d2M`oQ__?7O%Au%aNNKa?X%3AzcX~n$Ox?I zp_|%sXK1|+WjIskxjl8fx#^|wi}y1-QBDvrSl3YV0gVsR_HR}W5T!H@87nPCRbO%NWzc}rQ&457P3ZHKDQm<4)a86 zpBsBFtr)S}Qn8QCRvwx@H~kf^XZ>P}j5B!1cGqO{LiVeB;n5PvrY5M0lnxt<+F=%(Om>5$q_eiZd3d-wbAg#Jttt&zT6{4;{Q!Q zZM+a198>RsXe+n2nT^Zs&~Bo?3ler;=n=6gY+~xofQy`NvJKtib6jb@2qKG?}9Z3FvXMOzQHU#~P&hlll;kIeXR-5dncQpXqNS30hnE z*THuwqVl_56DwaBTfHD5evfD~tyf zE0pJ3Sk$8cGzd?)S;x-F(Vr>gr1@jD+?v{00sTiYw-f>-T@ua({_P3Xhparl$t!Pf z3I~G7zIgP8(v!6U_p-t=roq~cp{vWleH724dln}_Pn{G(c##sCD{XV37?dgI)|%qn ze9Hrn8Up5$a}b}I{{B|Fh4J6JSQ{8D5MciDQeY&&QZPvy+UxzDJLG08 zQ45$OzM~p2!z*8bHXWvR*o4{<23wd^guh+OV;H;DDbMaG^?jI#kM6kr=BHC_|SOP30wkIqLP zk;FE$2)3sO@F=m%?9Jmd!1wy2Eyt=o``m^ygEOH*oM`R9(0mh+K}lXyKb#~u3G5j{ z^>0~pjG6TXqAnnSqzh|HFT632_yJt~IrqkrfydKtq}swwdAmH?;ISZ+L1z`G&PZoQ z)r!W*QS;iI(-1z?B+Z$T{yLYP=Bv%UHoKF*bJ%F^ zROl_Y2@_XxuF{1CqiyfPP=p4Dga__7*#Rk?WUcW_nQ#(2M^_MtL%4U$iL&`@*^2Sf z{9C4oC-I3j)n~ji2Rh|7FG`c(}FXEamDPaTha$jSLwzDisln)=VOO zX8TrS{JFF*4L-|!XzFZ7w56BcXa2!gX)dQnjy*dN$C>l^aiaKS#pI#|a=z4YXK0!^ z1NoQl=*pGh+ee3Mq3Iq_G2r?Tw1!%xZp$u9$lMIX)2i&xw!6|NP==w~#s=Sh6Xa-9 z94}^oV>=c0k|9kE>oh{8@bNM|D--tDmahB|D{9ngi=KL+sL=#K@UCa|cLp(?Sx~#w zrRDfy?ZUrx=RA_U^)K<3?i|q4CoR~nv7&`|Xn2pO+fwJd&z~1}Ey(m2qRsGiVZ|>l zDmM35ttE@f%am?ySeAW*hQLlAikb$BOzS_cKCPF!;a1K<_`pX0;-I;s3(5N&kCe|T zTzJuc$J=B^NA2aa&oOcw-~`Iz6Q9XMWMWUhQYPRvfUDLg07f%@NF#7cVb`lleA0Cc z`2sD1PFif++Knm9v4H~@2wb@#`^o&3GqpvgMn?ZGy<|$ve5^zIxEcR!530&Qn zTtiR#uGr)veEiKm975@nJ|(b`rTrE>YSCJLA{EOs_ji#Kr4rzOrGLc(6}Cb zZUA0?o%<9NB!@gb-Ces6&fD(U-qXFeDm4b`rHvhF=5Pu4eT%$R`N~M-YWX!@7hbr7 zWHPrj$Vm*P_bsDpagA%6z=cOjZKBJ6`-xe*ST{$WD+w53pn9NaKAE?0e*d(d`}ynm zH#PMcA>os+(w&wDbhA~Dm*=H%7%N+N+WRXjLKC?Tch!CN!-r+RjC#M6?t0!jEO|Z5} zeWfE=Zr;Cvye&dG9_-Lj;$bFJ*aoeraHZW9ku;JmcUUZ`-1_|J z(W?XHqeZ@BZq`X($#c?xr5v`ia*!vR%Qj{8&TN4kiEMN8v~R1JR~RvzoY+%*aS~QJ5_7-46Jsr8z_sMdwA>3>oMplO^M2INubm zHi%=3yS{9-o@z!zyRlti5U;21G(2IJCR*?YVxm+(_lXLZF$~@4tCN>C zCM_dTWoM;RJ#bDU$e;kx?Nk!?dVCiVhhfcxJm&ir-cb3n#_{#SPZ43xlMHK zVY%E_xoUb$OO$+EXKgz|TaV2@>R_)NUj)U^*}vPjZjjktPqsfEOoqd!b^7tpmpUo+ zz<bEn7ys#bRm6k+rQa&CA-7@@;^L-+Jv;aX3m)-yzZ$k{ zsFT|&^4XynEU6KJy^IRkb=$GV&KpghlWyLy)K8SqJxOchHhU&V_XdCy-(nhv7JawO-0 zNROUTsnTnzwULXolkG%7*4VW4^tH9I`h$az?i^eG*o|m7X4N| zSzkiwr09-;anJxupNFIWks0vS<9jg0lXEm=>~Ezh|DU?PJRZvL?O&<1S=z{+kYo!n zgi$HW$jF}TDf^bS!H|f`+StM%B-v&@)-i^Wga%_@8f!9*eH+Fww&zyQ>-T(K-{14h zA9Mf3oamrlL3TWPU9=WXWB{Q5unYMod{s!N42(N#I&0A~)(xfd5S-GlzR+QK;T^)FOOt z9ZXonGEA9gk0!?CY0d21*Mr6h66e#E^DIGT7TZno-OMLsjnbL^`z!$9R#Gg_u&~Va z*F}yt2Oj+gSnq&GF9Uus`i}n92m_Zd6Aj5rU1}%`o?fWZr~dp$RTtIX=q4n zE02haX`rW9?EacY8>$82BH2E#b~kz4HyhH+4@@!~LJfTvEJn`}U6-FBCmfRb-hF6= zJD8wS_%85H*Yl*Wb_;j+4LC!q6=&!HmQehfTB}E*+oH3)pi4t(S4mB8h>drnCH$SI z?!yGXrZis58;-NK6@JyT&-O8~rfPoo*^`&B0r$PzcR77l9nEACkQs?ftwSpA-Z^~$ zxo0JavCRY>^^IyykJc)9q6_WpomP$@KmEw^z2ko01dUkA-gS%pz`I_bo8e05Hl!)1m8l~tH?=!jg)E#@Vi@8a)9ySr_{VNkMRwKiO>|KsRmf_R^!Hk2*?_>Tkg zrHim$y~s))B4>7rD0Zn_;CsenoWzzEx`fA#IN~q(E_jPQc*MX-Qlq-R$8Af=yYbPN<7&JOOqGV z-J71+Gx4?y=?wp4up@haw}3N;zFC*h%Md4~u*kzaOand%1Kmxi>95VgLe*LZe_-$y z&5}1zW)!5bezD}hZ~!Sk1fp06QkNHb0y|6(R?Fd&01Pg1d$pexw5Xzk)zAO)W~+fIF+10yn>zmDnxiC zBMID$RU9qCK#qR9s$VpnV^bqBm7~>HCm6a~W*C)Z=*-O~d|u_z`qhrjXN5VBG;neP zfeQaNSm zdg=J}V>}nF-D%teU5b8+Th$|HzH6#Oyx)v4)NzX{t3uCYLxZCgzvC|?lkDpvDM^hh zPom&I*A^KOu>q-Ke@yZLNs8BM`oItFD-KQ_Dy-^g$Jnj4*6Bz71Q=W^+nMY;)w~C50%C(cd*FQ z1+IHDefpxU7dn!V>1J~2v4Uo*eaKNP{XJPsAY-cV%J2?hi6sm$*tn~)Uoxn;x(^XP z(0$`D)5Kq7yAi7~VyMA<{K)A^rk{3MJfE2g+;LBYh)hi9yKjAQ#RZvoPmU^sL;P`8 z0Y!_$K6gU{xx-k$B&fium0=-WoCG~RM%y<6;Y}VaMOdszRO~4+ zw|?6%po5^Ig}Ig=ve`Bt8nUgA##auHOn|f9Rh*zLDN@O*KRDv%TR7NUbz`xcwi-&D zGDv9>-`8gaBa_wROKg)$m6LSJN8n%2B1jscg``MT^%1_WXD$rv=K|^EGfXjSuZACEw(^~harow*H4?>C`#mpu;o&x$q-y7KXmP>(gfp9%9sRyl zugwdn6?NQ^@wKJdymk=z2sQC)X69;C?{&A$ceVWd4A%Og3wGe7$LEPx)?N;ZChJ%YzKIPu17Gx7^%sO0bkJhYoq?oAe`thKc5)9`+7}9hSFs&L^?|`bnO0Wtb1Xbn@Rt}pTh=T z%xc{)e5&!*yBZZZ6Y9q|74SOI)M?IbUOs_HHVi;pCDd)rOE9JeXT11h8q6E+a|KU!F4tGh z&!0nxbyzOt4<(z(nNUGEaIfG76n@ga;MvWonS8F4IaAi5-%B>&A3|G1vutBX;qify z5&CrKh?BInF;Z;nO>5>TQwk8Dz)23)^T5_9(*dIfghu|DuwzKvdNO|d=kUPVdVJ?~ z^v=SL%LIr*E=|WFREBB%9FQxNwZVw9Yl?|n=mClR{<^*EWmna{fbe@oc>UWWRf!Z0 zUCMmeHutINxqB`i+W5c~T|$}j6tTHgzsHg1JiFX;46Y)4*U>4hk8^$yAE@i?>?{;} zZlRYdrc4BN@yR>7y7d>ZK6&!-rq#f%Dg3Yo_2*E_>IX!#zK#bTjrqsxb_q*%erch> zv2t0SQp7~6$Ol)YNv;PkRD_vXhh`LHcn`iQ1@Zg9(eA_=$ z8EZR!gRlitu2aZyp@Y?Ym5Lv~;g+-u`_b4l7_9HTn+8YV0^KNXu|&q5P7*2bI(=f- zx1JoJxPU<3%=s}U#qBlgq*{VA&xX7+eyHfUss02er07{TAd)z)MsNV6u^A-c$c&!V47uKFn=cO9qSOIA=VIR@9)3*$y5g*EKIL~Z!&`Sy4Ks?|X=?CD z+DQauPiLMq@zY~GZh<9M2t<6VEO{~ZQ^`K!DPuh!fg2v_AhGfFnpxGuwc?fB-1;>> zPo1JQXW5@kByp=s*J|0=fh1gu3QS$+D|)IANhl0WUY@|D(+ZY>j%Wx+v-?R%B=YLk zmSgJaYKm00nU06zF{~_*s}waPTreQ`v+&j zUJxhoUI*wzHA-OI4|ioz)KzS~g_~K`qHW{1T;Z_U4;Pu;(;q1APO7>#SGeoNQrtqf ze(Dk`K3&kxQpE1pXaSTI2##Ywt_C3IU-Q2ccMfs=)7XwfyznX0%z7>E`Pt$BtcGXmi$O&01wX#v-NBy-NMc@{wh3?YRV=Gq7vkiuWw zr^rIOKR(}7;qjbE3f}$Vh!`1JAJd0$syRy|43vs^Puy$yMx`*uUac|iqvJ7i=ROsr zPV0aJZcnIQ_G=TS{L*nwV|@3qLc6?9)H?Hh7`KQxsN-9|&A{_8m@Z55V5tg1MFppU zga1Mp@v(JE;L++=#OS)<&}Z~NH1t1=Tw!auW$(8CvhraE;k!0`>cxSFJKG?s3-!;s zK7s8o4ObNhGR?2en^94(5HEM!2#OZ_ylM^CA>vij?R0X^f_R{BNZTd)Rqi`$#At+t z#iR9#uAn>At1N25Olo_1`&Y0SoGukZr&$>orwGu~(h=YvMZHvrQw0%tJa`vEt=YUv@Z51K#nv>h7WL+xxp0AiJ6D9VY7pM~(zAw8aW~CRdW0S) zdEXLGZdh@KUA-wiZq${PqTb_tjN|aIMLLn-WKm4MwMY4apBB~pw zLqv>jjui^8|A{z{zcBJQhc4TmzVSiS@riDACmgb0kG;J=Qy288oP|Y=Js~q$8nz#H z4#Cxd{^@>F)6Xv!5g^zg3hVvl7Z|`;O7G5ZAMAb1bj+!!hs$GmZZ63(boL_|Kkni4 zuKeZc`saOcLPmpXQA7VPLy>9XqdO|eqfGzq+JkNO992#7yMNLYcNRIsSb7xbU zic0Jt;p$?!_IWD%Vp3hr};hx9|32~gVCJ<>=l*{cY9Vy7Htjo$$?nq#p1;3YN2+1#IFoGs! zPf!DVM&;{DKTr(_m@c|aSjIs!T_!K)KSbwm+Ih}$Ac~O~3=s=SPEXZ)p8Dt}`C&JP zqqP0l4%x#hk6hF=EsBv)t5J5PTKc@pB@ilk?`YVd1?Fu+r^?9`ivfhu+LgJZhT%W& ziGG@w=Qx{!N*(R#b?Y>BzrQqGZbgkDY$2w*GUvkc)=O1lA>zp>k1^-d@p_Lj>!;R& z)C=4+_cNflgOQ;C84q~;Pb^-qD~<|)SX(RWcn1Zw+D57|<(Z=nMTyya_db0>!v;#FW|w@G zkeZsU&vCzrdA@GBO{7zlCy$omML~m>sXM@{mqcNYvznMz4rsR4-Mbe_i=eW{E@cr@ zT-^{1<@1u=MZYr*(mu)&;HpFn8=!VW)0_j(;Krm$s#fTwHf4g;kp8@e$F7wR z@j@3~oTMxEAnq0fn$H^J^eQoECUsoQtJB@A=nZlTU)@Z9&YAaT?J8WJscMw%S+@;2k~6B+CXk~ zr}Bo%Y=tBWgjty@yWg*WW3$j7aBp^QKv<5eQ~KS`K$tw`GAvoYd@U#imdCNy|1w3z zOeBh?Jbp{0LnTv1qW|}<&3Y)qLHZfPfajmaA$$+0{dM_FB4@42dQ>1oBr2@^_k@i! zHYZ1?ocOS`DLS+Ep*IB5YdaD`=2i2psVy4bYN7k7@WIk~MTSQE!+mXnXy$|yK3qEf z&qPq-Ah9N-<%7ajn#VS(5D?j{>+PCJtBC9nXv2nHc8EKwP1TsKg^vvPpmVO}=;*Fz z#$UdiS681X=15_aEsSqr4OCr^)Te8QJRQpmFU98P>xt)|HPO|zxKk}Kk5t6Ju#XPy z`NM?&jbIb90D_TQ^G!l;YF=L=o#*FTo{Eh>je(#(U!|{BWDJGw5|=?bP(mARHRW6W zysNDvv^TY9%>Q{oh)*A%bPkWe8D+(Q=eVikV}n=Jf~$-3;6Iv!R7N@o)fUsD1!DJf zr91T!k^9;?uCGI)$)NXi+ODD0p57laEoD7O_gTynY+wWp_J{{OQv+!eXI}QdC}I zipd&2%Xx(V<(tC5@6TJ0>_+12e|OtP`_k60<@X2D8dJqu%p^~vhIoJ7JFItr9RHq( z2J@o1MGe)u>jQ=ZwgqW*Vb%Gt`hun5dju;G6k@&K@vEm~W2HwPQV2_KXA>a#6;vDS zdHA@^a!x&}Of#Z=sE_EE+_=BISWD^l$?q?fZxz8P%oNLLJzRe{?Io;rGwV#^yCNBF zj(5z9I=QGw!iNoa(u7}CRM~F$B>dxBU0b?FLhk?f(|;oK(tEG7 zLL9$(W6quI%Iq#UAF?*iMo7N!igGzsW&#mB9fBs$RzL(I`s>c}42~?BX1^QtU#uZV z)LbO!I;84!cKp;kA(wJ}Im>H1*V87>s<06%6cPyi&>GQfi+VM|Ey@enEIrMo`{@;!AJ&Bi@gx@ z5|hvf>)(NE(%OA~iWU4hhy7=b(*>Pd4 z!nMe1Zz~%#-fg2ky||Wpd4|uqXYKC28S5BS92+2|6x~FHmilWB zkZAzn6J96F8IAur#BdZ$-YI)lTF>}=g8;CvfQPD*cW-V!K1XXlQqe|>s-0~S-T3iA z^G~(*@4_;q^`evQX{@K^GOX>J8^Om>U%>6%Vo=;%^Sp;dzHw2lO@NB5TE>PkWWY+< z5n64jCIoAggcpzR%o>SCv4U!R7SoU3kktI(W*DZ7ebxshbfGOKTUq5>HPkC0@qT!( z)grPH7hZvjAYOdD9(1+9H?l9r_U`{NkV2KvyVNOH2VD7gswm@Y{{G$`VE;8EO#E`W zo`qznerNj6DXzyDl8E5`0{>c$c>B;_Nm+iw*AIdkr@tYa|5m2B^$khcgTfmm-!EVH z*xY3uISjOTJv#-=11ckc<95U!_2b{w>Ys%3!uG39#I4u!OA84|&H_)z>kEsj0@s&c ztPG!OPc}qL(10g9A6P0>9p|2n{a%wh%iuW2FNUq!s3oI5sUW6u`PlB-*)g~?M%H2X z4Bj{gX2od|xKEh+td691%`1o%D8UUV%CA!zM{)|PbYu)|q_$p(O>4)+#@Y!oYhDq$ zEhvZ*7y;x!ix#*hN4I1fR2V2bUHzlWS1z1BGVQ2XS7i4&e)+3$d$+vpHz$kqAy9|F zOq>r+1RY$`yJ#OZhDs`rd`crNy;tj=MvW>su03P-jhF)jHa&?x*9|E9deLvj$rl34 zVQdvoh8L<9FykE0-RH*^Wo7K?FX^7Y)m~EEJ%O%}``c)XjwsIh9iNSd_@2XP7!3)? zUqIN5egXCnzYQS4B3p$=6SXR?akIOZJ>=}jycU{m<}B}6j2cuU*4Gmeeb;(L3kp(e zsWA>LCXNM5u~40!uJN88XK8QRoYdNYiq&E@zX{@8tcCK`d1A&pP2QRHfw7#q`@ge;h)ZkN&J9B0jc+$Mz0o@y0d)z@-`*U} zdQ<_6jc!B*oH=*S9h#EL#g2RAlNBDNpT?dE4l<`Qsw94-a@?&A;zMc6mx;)5#6$hz z*l_;s^#ZhSGabgV>v}sKf4FxqP({Y^y$pEcB4Ga)zXR6BabMCdjeWnzV~RSt+kt8o zint{vvGe+1S-t$^>;Fhi{rL<{uukV3*2EF_(1n>jkA>&>Z4h4VDr~aj&5iFIz(oZY zC~zn;R`IrNN++sggTX$&LtNhLNlxA@ZmpgBAV5dT`sJ8+LPCP(mpT>UZ)OPb;NJss zk9v4n58&huJ}`w!2Y9&QHF=|K!JWab5ZSw|YJ;aux!GretP>n^A|ovTgk!qZ{m+Pt z;F2n;RLvENr&ZW=KWO3{H10UaB$sYrm6jggVrAuOcOt|@{rQ84mrI>&KE1<%7Szqv z=F0eaL&HRo(7k3b0RX<-XB?M`WG0g8U~6my^k5co(?hb=LVf$yZoyt%xwl0I_$t4u zKh!%<%0MvligJUY-(*R1+pj3^lrX+OsSCpDeK;2`tIbJ5xajBYVfbD;bBdW4^Dy#{qk5e-yQjP}(KYeGwHgcUy zR?r(>oT6Uq^3Sh#v5^&GM|7PJ)EA?1F{+qE|f15OXt1SI?Ssqca{QI zFIVVh%a|C_^BM&3Dk!~) z>gCv1BbSfS7W>43GXA(JRK{Sskte;EWQ4Tl`8sw|?g?b>gLLM0D6U)|h+w(oN)`jP z?ULZ6HYIXUrbb?%DG=FV=!#MkYGz`Ph<=A&l4{WSd7ieZl1WpZL-;2Zqz(eV3cL2+ z2xxG=)<0ohEq*UW0`L}eNYOScC4;dM1#P`$-;t6LUe9N?RC(t>?-*U_%dQ*94xy%i zP$r;s;39(VO|(CgdT?rj9mwqqKWpn98lU7rpfVl1Fg)OM>G`Hdu>FdO(SZncgvCtr zR85G<)E6wI45K@K%ZX(_Zr%1c3kL@yFo;OVXr)7-Y|9CCOK;K;!k0I94hz8_&Q$Df z1njQ^jim$FuQZjI*Q+T&#ETU!X-=yLznw&onh_1)n!JWKS%=RJev6bha5>WW=k01D z$welcC`oPNaIs0Lv)^Fw=DBefaLKQpI^ZxsgXA;H(x#Q;0s&`uxMsZS&->)B4J3OE zMeQ&7LbvQcWJ0G4{a5;zPnuO9sPHdjr!fuN1&0*Yo0^M7CHuzS`p;|;86&fOFq&wn z=h73wq|Q9$9QSoIUpCgI>ZWcQCfZ%;XC`$hs4?^q;GP+U%F|>o%nttw{Se)PJ8&;2 z+vCfyrgLA8yu+BJLig1u>6nr$ylw(q=$tddO;V~q*r2KWjh9#(b^>!=91Cvan-8Av zIJ0Zg@7srT|J}=tNK8EE3~Kn^c0Vzg{9T-ooNVOG_gv%Q`=-!SW}Vj(gV$%4NENAU zxMS>bqZezz{*1dvw@9@V)9NV4t88fOSl{KuRqq%g-d+D~+oAdmV`ZgZ!_S^b z+%S{-)hT-S*(PDa)-L~``pPOmai92+((@kktks9WL0kvq9DS%Ni@U8PGdPNAAl=Z^`7VCbe;YMK#xpk!V*f}NO zF5E`8}6b z%G%nT5$Zqw(W9260ms-@x3;j*eQRs$h4p3NCDn3bLAC3jZur6X->o@MfSZi^>~0Pr%%sv> zz)8gXmm2NE%W7A)76a51cUs~HdzDtoxCYgPwtnV#iZ1_vKcMQ$lqhn&iH~Q^<$9mE z=(V#msmq{cfqitSOZ5GF)J^dU5wWLS>Cpw``w4sw`Tb$j|4V5d`zGwRV}Lt???SdD zHZPxqEd2-2)XLrv7Wg=-xS-mdakIT?x4VR-u3UNKefu_wY=LnRou)YSK3ECs?|+8K zwyeJkC|CvLfc+_XpLc={0^h=E#6zPxI*hKTb$$+Wx^1{ql&|4VH(< zcM}&^e#Gx5%Gg8$+kth|pz_gIuurVY+zSg3@u!n(zvz@P8_$Ep`UPz>Qa#**7V!%F z0PMgk29<&agO_$L5a>M1I$2<=)IsK;59o({ndtfzSSd4SMPGXB5MdTGH!FFlsO8d0^kYkXDO! zZPFSMm4W-lDO>2Q9vMD~KhImdttFO1&S2+P3WiX3l#Mi&t6H0zXN1?1&aMghlvh<* zQPX@1kfWJ$gWg5mv3>bp)}7;w literal 0 HcmV?d00001 diff --git a/misc/readmes/osmand/brouter-main.png b/misc/readmes/osmand/brouter-main.png new file mode 100644 index 0000000000000000000000000000000000000000..3541654c1ce654dd631708cadce54d95d24cbbf5 GIT binary patch literal 20910 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 literal 0 HcmV?d00001 diff --git a/misc/readmes/osmand/brouter-osmand.png b/misc/readmes/osmand/brouter-osmand.png new file mode 100644 index 0000000000000000000000000000000000000000..3586cc29e0a5f986819bc9cab5d5df5ea0adbe15 GIT binary patch literal 57794 zcmaI7Wl$Z_)+UU*Yj6n=90CNl0KwheCAhmK0fM``ySux)I~;=R!Ck+;Q#J2=cYe&N zqKewp(A~S&T95S!Rg{-NMIuCkfPg@ik`z;hfPf-~fPn5nfC5&o@VUkzAPCjGR5e|c zjoir{ob1glZOq7BJRQu)%{(m4As{@~D$^|Eh+CZkKX!3=q3-v&H78x5Ner?-hj+%? zbI;8bwe!}qK@RL}lm1%$xY-(h#sAn}D+?`M*l=ok#n-Xvy2)KT>^^L+zk2t1Pg&}& z@@umzYTWj_)}1RpWJ!NG?VY;2eHRX`KHa@>RXMonU0x2?=hEL@%Za`7?4)_}Qo5XW zeRy7PScVqx*PJ@_7c!{!?R-7msx^#A^f0&_y7>2}Q|OId*$^)`XzJq7;<_#F@$4cI zW6k}A;B8Sq{>iGRS;64U!he#nBfXzL$=8>{zjpq#O~#-qxY_8nn1JVlv+jdCe{pl& zw0rF$Lv4C>`owDj&Ut@1&yQ)}Zzmku`R|M7fx-62z@gK}w|BL5@PKuAA({!iKgVJ1 zqvI^o@}}d%HHzL-nGf&&>@l^+`5g*QeJSkwG%-X;|i$=GGQIyLk^3 zbplVGu459G{^9J8)N1^9aJK>ruY}QgMrCy7nrn@Q&sS7Wd7&pfG{-};c^B~M#Lc+h zn?e+-2df^t251%Rq5n0`JG#>0jo60G=iAyB16{3Zd_&41dD$UYena-(;JW(3mmOla zipOGhXRDTx|du8oV$>w$AoeBh4p zs&=qnNF%m9|M8xRya4!?tGZQV&F^|mWBP5?`h5SJKS|+5qI7zPi$Hn^PB_4!M>Nfk3i*x34bsD<`_CL)Va}u9dZ{csir|0V;$# z7wedmpt?IftZ9SpJcx(TT=x*>`r4AYi3Ci?SLNXrv0ve;UInj_**Q%b%iCm4242^@ zIb8p^JRbo~28~!MF+fAC*HA9n4=Je&n-OkVvr;J}o zGL8iqVKewasE;ye=u@6|4`jBiDDvz8=eh=sA_q>l;Gf) zuFt!FI=F>B2~I&Ynqxp;YBtG#?4?rH&;M&gMB%8cC-lrjEn=5CzoScsv1na|TjO#uM_;prxFtz9b~ZY4nTTG;gWH-ox-#murdMvpC|V z%w$3>z8nJ<(86!MXK8_)v^p>dGaE^x}>VfN#?j`+*&%z8R@u9 zKc++hLKULe`Cd?G3)G_vM&W%_cpS?wtfHT`JqkyR8Biqg6@>G@wSo z7)ug|EAZNY*i%k%ZU3DLg^tm%l+8(d)MyVCCryB$e5e6mBJ7yw(4dYK==I0Y^xu8H zRtOT_Eex27?6*v_^)dW#EidH)j&KAWSrQXMLzIE7NFLqRwyHM`13J>Xr3wxF;e^|d zXahRv+Ln}D6>04*wq7p_kHIK)9N) zR!Vg!*>&E3`USVAx2Y7H^dK}7VQ`GGpAhP!?-d;~naJ%9Ip%VMz^}GV^G8%ZIq4ye zi-O@DKaLEGm#xOn;ME8xhQy>^BEBnzqh{g`IGOze)o77|4OzbdTuOyONV>w2#52UX zHS>96x#$vH`fcewr^IM=GSgUSz0hutZ1u^Y2B-wif3`ihE*&En7#n5l zcfUS*r)!sC#2j6{{H^m`{=nd+!1&*v@p;FYwj?>MbF@|nOIP_gRO>Fge`bSR7duBx zftX|a{99b<)|n2LbwcwclzXaTB~rGyG`n(=TQzj;(2S`tJe`MPb;914_!UCZ+)*;^Q`q_R4^AO7qb z8OLzgoFrZ%a(2HxssqtemWLr+$$9JXkzTdqLTCSMkKQ(Tq+E#cE_M*cF zZ4t4V!n8H05Rd(N7@qL=lOKBy{vsqONlfU6Cu|nf=9i$-GDGfnzuQcC$n>kf_`Ds0T6t#pIG@|PJzH)m zwR7SkG<}ew z{{v^-P{Iy74&G@Y&ih3y4LW1P#TwjI|Re&U{h$`P!fGmje7!i?yJUloi<=zSrg#tfY#I(%V#^!B;0YH@Rk85O+cb zGP77Mlv>T;hlEm?d>;IDDm77PMUZK!Eb7M|ADh5Xy>8Dnxz3$^{xLtimCfn@!d>|9 zdWfndaO#*&(g?@ob7rXACsV4c(HfE53WAAVq5#z?%Aq~a3DZwl$dxL+rVfa3Uu$Sh zUp}E%Wh*-JZNP~)bp}|4H)M>W9-%xT$&*&Og+cz~mc8?eBxK%; z-=j;+sc@9}Ocx@uW4roY)$`X*5_}NkpL#E`e^9GO$jTCdoy>vQSZ5qXuJ?H!zfYhk zQSBL|i3SiHvc36PuVAwWnc0yx?*o7J$BuCdD`v7%@ z2up?N;;aA@#fPADqb8UcQn@1bNBu~BuGs>So&}H0mG>W(XCi&8UX0||8}n}*LR}de z@aMWj8Q6s?H0-=8vb+5u)mI_ye3aOi2j7ljo8DNDmMOYf4hS4iSRy5b1p~&=vxDE- zg9!fy?Kpl5hLL#mbX$lmVAU7%GhB>-@B7s($tukp8#_TTk$8JVr#LyQYzQ4Rl|LOP z(b%YM;j2C5jaRJ&^+^)6XxJ6Wrhaif(PG_Y@AQS;k2K)}_RmcvoM&L?A3aF*@b4Z7 zbVG_YPOjg?$PF2BV4!)X4ObNT>N2_MrYcm`h~7G(@@@?C&J4?~z7t;``+Uks1HrLw zP7pWph7nj7(q7YiA`HxAYf6-0onG~#*=#y-zAlz7f^)T&3WZiP#x-IVU5$2kF;f@! z$y|w^yPZK;ShYf<2Q27e!r~X9p``BHoCbvB8i=- zBaF*Bk&+dz;v_&w?Hj<|;S0)m_w{hHMa#>-=J!Fv@I_~E)yd8avTMqLIm2fPJH!@& zD*cz^OmPtx>J-3PjfPuGIYOvNFbX|L{hb_q#SAswULe1*!}W&@4sKe%WMpFbtkFWA z1=^GRnA7I%V|4VaXZ(?Sc(B+{Qh}M6 zSDZmmX}h@_g-bzo1(#;so+Po6{D~kwYT0^Dv7Y8__%oGVt-n z^FZhIQ;5j*BPS3sVl%Nx!bUVXq>H!|T3PsYMKOeBMfesiRLaokwU`3=3eut+CGXKx z#ObAhwnf0IS4}vDgm;%4A&too4D+{$nfoDWj8uDra;nBt$()D655t;Qv@Jp6*aJiO zH93lx@cWYa9V4t|3){(`jJ!0g0LaF^lszKMNJ3Xw3F<^Lm07|Pi`Ozi5o++1ru#KA z?-IcglhJuJE$lP<)mlh1+l+~ zYe*s&3D3onBPETb{~w>q{(WRJ9`T#3r;9#b!4A z|SSn4G-NK^SO11n&LZL*4SMbC{0r*Ed`O?d9elBGLZc3>Ktta|!$RMEL=qCV4W z7nBmfJoBC?{@U3vmn4KCfe2L7yo$2zm;WcT03(bhDDt*1vr zpRKQ%u6 zFpf_c${m8lqN4v*Ruud|ay%G!0Q0hCU@h3)tnuyB15I~hA#c?O;vsi6%$GvW7c`jCkCeRwNyn4)rCMkL6q(C-MQKlVUhSVB}K`0{ct(T4rAP3 zOy4k}8j;E+heCNo==&Y@%$nHsG^2hbWWvutDKKAXVr|p~pke0SExbF{5ZAsxEhY2q zC7yG?oTBxi*WI2*J^3NCyd4L1x0<})Xnxqx-ke6Jz?5X3w91||5qg-Zj4))x_q=9S zZdCIftTWMyHzbfAb!zW&!)~I6c0%DVQ^AEAw%%KQ7sDxN_{AQOK;o*(K{dCkV5_g5 zVxbgi>S^G`l+S>SWNTT{+2FH(Er+UImU`Q`0H!0Vr685Qoz?M4j-=5{x;yte-Njk< zwLChFvolGY(CMVB>378{=qxd*V3&QAVd}7%YWW3x<-CZXtA2Qib079xAr!JA7Cg`y zgq`j4vbmnqq6l?N9-8@tt`Fj+rev(pn)x!Gx{IUi`(--HPq<$ZYoj1R%ZHjWCDds# zo`KHo;V7Vt=D7-L0$i8Src z&59GeX3t&-!Wl62H2*M@8DeuD!)$=LjpvMv`AL=aS%!LDkZWXv!{&f6gVq(Tj^vn0pn;jQP zFeXp%Xe|`kFn#_P?gEVf*`|Q|FRtuPKUcao%=NxFyri(X!7IxLo_?-fNXwF6XNdTm z4X*j~PmV<1_ADtR7y3JfGIC0NC2R0WMkwhtWp4A>t!2C1Tu7`{l~qhbSaZRwA%$FI zV~Ah)@3w9z=w;CoQe&9b^EoU7CF_i9r0p|I?X1Omi=3YqMTwmE!_ugT#|*a`F7J=(^2{)Sw5T{v)oGhyGS zZ8#gK`P<;(T-Tg8S^m8O+rk8nD^w($gEq{;)Y$}6UKT-TUy*{Kh}4(d`O!_i-cS9V zRLr5;sP_hgy2BAm8v^O(JA&1(7z*k7Y5}x?Ws>>5Xx;|3>Pd}~aA8Q>9;8_WQAqQf zD6WR|M?9g0YH9S~BT&xFDUzsh^3EF@?*m_(5%gy&NVe7PpniXvY78PrG{ zV^`hQi0rZ8iho+1VksjbaojfbeF9fH99F;u9jqzFAsN%SdYI%ks!^t3(jjccCVVoa z+0TNPyUWk(L1jvFC;5u_1NFx@Hkro8#LSTmivCmDOB-+$^N!A!y)*R(872$Yl`EM! zeN;{}k*lR)6Zi=dOQ7*BkGlK4|j8d$@>X15W9V5T5hBd~tW`niirmB+nHus-( z0PHNp?ZsBG<3}124y$RVR}b$BWDa>#Mv%A4VHOjS=EXT|9C8~qvaaZ1k!!x=(SxzPXG6MMu|r5Y4oLqT4$lAy7!<{-08 zJ3#1@kO)E=Tl*b>Wo-$w*9M=lsQ5eZ;`rj=A%Y%plPB!wh4c=D2DA(2K>&=#1Ki>d z<)ea?1+>cCg!t+4sltFy3$c-(7UAH813dbZVN)pHrTdm)%I^r&mI=x27V#BMx)aR* zK*c==r|nWJ(vO7xESTakMM9%~JTFtY{CEB$mQW0XvUl&X6z+DXxzrHH;CJ=U61771 zO{z;0SA|T}mN(?uYO`vFqJy_Oht&Y$m65JOl*jK`Vq|+y2Y%GhcP&&IAJ*1)`jho% zjOnNGSQjYU&jq~$m495^8zm>Bs2I#U>_44pDw$*3{Bg?ZRJ@Y+R`6A*td?(IMyrs= zh3Kgb5pI#*#%)h+%v~JeE+%Nt4H%2oSjTeBaGaKybJ;9L{*r52gCEviDOJMzP6 z`{{R;d7eZj6Vln{0^hM36jo*ZMWg@SNUPLtS-`6JpUXvyn$ zYGNT8{iU?6ijnrva}HE4RCvp8ik=bmz_KuqRom5(sY;RY)_idQ)dh2Pae8H>3yFuz z+7+_;A!SW2wQ~a>Jfp!!WQO-BT=*YITG z)Wa~f=?jp##`uJ+_Us~*m7qcT6`%z*V6T=LSChbu%>*u*GEe)BrblSPF2cl@`8YK7 zzj`)5yQo`kw{slpi028k}p)5pDqyu7Yblc3Va$1h)ie~J^zcv zPuN!~TA81yIf9NGDLT4*MLd`H!UXlN@7Go>UM3k#K~^TA6bl%+YHhJ{E($fgh0ish zT3;aPi{Tv9K8Dx=>FT05k*SVUHG8{jrU0x_?hm&Zv>Gk$tpfcEJkLZqD^MosMZcLS zQdC>|z;r4v?%D~Du}u{=dU>L~bLgi<>l;M1_p{%mVF+5w=QP2=47F&JI6rr#jKHj#c$O1O(~ea-P25rxaB>PfP#ZoJdg#W|N2OBMHZ_DRnE?8w^*!8 z7xVU$x>TsX*c)-6C(D#8TIGy9){8__XshhuCyQ$mD`l+bn5$+M^*YHMmXwgFdrRgO zl*<&N$(Hy35)eIpW_9eXVGNW_R}Qzl-1p|3lNM1tDshWhqa^-vzxYd(rzeW_N4B>V z(y?roRA=rGl6Ji@Zi=5WQN1J!@{({-+$Hos=<6Z1bT&1Mob)L=-d-H_LgHH1Yvdx5 z9Pt#oGKkL(H!bj!M1P=aW>194jp z(!wXkd%yU14}#|5!gvfqU~~G`1=EPAIAIyuw}mkXl72>7%K&9>H!^waKs>~n3qd?s zvSdi=l4;LqpSSlr!nN0P8YzKaUaMvq>1OX}kE^n^WYypTr-A61s*Y_x)aZD*;vvC> zQQx#Kt5LqQ$c{h0Hh0|Oi&}4CRClzdXPuL?;(Xi5J1Amd@Rr{RyI`fUzA}e>V%Pgq zp85fs0XH?q)F#ga0Rb6kDJrTcB`W&A112C=%J7X9kn9&G9yCx1*VZOJBR`4B<<-K# zbzGpw$rUNV)pliVy+uyrprT`r`eWVO8$DPS5MEz}R`rMc5prkeq~M5>`n{U2A>`^` z3)#iFz&Qv~q;rC!+?sgCWnGqf$C##_-mN@;x?&u)_B#f(7&Np_vtEO8GrH;~T+{j`4KZb6$VI;6QYRRF z7B80%3&H^p3%mx%b&D|v=~A;gG3G#_I?bcM!*{ngUdLnGDbu3C=o25Bz#M^K3BL_L z3A$wrA^!7+tGaFKR)#khl&WrQJi?r5M%C4A{$_^WvH=N~g|eEE9+zDdGYx%VaVw{l z^MQv@)!Ny3@AwQ+P+Go+>fnG7fk*4Txw|Ql+4<&Ow77*1U*hER%|l-e$o&uj+z|3P?^GyR zmJ2eCFWABbC_~q8{DOk)&0Boz596(e8_uD?iT|(9zn%U*3W&>o^w7a;4}MTHG1@TL zja_ubh7+@O^L#44_s6pqcI@zO?5OGQ-@hlmj2qUk%E`%9R#t*6nfrJ92Q^@FK716& zd<6Z^H(Dj4hbm=rJ!-<1tajN|Ix66Gz?O-;W>Go3n}1 zCyI-Udu_3?RH$29Tc4Vx(~1rB9z*1O6e!aL_dD`tigDPi)I2^uZfxj=53+gR+e8mz zV_?L@#bM#$9XPe3zy+*>&1*F$QcHyPoOq&#>({{+>B5Y7;bN5OlbjBGQ|9#&(WE4p zn7zAKY3b=KPw3i|u_cREp<DzFmG|K+ zT_qJ2IH6*gn3#@^z~xUF*B;$@T?8d`y>($>V;@eW_8;DikBv=nu3m2U7b|4j)oKEl z1%HHYkvvWvD_NjiDv~>MdZ%7~H}{_7%B!cVt7~YOBc5-B6|^4^V#=oF;NW0rXsDm-bk3)KXh;>2pJ!Zgjbaus}mXHWo2b~`S}(TDY=VQ_4W1e zM-c{kdL&p_B4VSXqphv2U9Kp;uPPc;)NbyMr;aO|_w{()+*qrtMceQ}NT0Fvz%)0b z{iMb9=<5fYd>3lf%$ye!@N4U$y*o~xkc3&h1Ns`Cj?wtZOoqEWkIgvO&^G9}T z)e~2U%0Ds`w{Mq|C{DmU9JhadCBZb->dE3JH~n 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 O+`sRDMz)&8FaHHn6&&0E literal 0 HcmV?d00001 diff --git a/misc/readmes/osmand/brouter-profiles.png b/misc/readmes/osmand/brouter-profiles.png new file mode 100644 index 0000000000000000000000000000000000000000..e795b5318ccaa4ba237dc44f233e6fabfa991134 GIT binary patch literal 38028 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 literal 0 HcmV?d00001 diff --git a/misc/scripts/mapcreation/process_pbf_planet.sh b/misc/scripts/mapcreation/process_pbf_planet.sh index 36b635e..dd6d97d 100755 --- a/misc/scripts/mapcreation/process_pbf_planet.sh +++ b/misc/scripts/mapcreation/process_pbf_planet.sh @@ -1,6 +1,19 @@ #!/bin/bash set -e -wget -N http://planet.openstreetmap.org/pbf/planet-latest.osm.pbf +cd "$(dirname "$0")" + +# Fetch OSM planet dump if no planet file is specified +if [ -z "$PLANET_FILE" ]; then + if [ -x "$(command -v osmupdate)" ] && [[ -f "./planet-latest.osm.pbf" ]]; then + # Prefer running osmupdate to update the planet file if available + mv "./planet-latest.osm.pbf" "./planet-latest.old.osm.pbf" + osmupdate "planet-latest.old.osm.pbf" "./planet-latest.osm.pbf" + rm "./planet-latest.old.osm.pbf" + else + # Otherwise, download it again + wget -N http://planet.openstreetmap.org/pbf/planet-latest.osm.pbf + fi +fi if test lastmaprun.date -nt planet-latest.osm.pbf; then echo "no osm update, exiting" @@ -20,7 +33,7 @@ OSMOSIS_JAR=$(realpath "../../pbfparser/osmosis.jar") PROTOBUF_JAR=$(realpath "../../pbfparser/protobuf.jar") PBFPARSER_JAR=$(realpath "../../pbfparser/pbfparser.jar") -PLANET_FILE=$(realpath "./planet-latest.osm.pbf") +PLANET_FILE=${PLANET_FILE:-$(realpath "./planet-latest.osm.pbf")} # Download SRTM zip files from # https://cgiarcsi.community/data/srtm-90m-digital-elevation-database-v4-1/ # (use the "ArcInfo ASCII" version) and put the ZIP files directly in this From a69fb1c99a8b164181eac1b4cf8cda09dcd13ac3 Mon Sep 17 00:00:00 2001 From: Arndt Brenschede Date: Sun, 8 Sep 2019 13:35:12 +0200 Subject: [PATCH 7/8] proof of concept delta-rd5 --- .../main/java/btools/codec/MicroCache.java | 52 +++++++ .../main/java/btools/codec/MicroCache2.java | 32 +++-- .../main/java/btools/codec/TagValueCoder.java | 5 + .../java/btools/mapaccess/Rd5DiffTool.java | 130 ++++++++++++++++++ 4 files changed, 209 insertions(+), 10 deletions(-) create mode 100644 brouter-mapaccess/src/main/java/btools/mapaccess/Rd5DiffTool.java diff --git a/brouter-codec/src/main/java/btools/codec/MicroCache.java b/brouter-codec/src/main/java/btools/codec/MicroCache.java index 2cb4a8c..8c01988 100644 --- a/brouter-codec/src/main/java/btools/codec/MicroCache.java +++ b/brouter-codec/src/main/java/btools/codec/MicroCache.java @@ -314,4 +314,56 @@ public class MicroCache extends ByteDataWriter } return null; } + + public void calcDelta( MicroCache mc1, MicroCache mc2 ) + { + int idx1 = 0; + int idx2 = 0; + + while( idx1 < mc1.size || idx2 < mc2.size ) + { + int id1 = idx1 < mc1.size ? mc1.faid[idx1] : Integer.MAX_VALUE; + int id2 = idx2 < mc2.size ? mc2.faid[idx2] : Integer.MAX_VALUE; + int id; + if ( id1 >= id2 ) + { + id = id2; + int start2 = idx2 > 0 ? mc2.fapos[idx2 - 1] : 0; + int len2 = mc2.fapos[idx2++] - start2; + + if ( id1 == id2 ) + { + // id exists in both caches, compare data + int start1 = idx1 > 0 ? mc1.fapos[idx1 - 1] : 0; + int len1 = mc1.fapos[idx1++] - start1; + if ( len1 == len2 ) + { + int i = 0; + while( i do nothing + } + } + } + write( mc2.ab, start2, len2 ); + } + else + { + idx1++; + id = id1; // deleted node + } + fapos[size] = aboffset; + faid[size] = id; + size++; + } + } + } diff --git a/brouter-codec/src/main/java/btools/codec/MicroCache2.java b/brouter-codec/src/main/java/btools/codec/MicroCache2.java index b4178fe..5c2bc83 100644 --- a/brouter-codec/src/main/java/btools/codec/MicroCache2.java +++ b/brouter-codec/src/main/java/btools/codec/MicroCache2.java @@ -87,10 +87,14 @@ public final class MicroCache2 extends MicroCache // future escapes (turn restrictions?) short trExceptions = 0; - for(;;) + int featureId = bc.decodeVarBits(); + if ( featureId == 13 ) + { + fapos[n] = aboffset; + continue; // empty node escape (delta files only) + } + while( featureId != 0 ) { - int featureId = bc.decodeVarBits(); - if ( featureId == 0 ) break; int bitsize = bc.decodeNoisyNumber( 5 ); if ( featureId == 2 ) // exceptions to turn-restriction @@ -113,6 +117,7 @@ public final class MicroCache2 extends MicroCache { for( int i=0; i< bitsize; i++ ) bc.decodeBit(); // unknown feature, just skip } + featureId = bc.decodeVarBits(); } writeBoolean( false ); @@ -147,7 +152,8 @@ public final class MicroCache2 extends MicroCache TagValueWrapper wayTags = wayTagCoder.decodeTagValueSet(); - if ( wayTags != null ) + boolean linkValid = wayTags != null || wayValidator == null; + if ( linkValid ) { int startPointer = aboffset; sizeoffset = writeSizePlaceHolder(); @@ -162,7 +168,7 @@ public final class MicroCache2 extends MicroCache finaldatasize += 1 + aboffset-startPointer; // reserve place for reverse validBits[ nodeIdx >> 5 ] |= 1 << nodeIdx; // mark target-node valid } - writeModeAndDesc( isReverse, wayTags.data ); + writeModeAndDesc( isReverse, wayTags == null ? null : wayTags.data ); } if ( !isReverse ) // write geometry for forward links only @@ -200,7 +206,7 @@ public final class MicroCache2 extends MicroCache } if ( matcher != null ) matcher.end(); } - if ( wayTags != null ) + if ( linkValid ) { injectSize( sizeoffset ); } @@ -375,6 +381,12 @@ public final class MicroCache2 extends MicroCache int ilon = (int)(id64 >> 32); int ilat = (int)(id64 & 0xffffffff); + if ( aboffset == aboffsetEnd ) + { + bc.encodeVarBits( 13 ); // empty node escape (delta files only) + continue; + } + // write turn restrictions while( readBoolean() ) { @@ -430,7 +442,10 @@ public final class MicroCache2 extends MicroCache readFully( description ); } - boolean isInternal = isInternal( ilonlink, ilatlink ); + long link64 = ((long)ilonlink)<<32 | ilatlink; + Integer idx = idMap.get( Long.valueOf( link64 ) ); + boolean isInternal = idx != null; + if ( isReverse && isInternal ) { if ( dodebug ) System.out.println( "*** NOT encoding link reverse=" + isReverse + " internal=" + isInternal ); @@ -442,9 +457,6 @@ public final class MicroCache2 extends MicroCache if ( isInternal ) { - long link64 = ((long)ilonlink)<<32 | ilatlink; - Integer idx = idMap.get( Long.valueOf( link64 ) ); - if ( idx == null ) throw new RuntimeException( "ups: internal not found?" ); int nodeIdx = idx.intValue(); if ( dodebug ) System.out.println( "*** target nodeIdx=" + nodeIdx ); if ( nodeIdx == n ) throw new RuntimeException( "ups: self ref?" ); diff --git a/brouter-codec/src/main/java/btools/codec/TagValueCoder.java b/brouter-codec/src/main/java/btools/codec/TagValueCoder.java index a733085..1118000 100644 --- a/brouter-codec/src/main/java/btools/codec/TagValueCoder.java +++ b/brouter-codec/src/main/java/btools/codec/TagValueCoder.java @@ -62,6 +62,11 @@ public final class TagValueCoder { if ( ++pass == 3 ) { + if ( identityMap.size() == 0 ) + { + TagValueSet dummy = new TagValueSet(); + identityMap.put( dummy, dummy ); + } PriorityQueue queue = new PriorityQueue(2*identityMap.size(), new TagValueSet.FrequencyComparator()); queue.addAll(identityMap.values()); while (queue.size() > 1) diff --git a/brouter-mapaccess/src/main/java/btools/mapaccess/Rd5DiffTool.java b/brouter-mapaccess/src/main/java/btools/mapaccess/Rd5DiffTool.java new file mode 100644 index 0000000..937fd51 --- /dev/null +++ b/brouter-mapaccess/src/main/java/btools/mapaccess/Rd5DiffTool.java @@ -0,0 +1,130 @@ +/** + * Proof of concept for delta rd5's + * + * @author ab + */ +package btools.mapaccess; + +import java.io.File; + +import btools.codec.DataBuffers; +import btools.codec.MicroCache; +import btools.codec.MicroCache2; +import btools.codec.StatCoderContext; + +final public class Rd5DiffTool +{ + public static void main( String[] args ) throws Exception + { + diff2files( new File( args[0] ),new File( args[1] ) ); + } + + /** + * Compute the delta between 2 RD5 files and + * show statistics on the expected size of the delta file + */ + public static void diff2files( File f1, File f2 ) throws Exception + { + byte[] abBuf1 = new byte[10 * 1024 * 1024]; + byte[] abBuf2 = new byte[10 * 1024 * 1024]; + + int nodesTotal = 0; + int nodesDiff = 0; + + long bytesDiff = 0L; + + PhysicalFile pf1 = null; + PhysicalFile pf2 = null; + try + { + DataBuffers dataBuffers = new DataBuffers(); + pf1 = new PhysicalFile( f1, dataBuffers, -1, -1 ); + pf2 = new PhysicalFile( f2, dataBuffers, -1, -1 ); + int div = pf1.divisor; + for ( int lonDegree = 0; lonDegree < 5; lonDegree++ ) // does'nt really matter.. + { + for ( int latDegree = 0; latDegree < 5; latDegree++ ) // ..where on earth we are + { + OsmFile osmf1 = new OsmFile( pf1, lonDegree, latDegree, dataBuffers ); + OsmFile osmf2 = new OsmFile( pf2, lonDegree, latDegree, dataBuffers ); + for ( int lonIdx = 0; lonIdx < div; lonIdx++ ) + { + for ( int latIdx = 0; latIdx < div; latIdx++ ) + { + int lonIdxDiv = lonDegree * div + lonIdx; + int latIdxDiv = latDegree * div + latIdx; + + + MicroCache mc1 = osmf1.hasData() ? + osmf1.createMicroCache( lonIdxDiv, latIdxDiv, dataBuffers, null, null, true, null ) + : MicroCache.emptyCache(); + MicroCache mc2 = osmf2.hasData() ? + osmf2.createMicroCache( lonIdxDiv, latIdxDiv, dataBuffers, null, null, true, null ) + : MicroCache.emptyCache(); + + MicroCache mc = new MicroCache2( mc1.getSize() + mc2.getSize(), abBuf2, lonIdxDiv, latIdxDiv, div ); + mc.calcDelta( mc1, mc2 ); + + nodesTotal += mc2.getSize(); + + if ( latIdx == 15 ) + { + // System.out.println( "hier!" ); + } + + if ( mc.getSize() > 0 ) + { + int len = mc.encodeMicroCache( abBuf1 ); + byte[] bytes = new byte[len]; + System.arraycopy( abBuf1, 0, bytes, 0, len ); + + bytesDiff += len; + nodesDiff += mc.getSize(); + + // cross-check the encoding: re-instantiate the cache + MicroCache mcCheck = new MicroCache2( new StatCoderContext( bytes ), new DataBuffers( null ), lonIdxDiv, latIdxDiv, div, null, null ); + + // ..and check if still the same + if ( mc.size() != mcCheck.size() ) + { + // mc.compareWith finds link-ordering differences, + // so we compare only if there's also a size missmatch... + + String diffMessage = mc.compareWith( mcCheck ); + if ( diffMessage != null ) + { + throw new RuntimeException( "files differ: " + diffMessage ); + } + } + } + } + } + } + } + System.out.println( "nodesTotal=" + nodesTotal + " nodesDiff=" + nodesDiff + " bytesDiff=" + bytesDiff ); + } + finally + { + if ( pf1 != null ) + { + try + { + pf1.ra.close(); + } + catch (Exception ee) + { + } + } + if ( pf2 != null ) + { + try + { + pf2.ra.close(); + } + catch (Exception ee) + { + } + } + } + } +} From 8c15a1d16f84bd5bb0b98d0a3db31995d6ad394e Mon Sep 17 00:00:00 2001 From: Arndt Brenschede Date: Tue, 10 Sep 2019 00:18:03 +0200 Subject: [PATCH 8/8] proof of concept delta-rd5 --- .../main/java/btools/codec/MicroCache2.java | 1 + .../java/btools/mapaccess/Rd5DiffTool.java | 42 ++++++++++++------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/brouter-codec/src/main/java/btools/codec/MicroCache2.java b/brouter-codec/src/main/java/btools/codec/MicroCache2.java index 5c2bc83..8cd8f30 100644 --- a/brouter-codec/src/main/java/btools/codec/MicroCache2.java +++ b/brouter-codec/src/main/java/btools/codec/MicroCache2.java @@ -91,6 +91,7 @@ public final class MicroCache2 extends MicroCache if ( featureId == 13 ) { fapos[n] = aboffset; + validBits[ n >> 5 ] |= 1 << n; // mark dummy-node valid continue; // empty node escape (delta files only) } while( featureId != 0 ) diff --git a/brouter-mapaccess/src/main/java/btools/mapaccess/Rd5DiffTool.java b/brouter-mapaccess/src/main/java/btools/mapaccess/Rd5DiffTool.java index 937fd51..f6d5bee 100644 --- a/brouter-mapaccess/src/main/java/btools/mapaccess/Rd5DiffTool.java +++ b/brouter-mapaccess/src/main/java/btools/mapaccess/Rd5DiffTool.java @@ -30,8 +30,10 @@ final public class Rd5DiffTool int nodesTotal = 0; int nodesDiff = 0; + int diffedTiles = 0; long bytesDiff = 0L; + long diffedTileSize = 0L; PhysicalFile pf1 = null; PhysicalFile pf2 = null; @@ -67,11 +69,6 @@ final public class Rd5DiffTool nodesTotal += mc2.getSize(); - if ( latIdx == 15 ) - { - // System.out.println( "hier!" ); - } - if ( mc.getSize() > 0 ) { int len = mc.encodeMicroCache( abBuf1 ); @@ -80,20 +77,37 @@ final public class Rd5DiffTool bytesDiff += len; nodesDiff += mc.getSize(); + diffedTiles++; + diffedTileSize += mc2.size(); - // cross-check the encoding: re-instantiate the cache + // cross-check the encoding: decode again MicroCache mcCheck = new MicroCache2( new StatCoderContext( bytes ), new DataBuffers( null ), lonIdxDiv, latIdxDiv, div, null, null ); - - // ..and check if still the same + + // due to link-order ambiguity, for decoded we can only compare node-count and datasize if ( mc.size() != mcCheck.size() ) { - // mc.compareWith finds link-ordering differences, - // so we compare only if there's also a size missmatch... + throw new IllegalArgumentException( "re-decoded data-size mismatch!" ); + } + if ( mc.getSize() != mcCheck.getSize() ) + { + throw new IllegalArgumentException( "re-decoded node-count mismatch!" ); + } - String diffMessage = mc.compareWith( mcCheck ); - if ( diffMessage != null ) + // .... so re-encode again + int len2 = mcCheck.encodeMicroCache( abBuf1 ); + byte[] bytes2 = new byte[len2]; + System.arraycopy( abBuf1, 0, bytes2, 0, len2 ); + + // and here we can compare byte-by-byte + if ( len != len2 ) + { + throw new IllegalArgumentException( "decoded size mismatch!" ); + } + for( int i=0; i