diff --git a/Gemfile b/Gemfile index 614321a51b..b26fd2ef32 100644 --- a/Gemfile +++ b/Gemfile @@ -122,6 +122,7 @@ group :test do gem "rack_session_access" gem "selenium-webdriver" gem "shoulda-matchers" + gem "uri-query_params" gem "vcr" gem "webmock" end diff --git a/Gemfile.lock b/Gemfile.lock index b698306f13..f4c4e12148 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -704,6 +704,7 @@ GEM unicode-version (~> 1.0) unicode-version (1.4.0) uri (1.0.1) + uri-query_params (0.8.2) useragent (0.16.10) valid_email2 (6.0.0) activemodel (>= 6.0) @@ -864,6 +865,7 @@ DEPENDENCIES slim_lint solargraph tzinfo-data + uri-query_params valid_email2 validate_url vcr diff --git a/app/jobs/alert_email/base.rb b/app/jobs/alert_email/base.rb index 4452196797..a8920d979f 100644 --- a/app/jobs/alert_email/base.rb +++ b/app/jobs/alert_email/base.rb @@ -1,19 +1,7 @@ class AlertEmail::Base < ApplicationJob MAXIMUM_RESULTS_PER_RUN = 500 - FILTERS = { - teaching_job_roles: ->(vacancy, value) { (vacancy.job_roles & value).any? }, - support_job_roles: ->(vacancy, value) { (vacancy.job_roles & value).any? }, - visa_sponsorship_availability: ->(vacancy, value) { value.include? vacancy.visa_sponsorship_available.to_s }, - ect_statuses: ->(vacancy, value) { value.include?(vacancy.ect_status) }, - subjects: ->(vacancy, value) { (vacancy.subjects & value).any? }, - phases: ->(vacancy, value) { (vacancy.phases & value).any? }, - working_patterns: ->(vacancy, value) { (vacancy.working_patterns & value).any? }, - organisation_slug: ->(vacancy, value) { vacancy.organisations.map(&:slug).include?(value) }, - keyword: ->(vacancy, value) { vacancy.searchable_content.include? value.downcase.strip }, - }.freeze - - def perform # rubocop:disable Metrics/AbcSize + def perform return if DisableExpensiveJobs.enabled? # The intent here is that if we don't have keyword or location searches, then this operation can all be done in memory @@ -23,26 +11,10 @@ def perform # rubocop:disable Metrics/AbcSize already_run_ids = AlertRun.for_today.map(&:subscription_id) subscriptions.find_each.reject { |sub| already_run_ids.include?(sub.id) }.each do |subscription| - scope = default_scope - criteria = subscription.search_criteria.symbolize_keys - scope, criteria = handle_location(scope, criteria) - - vacancies = scope.select do |vacancy| - criteria.all? { |criterion, value| FILTERS.fetch(criterion).call(vacancy, value) } - end + vacancies = subscription.vacancies_matching default_scope Jobseekers::AlertMailer.alert(subscription.id, vacancies.pluck(:id)).deliver_later if vacancies.any? end Sentry.capture_message("#{self.class.name} run successfully", level: :info) end - - private - - def handle_location(scope, criteria) - if criteria.key?(:location) - [scope.search_by_location(criteria[:location], criteria[:radius]), criteria.except(:location, :radius)] - else - [scope, criteria] - end - end end diff --git a/app/models/subscription.rb b/app/models/subscription.rb index 5b9c415075..d2e0801430 100644 --- a/app/models/subscription.rb +++ b/app/models/subscription.rb @@ -8,6 +8,18 @@ class Subscription < ApplicationRecord validates :email, email_address: true, if: -> { email_changed? } # Allows data created prior to validation to still be valid + FILTERS = { + teaching_job_roles: ->(vacancy, value) { (vacancy.job_roles & value).any? }, + support_job_roles: ->(vacancy, value) { (vacancy.job_roles & value).any? }, + visa_sponsorship_availability: ->(vacancy, value) { value.include? vacancy.visa_sponsorship_available.to_s }, + ect_statuses: ->(vacancy, value) { value.include?(vacancy.ect_status) }, + subjects: ->(vacancy, value) { (vacancy.subjects & value).any? }, + phases: ->(vacancy, value) { (vacancy.phases & value).any? }, + working_patterns: ->(vacancy, value) { (vacancy.working_patterns & value).any? }, + organisation_slug: ->(vacancy, value) { vacancy.organisations.map(&:slug).include?(value) }, + keyword: ->(vacancy, value) { vacancy.searchable_content.include? value.downcase.strip }, + }.freeze + def self.encryptor(serializer: :json_allow_marshal) key_generator_secret = SUBSCRIPTION_KEY_GENERATOR_SECRET key_generator_salt = SUBSCRIPTION_KEY_GENERATOR_SALT @@ -54,4 +66,49 @@ def create_alert_run def organisation Organisation.find_by(slug: search_criteria["organisation_slug"]) if search_criteria["organisation_slug"] end + + def vacancies_matching(default_scope) + scope = default_scope + criteria = search_criteria.symbolize_keys + scope, criteria = handle_location(scope, criteria) + + scope.select do |vacancy| + criteria.all? { |criterion, value| FILTERS.fetch(criterion).call(vacancy, value) } + end + end + + private + + extend DistanceHelper + + class << self + def limit_by_location(vacancies, location, radius_in_miles) + query = location.strip.downcase + if query.blank? || LocationQuery::NATIONWIDE_LOCATIONS.include?(query) + vacancies + else + radius_in_metres = convert_miles_to_metres radius_in_miles + LocationPolygon.with_name(query) + polygon = nil + if polygon.present? + vacancies.select { |v| v.organisations.map(&:geopoint).any? { |point| polygon.area.contains?(point) } } + # vacancies.select {|v| v.organisations.map(&:geopoint).any? { |point| polygon.area.intersects? point.buffer(radius_in_metres) } } + else + coordinates = Geocoding.new(query).coordinates + search_point = RGeo::Geographic.spherical_factory.point(coordinates.second, coordinates.first) + vacancies.select { |v| v.organisations.map(&:geopoint).any? { |point| search_point.distance(point) < radius_in_metres } } + end + end + end + end + + def handle_location(scope, criteria) + if criteria.key?(:location) + # [scope.search_by_location(criteria[:location], criteria[:radius]), criteria.except(:location, :radius)] + [self.class.limit_by_location(scope, criteria[:location], criteria[:radius]), criteria.except(:location, :radius)] + + else + [scope, criteria] + end + end end diff --git a/config/initializers/geocoder.rb b/config/initializers/geocoder.rb index 5765d45a1e..987656859a 100644 --- a/config/initializers/geocoder.rb +++ b/config/initializers/geocoder.rb @@ -5,7 +5,7 @@ http_headers: { "User-Agent" => "Teaching Vacancies Service teaching.vacancies@education.gov.uk" }, google: { - api_key: Rails.env.test? ? "placeholder_key" : ENV.fetch("GOOGLE_LOCATION_SEARCH_API_KEY", ""), + api_key: ENV.fetch("GOOGLE_LOCATION_SEARCH_API_KEY", "placeholder_key"), always_raise: [Geocoder::OverQueryLimitError], }, diff --git a/spec/fixtures/basildon_schools.yml b/spec/fixtures/basildon_schools.yml new file mode 100644 index 0000000000..12b2ff42b7 --- /dev/null +++ b/spec/fixtures/basildon_schools.yml @@ -0,0 +1,459 @@ +--- +- !ruby/object:School + concise_attributes: + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: id + value_before_type_cast: 0542b7c8-6818-471f-a9eb-13b478b09719 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: type + value_before_type_cast: School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: name + value_before_type_cast: St Teresa's Catholic Primary School, Basildon + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: description + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: urn + value_before_type_cast: '139917' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: uid + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: phase + value_before_type_cast: 2 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url + value_before_type_cast: http://www.st-teresasrc.essex.sch.uk + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: minimum_age + value_before_type_cast: 3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: maximum_age + value_before_type_cast: 11 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address + value_before_type_cast: Elsenham Crescent + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: town + value_before_type_cast: Basildon + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: county + value_before_type_cast: Essex + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: postcode + value_before_type_cast: SS14 1UE + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: locality + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data + value_before_type_cast: '{"URN":"139917","LA (code)":"881","LA (name)":"Essex","EstablishmentNumber":"2091","EstablishmentName":"St + Teresa''s Catholic Primary School, Basildon","TypeOfEstablishment (code)":"28","TypeOfEstablishment + (name)":"Academy sponsor led","EstablishmentTypeGroup (code)":"10","EstablishmentTypeGroup + (name)":"Academies","EstablishmentStatus (code)":"1","EstablishmentStatus (name)":"Open","ReasonEstablishmentOpened + (code)":"06","ReasonEstablishmentOpened (name)":"New Provision","OpenDate":"01-12-2013","ReasonEstablishmentClosed + (code)":"99","ReasonEstablishmentClosed (name)":"","CloseDate":"","PhaseOfEducation + (code)":"2","PhaseOfEducation (name)":"Primary","StatutoryLowAge":"3","StatutoryHighAge":"11","Boarders + (code)":"1","Boarders (name)":"No boarders","NurseryProvision (name)":"Has Nursery + Classes","OfficialSixthForm (code)":"2","OfficialSixthForm (name)":"Does not + have a sixth form","Gender (code)":"3","Gender (name)":"Mixed","ReligiousCharacter + (code)":"03","ReligiousCharacter (name)":"Roman Catholic","ReligiousEthos (name)":"Roman + Catholic","Diocese (code)":"RC04","Diocese (name)":"Diocese of Brentwood","AdmissionsPolicy + (code)":"0","AdmissionsPolicy (name)":"Not applicable","SchoolCapacity":"236","SpecialClasses + (code)":"0","SpecialClasses (name)":"Not applicable","CensusDate":"18-01-2024","NumberOfPupils":"235","NumberOfBoys":"102","NumberOfGirls":"133","PercentageFSM":"12.30","TrustSchoolFlag + (code)":"3","TrustSchoolFlag (name)":"Supported by a multi-academy trust","Trusts + (code)":"2893","Trusts (name)":"CHRISTUS CATHOLIC TRUST","SchoolSponsorFlag + (name)":"Linked to a sponsor","SchoolSponsors (name)":"Catholic Diocese of Brentwood","FederationFlag + (name)":"Not applicable","Federations (code)":"","Federations (name)":"","UKPRN":"10042438","FEHEIdentifier":"","FurtherEducationType + (name)":"Not applicable","OfstedLastInsp":"21-10-2021","OfstedSpecialMeasures + (code)":"0","OfstedSpecialMeasures (name)":"Not applicable","LastChangedDate":"30-09-2024","Street":"Elsenham + Crescent","Locality":"","Address3":"","Town":"Basildon","County (name)":"Essex","Postcode":"SS14 + 1UE","SchoolWebsite":"www.st-teresasrc.essex.sch.uk","TelephoneNum":"01268553502","HeadTitle + (name)":"Mr","HeadFirstName":"Jacques","HeadLastName":"Bottjer","HeadPreferredJobTitle":"Headteacher","BSOInspectorateName + (name)":"Not applicable","InspectorateReport":"","DateOfLastInspectionVisit":"","NextInspectionVisit":"","TeenMoth + (name)":"Not applicable","TeenMothPlaces":"","CCF (name)":"","SENPRU (name)":"Not + applicable","EBD (name)":"Not applicable","PlacesPRU":"","FTProv (name)":"","EdByOther + (name)":"","Section41Approved (name)":"Not applicable","SEN1 (name)":"","SEN2 + (name)":"","SEN3 (name)":"","SEN4 (name)":"","SEN5 (name)":"","SEN6 (name)":"","SEN7 + (name)":"","SEN8 (name)":"","SEN9 (name)":"","SEN10 (name)":"","SEN11 (name)":"","SEN12 + (name)":"","SEN13 (name)":"","TypeOfResourcedProvision (name)":"","ResourcedProvisionOnRoll":"","ResourcedProvisionCapacity":"","SenUnitOnRoll":"","SenUnitCapacity":"","GOR + (code)":"G","GOR (name)":"East of England","DistrictAdministrative (code)":"E07000066","DistrictAdministrative + (name)":"Basildon","AdministrativeWard (code)":"E05004033","AdministrativeWard + (name)":"Vange","ParliamentaryConstituency (code)":"E14001077","ParliamentaryConstituency + (name)":"Basildon and Billericay","UrbanRural (code)":"C1","UrbanRural (name)":"(England/Wales) + Urban city and town","GSSLACode (name)":"E10000012","Easting":"572949","Northing":"188608","MSOA + (name)":"Basildon 022","LSOA (name)":"Basildon 022D","InspectorateName (name)":"","SENStat":"","SENNoStat":"","BoardingEstablishment + (name)":"","PropsName":"","PreviousLA (code)":"999","PreviousLA (name)":"","PreviousEstablishmentNumber":"","OfstedRating + (name)":"Good","Country (name)":"","UPRN":"10090454349","SiteName":"","QABName + (code)":"0","QABName (name)":"Not applicable","EstablishmentAccredited (code)":"0","EstablishmentAccredited + (name)":"Not applicable","QABReport":"","CHNumber":"","MSOA (code)":"E02004445","LSOA + (code)":"E01021326","FSM":"29","AccreditationExpiryDate":""}' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: created_at + value_before_type_cast: 2024-11-28 16:28:24.401152000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: updated_at + value_before_type_cast: 2024-11-28 23:00:46.134741000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: readable_phases + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url_override + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: region + value_before_type_cast: East of England + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: detailed_school_type + value_before_type_cast: Academy sponsor led + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: school_type + value_before_type_cast: Academies + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_code + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: group_type + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_within + value_before_type_cast: Essex + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: establishment_status + value_before_type_cast: Open + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: geopoint + value_before_type_cast: 0101000020E6100000EE69ECB108A0DF3F57A1B2BBEFC84940 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data_hash + value_before_type_cast: 953da3c0acd2b024bbc2bde43a3b16b5afe5c0bf0880b56f9ac296d104368f66 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: slug + value_before_type_cast: st-teresa-s-catholic-primary-school-basildon + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: email + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: safeguarding_information + value_before_type_cast: |- + Our organisation is committed to safeguarding and promoting the welfare of children, young people and vulnerable adults. We expect all staff, volunteers and trustees to share this commitment. + + Our recruitment process follows the keeping children safe in education guidance. + + Offers of employment may be subject to the following checks (where relevant): + childcare disqualification + Disclosure and Barring Service (DBS) + medical + online and social media + prohibition from teaching + right to work + satisfactory references + suitability to work with children + + You must tell us about any unspent conviction, cautions, reprimands or warnings under the Rehabilitation of Offenders Act 1974 (Exceptions) Order 1975. + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: searchable_content + value_before_type_cast: "'basildon':7A 'catholic':4A 'primary':5A 's':3A 'school':6A + 'st':1A 'teresa':2A" + new_record: false + active_record_yaml_version: 2 +- !ruby/object:School + concise_attributes: + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: id + value_before_type_cast: 0f655e5a-0769-4173-aca1-6421f3c2e5c9 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: type + value_before_type_cast: School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: name + value_before_type_cast: Northlands Primary School and Nursery + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: description + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: urn + value_before_type_cast: '114995' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: uid + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: phase + value_before_type_cast: 2 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: minimum_age + value_before_type_cast: 3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: maximum_age + value_before_type_cast: 11 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address + value_before_type_cast: Winifred Road + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: town + value_before_type_cast: Basildon + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: county + value_before_type_cast: Essex + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: postcode + value_before_type_cast: SS13 3JQ + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: locality + value_before_type_cast: Pitsea + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data + value_before_type_cast: '{"URN":"114995","LA (code)":"881","LA (name)":"Essex","EstablishmentNumber":"2786","EstablishmentName":"Northlands + Primary School and Nursery","TypeOfEstablishment (code)":"01","TypeOfEstablishment + (name)":"Community school","EstablishmentTypeGroup (code)":"4","EstablishmentTypeGroup + (name)":"Local authority maintained schools","EstablishmentStatus (code)":"2","EstablishmentStatus + (name)":"Closed","ReasonEstablishmentOpened (code)":"00","ReasonEstablishmentOpened + (name)":"Not applicable","OpenDate":"","ReasonEstablishmentClosed (code)":"06","ReasonEstablishmentClosed + (name)":"For Academy","CloseDate":"31-08-2016","PhaseOfEducation (code)":"2","PhaseOfEducation + (name)":"Primary","StatutoryLowAge":"3","StatutoryHighAge":"11","Boarders (code)":"1","Boarders + (name)":"No boarders","NurseryProvision (name)":"Has Nursery Classes","OfficialSixthForm + (code)":"2","OfficialSixthForm (name)":"Does not have a sixth form","Gender + (code)":"3","Gender (name)":"Mixed","ReligiousCharacter (code)":"00","ReligiousCharacter + (name)":"Does not apply","ReligiousEthos (name)":"Does not apply","Diocese (code)":"0000","Diocese + (name)":"Not applicable","AdmissionsPolicy (code)":"0","AdmissionsPolicy (name)":"Not + applicable","SchoolCapacity":"525","SpecialClasses (code)":"2","SpecialClasses + (name)":"No Special Classes","CensusDate":"","NumberOfPupils":"","NumberOfBoys":"","NumberOfGirls":"","PercentageFSM":"","TrustSchoolFlag + (code)":"0","TrustSchoolFlag (name)":"Not applicable","Trusts (code)":"","Trusts + (name)":"","SchoolSponsorFlag (name)":"Not applicable","SchoolSponsors (name)":"","FederationFlag + (name)":"Not under a federation","Federations (code)":"","Federations (name)":"","UKPRN":"","FEHEIdentifier":"","FurtherEducationType + (name)":"Not applicable","OfstedLastInsp":"09-12-2011","OfstedSpecialMeasures + (code)":"0","OfstedSpecialMeasures (name)":"Not applicable","LastChangedDate":"15-10-2018","Street":"Winifred + Road","Locality":"Pitsea","Address3":"","Town":"Basildon","County (name)":"Essex","Postcode":"SS13 + 3JQ","SchoolWebsite":"","TelephoneNum":"","HeadTitle (name)":"Mrs","HeadFirstName":"Elizabeth","HeadLastName":"Young","HeadPreferredJobTitle":"Headteacher","BSOInspectorateName + (name)":"Not applicable","InspectorateReport":"","DateOfLastInspectionVisit":"","NextInspectionVisit":"","TeenMoth + (name)":"Not applicable","TeenMothPlaces":"","CCF (name)":"Not applicable","SENPRU + (name)":"Not applicable","EBD (name)":"Not applicable","PlacesPRU":"","FTProv + (name)":"","EdByOther (name)":"Not applicable","Section41Approved (name)":"Not + applicable","SEN1 (name)":"","SEN2 (name)":"","SEN3 (name)":"","SEN4 (name)":"","SEN5 + (name)":"","SEN6 (name)":"","SEN7 (name)":"","SEN8 (name)":"","SEN9 (name)":"","SEN10 + (name)":"","SEN11 (name)":"","SEN12 (name)":"","SEN13 (name)":"","TypeOfResourcedProvision + (name)":"","ResourcedProvisionOnRoll":"","ResourcedProvisionCapacity":"","SenUnitOnRoll":"","SenUnitCapacity":"","GOR + (code)":"G","GOR (name)":"East of England","DistrictAdministrative (code)":"E07000066","DistrictAdministrative + (name)":"Basildon","AdministrativeWard (code)":"E05004030","AdministrativeWard + (name)":"Pitsea North West","ParliamentaryConstituency (code)":"E14000933","ParliamentaryConstituency + (name)":"South Basildon and East Thurrock","UrbanRural (code)":"C1","UrbanRural + (name)":"(England/Wales) Urban city and town","GSSLACode (name)":"E10000012","Easting":"573767","Northing":"188755","MSOA + (name)":"Basildon 013","LSOA (name)":"Basildon 013D","InspectorateName (name)":"","SENStat":"","SENNoStat":"","BoardingEstablishment + (name)":"","PropsName":"","PreviousLA (code)":"915","PreviousLA (name)":"Pre + LGR (1998) Essex","PreviousEstablishmentNumber":"2786","OfstedRating (name)":"Good","Country + (name)":"","UPRN":"10090455041","SiteName":"","QABName (code)":"0","QABName + (name)":"Not applicable","EstablishmentAccredited (code)":"0","EstablishmentAccredited + (name)":"Not applicable","QABReport":"","CHNumber":"","MSOA (code)":"E02004436","LSOA + (code)":"E01021305","FSM":"","AccreditationExpiryDate":""}' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: created_at + value_before_type_cast: 2024-11-28 16:26:00.104039000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: updated_at + value_before_type_cast: 2024-11-28 23:01:00.378077000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: readable_phases + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url_override + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: region + value_before_type_cast: East of England + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: detailed_school_type + value_before_type_cast: Community school + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: school_type + value_before_type_cast: Local authority maintained schools + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_code + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: group_type + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_within + value_before_type_cast: Essex + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: establishment_status + value_before_type_cast: Closed + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: geopoint + value_before_type_cast: 0101000020E61000006C9F23333431E03F492F65C412C94940 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data_hash + value_before_type_cast: 4d92dd2801d8dc556c4abf57d159e2035606210bad9a4e46090ae71a5b1122fc + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: slug + value_before_type_cast: northlands-primary-school-and-nursery + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: email + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: safeguarding_information + value_before_type_cast: |- + Our organisation is committed to safeguarding and promoting the welfare of children, young people and vulnerable adults. We expect all staff, volunteers and trustees to share this commitment. + + Our recruitment process follows the keeping children safe in education guidance. + + Offers of employment may be subject to the following checks (where relevant): + childcare disqualification + Disclosure and Barring Service (DBS) + medical + online and social media + prohibition from teaching + right to work + satisfactory references + suitability to work with children + + You must tell us about any unspent conviction, cautions, reprimands or warnings under the Rehabilitation of Offenders Act 1974 (Exceptions) Order 1975. + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: searchable_content + value_before_type_cast: "'and':4A 'northlands':1A 'nursery':5A 'primary':2A 'school':3A" + new_record: false + active_record_yaml_version: 2 +- !ruby/object:School + concise_attributes: + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: id + value_before_type_cast: 0ff3a825-284d-4f46-b359-bc67566dc55e + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: type + value_before_type_cast: School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: name + value_before_type_cast: Lincewood Junior School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: description + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: urn + value_before_type_cast: '114868' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: uid + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: phase + value_before_type_cast: 2 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: minimum_age + value_before_type_cast: 7 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: maximum_age + value_before_type_cast: 11 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address + value_before_type_cast: Berry Lane + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: town + value_before_type_cast: Basildon + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: county + value_before_type_cast: Essex + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: postcode + value_before_type_cast: SS16 6AZ + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: locality + value_before_type_cast: Langdon Hills + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data + value_before_type_cast: '{"URN":"114868","LA (code)":"881","LA (name)":"Essex","EstablishmentNumber":"2498","EstablishmentName":"Lincewood + Junior School","TypeOfEstablishment (code)":"01","TypeOfEstablishment (name)":"Community + school","EstablishmentTypeGroup (code)":"4","EstablishmentTypeGroup (name)":"Local + authority maintained schools","EstablishmentStatus (code)":"2","EstablishmentStatus + (name)":"Closed","ReasonEstablishmentOpened (code)":"00","ReasonEstablishmentOpened + (name)":"Not applicable","OpenDate":"","ReasonEstablishmentClosed (code)":"01","ReasonEstablishmentClosed + (name)":"Result of Amalgamation/Merger","CloseDate":"31-08-2003","PhaseOfEducation + (code)":"2","PhaseOfEducation (name)":"Primary","StatutoryLowAge":"7","StatutoryHighAge":"11","Boarders + (code)":"1","Boarders (name)":"No boarders","NurseryProvision (name)":"No Nursery + Classes","OfficialSixthForm (code)":"0","OfficialSixthForm (name)":"Not applicable","Gender + (code)":"3","Gender (name)":"Mixed","ReligiousCharacter (code)":"00","ReligiousCharacter + (name)":"Does not apply","ReligiousEthos (name)":"Does not apply","Diocese (code)":"0000","Diocese + (name)":"Not applicable","AdmissionsPolicy (code)":"0","AdmissionsPolicy (name)":"Not + applicable","SchoolCapacity":"","SpecialClasses (code)":"2","SpecialClasses + (name)":"No Special Classes","CensusDate":"","NumberOfPupils":"","NumberOfBoys":"","NumberOfGirls":"","PercentageFSM":"","TrustSchoolFlag + (code)":"0","TrustSchoolFlag (name)":"Not applicable","Trusts (code)":"","Trusts + (name)":"","SchoolSponsorFlag (name)":"Not applicable","SchoolSponsors (name)":"","FederationFlag + (name)":"Not under a federation","Federations (code)":"","Federations (name)":"","UKPRN":"","FEHEIdentifier":"","FurtherEducationType + (name)":"Not applicable","OfstedLastInsp":"","OfstedSpecialMeasures (code)":"0","OfstedSpecialMeasures + (name)":"Not applicable","LastChangedDate":"14-11-2018","Street":"Berry Lane","Locality":"Langdon + Hills","Address3":"","Town":"Basildon","County (name)":"Essex","Postcode":"SS16 + 6AZ","SchoolWebsite":"","TelephoneNum":"","HeadTitle (name)":"Mr","HeadFirstName":"T","HeadLastName":"Eastwell","HeadPreferredJobTitle":"Headteacher","BSOInspectorateName + (name)":"Not applicable","InspectorateReport":"","DateOfLastInspectionVisit":"","NextInspectionVisit":"","TeenMoth + (name)":"Not applicable","TeenMothPlaces":"","CCF (name)":"Not applicable","SENPRU + (name)":"Not applicable","EBD (name)":"Not applicable","PlacesPRU":"","FTProv + (name)":"","EdByOther (name)":"Not applicable","Section41Approved (name)":"Not + applicable","SEN1 (name)":"","SEN2 (name)":"","SEN3 (name)":"","SEN4 (name)":"","SEN5 + (name)":"","SEN6 (name)":"","SEN7 (name)":"","SEN8 (name)":"","SEN9 (name)":"","SEN10 + (name)":"","SEN11 (name)":"","SEN12 (name)":"","SEN13 (name)":"","TypeOfResourcedProvision + (name)":"","ResourcedProvisionOnRoll":"","ResourcedProvisionCapacity":"","SenUnitOnRoll":"","SenUnitCapacity":"","GOR + (code)":"G","GOR (name)":"East of England","DistrictAdministrative (code)":"E07000066","DistrictAdministrative + (name)":"Basildon","AdministrativeWard (code)":"E05004027","AdministrativeWard + (name)":"Langdon Hills","ParliamentaryConstituency (code)":"E14000933","ParliamentaryConstituency + (name)":"South Basildon and East Thurrock","UrbanRural (code)":"C1","UrbanRural + (name)":"(England/Wales) Urban city and town","GSSLACode (name)":"E10000012","Easting":"567772","Northing":"187477","MSOA + (name)":"Basildon 021","LSOA (name)":"Basildon 021C","InspectorateName (name)":"","SENStat":"","SENNoStat":"","BoardingEstablishment + (name)":"","PropsName":"","PreviousLA (code)":"915","PreviousLA (name)":"Pre + LGR (1998) Essex","PreviousEstablishmentNumber":"2498","OfstedRating (name)":"","Country + (name)":"","UPRN":"","SiteName":"","QABName (code)":"0","QABName (name)":"Not + applicable","EstablishmentAccredited (code)":"0","EstablishmentAccredited (name)":"Not + applicable","QABReport":"","CHNumber":"","MSOA (code)":"E02004444","LSOA (code)":"E01021282","FSM":"","AccreditationExpiryDate":""}' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: created_at + value_before_type_cast: 2024-11-28 16:25:58.975507000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: updated_at + value_before_type_cast: 2024-11-28 23:01:01.282103000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: readable_phases + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url_override + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: region + value_before_type_cast: East of England + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: detailed_school_type + value_before_type_cast: Community school + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: school_type + value_before_type_cast: Local authority maintained schools + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_code + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: group_type + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_within + value_before_type_cast: Essex + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: establishment_status + value_before_type_cast: Closed + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: geopoint + value_before_type_cast: 0101000020E6100000F3A8E30080D0DA3F57420906D6C74940 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data_hash + value_before_type_cast: 32e7571418abe718595b5bb84aa7bd301a4b8c17c7eaa3985789568959750d9d + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: slug + value_before_type_cast: lincewood-junior-school + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: email + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: safeguarding_information + value_before_type_cast: |- + Our organisation is committed to safeguarding and promoting the welfare of children, young people and vulnerable adults. We expect all staff, volunteers and trustees to share this commitment. + + Our recruitment process follows the keeping children safe in education guidance. + + Offers of employment may be subject to the following checks (where relevant): + childcare disqualification + Disclosure and Barring Service (DBS) + medical + online and social media + prohibition from teaching + right to work + satisfactory references + suitability to work with children + + You must tell us about any unspent conviction, cautions, reprimands or warnings under the Rehabilitation of Offenders Act 1974 (Exceptions) Order 1975. + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: searchable_content + value_before_type_cast: "'junior':2A 'lincewood':1A 'school':3A" + new_record: false + active_record_yaml_version: 2 diff --git a/spec/fixtures/liverpool_schools.yml b/spec/fixtures/liverpool_schools.yml new file mode 100644 index 0000000000..ee67e3b00e --- /dev/null +++ b/spec/fixtures/liverpool_schools.yml @@ -0,0 +1,313 @@ +--- +- !ruby/object:School + concise_attributes: + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: id + value_before_type_cast: '00990114-731e-496d-ad18-3d61eb1c8e9d' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: type + value_before_type_cast: School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: name + value_before_type_cast: St Luke's Halsall Church of England Primary School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: description + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: urn + value_before_type_cast: '104921' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: uid + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: phase + value_before_type_cast: 2 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url + value_before_type_cast: http://www.stlukeshalsall.co.uk + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: minimum_age + value_before_type_cast: 3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: maximum_age + value_before_type_cast: 11 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address + value_before_type_cast: Cooks Road + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: town + value_before_type_cast: Liverpool + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: county + value_before_type_cast: Merseyside + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: postcode + value_before_type_cast: L23 2TB + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: locality + value_before_type_cast: Crosby + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data + value_before_type_cast: '{"URN":"104921","LA (code)":"343","LA (name)":"Sefton","EstablishmentNumber":"3343","EstablishmentName":"St + Luke''s Halsall Church of England Primary School","TypeOfEstablishment (code)":"02","TypeOfEstablishment + (name)":"Voluntary aided school","EstablishmentTypeGroup (code)":"4","EstablishmentTypeGroup + (name)":"Local authority maintained schools","EstablishmentStatus (code)":"1","EstablishmentStatus + (name)":"Open","ReasonEstablishmentOpened (code)":"00","ReasonEstablishmentOpened + (name)":"Not applicable","OpenDate":"","ReasonEstablishmentClosed (code)":"00","ReasonEstablishmentClosed + (name)":"Not applicable","CloseDate":"","PhaseOfEducation (code)":"2","PhaseOfEducation + (name)":"Primary","StatutoryLowAge":"3","StatutoryHighAge":"11","Boarders (code)":"1","Boarders + (name)":"No boarders","NurseryProvision (name)":"Has Nursery Classes","OfficialSixthForm + (code)":"2","OfficialSixthForm (name)":"Does not have a sixth form","Gender + (code)":"3","Gender (name)":"Mixed","ReligiousCharacter (code)":"02","ReligiousCharacter + (name)":"Church of England","ReligiousEthos (name)":"Does not apply","Diocese + (code)":"CE22","Diocese (name)":"Diocese of Liverpool","AdmissionsPolicy (code)":"0","AdmissionsPolicy + (name)":"Not applicable","SchoolCapacity":"210","SpecialClasses (code)":"2","SpecialClasses + (name)":"No Special Classes","CensusDate":"18-01-2024","NumberOfPupils":"229","NumberOfBoys":"123","NumberOfGirls":"106","PercentageFSM":"14.60","TrustSchoolFlag + (code)":"0","TrustSchoolFlag (name)":"Not applicable","Trusts (code)":"","Trusts + (name)":"","SchoolSponsorFlag (name)":"Not applicable","SchoolSponsors (name)":"","FederationFlag + (name)":"Not under a federation","Federations (code)":"","Federations (name)":"","UKPRN":"10068597","FEHEIdentifier":"","FurtherEducationType + (name)":"Not applicable","OfstedLastInsp":"27-03-2024","OfstedSpecialMeasures + (code)":"0","OfstedSpecialMeasures (name)":"Not applicable","LastChangedDate":"24-09-2024","Street":"Cooks + Road","Locality":"Crosby","Address3":"","Town":"Liverpool","County (name)":"Merseyside","Postcode":"L23 + 2TB","SchoolWebsite":"http://www.stlukeshalsall.co.uk","TelephoneNum":"01519245142","HeadTitle + (name)":"Mr","HeadFirstName":"Richard J","HeadLastName":"Miller","HeadPreferredJobTitle":"Headteacher","BSOInspectorateName + (name)":"Not applicable","InspectorateReport":"","DateOfLastInspectionVisit":"","NextInspectionVisit":"","TeenMoth + (name)":"Not applicable","TeenMothPlaces":"","CCF (name)":"Not applicable","SENPRU + (name)":"Not applicable","EBD (name)":"Not applicable","PlacesPRU":"","FTProv + (name)":"","EdByOther (name)":"Not applicable","Section41Approved (name)":"Not + applicable","SEN1 (name)":"","SEN2 (name)":"","SEN3 (name)":"","SEN4 (name)":"","SEN5 + (name)":"","SEN6 (name)":"","SEN7 (name)":"","SEN8 (name)":"","SEN9 (name)":"","SEN10 + (name)":"","SEN11 (name)":"","SEN12 (name)":"","SEN13 (name)":"","TypeOfResourcedProvision + (name)":"","ResourcedProvisionOnRoll":"","ResourcedProvisionCapacity":"","SenUnitOnRoll":"","SenUnitCapacity":"","GOR + (code)":"B","GOR (name)":"North West","DistrictAdministrative (code)":"E08000014","DistrictAdministrative + (name)":"Sefton","AdministrativeWard (code)":"E05000934","AdministrativeWard + (name)":"Blundellsands","ParliamentaryConstituency (code)":"E14001463","ParliamentaryConstituency + (name)":"Sefton Central","UrbanRural (code)":"A1","UrbanRural (name)":"(England/Wales) + Urban major conurbation","GSSLACode (name)":"E08000014","Easting":"331909","Northing":"400144","MSOA + (name)":"Sefton 022","LSOA (name)":"Sefton 022D","InspectorateName (name)":"","SENStat":"","SENNoStat":"","BoardingEstablishment + (name)":"","PropsName":"","PreviousLA (code)":"999","PreviousLA (name)":"","PreviousEstablishmentNumber":"","OfstedRating + (name)":"Good","Country (name)":"","UPRN":"41020675","SiteName":"","QABName + (code)":"0","QABName (name)":"Not applicable","EstablishmentAccredited (code)":"0","EstablishmentAccredited + (name)":"Not applicable","QABReport":"","CHNumber":"","MSOA (code)":"E02001450","LSOA + (code)":"E01006939","FSM":"33","AccreditationExpiryDate":""}' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: created_at + value_before_type_cast: 2024-11-28 16:23:38.159026000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: updated_at + value_before_type_cast: 2024-11-28 23:00:39.433225000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: readable_phases + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url_override + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: region + value_before_type_cast: North West + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: detailed_school_type + value_before_type_cast: Voluntary aided school + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: school_type + value_before_type_cast: Local authority maintained schools + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_code + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: group_type + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_within + value_before_type_cast: Sefton + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: establishment_status + value_before_type_cast: Open + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: geopoint + value_before_type_cast: 0101000020E610000099E2E18CEC3808C056B550A22DBF4A40 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data_hash + value_before_type_cast: 44cb6eddddab6e3459fa8e7377dec703f435fe059ba246a028116bbcc1896b66 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: slug + value_before_type_cast: st-luke-s-halsall-church-of-england-primary-school + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: email + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: safeguarding_information + value_before_type_cast: |- + Our organisation is committed to safeguarding and promoting the welfare of children, young people and vulnerable adults. We expect all staff, volunteers and trustees to share this commitment. + + Our recruitment process follows the keeping children safe in education guidance. + + Offers of employment may be subject to the following checks (where relevant): + childcare disqualification + Disclosure and Barring Service (DBS) + medical + online and social media + prohibition from teaching + right to work + satisfactory references + suitability to work with children + + You must tell us about any unspent conviction, cautions, reprimands or warnings under the Rehabilitation of Offenders Act 1974 (Exceptions) Order 1975. + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: searchable_content + value_before_type_cast: "'church':5A 'england':7A 'halsall':4A 'luke':2A 'of':6A + 'primary':8A 's':3A 'school':9A 'st':1A" + new_record: false + active_record_yaml_version: 2 +- !ruby/object:School + concise_attributes: + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: id + value_before_type_cast: '018d51b1-fa0b-4073-9b44-16077a007092' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: type + value_before_type_cast: School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: name + value_before_type_cast: Abbot's Lea School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: description + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: urn + value_before_type_cast: '104736' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: uid + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: phase + value_before_type_cast: 0 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url + value_before_type_cast: http://www.abbotsleaschool.co.uk + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: minimum_age + value_before_type_cast: 3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: maximum_age + value_before_type_cast: 19 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address + value_before_type_cast: Beaconsfield Road + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: town + value_before_type_cast: Liverpool + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: county + value_before_type_cast: Merseyside + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: postcode + value_before_type_cast: L25 6EE + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: locality + value_before_type_cast: Woolton + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data + value_before_type_cast: '{"URN":"104736","LA (code)":"341","LA (name)":"Liverpool","EstablishmentNumber":"7025","EstablishmentName":"Abbot''s + Lea School","TypeOfEstablishment (code)":"07","TypeOfEstablishment (name)":"Community + special school","EstablishmentTypeGroup (code)":"5","EstablishmentTypeGroup + (name)":"Special schools","EstablishmentStatus (code)":"1","EstablishmentStatus + (name)":"Open","ReasonEstablishmentOpened (code)":"00","ReasonEstablishmentOpened + (name)":"Not applicable","OpenDate":"","ReasonEstablishmentClosed (code)":"00","ReasonEstablishmentClosed + (name)":"Not applicable","CloseDate":"","PhaseOfEducation (code)":"0","PhaseOfEducation + (name)":"Not applicable","StatutoryLowAge":"3","StatutoryHighAge":"19","Boarders + (code)":"1","Boarders (name)":"No boarders","NurseryProvision (name)":"Has Nursery + Classes","OfficialSixthForm (code)":"1","OfficialSixthForm (name)":"Has a sixth + form","Gender (code)":"3","Gender (name)":"Mixed","ReligiousCharacter (code)":"00","ReligiousCharacter + (name)":"Does not apply","ReligiousEthos (name)":"Does not apply","Diocese (code)":"0000","Diocese + (name)":"Not applicable","AdmissionsPolicy (code)":"0","AdmissionsPolicy (name)":"Not + applicable","SchoolCapacity":"272","SpecialClasses (code)":"1","SpecialClasses + (name)":"Has Special Classes","CensusDate":"18-01-2024","NumberOfPupils":"271","NumberOfBoys":"229","NumberOfGirls":"42","PercentageFSM":"57.10","TrustSchoolFlag + (code)":"0","TrustSchoolFlag (name)":"Not applicable","Trusts (code)":"","Trusts + (name)":"","SchoolSponsorFlag (name)":"Not applicable","SchoolSponsors (name)":"","FederationFlag + (name)":"Not under a federation","Federations (code)":"","Federations (name)":"","UKPRN":"10017283","FEHEIdentifier":"","FurtherEducationType + (name)":"Not applicable","OfstedLastInsp":"10-07-2024","OfstedSpecialMeasures + (code)":"0","OfstedSpecialMeasures (name)":"Not applicable","LastChangedDate":"15-11-2024","Street":"Beaconsfield + Road","Locality":"Woolton","Address3":"","Town":"Liverpool","County (name)":"Merseyside","Postcode":"L25 + 6EE","SchoolWebsite":"www.abbotsleaschool.co.uk","TelephoneNum":"01514281161","HeadTitle + (name)":"Mrs","HeadFirstName":"Ania","HeadLastName":"Hildrey","HeadPreferredJobTitle":"Headteacher","BSOInspectorateName + (name)":"Not applicable","InspectorateReport":"","DateOfLastInspectionVisit":"","NextInspectionVisit":"","TeenMoth + (name)":"Not applicable","TeenMothPlaces":"","CCF (name)":"Not applicable","SENPRU + (name)":"Not applicable","EBD (name)":"Not applicable","PlacesPRU":"","FTProv + (name)":"","EdByOther (name)":"Not applicable","Section41Approved (name)":"Not + applicable","SEN1 (name)":"SpLD - Specific Learning Difficulty","SEN2 (name)":"OTH + - Other Difficulty/Disability","SEN3 (name)":"SLCN - Speech, language and Communication","SEN4 + (name)":"ASD - Autistic Spectrum Disorder","SEN5 (name)":"SEMH - Social, Emotional + and Mental Health","SEN6 (name)":"MSI - Multi-Sensory Impairment","SEN7 (name)":"MLD + - Moderate Learning Difficulty","SEN8 (name)":"SLD - Severe Learning Difficulty","SEN9 + (name)":"","SEN10 (name)":"","SEN11 (name)":"","SEN12 (name)":"","SEN13 (name)":"","TypeOfResourcedProvision + (name)":"Not applicable","ResourcedProvisionOnRoll":"","ResourcedProvisionCapacity":"","SenUnitOnRoll":"","SenUnitCapacity":"","GOR + (code)":"B","GOR (name)":"North West","DistrictAdministrative (code)":"E08000012","DistrictAdministrative + (name)":"Liverpool","AdministrativeWard (code)":"E05015339","AdministrativeWard + (name)":"Woolton Village","ParliamentaryConstituency (code)":"E14001337","ParliamentaryConstituency + (name)":"Liverpool Garston","UrbanRural (code)":"A1","UrbanRural (name)":"(England/Wales) + Urban major conurbation","GSSLACode (name)":"E08000012","Easting":"341418","Northing":"387532","MSOA + (name)":"Liverpool 047","LSOA (name)":"Liverpool 047E","InspectorateName (name)":"","SENStat":"","SENNoStat":"","BoardingEstablishment + (name)":"","PropsName":"","PreviousLA (code)":"999","PreviousLA (name)":"","PreviousEstablishmentNumber":"","OfstedRating + (name)":"Outstanding","Country (name)":"","UPRN":"38168369","SiteName":"","QABName + (code)":"0","QABName (name)":"Not applicable","EstablishmentAccredited (code)":"0","EstablishmentAccredited + (name)":"Not applicable","QABReport":"","CHNumber":"","MSOA (code)":"E02001393","LSOA + (code)":"E01006796","FSM":"129","AccreditationExpiryDate":""}' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: created_at + value_before_type_cast: 2024-11-28 16:23:32.158796000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: updated_at + value_before_type_cast: 2024-11-28 23:00:40.696169000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: readable_phases + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url_override + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: region + value_before_type_cast: North West + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: detailed_school_type + value_before_type_cast: Community special school + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: school_type + value_before_type_cast: Special schools + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_code + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: group_type + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_within + value_before_type_cast: Liverpool + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: establishment_status + value_before_type_cast: Open + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: geopoint + value_before_type_cast: 0101000020E61000001FC70D2B9C0E07C0C6F7A6F7D0B04A40 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data_hash + value_before_type_cast: b2542be41bd99b95f7a228c46682ba209d17d48946e058feceae0fa2aca90664 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: slug + value_before_type_cast: abbot-s-lea-school + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: email + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: safeguarding_information + value_before_type_cast: |- + Our organisation is committed to safeguarding and promoting the welfare of children, young people and vulnerable adults. We expect all staff, volunteers and trustees to share this commitment. + + Our recruitment process follows the keeping children safe in education guidance. + + Offers of employment may be subject to the following checks (where relevant): + childcare disqualification + Disclosure and Barring Service (DBS) + medical + online and social media + prohibition from teaching + right to work + satisfactory references + suitability to work with children + + You must tell us about any unspent conviction, cautions, reprimands or warnings under the Rehabilitation of Offenders Act 1974 (Exceptions) Order 1975. + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: searchable_content + value_before_type_cast: "'abbot':1A 'lea':3A 's':2A 'school':4A" + new_record: false + active_record_yaml_version: 2 diff --git a/spec/fixtures/polygons.yml b/spec/fixtures/polygons.yml new file mode 100644 index 0000000000..f42ccf435c --- /dev/null +++ b/spec/fixtures/polygons.yml @@ -0,0 +1,45 @@ +--- +- !ruby/object:LocationPolygon + concise_attributes: + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: id + value_before_type_cast: a3091546-882d-4d2f-ad90-762898d9c4b1 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: name + value_before_type_cast: basildon + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: location_type + value_before_type_cast: cities + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: created_at + value_before_type_cast: 2024-11-28 16:34:24.733500000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: updated_at + value_before_type_cast: 2024-11-28 16:34:24.733500000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: area + value_before_type_cast: 0106000020E610000004000000010300000001000000550000009C2F87E40351DA3F19A6A4336ECC494087C9DE29A050DA3F8F06607B5FCC494056F63573705CDA3F4E0415FF5ECC49402D1234B60C5CDA3F607B7E4750CC4940E469C0F4A85BDA3FF0EF268F41CC49408628FD447A67DA3FBB14C81241CC494005502D094B73DA3FFF72659640CC494087D4C93EE772DA3F7622E3DE31CC49402EBA9A76B87EDA3F8B75726231CC49403AC9A59F547EDA3FEC661CAA22CC4940C80877CEF07DDA3F982A87F213CC49407C9CD5F88C7DDA3FC2EB303A05CC4940C39D28195E89DA3F0C6AB8BD04CC4940687D9B3C2E95DA3FB5F73E4104CC4940E6FF0FD6FEA0DA3FA3FCB4C403CC494034274FF09AA0DA3FEC96340DF5CB4940CF7E90816BACDA3F849EA190F4CB49409FDDDB6ECFACDA3FCB7F214803CC4940B472440EA1B8DA3FEDA779CB02CC4940656DDA2971C4DA3FEE41D84E02CC4940030CACC041D0DA3F493F28D201CC4940A571E2CAA5D0DA3F58B07A8A10CC49401032966876DCDA3F38A7C00D10CC4940EAAD858147E8DA3FDAFFF7900FCC49405090E71D18F4DA3FB2F22A140FCC4940E5F20FFDB3F3DA3FB80FDA5B00CC494047073968E3E7DA3F1C98A6D800CC49404B7838557FE7DA3FC84D2921F2CB4940F5C15D421BE7DA3F69A19869E3CB494000260F404ADBDA3FC1BA5FE6E3CB49408A115F4BAEDBDA3FC8EBF09DF2CB4940EACAC0BCDDCFDA3FA6EBA91AF3CB4940A05CFBB879CFDA3FF7351863E4CB49406BBE3E31A9C3DA3F852FC7DFE4CB4940FF198E3045C3DA3F9AF37327D6CB4940EC3BE635E1C2DA3FE41BF46FC7CB4940E6B191AEB1CEDA3F382546F3C6CB4940C223962682DADA3FFAAE8E76C6CB4940E0E698171EDADA3F91703ABEB7CB4940A7F203A74DCEDA3FDC43F13AB8CB4940EDFBC7357DC2DA3FA3979EB7B8CB4940EEF3C73FADB6DA3FF8503D34B9CB494048F6FBC5DBAADA3F0A7EE2B0B9CB4940D9D781DA77AADA3F26854CF9AACB494058EB13EB13AADA3F1AD308419CCB4940AB2A0056E5B5DA3FB4EB64C49BCB49403A57646481B5DA3FDB62CF0C8DCB49403AB8E700B0A9DA3F69A772898DCB4940ED7204A4DF9DDA3FBF9301068ECB4940A9617A460F92DA3F840087828ECB4940349BC8217392DA3F9A711E3A9DCB4940D3D23630A386DA3F6B6D92B69DCB4940AA78D25B3F86DA3FDF00FAFE8ECB4940AE0B1188DB85DA3FBF76614780CB49401B0934AA0A7ADA3F4460D3C380CB49409E8BC0766E7ADA3FD8CB6C7B8FCB4940EBEEEF43D27ADA3FF51906339ECB494068A65B16367BDA3F78EA4CEBACCB4940A3E2D7090787DA3F5D5CD86EACCB4940082382DF6A87DA3FD08D7026BBCB4940DE09ECBACE87DA3F498CC9DEC9CB49406C4305B9FD7BDA3F85DD3F5BCACB49402DD7D0E4997BDA3F6EFDE5A2BBCB49402AB07CE9C86FDA3FE1F0511FBCCB494069A07BB62C70DA3F7BB2ACD7CACB49403EFD7D7C9070DA3F0111308FD9CB49403C318648F470DA3F20278747E8CB4940AAA9FBB12365DA3F216FE6C3E8CB4940EA288FEDBF64DA3F04CA8E0BDACB49400C3C96D2EE58DA3F8EBCE987DACB4940C119B5CD1E4DDA3F0AB92F04DBCB4940812FEA82824DDA3FEB7B88BCE9CB4940590AAE33E64DDA3F3A3C2074F8CB494069B498E4494EDA3FD699A42B07CC49400266CA9BAD4EDA3F8714FDE315CC4940F6C68A4E114FDA3F998C949B24CC49402454330C4043DA3F8F46DF1725CC494018D11BBDA343DA3F082038D033CC4940DC9D10690744DA3F26ACBC8742CC494057234C1B6B44DA3F6955154051CC4940A813DA4C9A38DA3F6E8052BC51CC494002C608F3FD38DA3FE4B5EA7360CC4940839216C9CE44DA3F19FCACF75FCC4940EF7C227C3245DA3F862AF2AF6ECC49409C2F87E40351DA3F19A6A4336ECC494001030000000100000037000000ACD9CBAF22A4DD3F4BA3879259CC4940446A38D6BCA3DD3FADD915DB4ACC49404BCDA24BEC97DD3F10FF175A4BCC494013F8F5758697DD3F2A0FF8A13CCC49401EA4A5F856A3DD3FCC5BF6223CCC49400E977620F1A2DD3FED65846B2DCC49409E71ACA52097DD3F62A785EA2DCC4940357DDED0BA96DD3FC64052321FCC4940BFAC7E025596DD3F24F7F27A10CC4940F308152FEF95DD3F3864BFC201CC4940B2252E92BFA1DD3FB678BF4301CC4940C88F7D6D25A2DD3F9C99F2FB0FCC4940F864CAD7F5ADDD3F1BB9E87C0FCC4940FCF1C3CCC6B9DD3F457ACFFD0ECC494003A3A8E160B9DD3F683D9D4500CC4940924D77FCFAB8DD3F02D32B8EF1CB4940408C49172AADDD3FC02D440DF2CB494096CBC7BC59A1DD3F462A4D8CF2CB49403F0094618995DD3FDFA34C0BF3CB4940C7A78E8F2395DD3FB2E41853E4CB4940D244F7C3BD94DD3F7F42B99BD5CB4940DA56DC77ED88DD3F4D55AE1AD6CB4940DDD3D4B58788DD3FDC783B63C7CB4940C0350BF22188DD3F03B708ABB8CB49402DA695B4517CDD3F053EF329B9CB4940B069DEFEEB7BDD3FFC149472AACB494086E8834C1B70DD3FA0C979F1AACB4940FE0F5C154B64DD3F08CA5070ABCB49409C51C0BBB064DD3FF8F8B027BACB49402C8091FA8070DD3F9C75D9A8B9CB4940A82F07AFE670DD3F793D0D61C8CB4940EE75B570B77CDD3FE08226E2C7CB49406B7A0F2B1D7DDD3F4AE59999D6CB4940877FDCE6827DDD3F326BFA50E5CB494049DA9615B271DD3F781CE2CFE5CB494081D3EACF1772DD3F52311788F4CB4940888BBB857D72DD3F49478B3F03CC49405B807341E372DD3FE12FC0F711CC494095CF22F84873DD3F2FCF20AF20CC494016C976827867DD3FFF91FB2D21CC4940C9D7AC37DE67DD3F22C030E62FCC49407C1B69B90D5CDD3F9971026530CC4940D0963662735CDD3FA612771C3FCC494062E15FE84368DD3F63EFA49D3ECC4940F18F749EA968DD3FD0A6C6554DCC4940C901D22B7A74DD3F8D8EEAD64CCC49401E8961344B80DD3F3DC0FF574CCC4940691044F6B080DD3F95DF720F5BCC49404A9FD8B81681DD3FD4E8E5C669CC494067C5CF807C81DD3F227A067F78CC4940D7D67A244D8DDD3F6B05160078CC494070E873C71D99DD3F720D1C8177CC4940E18BB0EFB798DD3F0360FCC868CC4940909B501D5298DD3F963A8A115ACC4940ACD9CBAF22A4DD3F4BA3879259CC494001030000000100000027080000EFC844AD419CDE3F242BEC1E4FCC494043430D3E12A8DE3F3A5E1C9F4ECC4940F512FF49E3B3DE3F1DCF3D1F4ECC4940C8EB8BB17CB3DE3F948FD3673FCC494061328B384DBFDE3FC809F1E73ECC4940DCF551D9B3BFDE3F20F75A9F4DCC494065FAE96784CBDE3FCC996E1F4DCC4940BA51BF11EBCBDE3FE320D8D65BCC494034DB0AC151CCDE3FBF31EF8E6ACC49406626816622D8DE3F8039FD0E6ACC49404DC37993F3E3DE3F8393048F69CC494012C7CF43C4EFDE3FA09C070F69CC49401C9D987A5DEFDE3F93E0EF565ACC49408D43B5D28CE3DE3F7D09EDD65ACC4940E5F4691726E3DE3F4E12831F4CCC4940E415DBB6F6EEDE3F5DB7859F4BCC494009C7DAF38FEEDE3F36831BE83CCC49404969DB2C29EEDE3F49A603302ECC4940B9B5AABAF9F9DE3F1859FCAF2DCC494089CEB2F092F9DE3F08DD91F81ECC494055D952756305DF3FADCF80781ECC4940F1A995843411DF3FA04C60F81DCC49409A7632A5CD10DF3F8E7934400FCC49401674629EFC04DF3F852E55C00FCC4940F1EDF9CD9504DF3F10B5FD0801CC494045333E5AC5F8DE3F42260F8901CC4940B7D33A8D5EF8DE3F16A1E3D0F2CB494053FA37C6F7F7DE3F27F97819E4CB49404835A36227ECDE3F27408199E4CB49409B9F8C9FC0EBDE3F05D755E1D5CB4940849479E459EBDE3FC4DDFE29C7CB4940E27E322CF3EADE3F6CF59472B8CB494048A75576C3F6DE3FC7CA8EF2B7CB4940DC93B8BF9302DF3F7A337F72B7CB49406683B893640EDF3F124860F2B6CB4940F6C09ADB341ADF3FE7D63D72B6CB49404394BC220526DF3F21F911F2B5CB49404DEF1D69D531DF3FA4AEDC71B5CB4940AA4F98786E31DF3F59F7BBB9A6CB4940ED429F8E0731DF3FD4456F0298CB4940300702C3D73CDF3F53FB338297CB494047725ECB703CDF3FD7A114CA88CB4940066841724148DF3F0560CC4988CB4940F7C1839C1154DF3F77F27FC987CB4940876D05C6E15FDF3F79182A4987CB494062868BBA7A5FDF3F529DD09178CB494083CAADDA4A6BDF3F440D731178CB4940B55CC6EEB16BDF3FFCD1CAC886CB4940A2FFE608196CDF3FC051E38095CB4940EB24FA1D806CDF3F8E732738A4CB4940AB919C39E76CDF3FB39A3FF0B2CB49405091B8504E6DDF3F4AAE96A7C1CB4940D72292261F79DF3F13362127C1CB494043654D70EF84DF3F2A3CA8A6C0CB4940F6B547B9BF90DF3FB5D52526C0CB4940EB078101909CDF3FA5029AA5BFCB49406068DAC460A8DF3F8A7EFF24BFCB4940BE86910B31B4DF3F0DD260A4BECB4940EC77875101C0DF3F12B9B823BECB49400C2FBC96D1CBDF3F8A3307A3BDCB49408EB98C66A2D7DF3FB5524622BDCB49402DC53EAA72E3DF3FCEF381A1BCCB49401CA134F042EFDF3F91F3CF20BCCB49403161767ADBEEDF3F624E8969ADCB4940DFF1DFB7ABFADF3F6BE0D1E8ACCB4940586FDD3513FBDF3F856318A0BBCB4940DD3A0EB47AFBDF3FC88B4B57CACB494054558EBEA503E03F150B85D6C9CB4940B158C7E48D09E03F2A48BA55C9CB4940A8D0A20A760FE03F0BFDE5D4C8CB4940B7B620305E15E03FAA290854C8CB4940522B34029215E03F4360280CD7CB4940C7C1582B7A1BE03FF10C3F8BD6CB4940245DD2996221E03F964F460AD6CB4940255EB2BF2E21E03FDCF82952C7CB4940096017E41627E03F708C2FD1C6CB494046B31E08FF2CE03FB5972B50C6CB4940B451C82BE732E03FD41A1ECFC5CB4940A6BD048DCF38E03FCFCB014EC5CB49406BD8F2AFB73EE03F173EE1CCC4CB4940482883D29F44E03F2B28B74BC4CB494004A7B5F4874AE03F0C8A83CAC3CB4940BDC77A547050E03F4D184149C3CB49403C44A75B3C50E03F05D10F92B4CB49403673FE782456E03FBF44C910B4CB4940D118257CF055E03F43C58459A5CB49405930007DBC55E03FCF4E7FA196CB49400555E867D44FE03FD095C52297CB4940177CED620850E03FE72ECBDAA5CB49407CD9670B204AE03F615B0D5CA6CB4940E69F8214EC49E03FB69F07A497CB4940820DAFFE0344E03F18D63A2598CB49408DAC7DE81B3EE03F708464A698CB49401E83EED13338E03FB2AA842799CB4940C48C117D4B32E03F4E92A0A899CB4940C7E4C665632CE03FF0A7AD299ACB4940461B0D48972CE03F1E10B4E1A8CB4940B2F9442CAF26E03F13C0B762A9CB49400C2B1F10C720E03FE3E7B1E3A9CB4940F28318369320E03FFC3AAB2B9BCB494025035B5F5F20E03F08AE78748CCB4940D88341734726E03FE2CA7EF38BCB49403A59CA862F2CE03FA55F7B728BCB49401D7DF5991732E03F6D6C6EF18ACB4940E3C4B2EAFF37E03F4AA752708ACB4940D56B22FDE73DE03F80A332EF89CB4940374B340FD043E03FBC17096E89CB4940D75CE820B849E03FE003D6EC88CB4940DBD7BE2A8449E03FD626D0347ACB494090249C375049E03F821F8B7D6BCB49407E6972421C49E03F646B98C55CCB49403B5C0B50E848E03FBF42530E4ECB49407885D54E0043E03F49CC858F4ECB4940B5ABEB60CC42E03F677040D83FCB494074FEFA709842E03FCA674D2031CB4940B3E3F1698048E03F5A231B9F30CB4940D2C279A0684EE03FBC0BDA1D30CB49409DFCB4985054E03F48B7949C2FCB494013305098385AE03F8531451B2FCB49401EA5CF8F2060E03F61CDEC992ECB494066E9DFC40866E03F849485182ECB494006388ECD3C66E03F28CD77D03CCB4940495271C8246CE03F33360C4F3CCB4940A970F6C20C72E03F7B1797CD3BCB4940798C1DBDF477E03FE470184C3BCB494026F588B2DC7DE03F9BEE9ACA3ACB4940AE6DF7E0C483E03F9BC719493ACB4940E94C29FBF883E03FAA5A5E0049CB4940BC2D1BC9107EE03FF0ABDF8149CB494017A202E0447EE03F2D58243958CB494062DEA5F9787EE03F478F16F166CB49403D88F3326184E03F48E9946F66CB4940A433254E9584E03FD448D92675CB4940472F576CC984E03F7A7DDEDE83CB49400901A06EB18AE03FF448585D83CB4940E585D78DE58AE03F9211891492CB49405FA26A93CD90E03F1F2BF99291CB4940D55366A0B596E03F42135F1191CB49408C6722CAE996E03F55A663C99FCB4940953588F11D97E03F0042A780AECB494075FFFE185297E03F4782D737BDCB4940974EB6663A9DE03FA8BD2EB6BCCB49402E8C12956E9DE03FB9F2326ECBCB49407A739EBAA29DE03FD3F98625DACB49401B4397E2D69DE03FE03F9DDDE8CB494035EDEE070B9EE03FDC3CDF94F7CB49407E4485303F9EE03FBE53F54C06CC4940E9BDDE5027A4E03FF07745CB05CC49401D74E9700FAAE03FB21A8C4905CC4940AB62A590F7AFE03FF53BC9C704CC494060E502EEDFB5E03F6B8AF74504CC4940EBFA3A2114B6E03FBE844AFD12CC49400AC0295748B6E03F29044BB521CC49408C984CF35FB0E03FC9C41D3722CC4940C397E22394B0E03F741771EE30CC49401C87FF8A7CB6E03F51CF9D6C30CC4940262624BFB0B6E03FD582F0233FCC4940C281FFF5E4B6E03F7FBBF0DB4DCC4940F5525C25CDBCE03F8933185A4DCC494019486A54B5C2E03FF92936D84CCC4940BF08AC8FE9C2E03F209F878F5BCC4940F05D5E5D01BDE03F50306A115CCC4940EACD5B9835BDE03F7AFC7CC96ACC49400A29B7D069BDE03FCB7FBB8079CC494052FD9A9781B7E03F769E95027ACC49407048F6CFB5B7E03F06C3A8BA88CC4940ED10F405EAB7E03FFAE8FA7197CC4940AA92178801B2E03F1AE6D1F397CC494090F6DD4719ACE03FD30F9A7598CC4940208C550731A6E03FB9B758F798CC4940CA577EC648A0E03FAFDD0D7999CC49402DED7F9D14A0E03FC899B9C18ACC4940905117DBFCA5E03F2BFB04408ACC4940F4027CACC8A5E03F1040F0877BCC49401EC41F8194A5E03FB09EAFD06CCC4940D914225360A5E03F5BB49A185ECC494045091F282CA5E03F859946614FCC4940795803FBF7A4E03F4FCA44A940CC49401225ABCD0F9FE03FBCC3F62A41CC49409A3713622799E03FEF8AA4AC41CC494072665F2C3F93E03F882A442E42CC49401662BB4F7393E03FF48F47E650CC4940EF1F371E8B8DE03F508BDD6751CC49402E2D64ECA287E03FF4046AE951CC4940CB6E2807D787E03F7CC4C0A060CC494079C8D593EE81E03F8D91492261CC4940F4C3255E067CE03F918EC3A361CC494076BB63753A7CE03F2F2CDC5B70CC49405862018A6E7CE03FAD8020137FCC4940751831C65682E03F4B75A5917ECC4940B3574CE18A82E03F8E5CBD498DCC4940D4A8DCA1A27CE03F2EEF38CB8DCC494035DD5BB7D67CE03FE85E90829CCC49400A600BFABE82E03F194514019CCC4940B8C6D412F382E03FB5CB57B8AACC4940D9676796DB88E03F555ACC36AACC494091DDAEB50F89E03FA873E3EEB8CC4940D6E140FEF78EE03F0F47536DB8CC4940CA308446E094E03F8798B9EBB7CC494027073796C89AE03F13BE156AB7CC4940CCC4E1BCFC9AE03FA1426A21C6CC494086A4B945E5A0E03FBBB8B79FC5CC4940EEE2CE1BB1A0E03F95BB63E8B6CC4940C9EE256399A6E03FB386AD66B6CC49405F2F2EAA81ACE03FE1CFEDE4B5CC49400F6966774DACE03FFCE2D92CA7CC494052D5DFBA35B2E03FC03111ABA6CC49401845FC3B1EB8E03F1CAD3929A6CC49400EFFD77E06BEE03FADF75DA7A5CC4940EAD864C1EEC3E03F5DC07825A5CC494059CEA203D7C9E03F1E078AA3A4CC4940E52FDBC3A2C9E03FEAD94CEC95CC4940E107DD84BAC3E03F6D0B3B6E96CC494079A55F4886C3E03FABF4E9B687CC49407C011E846EC9E03FC84AFC3487CC4940E72C3D0557CFE03FA321FFB286CC4940E5F6E1BF22CFE03FBC1BEEFA77CC4940CA40C77DEECEE03F672FB14369CC49407BFA0939BACEE03F56FA9F8B5ACC494031AA48F785CEE03F7D944FD44BCC49408ED06DB351CEE03F6F7A511C3DCC49404F3B4FDE39D4E03F3E73539A3CCC494037B5E10822DAE03F64EA4B183CCC4940503925330AE0E03FF0DF3A963BCC4940C8C2195DF2E5E03FEF5320143BCC4940FA18B0C4DAEBE03F72F1F6913ACC49404A9806EEC2F1E03FDA61C90F3ACC494066836045F7F1E03FC84CC4C748CC4940BE21A09A2BF2E03FAC83117F57CC4940FED7DCF25FF2E03FAC891F3766CC4940DEABA32548F8E03F9CE0E6B465CC494033927C7E7CF8E03F0716206C74CC4940220A34B464FEE03F3D63DDE973CC49402F762B304D04E13F4B56886773CC4940FF9B976B350AE13F9DF51DE572CC4940A8C9B407010AE13F02C8E72D64CC494021FF3EA1CC09E13F7446DD7555CC49407D62D83D9809E13F228893BE46CC4940F36D150FB003E13FBD5BFA4047CC49401E96DEAD7B03E13F6EA8018938CC49406A0F7E4F4703E13F4ADAB5D129CC49409970C2752F09E13F9805524F29CC4940E91E7D13FB08E13F9DDD07981ACC49407B402EAFC608E13F27F60FE00BCC494088A14091DE02E13FBE5A70620CCC49403DECE72CF6FCE03F13D8BEE40CCC4940FB11D4892AFDE03FF6F9B89C1BCC49405AEF9A6742F7E03FB17CF81E1CCC4940DDBD12455AF1E03FFC7D2EA11CCC49407615A6EE25F1E03F224C33E90DCC494043D5F19AF1F0E03F289FE531FFCB494035ED997E09EBE03F190F11B4FFCB49402DB9022421E5E03FFC51383600CC494050CC0C0739DFE03FABBE50B800CC494075E7C7E950D9E03FE8A95F3A01CC494064DAB3A01CD9E03F0DDF4E82F2CB494097BD5F8634D3E03F1EC15304F3CB494037B3BC6B4CCDE03FBF214F86F3CB494068841C0B64C7E03FB5FD4608F4CB4940BA37714A98C7E03FC55F59C002CC494096A2F02BB0C1E03FC244424203CC49406DACDBEF7BC1E03F055B2F8AF4CB4940E09E06B747C1E03F038BF0D2E5CB494029758F7B13C1E03F0C72DD1AD7CB4940E5125190FBC6E03FEF23F698D6CB49404CEE07CF2FC7E03F37B50851E5CB4940E66E682C18CDE03FFD6011CFE4CB494031BC71EAE3CCE03F6257FF16D6CB4940088F95FECBD2E03F2C060595D5CB494098756A12B4D8E03FAF330113D5CB494007F35DC87FD8E03F993AB75BC6CB4940F7BA18D867DEE03F36C5AAD9C5CB494094DB7DE74FE4E03F1EC89457C5CB49409D047D3438EAE03FB7EE6FD5C4CB49407FF001D703EAE03F9EE56D1DB6CB49406CD01BE2EBEFE03FD403459BB5CB494040B74984B7EFE03FE64417E4A6CB4940F0AF882683EFE03F932AD62C98CB4940B5F76EC64EEFE03F0319D47489CB49401A1F34C666E9E03FA979FCF689CB49400D73B4877EE3E03F1AA720798ACB49406A3ACE8696DDE03F57F835FB8ACB4940735D9285AED7E03F09C2417D8BCB4940C3CA2CD7E2D7E03F907F44359ACB4940EE83FBD1FAD1E03FA8EC46B79ACB49402EA374CC12CCE03F26D23F399BCB494057C0771447CCE03F16EE81F0A9CB494089E68B5C7BCCE03F94AEB0A7B8CB4940C990C20993C6E03FBD5EA629B9CB49401E3A4EC55EC6E03F6C737772AACB494002EBEA802AC6E03FB62C35BB9BCB4940FA0B303AF6C5E03FA7EE31038DCB49401DD49D370EC0E03FCC9917858DCB49406C16B63426BAE03F75BDF3068ECB4940EFD778313EB4E03F8559C6888ECB494074DEF6EF55AEE03FDABE940A8FCB49403EAE0EEC6DA8E03F734B548C8FCB49408D10D1E785A2E03F8F500A0E90CB49405DFF1ABA51A2E03FC331DA5681CB49407E06B9BA39A8E03F425724D580CB4940D8A001BB21AEE03F36F5645380CB494058DFE3F809B4E03F8ABA96D17FCB4940738981F8F1B9E03F2349C44F7FCB4940124DB1B9BDB9E03F3B93C09770CB49408FB559B5A5BFE03F0FC5E41570CB49400621EC7571BFE03FEA0EA25E61CB49407044E37D89B9E03F5FB27DE061CB49404D84024055B9E03F57248D2853CB4940C475DF0421B9E03F2D214A7144CB49402BE111CAECB8E03FC00C07BA35CB4940B49E318DB8B8E03F354B160227CB4940828D51A3D0B2E03F96BCE78327CB49401C5CCE6C9CB2E03F325BA4CC18CB49403A37F43368B2E03F6502A0140ACB4940995C60FE33B2E03FE1C86F5DFBCA4940020D62DD1BB8E03F89D79EDBFACA4940334B93A1E7B7E03F17879A23ECCA4940A8F89F7CCFBDE03F4E39C0A1EBCA49408AE833409BBDE03FA0E87CEADCCA494057531D0467BDE03FBD863933CECA49408B474F307FB7E03F177F13B5CECA49408F68C5F54AB7E03F514522FDBFCA49401202F4C532BDE03FAE77487BBFCA494065FF358CFEBCE03F7C0A0BC4B0CA4940FACE5358E6C2E03F65162842B0CA494071460019B2C2E03F10FB2B8AA1CA4940B1ACC050CABCE03FF2DD0E0CA2CA4940E528961896BCE03FF5D1E65493CA49404C82D4DD61BCE03F9386EA9C84CA4940093AF71C7AB6E03F67BEC31E85CA49400CB7DA53AEB6E03FFD1AC0D693CA494084422788E2B6E03F2238E88DA2CA49408B0D34BFFAB0E03FAE09B80FA3CA4940E936FAB712ABE03F3BA38391A3CA4940467D53EE2AA5E03F1C634013A4CA4940910D5324439FE03F4A9AF394A4CA49404FEDF8595B99E03FD5489D16A5CA4940E63658517393E03FC9BD4298A5CA49405B288D7E8B8DE03F6D04DA19A6CA494073D35265578DE03F1970B16297CA494013DF3F343F93E03F553A1AE196CA494014BD91140B93E03F7D771D2988CA4940375BE8F7D692E03F128BE17179CA49409CE7DCDBA292E03F70D9B8BA6ACA4940ADB63BBD6E92E03F5CE8BB025CCA494007EAC6FD868CE03F73DA52845CCA4940725008E6528CE03FEAAE16CD4DCA4940BE95E7CE1E8CE03F2CBEED153FCA4940C85B31B5EA8BE03FED8DF05D30CA494064580C69D291E03F87CE59DC2FCA49404D9FA0860692E03FD7ED56943ECA4940E25D2E74EE97E03F86EFB1123ECA494043E7BB52BA97E03F25E1B45A2FCA4940A7494E348697E03F3EA978A320CA494035B17C4E9E91E03FB1851D2521CA4940ADFADF316A91E03FB891336D12CA4940DD8C03183691E03F0B2AF7B503CA49406ACBD5FB0191E03F1BCDF9FDF4C949403B94ACE2CD90E03F9646BD46E6C94940F33E21CA9990E03FDCFA938FD7C94940EB5600AF6590E03FAF6F96D7C8C94940D5239E7D4D96E03FF0F8F155C8C94940B7C6F70D359CE03F274949D4C7C94940E7C4F79D1CA2E03F47119752C7C94940BE189E2D04A8E03F5D51DBD0C6C949405735D5FAEBADE03F63B8104FC6C94940365D64CFB7ADE03FBC58D497B7C949403D060B06D0A7E03F9EE09E19B8C949403D50427AE8A1E03F7D8F5A9BB8C94940B0F01FEE009CE03F53B60C1DB9C9494043EDA3611996E03F1F55B59EB9C949408B979C43E595E03F4606CBE6AAC949402B83BA7CFD8FE03F285B6F68ABC94940CC11586CC98FE03F0FD12AB19CC94940F329185A958FE03F3ECF24F98DC94940E1CD204B618FE03FC9EAF2417FC949403AB094392D8FE03F8AC2EC8970C94940909330F11495E03FCA43490870C94940E9FB886AFC9AE03F0390A1866FC94940757D87E3E3A0E03F1A58F0046FC9494077395AC9AFA0E03FFBDAAB4D60C9494089773D54C89AE03FD2CA5CCF60C9494094CFC6DEE094E03FA236045161C9494026D60C2BF98EE03F6C6DA7D261C949408414231DC58EE03F5A4F751B53C949401C9EA40C918EE03F7EED6E6344C949407CB48096A988E03FD36A03E544C94940E124E88C7588E03F2E94BD2D36C949400F5B2AFF5C8EE03FB35E29AC35C949405C903EA74494E03FDBFF862A35C9494090F00F112C9AE03FFD6BE0A834C9494009A6C5F9F799E03FEBBDEDF025C94940ACB13BE5C399E03FAE98A83917C9494017C52D83DC93E03F849C4EBB17C949408E56DDE2F48DE03F7D6BF03C18C94940FC61C6D3C08DE03FD4BCE98409C94940478BB3C78C8DE03F3CE1A3CDFAC8494048C43EBC588DE03FB23C7116ECC849406C6635AE248DE03F5E546A5EDDC84940331630A3F08CE03F1B3F24A7CEC849406FA71E96BC8CE03F967A30EFBFC84940AC03CD8B888CE03F023FEA37B1C84940E21AF1107092E03FB8674AB6B0C849400E616D003C92E03F807A43FEA1C84940FD4320F50792E03FD5C70B4793C8494059878BECD391E03FE20ABA8F84C84940D5311F28BB97E03F601B160E84C84940E7727634EF97E03FEACA67C592C849401DEB7473D69DE03F7446BA4392C849404FA71BB2BDA3E03F733A03C291C849405DC9512EA5A9E03F18563D4091C849404AD8B21671A9E03FF7CEEB8882C849406183E75058AFE03F13C1210782C84940235FC48A3FB5E03FA42B4E8581C849402A52E8A973B5E03F8F979F3C90C84940ABE316CBA7B5E03F6DDCD8F39EC84940656FE4F2DBB5E03F1A19DEABADC849401E98AB37C3BBE03F82F7002AADC849404E0C0961F7BBE03F81F244E1BBC84940AD21FCEEDEC1E03F7B08585FBBC84940ECA3F036C6C7E03F0B9767DDBAC84940182AD00592C7E03F952C2426ACC84940A0A65DD25DC7E03FADC81F6E9DC8494033455BA629C7E03F1E84E5B68EC84940B6A8EF7BF5C6E03F444194FF7FC8494075056DB4DCCCE03F658D9A7D7FC849408F7392ECC3D2E03F095297FB7EC8494024ED5F24ABD8E03F308F8A797EC84940D34CBC9992DEE03F87F06EF77DC849403BC5D9D079E4E03F521E4F757DC84940F7F4110EAEE4E03F031CA02C8CC84940FBDE994895EAE03F5CB476AA8BC849409F359F0761EAE03F94C425F37CC84940F3970C3E48F0E03F66E3F2707CC84940A892C5B92FF6E03F1D7AB0EE7BC84940F7C082EF16FCE03F78896A6C7BC84940312AEBA0E2FBE03FC4CD58B46CC84940A0CE9D55AEFBE03F0B341BFD5DC849401DA86527C7F5E03F7C08617F5EC84940A00F32B3DFEFE03FBB55A3015FC8494028B84984F8E9E03FED1AD6835FC8494038B44FC42CEAE03FC3DE133B6EC849406AE84C9145E4E03F7D2A3DBD6EC849404F54095511E4E03FBE58FF0560C849404FA12C16DDE3E03F9E46ED4D51C8494072CF56EAF5DDE03F19EF0CD051C84940B64241B2C1DDE03FC0A6BB1843C84940488BEF4BDAD7E03FE30DD79A43C84940F38E42800ED8E03F1664285252C8494084C0BC5327D2E03F6DFD34D452C84940348051875BD2E03F3939478C61C8494068B04DB88FD2E03F9534854370C84940EAE9EA83A8CCE03F256288C570C84940BC24B15674CCE03FFC584A0E62C8494035DCB8258DC6E03F51F1439062C849406CAC68F4A5C0E03F4502341263C84940591F1D7DBEBAE03FF687209463C8494018311D4BD7B4E03F9D89FD1564C84940B66FC518F0AEE03FD503D19764C8494082E015E608A9E03F9FF69A1965C849402ED4277521A3E03F67B2609B65C84940D8B9C8413A9DE03FFF95171D66C84940B6E5110E5397E03F1BF2C49E66C84940455D03DA6B91E03FC9C6682067C84940C862B667848BE03FEB6208A267C8494036934161508BE03F2C84F5E958C849404E8289286985E03F10E6866B59C84940A8A536F7817FE03FC2160EED59C84940692726F6B57FE03F2A1021A568C84940FE6DFCC0CE79E03F62449E2669C849407077DCC59A79E03F95118B6E5AC84940F4B8BDCD6679E03F41B038B74BC849401EDD91D33279E03FB39C38FF3CC84940C40F23DCFE78E03F4510E6472EC8494034D2E9781773E03F5B5B5BC92EC849406EC89A85E372E03FE14F081220C84940F4B8FA8FAF72E03FD347F45911C84940B230DF71C86CE03F75F159DB11C84940E2C86B53E166E03F411AB65C12C849406687A034FA60E03F2AC208DE12C84940DB389C4DC660E03F8C99C72604C849401EE39F68AD66E03F075B75A503C84940F5463F7B7966E03FEF5460EDF4C749400F16DF904566E03F6D200C36E6C749404F5172A41166E03F93390A7ED7C7494097EB70B5DD65E03FCE0B34C5C8C74940E7328CA9F65FE03F9BA48446C9C7494026AC4BC9C25FE03F4694B190BAC749405C3DD6C0DB59E03F2143F811BBC74940830A247AF453E03F5ABC3A93BBC749406635D6522854E03F3D9F0E49CAC74940101EEA45414EE03FA6B542CACAC749407A0EFF700D4EE03F7B696E14BCC7494084B6C55F2648E03F523F9995BCC749401249F1553F42E03F2BEBB916BDC7494046303A810B42E03FC74BB55EAEC74940E9D8F03C243CE03F3B57D1DFAEC749403523E00D583CE03FD85FD697BDC74940B3AF75D78B3CE03F84E7AB4DCCC74940076AFFABBF3CE03FADF68406DBC74940F7D3F57DF33CE03FBFBE89BEE9C74940BF471B680C37E03F51A4983FEAC7494067943E344037E03F1C23F0F6F8C74940A28C60037437E03F987308AF07C849402C7ACA205B3DE03FAFBBF82D07C849403FD920F18E3DE03FF85B3CE515C84940B511BAC4C23DE03F4C18549D24C8494020AEC09FDB37E03F7CA2641E25C849401B4FEFCFA737E03F0C7D4C6616C84940031F66AEC031E03F2E1D53E716C84940464E858CD92BE03F6C3C506817C8494006F8C6540D2CE03F2534692026C849405684E0F02526E03F928362A126C8494087A688CA3E20E03FA8094D2227C84940CDDCD6090B20E03FDF3F336A18C84940E5BB664CD71FE03F4C92EDB209C84940801D2F6BBE25E03F2ADE033209C8494076B764A78A25E03F6552EA79FAC749402B5598E65625E03F6E9891C2EBC74940F302C1232325E03FF52B8B0ADDC74940C0C64F103C1FE03F15A5738BDDC74940025B5FCF6F1FE03F8E7A7A43ECC74940CBD6CEB78819E03FD8DB59C4ECC74940330187FC5419E03F7A9D520CDEC74940C1B766E86D13E03F0A15288DDEC74940D8A1542E3A13E03F79264CD4CFC74940C8D302D8520DE03F9DA31D55D0C74940B583FBC66B07E03F65B0DFD5D0C749406178661F3807E03F4C780620C2C74940A3DECE115101E03FA09BBEA0C2C749401BB9BF07D4F6DF3F483E6D21C3C7494013890AB96CF6DF3F20B36369B4C749405E200DA49EEADF3F636C08EAB4C74940DF242F13D0DEDF3F9B0FA86AB5C749402F621AD968DEDF3F6D1D4BB3A6C7494027607FCB9AD2DF3F5FAFDA33A7C749400BEE34BDCCC6DF3F84C260B4A7C74940D1173BAEFEBADF3FDC56DD34A8C749400E685F8697BADF3FBEDABD7C99C7494059020FF3C8AEDF3FCD5736FD99C74940F01152EAFAA2DF3FA96A9F7D9AC7494059E7E5E02C97DF3FA9FEFEFD9AC74940B58DCAD65E8BDF3FF913557E9BC74940AD08DAD3F78ADF3F68A407C78CC74940F845E154297FDF3FABF858478DC74940AE633650907FDF3FAFEBA6FE9BC749405ACDBC44C273DF3F0303EA7E9CC749407F309438F467DF3F979B23FF9CC749401998BC2B265CDF3F6EB5537F9DC7494073CA3847BF5BDF3F673804C88EC74940AD63445E585BDF3FE4CFDE0F80C74940C1A59AD4894FDF3FC6830A9080C74940E30486D5BB43DF3F03CD261081C7494077040C025543DF3FC066C05872C749402E3F9EF9224FDF3F2067A4D871C7494020134F1FBC4EDF3F20373E2163C74940F9313F2FEE42DF3F24ED59A163C749409D8A62588742DF3F82C245E954C749408B32286FB936DF3F51AC576955C74940B50038A55236DF3F55C2F0B146C749402BDBD2C2842ADF3F0CE0F83147C74940F7A2F863B61EDF3F49B9FCB147C74940FDBA77A44F1EDF3FC440D4F938C74940F7136DEBE81DDF3F5EE77F422AC749405047462D821DDF3F2648578A1BC7494094620E60B411DF3F00844B0A1CC74940819A2992E605DF3F893D368A1CC74940D8FA97C318FADE3FA474170A1DC74940B8F0E621B2F9DE3FCCCDAE520EC74940DA9C2A5AE4EDDE3F233986D20EC749401CF12EC17DEDDE3F0180301B00C7494034650875AFE1DE3F2D03049B00C74940B4A074B3E1D5DE3F1A20C81A01C74940F08363247BD5DE3F6A8E9D62F2C64940066E8E6AADC9DE3F002957E2F2C6494071A109F213CADE3F105F829A01C74940C5C71B3046BEDE3FAA0F331A02C74940C36F2FB0DFBDDE3FE22B0762F3C649402DA75C7911B2DE3FA4EDB2E1F3C649409BEFA2BD43A6DE3F30F94F61F4C649403B86C052DDA5DE3F0688E3A9E5C64940E4F9E79D0F9ADE3F836A7629E6C64940123562E8418EDE3F80D1FFA8E6C649403E609288DB8DDE3F0E4DE4F0D7C649402E47285E0D82DE3FC4C36870D8C649406BF3D6AE3F76DE3FF985DEEFD8C64940AEE58863D975DE3F2F2A6F38CAC649404B2AA0AB0B6ADE3F836ADBB7CAC64940032283023E5EDE3F60883D37CBC649402D6DF3DC6F52DE3F09629BB6CBC64940CA079611D652DE3F0FC60C6EDAC64940486BB43EA45EDE3F003FAEEED9C649401FE048800A5FDE3F9279CCA6E8C64940640A8338D86ADE3FCF006927E8C6494012DB9C7D3E6BDE3FB5D5D8DEF6C649402E60A0C8A46BDE3FF278099705C74940A2D64801D75FDE3F8C4C6E1606C74940895D7DBD0854DE3FE4DBCE9506C7494072E3CBF43A48DE3F0DB8201507C74940AF6875C0D447DE3F850CEE5CF8C6494094FAA5FE063CDE3FC8BF35DCF8C64940ADB9293C3930DE3F7DF7735BF9C64940C59DD81CD32FDE3FCABF00A4EAC649401E153E610524DE3FB6CE3423EBC6494054DA73459F23DE3F7431136BDCC64940893DF514D117DE3FE94C42EADCC64940C01A905F030CDE3F45B76269DDC649406C5B7EA93500DE3F21A679E8DDC649403DDB9BAE9B00DE3FF64A9DA0ECC64940A66A3C6C690CDE3FEEAE8521ECC64940FFB4E174CF0CDE3F33EEFAD8FAC64940A22864399D18DE3F8D29D959FAC64940999A7E4F0319DE3F368A0E1209C74940351886606919DE3F939D6FC917C74940F7C040AF3725DE3F26CD3D4A17C74940A863AA96D124DE3F1267DD9208C74940945A62619F30DE3FA3FDA71308C74940F34687810531DE3F7DB607CB16C74940FF022153D33CDE3F3724C84B16C7494038E90D24A148DE3F55167FCC15C74940CBED4DF46E54DE3FD78C2C4D15C74940FE3EA83F3D60DE3F1A50CBCD14C74940CCB63A7FA360DE3FE3833B8523C749406492B6C40961DE3F03866C3D32C749405DF33D6A3B55DE3FB41DCFBC32C749405A8215A3A155DE3F25802C7441C7494014195CE20756DE3F62FB5D2C50C74940192FF34BD661DE3FCC08FAAC4FC74940CCC11439A46DDE3FE7D1912D4FC74940095302357279DE3F37781FAE4EC74940A2BA6686D879DE3F6EE88D655DC74940EAF0BC79A685DE3F7B0C12E65CC74940BAD914D80C86DE3FEA522D9E6BC749401913164EDB91DE3F2E14A21E6BC749409C12A147A99DDE3FAE92129F6AC7494045DB0CB10F9EDE3FC7C57E5679C74940267879B1DDA9DE3FD41AE5D678C74940E784212344AADE3F1786508E87C74940F4BD6F2A12B6DE3FA4B1AC0E87C74940B996C5A978B6DE3F0FEDD8C695C74940593FB13347C2DE3F5B4F254795C74940641E74B5ADC2DE3F8B2F7CFEA3C74940CE3A6ACA7BCEDE3FC73EC37EA3C74940E5191ADF49DADE3F992203FFA2C749404BB16776B0DADE3FA15C2CB7B1C74940E736230917DBDE3F4897946EC0C74940DF50B32CE5E6DE3FE2EBCBEEBFC74940822373CC4BE7DE3F0E2AE1A6CEC74940005247A17DDBDE3F5958AA26CFC74940C878DE2AE4DBDE3F3E9490DCDDC749401DA426CA4ADCDE3F45597A95ECC749406E45738F7CD0DE3F40253D15EDC7494070CD0222E3D0DE3F5E0B53CDFBC74940D21685B049D1DE3F4932BB840AC84940480707677BC5DE3F74D37B040BC8494096DF05E014C5DE3F5693124DFCC74940A875902146B9DE3F7EE1CDCCFCC74940832B10A1ACB9DE3FCF3A38840BC8494093183956DEADDE3FD6F1E5030CC84940689BB50A10A2DE3FE7338A830CC84940EABE85BE4196DE3F110125030DC84940A07B8955DB95DE3F895CB74BFEC749403D6162940C8ADE3F34D54CCBFEC7494094115B4E3E7EDE3F319FD34AFFC7494031072EF86F72DE3F4A9B51CAFFC749407A56CEB0A166DE3F5C7BC54900C84940D484CC613B66DE3F60B3A591F1C74940F74C76A56C5ADE3F773D1411F2C7494081E23F649E4EDE3F6A1A7490F2C7494074765D22D042DE3F6782CA0FF3C749402BE0CAE46942DE3F161BD356E4C749400A5DBEA99B36DE3F5BF51ED6E4C749405FF1056ECD2ADE3FB85A6155E5C749404BC8949C332BDE3FABF35A0EF4C7494049D50EC6992BDE3FD73780C602C8494089C87FEBFF2BDE3F26BCF77D11C849400DAAD716662CDE3FE007303620C84940A1971A3DCC2CDE3FD2FE93ED2EC84940A887615FFD20DE3FE7A0D76C2FC84940B9508F846321DE3F89C210253EC84940C8E5751A9515DE3FC6D146A43EC8494023B0B0AFC609DE3FC76B73233FC84940576A86996009DE3FC918386B30C8494031A3C789FA08DE3FF1D7D0B321C849407006F5749408DE3F1A4295FB12C84940B4338F10C6FCDD3FC6C3B57A13C84940298B2A3FF7F0DD3F4B5ED1F913C84940CD5F403F91F0DD3FF45E544205C8494090954E3B2BF0DD3F959F298AF6C74940B4DE4932C5EFDD3F1B8B2AD1E7C749405C9DD43E5FEFDD3FF1F92E1BD9C749402812960691E3DD3F9F88379AD9C7494086FAABCDC2D7DD3F58A23619DAC749405F0FC0DA5CD7DD3FD74D0961CBC74940EFDCABA88ECBDD3F3ADAFDDFCBC74940D0069FC228CBDD3FB0EA7C28BDC7494014DD481D5ABFDD3F871C76A7BDC749404F970CF78BB3DD3F22087826BEC749408175981B26B3DD3F55B2346EAFC749408F9927FC57A7DD3F53DC2BEDAFC74940CC370CDC899BDD3F4295196CB0C749404523EA15249BDD3F68ADA7B4A1C74940123F5671558FDD3F7C7D9033A2C749408B795B578783DD3F79036AB2A2C749403294149B2183DD3F612121FA93C749406A5AE5875377DD3FF7E5EF7894C7494024D10B74856BDD3F7F39B5F794C749406EF9BBCC1F6BDD3F85A02B4086C74940B09F1B27BA6ADD3F679FA88877C74940FD6F1B2C8876DD3F756EE60977C7494049FB057B2276DD3F9F2AB75168C74940B10B767D546ADD3F9DD677D068C7494068423C7F865EDD3F49152F4F69C74940BE798F04B852DD3FBE16E2CD69C749400EFA549F1D53DD3F53E9158678C7494024D615368353DD3F2EF49B3D87C74940D5FBA827B547DD3F5A6143BC87C74940E1B957984F47DD3FA7D1BB0479C749402AC5B090813BDD3F9C4C588379C7494087276088B32FDD3F155AEB017AC74940145BEA034E2FDD3F15F9B2496BC7494038A5CB84E82EDD3FAA0E28925CC749406DBA6EFF1923DD3FC779B4105DC74940D7753783B422DD3F0FF866584EC7494048F3E28FE616DD3F349CE2D64EC749405D5CAA044C17DD3F99A2318F5DC74940F47F3C097E0BDD3F0C5EA50D5EC74940B6F3E49B180BDD3F08D354554FC74940FE17ED34B30ADD3F1D54D89D40C74940B90CB547E5FEDC3F0E993F1C41C74940AA5520E37FFEDC3F2A38ED6332C74940BC7BE680B1F2DC3F13B84EE232C749409477CB99E3E6DC3F609DA16033C749409C2B07B215DBDC3F5B15EBDE33C749403B129B69B0DADC3FBBE8542725C749401FE69C88E2CEDC3F0C6F93A525C749408D1ACE487DCEDC3F2EE00EEE16C74940D25F55E3AEC2DC3F6745486C17C74940D78BB41B14C3DC3F9E58CE2326C749401112A5C446B7DC3F9C33F4A126C749406D10C3F6ABB7DC3F2AED8E5935C7494038BCB82E11B8DC3FCE68EA1144C74940F1872DAD42ACDC3FDAA01C9044C74940E6B3D8D8A7ACDC3F1B60A44753C7494055D1E40A0DADDC3F123B000062C749401E3792FF3EA1DC3FA9582C7E62C74940EF426425A4A1DC3FA7D5C73571C74940CDCD703872ADDC3FA7119BB770C74940B690546BD7ADDC3F996EE36F7FC7494085C6C409A6B9DC3F0757AEF17EC74940B3ED27400BBADC3F71D649A98DC7494012543DCBD8C5DC3F9845192B8DC7494022F72F6CA7D1DC3F48A1D3AC8CC74940A86DB3B20CD2DC3F876F6F649BC74940402510FF71D2DC3F6E03CC1CAAC74940BE50012340DEDC3F8C1F809EA9C749401ACE48460EEADC3F71CA2A20A9C74940A292E668DCF5DC3F1D04CCA1A8C74940072CA506AB01DD3FF09E5E23A8C7494079F9CD6B1002DD3F0599E1DAB6C7494048B68D94DE0DDD3F04A06E5CB6C749402A8D8C07440EDD3F255AC414C5C7494026C70376A90EDD3FC90459CCD3C749404C9CD1E90E0FDD3F052A9B84E2C749403BF3AFAA4003DD3FFF121203E3C7494040A8A208A603DD3F90EE25B9F1C74940A962394F740FDD3FBDB5AD3AF1C749403C352695421BDD3FA30B2CBCF0C74940341569DA1027DD3F35F0A03DF0C749406CC52E647627DD3FFB5FB4F6FEC749408025843B4533DD3F77AD1878FEC74940FA8FE986133FDD3FA65E79F9FDC74940AFDEA4D1E14ADD3F7F9ED07AFDC74940F205B61BB056DD3F126D1EFCFCC749400DAD47BE1557DD3FFA4158B40BC84940B7C7D45C7B57DD3F6852E46B1AC849408E3E4001E157DD3FAA27312429C849405DB09CA04658DD3F4FA3A9DB37C84940A4C85C46AC58DD3F4B2EF69346C84940450493E71159DD3F3CAA814B55C849400AACBC70434DDD3F36BD3BCA55C849406395FCD6DD4CDD3F0AF1AE1247C849402AF7B238784CDD3FB715615A38C8494089101FD0A940DD3FAD160FD938C849402808E166DB34DD3F25A6B35739C8494005A0E6DD7534DD3F073A37A02AC84940439A2DF0A628DD3F2EDDD61E2BC84940FE069C694128DD3FF2C684661CC849404249F60D731CDD3FBDD213E51CC849403050B7940D1CDD3F8A31812D0EC84940FA94DD3F3F10DD3FE27B05AC0EC84940D6EE59EA7004DD3FC854802A0FC84940EAA55F18A2F8DC3FFAE9F6A80FC84940E94A88C1D3ECDC3F9CDF5E2710C84940CE2C076A05E1DC3FCE63BDA510C8494035D51412A0E0DC3FDA6D76ED01C84940F04A60C1D1D4DC3FB430CA6B02C84940FD77D96B6CD4DC3F5B90ADB2F3C74940F022AC969DC8DC3F6D63FC30F4C749402781035E38C8DC3F2FF9E17AE5C749405F65BB2B07D4DC3FD97594FCE4C74940372D846DD5DFDC3FA252437EE4C74940165717B53AE0DC3F761D5B34F3C74940BC80ABFD08ECDC3F3D39FFB5F2C749401641A3AEA3EBDC3F17BEE8FFE3C74940499618EF71F7DC3F29B88481E3C749405251378A0CF7DC3FD9F23FC9D4C74940571F38513EEBDC3FC5A8A247D5C74940A86A22F9D8EADC3F5F0E0A90C6C749407B3BEFC60ADFDC3F3903620EC7C74940375B12943CD3DC3FBF86B08CC7C74940981147D56DC7DC3F646AFB0AC8C74940CCBE5B2CA0BBDC3FF6393189C8C74940B06A9A6605BCDC3F8513CF40D7C749409250509D36B0DC3F9A4309BFD7C7494057B41C5468A4DC3F558B393DD8C749406C0EDB84CDA4DC3F5F5086F5E6C74940D2C16DB7FE98DC3F89B0B273E7C749405E806E8E9998DC3F377D65BBD8C74940EB94AABFCB8CDC3F55997D39D9C749402DEBC0A3668CDC3F2882DD81CAC749409CE174E49780DC3F2504F6FFCAC74940B2AC46A0C974DC3F69DBFF7DCBC7494061BA5B8F6474DC3F07E79DC5BCC7494038EBCF84FF73DC3F7B12100EAEC74940A55741759A73DC3F48F2AD559FC74940F2A8A047CC67DC3FCEFEACD39FC7494084171D95FE5BDC3F4F629D51A0C74940C1AC105F2F50DC3F0D6494CFA0C74940DFF562579450DC3F6FCEF787AFC7494057A2B34AF950DC3F1BED863FBEC74940BDFB61445E51DC3FBA2BEAF7CCC749402EA27BFD8F45DC3FB300CE75CDC749406961E7B5C139DC3F1D55A8F3CDC74940828F9B9B263ADC3FA96E4BABDCC749407D02A4868B3ADC3FB1129C63EBC74940971A2BBABD2EDC3F6FF667E1EBC749409A62288F222FDC3FC47B8997FAC7494087ACB6A35323DC3FDFE45715FBC7494012CA10C78417DC3FB8271C93FBC749407499E5A1E917DC3F801F424C0AC8494074CC9F381B0CDC3FC428F8C90AC849402FCBB506800CDC3F93424A8219C84940CE6A3519B100DC3F9C5EFCFF19C849404A1895DB1501DC3FDA2FA1B728C849406745CBA37A01DC3F6CD6067037C84940AFD8BB9DACF5DB3FC601A6ED37C84940575C345911F6DB3F42CA37A546C84940FE0C071B76F6DB3FCBB29D5D55C849409FE85ED8DAF6DB3F319A421564C849402554AAF5A802DC3FB325A29763C84940D013E709780EDC3FD8E4ED1963C8494073806AD7DC0EDC3FE6DA91D171C84940FF03E976AB1ADC3F13D1D85371C84940B2CF7E51101BDC3FF0E3290C80C8494024D41C28751BDC3F7240CDC38EC84940C1583C524427DC3F13B304468EC84940BD424B36A927DC3F4FD767FE9CC849403FE7F4767833DC3F83CA94809CC84940937F5DA0463FDC3F82D5C3029CC84940A6326554154BDC3F7193E3849BC849401B36C107E456DC3F8AD0F9069BC84940A8A48CC1B362DC3FE995FB889AC84940EBA531C61863DC3F2D458640A9C84940F0CDC8044957DC3F62F184BEA9C849403909D0497A4BDC3FC1256F3CAAC8494035932B8EAB3FDC3F59D94FBAAAC849406490265DDD33DC3FC43F2138ABC849408ACEB2494234DC3F86D481F0B9C849400270CEF97228DC3F26C4556EBAC8494066A1B8B8A31CDC3F3E8D1FECBAC849407C8F67DB3E1CDC3FA715BE33ACC84940C8D2141D7010DC3F86C578B1ACC849404729BA4D0B10DC3F23FCEAF99DC849404106881A3C04DC3FB0DFA0779EC84940B3054CDE6DF8DB3FC4F642F59EC849400C1EC3A99EECDB3FEFD7E5729FC84940B49DE5E0CFE0DB3F6EB77AF09FC84940A6E7182B6BE0DB3FCD7A153891C84940804DE7FC9BD4DB3FEEFEA4B591C84940D858A9C5CDC8DB3F9CB9203392C849408CD01C96FEBCDB3FEA3A9DB092C849409A81B3E12FB1DB3F62170B2E93C8494099E29C2C61A5DB3FCB726FAB93C84940BD7780629299DB3FDC0DBF2894C849404CCD280FC38DDB3F533D03A694C8494024F4F936F481DB3F43CA382395C8494097EB215E2576DB3F24D664A095C8494082EA7200576ADB3F1541821D96C84940530D2A1F875EDB3F8E2EA69A96C8494024BE5644B852DB3F0EB7B51797C849400372DA68E946DB3F7FBEBB9497C849402B7C87081B3BDB3F8B26B31198C849404EFA01C2B63ADB3FB605075A89C8494002728677523ADB3F322EADA17AC849404FCE5232EE39DB3F9AE100EA6BC84940FAC4197CBC45DB3FE8C30A6D6BC8494090410B305845DB3F7FCF5EB55CC849405C9076ED2651DB3FA0805A385CC8494052EA6995C250DB3FDDF8ED7F4DC84940C0DAAC435E50DB3F899155C83EC84940864BF2ECF94FDB3FF5DDE80F30C84940CEBD039C954FDB3F08003D5821C8494032BE1E47314FDB3F6C6BE39F12C849403E683CEDCC4EDB3F818AB5E603C84940C969EA5CFE42DB3F7444B76304C84940348DBF1F9A42DB3FE58D8CADF5C74940AD9D59D43542DB3F5D4932F5E6C749403C5534CE6736DB3F3C882472E7C7494096A8998F0336DB3F916077BAD8C7494069DB854C9F35DB3F5F370902CAC74940564FC00F3B35DB3FAC2E6F4ABBC74940CE21E1276C29DB3F44DF60C7BBC74940804EA3ED0729DB3F241CF20EADC74940254BFECDD634DB3FAAD90092ACC74940D30E07927234DB3F5C5A53DA9DC74940C7A6B8560E34DB3F2EC5A5228FC7494061D85F18AA33DB3F2F514A6A80C74940810318E04533DB3F69469CB271C749406CBFFBA9133FDB3F0070AD3571C7494020A2E8E9773FDB3F49105BED7FC74940A7C19236464BDB3FC3305D707FC7494063BD91821457DB3FC9D055F37EC749403D718BD77857DB3F9008B0AB8DC7494014A281314863DB3FC3DB932E8DC74940B9B0F7D4E362DB3FEF0C3A767EC749400DE9D3A3B16EDB3F2CCB24F97DC749404A27D1ED7F7ADB3F31E9007C7DC74940F22AA9871B7ADB3F0F5E55C46EC74940264351454D6EDB3F47D578416FC749409C5456E2E86DDB3F30DE0B8960C7494034EDAD85846DDB3FB40773D151C749400BBC0924206DDB3F3DE5051943C749407D2F714FEE78DB3F24AEE39B42C749406CBFF6EB8978DB3F41CC37E433C74940F2BF0D0F5884DB3F867F0C6733C74940100644AD2690DB3F6B91D2E932C74940383A04CFF49BDB3FBC43946C32C74940AD596E49599CDB3F47E53E2441C749404FB1CF5A27A8DB3FE8FCEBA640C749405D4FF5D9C2A7DB3FA87B42EF31C74940F1A89AD490B3DB3F1B2CE07131C74940D42E374D2CB3DB3F8E814ABA22C74940AC2DD7C0C7B2DB3F3B87E00114C74940E502242796BEDB3F4BE3708413C749408FBBDC9831BEDB3F6A60C8CC04C74940558532FFFEC9DB3F7B2C5A4F04C74940FE533C659AC9DB3FFD940497F5C64940A439A006CDBDDB3F47237214F6C649405EBCC7AFFEB1DB3FE17BE091F6C64940C3080AD430A6DB3F0735400FF7C649402334D25695A6DB3F72BD97C705C74940D19A295FC79ADB3F4A3CE64406C74940ECCD5854F98EDB3F774923C206C74940DB6C1BC55D8FDB3FEA96CE7915C74940E03930368F83DB3F71AF07F715C7494025AF6322C177DB3FA626327416C74940C353EBC05C77DB3FBA0386BC07C74940D07718B48E6BDB3FFE8FA63908C749403FD7EB0DF36BDB3F9F1D53F116C749407CDE92742560DB3FDF74656E17C749407BE48FCC8960DB3F0643D32626C74940779A911FEE60DB3F33C56CDE34C7494086F769F31E55DB3F9F73865B35C74940E7FFA5CD5049DB3FAABE8BD835C749406113EF89EC48DB3F4B67F12027C749403011256B1E3DDB3F82C7EC9D27C749404F0A192ABA3CDB3F81B97DE518C7494036AA138EEC30DB3FE1106A6219C749409ED8CEF91D25DB3F0D2457DF19C749406807DF644F19DB3F2AB63A5C1AC7494052910E4B810DDB3F6CAA0FD91AC74940B2F1632E1D0DDB3F9EC85F210CC7494032694A904E01DB3F3D92309E0CC7494036A54FA5B201DB3F5EDEE0551BC74940B5AB1FC01602DB3FB300520E2AC749409C6CF7D57A02DB3FB8D6EEC538C749403939FDECDE02DB3FECE19E7D47C749403F072C4611F7DA3F8D545CFA47C749402212CB36ADF6DA3F15DFAB4239C74940DA3E6B80DEEADA3F47E66ABF39C749406BA6268842EBDA3F04C61B7748C749403547BB5474DFDA3F80F7CBF348C74940ED3EA520A6D3DA3F96A8727049C74940379CE4EBD7C7DA3F56D90FED49C74940AB1479E23BC8DA3FDCCD82A558C7494015799C296DBCDA3F7B021C2259C74940B0E09413D1BCDA3FDA14BBD967C74940F23034CE02B1DA3F9418465668C749401822D2B666B1DA3F19B6B90E77C74940253FFD9ACAB1DA3F0A526CC685C74940DDDFA645FCA5DA3F69A9EE4286C74940093E442A60A6DA3FFC1F4FFB94C74940F46F08872EB2DA3FB25CCC7E94C74940EFDEAF6F92B2DA3F3EAA7E36A3C74940AA95FF58F6B2DA3FE8E130EEB1C749406A4C15485AB3DA3F9CEFA3A6C0C749409B28BCBA28BFDA3FF362162AC0C74940C5135DAC8CBFDA3F72B6B4E1CEC74940C78447A4F0BFDA3FA82A279ADDC74940C10C992222B4DA3F9D92B516DEC74940815042A053A8DA3F027A3A93DEC74940EAFB1199859CDA3FB9C7B00FDFC74940F1D1FB75E99CDA3F0E8363C7EDC749400C3FB9E31991DA3FDEABE043EEC749405BB060BE7D91DA3F126041FCFCC74940480CDD8AE191DA3F518572B20BC849409A22BDEA1286DA3F0FA1D62E0CC849400C6B13C57686DA3F8B1D0CE81AC849402696719ADA86DA3F854B6DA029C849406958A1E90B7BDA3F01CAC71C2AC8494011B1FAB33D6FDA3F1DB213992AC84940793D83EDD96EDA3F4570B1E01BC84940087D08C70A63DA3F6B7EFD5C1CC8494052DAE69F3B57DA3FF20C40D91CC8494003ACEEF36C4BDA3F950574551DC849407624DC3E094BDA3F6ED73B9C0EC84940322CDA9EA54ADA3F064207E6FFC74940DB51B2F0414ADA3F5A1BA32DF1C749403CFEC847DE49DA3F3B7EEC75E2C7494026196C9A7A49DA3F37DD74BDD3C74940F67EC487AB3DDA3FB45EA239D4C749400E85078BDD31DA3F92F0BAB5D4C749406810D4F27931DA3F5C5B16FEC5C74940AC5952E6AA25DA3FEE54307AC6C74940836A7264DC19DA3FCF173BF6C6C749407E621D660D0EDA3F2B704172C7C74940B416BF5E3F02DA3F9B2134EEC7C74940BEB026D9A202DA3F3BDDDAA5D6C749401432CF590603DA3F40B8555EE5C749406764464B37F7D93F9D254ADAE5C749406EFC09C09AF7D93F21860492F4C74940105B093AFEF7D93F5C706C4A03C849407D387957CD03DA3FF4EF76CE02C8494031FAA27C9B0FDA3F6018825202C849404CE3C5986A1BDA3F8B9979D601C84940A727FE1ACE1BDA3F8755B08C10C84940EB9568F7FE0FDA3FE95DB90811C849402FC6CCCA3004DA3FEDBEAE8411C849401A3DEAA561F8D93FD3C8A40012C849404EA7D026C5F8D93FCFBAE0B920C84940F9EFA375F6ECD93F82BBC83521C84940147831FC92ECD93F07408C7C12C84940ECF4C2972FECD93F1F5E53C603C84940BE033725CCEBD93F58EAEA0DF5C74940AF74E6B768EBD93F63003056E6C749400433E0239ADFD93F6B5C0CD2E6C74940C904030BCCD3D93F7527DA4DE7C74940CDFD27A868D3D93F92265D95D8C74940EDA8301399C7D93FF6C13011D9C74940CD1CAB84CABBD93FEE17F08CD9C7494085727FF5FBAFD93F1AEFA508DAC749406CA8FF415FB0D93F078C24C1E8C7494061E8033691A4D93F01BBCB3CE9C749400C62CF12C298D93FBCD074B8E9C749404632FA4B2599D93FE27B3370F8C7494071A45D8A8899D93F13B19F2807C84940470EABBAEB99D93FCA53DCDE15C849404E8DF08F1C8ED93F52E37C5A16C849408598C2CD7F8ED93FB4A9BD1325C84940E289BE16B182D93F2A33508F25C84940669C2C481483D93F8B33BD4734C849407F9EAE757783D93F8C7A7CFF42C8494078A9EAA8DA83D93F6296FCB751C849409B9236D73D84D93F2863A86F60C84940D69ABE0BA184D93F9A4F28286FC849408576D83B0485D93FC637E7DF7DC849401B48986C6785D93F4008A6978CC8494068C191A2CA85D93FFD5212509BC84940FA5FAF33FB79D93FC982A4CB9BC84940EF562D5E5E7AD93FBD306383AAC84940DFDD678EC17AD93F1FB4E23BB9C84940D4E07D0C9186D93F6C794FC0B8C84940FA33420E6092D93FF8A5B744B8C849407F1BB848C392D93F86D261FCC6C8494016D738CD929ED93F01ECBA80C6C849407E178C6062AAD93FCDE20905C6C84940E8D162B0C5AAD93FD62987BDD4C849407658013494B6D93F5484D741D4C849403BBA464263C2D93FD0AB18C6D3C84940C34BD09CC6C2D93F8DE9D37DE2C849402EEDFDB195CED93F590E0B02E2C849409514A7CD65DAD93FBFEB2D86E1C8494041CBAF6534E6D93FFE22570AE1C8494009D1E47803F2D93FC2C7718EE0C849403CFDD5F166F2D93FA6971746EFC84940EE0AF30B36FED93F913928CAEEC84940757F3CA1050ADA3F77472A4EEEC849403E5D2A19A209DA3FA47D8596DFC84940F5E991AE7015DA3F1AB7881ADFC8494034D8F93A4021DA3F9B47789EDEC84940EEDDE44A0F2DDA3FD16C6322DEC849409A3876E5DE38DA3FCD593FA6DDC84940CC3BC168AD44DA3FD2371D2ADDC84940FC4801027D50DA3F4A24E6ADDCC84940EACD490F4C5CDA3FDA49AB31DCC8494029CDBD971B68DA3F50D861B5DBC8494047F3881FEB73DA3F2AE60E39DBC84940414289538773DA3F9D575B81CCC84940FF3873DB557FDA3F81980905CCC84940D03088DE248BDA3FF741A988CBC849401B3436DDF396DA3FEEEA3B0CCBC84940C6FCF0DFC3A2DA3FC8F8B78FCAC8494078A70F5F92AEDA3F5C763A13CAC8494069BE5A5961BADA3F315BAE96C9C849409048235CFDB9DA3F4D243DDEBAC84940F284544ECCC5DA3F4713A861BAC849403FABB1BB9BD1DA3FF96704E5B9C84940B06C94AC6ADDDA3FEB575C68B9C84940943F24C0CEDDDA3F2AF2CB20C8C84940F3CFCEC7FFD1DA3FC48B749DC8C84940F0ABFE5230C6DA3F9FC0181AC9C849402648315394C6DA3F846AC8D1D7C849408EFE1A52C5BADA3F878E5E4ED8C84940FF895D50F6AEDA3F2233EBCAD8C8494050CECCC927A3DA3FF03E6947D9C84940ECBFCCB38BA3DA3F8F2207FFE7C84940658B14A4EFA3DA3F142579B7F6C849405431008B1F98DA3F6FB3FE33F7C8494062E57C76508CDA3FF7336EB0F7C849407EAFB65C8180DA3F0215D02CF8C8494029641CBEB274DA3F765E23A9F8C84940D99A2F27E368DA3F73577725F9C849404C4199ED4669DA3F75232BDD07C9494021E2724E775DDA3F3A1F765908C94940C3E6782AA851DA3FBB83B2D508C949401753867AD845DA3F4521EB5109C949406ADC8AE0093ADA3FEFCC0ECE09C9494064F2462F3A2EDA3FBD69344A0AC949409164AA086B22DA3F18CE4AC60AC94940CCFB8F659B16DA3F1CC75C420BC949403FCC77B9CC0ADA3FF1165BBE0BC9494041760C15FDFED93F470F5A3A0CC9494082BAB79299FED93F2CA6A182FDC84940C5DE0971CAF2D93F518791FEFDC84940F7B3B34EFBE6D93F82E8777AFEC84940EF738AA72CDBD93F2BB74FF6FEC8494076D0BE7C5CCFD93FACDF2D72FFC84940170170588DC3D93FABC0F7EDFFC84940F4157933BEB7D93FA821B86900C94940590D2A99EFABD93F874F69E500C949404F648BE652ACD93F054D259D0FC94940BC9F632D83A0D93F28E4D81810C94940534E6F78E6A0D93FB3EE42D11EC94940E0CE8FBF49A1D93F6A40FF882DC94940D9B86D0CADA1D93F4A677C413CC9494006205C5410A2D93F993F25F94AC94940E8AE749D73A2D93F714BE1B059C9494078C54AECD6A2D93F712C5E6968C9494000D1D9D2A6AED93F7984A7ED67C94940F20F1CA275BAD93F18C3F27167C94940A669A6FBD8BAD93FDA9AAD2976C9494081A9D3240AAFD93F05DF62A576C94940D768B3363AA3D93FC6091A2177C94940651266576A97D93F5A11C79C77C94940C89B8E140797D93F49B10AE568C9494019F801B8378BD93FF9A4A86069C94940DA8F48F39A8BD93FC587651878C94940B14BAB12CB7FD93F918DFF9378C949406BDDF228FC73D93F3E66850F79C94940918BD8FC9873D93FAD7BC7576AC9494068FD6122C967D93FD8644DD36AC9494004A5DE462C68D93F3BCF0B8B79C94940B6C17ED05C5CD93F3B4A84067AC949401B5D19ED8C50D93F0EB1F7817AC94940AD699407F050D93FACA5643A89C94940A00A99132145D93F73EFC4B589C94940297F8E228445D93FF2AA846D98C94940F2F13E37E745D93FEF3B0526A7C94940334AC4464A46D93F230FB1DDB5C94940DE8F6157AD46D93FB7F56F95C4C9494046A5B96D1047D93F3BB1EF4DD3C94940A97A257F7347D93FBE1D9B05E2C949409FBCC3A04253D93F32BD378AE1C949407A156EB9125FD93FE5BFC00EE1C94940E0421165E26AD93FB2AE4493E0C94940B7EC6A7CB276D93FABAFBA17E0C94940552D7BB21577D93F841D38D0EEC949403BA21FE47877D93F5E87F487FDC9494031C9FE1ADC77D93F267B5E400CCA49404F1DF44D3F78D93FC7B51AF81ACA49404F7032186F6CD93F93D3A6731BCA4940C650284E9F60D93F460325EF1BCA4940F781662A3C60D93F58B967370DCA4940F001EEFA6B54D93F774DE0B20DCA4940987283C29C48D93F9C44452E0ECA49409B350CAA3948D93F5432D975FFC949406970DD80693CD93F6E3D3EF1FFC94940DC75BA91CC3CD93F48D7AAA90ECA4940BD7324DCFC30D93FA8DB01250FCA4940C4897FE15F31D93FB343C1DC1DCA49405528AF9E2F3DD93FDEB769611DCA4940B00F12D7FF48D93FAE9D03E61CCA4940EFE81517CF54D93F051F9E6A1CCA4940904CF9383255D93F67C51C232BCA4940F7B85BF16249D93FA2CB829E2BCA49404EF2B806C649D93FA4AA2D563ACA49407FDFEF559555D93FE51CC7DA39CA49403D97369C6561D93FE6F14C5F39CA4940970CA6770261D93F0822A3A72ACA49403E3D4A49D26CD93FB66A242C2ACA49402E787475356DD93FF3B2CDE338CA49402C6F6ABA0579D93FCA85406838CA4940311959EF6879D93FAA79FC1F47CA4940007D8D423885D93F4C296EA446CA4940C9B72606D584D93FC1E3B2EC37CA494065F72748A590D93F6FA0107137CA49405731A70D759CD93F3DEF69F536CA4940D4CCFA58D89CD93F5AD823AD45CA4940944F058C0891D93FC337CB2846CA4940B71C9ED56B91D93F47A146E154CA49403BEDC71ACF91D93F5304019963CA4940FA78AAF69E9DD93F7A48581D63CA49404B728448029ED93F9984BFD571CA494040367196659ED93F2505798D80CA4940D872A1AB9592D93F7B1D230981CA4940555DD3F7F892D93F6F1E9EC18FCA494067051AEAC89ED93FD357F3458FCA4940D838D1382C9FD93F4E5999FD9DCA49400A0B143F5C93D93F13CE44799ECA4940B41B7D87BF93D93F71AEFE30ADCA4940D4E5B0888F9FD93F748B52B5ACCA494000A11C0560ABD93FCBD89739ACCA4940F2CE2F62C3ABD93FB22E11F2BACA49405850E8F493B7D93F73AC4B76BACA4940F8D2457063C3D93F181488FAB9CA49404CD1FBC8C6C3D93F91831EB2C8CA4940BDAED0D696CFD93FCD5A4B36C8CA4940FE7E03E466DBD93F23B76EBAC7CA49404E79CDF737E7D93F52CF7D3EC7CA4940D3EDA3659BE7D93F3A4923F6D5CA4940E7FF33D9FEE7D93FDF9089AEE4CA494097C7AB77CEF3D93F83489D32E4CA49407C87E7FC6AF3D93FC6E1377AD5CA494056F1670F3BFFD93FF7EB3DFED4CA4940B5A960919EFFD93FA271A2B6E3CA4940684B73AA6E0BDA3FCD1F9E3AE3CA49403F1C46210B0BDA3F427B3A82D4CA4940B3E360AEDB16DA3F9A7A2806D4CA49405A3CBA237816DA3FCF84864EC5CA4940FF3B4E941416DA3F1262F296B6CA4940C9F4F219E421DA3F5538E21AB6CA49402B5EAD96B42DDA3FCE65BE9EB5CA494048A7E2968439DA3F5A2A9622B5CA49409ED33AE02039DA3F2103256AA6CA49409FC6542FBD38DA3F8BAD74B297CA4940EAFE0C3EED2CDA3F768B9B2E98CA4940A702C795892CDA3FBBB7FD7689CA4940E6F78AE8252CDA3F3C938BBE7ACA4940ED7AE5CAF537DA3FCC1266427ACA494072ABF137C643DA3F1E5B31C679CA494090BD89816243DA3FBE65810E6BCA494030CFC7CF314FDA3F38514F926ACA4940B139F80DCE4EDA3F794FF2D95BCA4940B37B30C7FE42DA3F2DB523565CCA4940290A12692E37DA3F430F57D25CCA494056B76EBBCA36DA3FBA36A61A4ECA494079C057096736DA3F375834623FCA49400D4A025D0336DA3F584B83AA30CA4940E8F1F79F332ADA3F2A62A52631CA4940272342FCCF29DA3F33D7066F22CA4940ABE12BCAFF1DDA3F9AD623EB22CA49408804F7289C1DDA3F0D4CB03214CA49406F7D96536C29DA3F6AFB93B613CA4940A0CBABB00829DA3F45F1E1FE04CA4940FC87D009A528DA3FE12B8246F6C949402B0E1EEED41CDA3F251F9DC2F6C94940296579C90511DA3FC66AA43EF7C94940AF4CC836A210DA3F09CFF086E8C9494002C1A49F3E10DA3F262D7CCED9C94940EFC95DB50D1CDA3FBA3E7652D9C94940B16D23C2DD27DA3FE2A85CD6D8C94940E9B456227A27DA3FDA80BD1ECAC94940DF54947D1627DA3FF2074A66BBC9494093AC92DEB226DA3FBD6097AEACC9494051171B3F4F26DA3FD645F5F69DC94940118054507F1ADA3FC95E0C739EC949401C0430B31B1ADA3FC3F894BA8FC9494026F5649AEB25DA3F0A637E3E8FC94940355371FB8725DA3F1255C88680C94940A2AC945E5731DA3F11D7AD0A80C94940E9331905BB31DA3FCF6163C28EC94940E6E477FA8A3DDA3F932739468EC94940A7CE87D85949DA3F8BDE10CA8DC94940B10E95CC2955DA3FDDA2D34D8DC94940F2D6908F8D55DA3F6D7848069CC949409CECF193BD49DA3F713786829CC94940AE0951AEEE3DDA3FCF03AFFE9CC949400F8C065D523EDA3F814550B6ABC94940C006F40AB63EDA3F4A8F016EBAC94940B570ABFF844ADA3FDDABD7F1B9C94940B312640A5556DA3F6ED89875B9C9494083AB21892462DA3FC74056F9B8C94940693333538862DA3FAE4FC6B1C7C949409F394D18EC62DA3FEE0D6269D6C949406DFCACE34F63DA3F71E8D121E5C949406DF897AAB363DA3F16BD80D9F3C949401346020EE457DA3F2310C655F4C94940262FB7D24758DA3F671A230E03CA49403031C3761764DA3F6C18DD9102CA4940B85FFC3E7B64DA3FACB88B4911CA494048597A93AB58DA3F7A69D2C511CA49403E31005A0F59DA3F158A427E20CA4940E0B68E1B7359DA3FFB59DE352FCA4940AA0D47DED659DA3F7F5A8DED3DCA49409D30C2A63A5ADA3F8A2CFDA54CCA494015B0C86A9E5ADA3FAAF8AB5D5BCA4940CB470F34025BDA3F7A4B08166ACA4940DEF463F9655BDA3F35E3B6CD78CA4940FF957BC4C95BDA3F784C268687CA49400BFDB0AB9967DA3F9724DA0987CA4940ED701C0E6A73DA3FB7667F8D86CA494032B1E06F3A7FDA3FFD291B1186CA4940837E43D9098BDA3FFB9FB79485CA4940CBC860B6D996DA3FADCC401885CA49409C2ED68DA9A2DA3F1D56BD9B84CA49404804DE6B7AAEDA3FAB8B251F84CA4940C7820365DEAEDA3F3B4ABBD692CA4940764B4E5F42AFDA3F5237648EA1CA49408E22F2C711BBDA3F9748D111A1CA494084A67FC6ADBADA3F7328295A92CA4940D95936A37DC6DA3F4A7088DD91CA4940B6C14A7F4DD2DA3F213CDE6091CA494067360D8FB1D2DA3F35C28418A0CA4940FDD2D0ABE1C6DA3F6DC32F95A0CA494065F42CBA45C7DA3FADE5974DAFCA4940BEDC25CF75BBDA3FE6373ACAAFCA49401BE8595FA6AFDA3FA2F3CD46B0CA4940B9E2B3550AB0DA3F1F285FFEBECA4940DA3E2E3E6EB0DA3F8E14F6B5CDCA49401C306D2CD2B0DA3F06D24D6EDCCA49408970B21536B1DA3FFC40D125EBCA4940EF18A6A305BDDA3F806E3BA9EACA49403281D1ACD5C8DA3F8F02972CEACA494097E1AFB471C8DA3F1CD91475DBCA49405C07C6B541D4DA3FFD9067F8DACA4940176B133212E0DA3FDDADAB7BDACA4940D6FF113976E0DA3F87912C33E9CA494038FB55B5A5D4DA3F8B17E9AFE9CA49402EF72EBB09D5DA3FC1B93E68F8CA4940712E90BC6DD5DA3F2358D31F07CB4940C85434C3D1D5DA3FEE7C15D815CB49408FBFE3C535D6DA3F83E8A98F24CB494071423AC999D6DA3FB23A3E4733CB4940B6EA56D2FDD6DA3FDC5D93FF41CB494065173A9D2DCBDA3F111A457C42CB4940980EED9991CBDA3FAC91C63351CB494055E2E89CF5CBDA3FE0241CEC5FCB4940BF87E3E0C5D7DA3FE222696F5FCB49401C8F78D661D7DA3F923214B750CB494071B13D8E32E3DA3F0838533A50CB49405F167BC902EFDA3FF5D98DBD4FCB49401D5F1104D3FADA3F96FCBE404FCB4940507D003EA306DB3FEB9FE6C34ECB49401801A5027412DB3F8102FF464ECB4940290BE9AF431EDB3FC26819CA4DCB494074EC3E73142ADB3FEDCB1E4D4DCB49405EDF90AAE435DB3FC07120D04CCB4940AE7075F04836DB3F624970885BCB49408B65DF31AD36DB3F831DFF3F6ACB4940F3D448F37D42DB3F43DEF0C269CB49401BCF6FAA1942DB3F5BAD620B5BCB494004D81B5DB541DB3F017913534CCB4940F34DFF0E864DDB3F3100FDD54BCB4940B8717AC85559DB3F9247E7584BCB494094702EFD2565DB3FF1EFC2DB4ACB4940ADD33A31F670DB3F2019955E4ACB4940E032DC6BC77CDB3F74DC52E149CB494076E6B8229788DB3FF927176449CB49406227CE546794DB3F0DD3CCE648CB4940709A3B8637A0DB3FE4FE786948CB4940AFE2721E08ACDB3F95530EEC47CB49406D0C0E39D8B7DB3F83DB9E6E47CB494076B117D03CB8DB3FE88BE72656CB494037D9A362A1B8DB3F813A6FDE64CB494011038A8B71C4DB3F3C23F56064CB49409A6EC7B341D0DB3F598B71E363CB4940360C935AA6D0DB3F36A2A59B72CB4940385D64FD0AD1DB3FE5012C5381CB49407C3CCDAFDBDCDB3FD0A598D580CB4940D667CC69ABE8DB3F8E12065880CB49409E79E31A7CF4DB3F4FB45FDA7FCB4940E297A46117F4DB3FF902DB2271CB4940E4866AA4B2F3DB3F849AA86A62CB4940866F80D982FFDB3F155BFEEC61CB49403818517A530BDC3F5E19466F61CB4940614EB9222317DC3FBAA38EF160CB494065C937C2F322DC3F2060C37360CB49408E752DE5C32EDC3F9CC2F3F55FCB4940CC33E0075F2EDC3FFCAE713E51CB49400D5E929E2F3ADC3FC3F893C050CB49403B8B5983943ADC3FAE7C15785FCB4940AE4958306546DC3F55102DFA5ECB4940BEB5F6C53452DC3F07BE467C5ECB4940E45247E6045EDC3FD51D51FE5DCB49402129CCE6695EDC3F0C797EB66CCB4940AD5FED0D3A6ADC3F7AC87E386CCB49404410EE119F6ADC3FDCDCFDEF7ACB4940202953E3CE5EDC3F5B1DFE6D7BCB4940B9A983E0335FDC3F7AA97D258ACB49401F4E9816046BDC3F2AD97CA789CB494015504053D576DC3F278F672989CB494027B1B6643A77DC3F0E8293E197CB494099CA11250A83DC3FDF49846397CB4940C107A460DA8EDC3F136766E596CB4940EAA98C9BAA9ADC3F9C033F6796CB49403DB371BF0F9BDC3FAB8FBB1EA5CB494004610B7DE0A6DC3F03F084A0A4CB494086B1BC41B0B2DC3FFEE64E22A4CB4940FFFF387A15B3DC3FDE078BDAB2CB4940D83F6A37E6BEDC3F4E753D5CB2CB49407A980D78B6CADC3F0F8DEBDDB1CB49404BECD6BA1BCBDC3F5B5E5295C0CB49405EE5D38DECD6DC3F399FF016C0CB494065CD604387D6DC3F53508A5FB1CB494093124DF756E2DC3FA5372BE1B0CB4940604329A0F1E1DC3F6F20F128A2CB49405DDDE24E8CE1DC3F08DB777193CB4940177C9EF926E1DC3FD2DF50B984CB4940AA8999ACF7ECDC3F6E26DE3A84CB49409E16045592ECDC3FF934658375CB494044EF1BFE2CECDC3F422CECCB66CB4940F39235A3C7EBDC3FCD6DC51358CB4940CF7E3707F7DFDC3FA89F369258CB494024D2418127D4DC3FD1A9921059CB49408373063BC2D3DC3FAE6D18594ACB49400F6353B991DFDC3FEDE5BCDA49CB4940F8A2EC662CDFDC3FEF2B82223BCB4940D7CBE71AC7DEDC3F348E1B6B2CCB49408E95DBC961DEDC3FB3A5E0B21DCB4940724E896292D2DC3F32A63A311ECB49406E36D7E3C1C6DC3FA2CA96AF1ECB49400482D1EFF1BADC3F309BE32D1FCB4940CD069DBB8CBADC3F49FD677610CB4940DD98158827BADC3F2048ECBE01CB494063063D2457AEDC3F5B8D323D02CB494014FB45B187A2DC3FFD2562BB02CB4940C342EA45B796DC3FC094923903CB494020CE2D631C97DC3F7B1210F111CB494008B18C6B4C8BDC3FBB65326F12CB49403177C255E78ADC3F0558B4B703CB4940A065F93B828ADC3F689388FFF4CA494047ACA152B27EDC3F6946A07DF5CA4940CFC87DE4E272DC3F764FA9FBF5CA4940FB0AF9DE7D72DC3F93F12944E7CA494077F191F4AC66DC3F200C39C2E7CA49403FCC9CF21167DC3FF1F9B879F6CA494065BA4807425BDC3FA62BB4F7F6CA49402BF12A03A75BDC3FF82FE2AF05CB4940C0E2B30FD74FDC3F3671D42D06CB49400AFDECA60744DC3F0065B7AB06CB494004F0C9263738DC3FBB729C2907CB4940A26D42089C38DC3F606F1EE115CB49403A3B64EA0039DC3FD453A09824CB4940F140206A302DDC3FE15A7C1625CB4940D32B788FCB2CDC3FA9E6F95E16CB4940F25979B5662CDC3F505A77A707CB4940FB5F5DBF9620DC3FDE99432508CB49405F76BA4CC614DC3F8F7F0BA308CB4940B6CCB27D6114DC3FD71CDAEAF9CA494031BCDBE83120DC3FCCC6126DF9CA4940F70B7ED7012CDC3FF31647EFF8CA4940DDAA5441D237DC3F13BF6C71F8CA4940CCD02E616D37DC3F2992EAB9E9CA4940F501887C0837DC3FAC63A701DBCA494025FF389EA336DC3F0051384ACCCA49401349CF4AD32ADC3FB4F910C8CCCA494075FB9872031FDC3FA7FADA45CDCA494099FDDC1D3313DC3FCCA1A0C3CDCA4940C43331C06307DC3FDD7B5241CECA4940A425236A93FBDB3FE32105BFCECA4940B038CD7FC3EFDB3F3DC6A93CCFCA4940FCBA443128F0DB3F60361CF4DDCA49408E506BD257E4DB3F386ABC71DECA494022466D28F3E3DB3F986A49BACFCA49406EF21DC823D8DB3FE544D537D0CA4940CF9C9620BFD7DB3F88698D7FC1CA4940ECD95ECFEECBDB3F487D19FDC1CA4940F5D3FE2C8ACBDB3F349D8945B3CA4940D314638525CBDB3F7F6A068EA4CA494071C4C6D8C0CADB3FDBECAED595CA4940A89FFC315CCADB3FEF43181E87CA4940A428618CF7C9DB3FDCCF946678CA4940DD38C5E192C9DB3FCC103DAE69CA4940DD55FB3C2EC9DB3F7426A6F65ACA494011B7809C5EBDDB3F7F0B21745BCA4940767A5BFB8EB1DB3F396E92F15BCA49404E71C5612AB1DB3F33F54C394DCA49402FA77CCDC5B0DB3F3706B5813ECA49407F1DB83461B0DB3FEB165CC92FCA49402897C4A1FCAFDB3F65FCC31121CA4940A6F49124CCBBDB3FB34B549420CA4940883F378B67BBDB3F7FD2CFDC11CA4940D8AADCEC02BBDB3F4C0E772403CA494050D6D35FD2C6DB3F8DB4FEA602CA494000C5F84DA2D2DB3F6CB4772902CA4940D71C44A63DD2DB3F199EE071F3C949407C5C78940CDEDB3F1ED15AF4F2C949400AFDB179DCE9DB3FE038C176F2C9494085CAE3F1ABF5DB3F8C9E22F9F1C94940751659B010F6DB3FEC6EB8B000CA4940FDDDD29BE001DC3FB1640B3300CA4940E5BCC7D57B01DC3F0F01767BF1C9494001E050C14A0DDC3F3A2DCAFDF0C94940FE5BB6EFE50CDC3FC0808745E2C94940F454AECAB518DC3F514BC8C7E1C949403BB623298524DC3F34BA044AE1C949408342AE4D2024DC3F50717092D2C9494091E0B96DBB23DC3F37281BDAC3C94940DD0730388B2FDC3F91C7495CC3C94940C8EF75115B3BDC3F593F6EDEC2C949401F356DD32947DC3FA5CE9460C2C949400D170B20F952DC3F640FACE2C1C9494055B1561E5E53DC3FA4A4FF9AD0C94940EE13DF712D5FDC3F8CF60C1DD0C94940314BE5CBFD6ADC3FC1CE059FCFC949405B04DCD4626BDC3FD2899756DEC94940FCBECBB23177DC3FBE9396D8DDC949405EF83FA2CC76DC3FBE450521CFC94940D763C6F39B82DC3F9311F6A2CEC949404B9F23D73682DC3FC630A4EABFC949407AFDDDC0D181DC3FEE6E2633B1C94940307CF39F6C81DC3F0DBECE7AA2C94940974FB0D93B8DDC3F12F9B6FCA1C94940A32344B2D68CDC3F57CC1B4593C949404AA2088C718CDC3F30D4938D84C94940FFAFB3314198DC3F6F466E0F84C949407592D3FEDB97DC3F7C74125775C94940181D8AA4AAA3DC3FBC2CEED874C949404140E76F45A3DC3F23A1532166C94940560FFE0415AFDC3F8EF31BA365C94940215EBFC4AFAEDC3FA023D4EA56C94940652ED7894AAEDC3F93DD393348C9494016597D8819BADC3F8F0EFAB447C949408A7FEF41B4B9DC3FD9869FFC38C9494059C5E9BE83C5DC3F2AEF4E7E38C949401A678D761EC5DC3F75C9B5C629C94940EF4395D4ECD0DC3F3FE6674829C94940C7AFC08587D0DC3F9282E2901AC9494059C00AF256DCDC3FD40A80121AC94940E26B8396F1DBDC3F64E9265A0BC949406A9B286FC0E7DC3FAB54C1DB0AC94940B78120478FF3DC3FDE40525D0AC94940AE94FDB1F4F3DC3F0043AA1519C94940B403F390C3FFDC3F7A20319718C94940DB600DEB920BDD3F1850A91818C9494074103760F80BDD3F76E52BD026C94940341C7C45C717DD3FA4349F5126C94940D5A7132A9623DD3FBE0409D325C94940F7EFC4AFFB23DD3F13AD9D8A34C9494092D682C32C18DD3FC96C340935C949405F3B93D65D0CDD3F5FADC18735C9494057F0CE52C30CDD3F8647184044C94940E394B3E1F300DD3F3EC7A1BE44C94940B732236D8E00DD3F469D4A0636C9494017E971FE2800DD3FA945B44E27C94940ABFED1175AF4DC3FD6F72DCD27C94940D1B5D87EBFF4DC3F28DFC48436C9494024E0E08FF0E8DC3FE8A1350337C94940A8BC3BA021DDDC3F7AE59C8137C94940970ECBFD86DDDC3F82BEF53946C9494003391BF555E9DC3F4AEB8DBB45C94940A615D255BBE9DC3FFE31257354C94940E657E2BB20EADC3F5F006A2B63C949402EF6DAC1EFF5DC3F9D8EF7AC62C94940B59E1F548AF5DC3FE24FB3F453C94940D2CBBF515901DD3F96EE377653C94940882286CA280DDD3F29DFADF752C9494085F097478E0DDD3F5EFEF0AF61C94940FA2EAAC0F30DDD3FA165866770C949407D608D382402DD3FA29411E670C94940DCCBD3AF8902DD3FF45D689E7FC9494014219C3F590EDD3F319FDC1F7FC949404C6D84B9BE0EDD3F828B5ED78DC94940B9459F34240FDD3F5DAAF38E9CC949401B513B57F31ADD3F3C7B62109CC94940D862B1DF581BDD3FAFB2B7C8AAC94940243F9B5ABE1BDD3F4F323180B9C9494029A15D8C8D27DD3FCDF29501B9C9494042FA6EBD5C33DD3F8F2EF182B8C9494087BC7E4EC233DD3FC54C3E3BC7C94940CC7F0E12923FDD3F78EB89BCC6C949408FA01F792C3FDD3FE60E3D04B8C9494027B5CEA8FB4ADD3FB0408585B7C9494061EC860D964ADD3F3D0F0CCEA8C9494089076A346556DD3FB7D24A4FA8C949407896CCD7CA56DD3FCAEDC306B7C9494029F178803057DD3F064710BFC5C949404853A2249657DD3F76A39B76D4C94940852E2CCEFB57DD3F4E8CD42EE3C94940ABB81414CB63DD3F79EF08B0E2C949400A7C22D59A6FDD3FA99B2E31E2C94940DDD46B8A0070DD3FC64EB9E8F0C949409C20D0D6CF7BDD3F1C66DA69F0C94940FC4EA8196A7BDD3FBFF44FB2E1C9494086B47C5D3987DD3F0BC96733E1C9494055FD82229F87DD3F8BF8F1EAEFC94940815E846D6E93DD3F1406006CEFC9494010A09FA00893DD3F7E1876B4E0C94940370511E3D79EDD3F17E37A35E0C94940D037D4B73D9FDD3FD18E04EDEEC9494066F07F92A39FDD3F67114FA5FDC94940E5F8206809A0DD3FAF4CC55C0CCA4940F525F93E6FA0DD3FADBF4E141BCA494020440DDD9F94DD3FBDFC4A931BCA49401907EFB10595DD3F8F88954B2ACA494021DB4B826B95DD3FB3171F0339CA4940D67E0B58D195DD3F223356BB47CA49407B4794D1A0A1DD3F3630593C47CA49404D3433AB06A2DD3F9C57E2F355CA4940F79ACB293796DD3F729CDF7256CA4940351374019D96DD3FAEDC292B65CA4940B2F1BA8A6CA2DD3FDF552CAC64CA4940F7C33765D2A2DD3FE20CA26373CA494014B10081A2AEDD3F2FE494E472CA49401C12C31072BADD3F9C10846572CA4940EB2588260CBADD3F99DD0EAE63CA4940155F58ADDBC5DD3FF14EF52E63CA494015165932ABD1DD3F90D9D3AF62CA49406FA7AE3345D1DD3FBC2F8CF753CA4940EB7C4DB675C5DD3F8F43AC7654CA4940537928C50FC5DD3FA3FB23BF45CA49409B62FECFA9C4DD3F30EEED0637CA4940EC08213E79D0DD3F4B9DD08736CA49403C88EA3ADFD0DD3F3F49054045CA4940478FD72BAFDCDD3F9AEFD7C044CA49403E7C3EA07EE8DD3F8159A64144CA494098C7F7134EF4DD3FCD516BC243CA494058809923B4F4DD3FA413EE7952CA4940DFDA22391AF5DD3F9C98313261CA49405C4D9A4980F5DD3F3FC3A0E96FCA4940E049455BE6F5DD3F141223A17ECA4940C7E5CDECB501DE3F4012D9217ECA49403B6382F9850DDE3F3C6980A27DCA49405E9D2A995519DE3F93DE22237DCA494034C7A9282525DE3FFD88BCA37CCA49401F8ABB5E8B25DE3FD213FA5B8BCA49407A732CF55A31DE3FB3EA88DC8ACA49408C097BB7F430DE3FBEC14C247CCA494055DF77C1C43CDE3FE34FCEA47BCA494065E610825E3CDE3F714B54ED6CCA4940EB00DE43F83BDE3F236BED355ECA49404FED9600923BDE3FF130B27D4FCA494091203AC32B3BDE3F52B937C640CA4940CC3ED581C53ADE3FC87C0F0E32CA49400A532EE99446DE3F00BB938E31CA4940C65FD94F6452DE3FB8870E0F31CA494012C89A04FE51DE3F0087965722CA4940C7D1F862CD5DDE3F1B4409D821CA4940F83B8C0B675DDE3FFF95D11F13CA4940BCE29C613669DE3FB3433CA012CA4940E092D6320675DE3F8745982012CA4940D60082996C75DE3F7F2FCDD820CA494064BDA8C09C69DE3FC48F725821CA49408632251B036ADE3FACCCE70F30CA49409470077B696ADE3F7B810AC83ECA49406C931F633976DE3F125D62483ECA494099DE97C69F76DE3F23EBD5FF4CCA49408665E0D6CF6ADE3F89717F7F4DCA49409E64A538366BDE3FE423B5375CCA4940D8B578BC665FDE3F206051B75CCA494043EB8811CD5FDE3FCC1AB46E6BCA49400879CD673360DE3F8EF929267ACA4940DF6D38F3026CDE3F74F98AA679CA4940B4530857696CDE3F8638C05E88CA494073643E653978DE3FCA2911DF87CA4940100C98CB9F78DE3F34AD709696CA49406059E5646F84DE3F3305BC1696CA49407D76ECF60884DE3FD4E35D5F87CA4940096D6797D88FDE3FC084A0DF86CA494061D1B827A89BDE3F785BDA5F86CA49404E30F0A40E9CDE3F97B8351795CA4940A6460CB8DEA7DE3FF87E5F9794CA49403E15183E45A8DE3FE99DCC4EA3CA494060124BDC14B4DE3F73CCF0CEA2CA49405E87CF79E4BFDE3F54890B4FA2CA49403E69A516B4CBDE3F8CD41CCFA1CA494024E77EB91ACCDE3F588E4687B0CA49404B2291DDEAD7DE3F45515407B0CA49403612B08DBAE3DE3FDF267687AFCA494048531A3D8AEFDE3F67878E07AFCA4940D0D9CFEB59FBDE3FC1729D87AECA4940F8C526252A07DF3F14039D07AECA49402996445AC306DF3F231D784F9FCA49405A7699FF9212DF3F414E75CF9ECA494063CDB8322C12DF3F6E5D121890CA4940094362CFFB1DDF3FE14907988FCA494014CA566BCB29DF3F50C1F2178FCA4940887F2448322ADF3F725153CF9DCA494087A5EB2A992ADF3F31A67487ACCA494044A19C08002BDF3FB9A5C13EBBCA4940B0DB17ED662BDF3F4815E5F6C9CA4940AA6510CDCD2BDF3F807C47AED8CA49404F1DFB07FE1FDF3FE319632ED9CA4940CC7625422E14DF3F2A4B75AED9CA4940D97F8F7B5E08DF3F63107E2EDACA494046E6E1288EFCDE3F4C4F83AEDACA4940A039DEEBF4FCDE3F47009A66E9CA49406343291B25F1DE3FD5A291E6E9CA49403C958BD18BF1DE3FE13FFC9DF8CA4940251CAE88F2F1DE3FACB0665507CB4940A753D34559F2DE3F8DDD910D16CB4940B5ACEFFDBFF2DE3F8AABE8C424CB49407F7395BC26F3DE3F0580137D33CB494031F2B8768DF3DE3F10407D3442CB49403A168D71BDE7DE3F58BA75B442CB4940DAE08D2824E8DE3F03A28E6C51CB494013A65836F4F3DE3FB07194EC50CB4940A0AAFCF15AF4DE3F55D9FDA35FCB49408C5393DB8AE8DE3FA6BFF92360CB49400DF9588FF1E8DE3F23B164DB6ECB49406F7F9A4858E9DE3F34147D937DCB49407F98E0FDBEE9DE3F4BADE74A8CCB49406CA7DACCEEDDDE3F1649DFCA8CCB49402ABCBD211ED2DE3F7FD0D44A8DCB4940852D26004EC6DE3F8E8DC7CA8DCB4940EF0CD3DD7DBADE3F15C2B04A8ECB4940A666C4BAADAEDE3FEA6D90CA8ECB49404C345D3047AEDE3F8ADF221380CB49405DDEF7A1E0ADDE3F0EA3075B71CB494058C007197AADDE3F5AF499A362CB49409025D39013ADDE3F6F352CEC53CB49404F7CA004ADACDE3F76C8103445CB49409955CE8EDCA0DE3F4AA4EBB345CB4940488BA21243A1DE3FA62B076C54CB49405B077992A9A1DE3FE704752363CB4940DFF80A1310A2DE3FF1CDE2DA71CB4940F6A541FF3F96DE3F8C33AF5A72CB49409017EA7CA696DE3FA4A4CA1281CB494082398B50D68ADE3F66438E9281CB494026FEEC32067FDE3F0FB2471282CB49403110B4983573DE3FE6D2FC9182CB49401B649F796567DE3FF22FA31183CB49408582701DFF66DE3F1156875974CB49402C35B4C69866DE3FF80919A265CB4940F317B3703266DE3FB6ADAAEA56CB49403CE9B516CC65DE3F4AA38E3248CB4940AC7652149C71DE3FC0AEE8B247CB4940B1096AB73571DE3F474C7AFB38CB49408B17FF55CF70DE3F30F14A432ACB4940315013FB6870DE3FD8B8EF8B1BCB49401C71B85A397CDE3F3D4F3B0C1BCB49401CBA65F2D27BDE3FFEED0B540CCB494015A614CDA287DE3F025153D40BCB49404DEA83B67293DE3F348490540BCB49409D9C6F430C93DE3FB22F229DFCCA4940B0AA16D1A592DE3FF8CAB3E5EDCA4940DA84C05A3F92DE3F15B8972DDFCA4940E8FF698A6F86DE3F1B365AADDFCA49403322E5210986DE3FD496EBF5D0CA4940D228AC68397ADE3FF9CAA375D1CA4940F4EC0104D379DE3FDC1874BDC2CA4940397A90D6026EDE3F66E5273DC3CA49402CDA8B7B9C6DDE3F5CF3C985B4CA494046ECA2D1CC61DE3F867B6E05B5CA4940B6EA3E243362DE3FCFEECCBCC3CA4940645332716356DE3F1270683CC4CA494013D10B27FD55DE3FDC910985B5CA49408B94C67B2D4ADE3F5E369B04B6CA4940B742D3CF5D3EDE3F0D692384B6CA4940B21B57A78D32DE3F9562A703B7CA49402B7F9B672732DE3FCDAC6B4BA8CA4940EEF2EBC15726DE3F8499DFCAA8CA4940BFC107FABD26DE3F2DB11C83B7CA49400C7A0A4CEE1ADE3FD48D8802B8CA494029F4E38D1E0FDE3F909FEB81B8CA494068CF0765B80EDE3F43C4ABC9A9CA4940DF6C1442520EDE3FDDAB2C129BCA49406A5920268202DE3F5B1888919BCA49405BC45885B2F6DD3F81DBD4109CCA49405879E3E3E2EADD3FD32C18909CCA4940540A02D97CEADD3FB313A8D88DCA494089637E3EADDEDD3F9891E0578ECA4940830B7327DDD2DD3F25D314D78ECA49408233948B0DC7DD3FF26C3A568FCA4940FC8D91ED3DBBDD3FCFBC55D58FCA4940ECCD104E6EAFDD3F6F14675490CA4940020D946408AFDD3FE0901D9C81CA49402DCCEB4038A3DD3F9AFB2A1B82CA49404B14E7A76897DD3F3D06299A82CA4940DAC4300E998BDD3FA58B1D1983CA49403DEAC873C97FDD3FC38B089883CA4940D097C73D2F80DD3F0917535092CA4940DCCCCE9A5F74DD3FBAD334CF92CA49406295E457C574DD3F8D59AB86A1CA4940F13C31162B75DD3F1717353EB0CA49405E0FA1D59075DD3F64957AF6BECA4940E4FD7980F675DD3FFF32DBADCDCA494069455D43C681DD3FC5DBF82ECDCA4940E91047FC2B82DD3F4C122DE7DBCA494096A3A9B09182DD3FD748A09EEACA4940C5C53082618EDD3F996AB31FEACA4940A2329A43C78EDD3F0BA5D3D7F8CA49401B5C01012D8FDD3F132A468F07CB4940437C16BF928FDD3FBC97B84616CB494048C094D6C283DD3F0DFFA6C516CB49408952E4922884DD3F24C1DA7D25CB4940D430274A8E84DD3FCA383A3534CB4940CD86A551BE78DD3FD82420B434CB49402D2798DCED6CDD3FB4C1013335CB49400957A734886CDD3F2744A17B26CB4940AF0A7342B860DD3F61AA73FA26CB4940C414914FE854DD3F548F3C7927CB49401B81015C1849DD3F01F3FBF727CB4940E38C00C6B248DD3F52A2C53F19CB4940C1A0E0354D48DD3F2B2350880ACB4940585D6EA6E747DD3FC28CDAD0FBCA49405B0F0383B753DD3F7FB11C52FBCA49402F44E7E75153DD3F4BE8F999ECCA4940BAA82752EC52DD3F1BA684E2DDCA49400932E2B78652DD3FE2634E2ACFCA49403188CE7C565EDD3F099088ABCECA49406FF546E1F05DDD3FA4EC26F4BFCA4940E5D5D3328B5DDD3F2439E23BB1CA49404CCF4584255DDD3F1AF85784A2CA49409778EED6BF5CDD3FC6EEE0CC93CA494053204A7B8F68DD3F0B3D124E93CA494005AA0AC12968DD3F1A2EC79584CA49404BDEB10CC467DD3F23F63CDE75CA49409CAB1478F45BDD3F5D240B5D76CA4940DA24C6E22450DD3F4FCDCFDB76CA494055EC613FBF4FDD3F9A49582468CA4940E10941B1EF43DD3FAC2B13A368CA4940CA281A971F38DD3FE95ECA2169CA494066DC9607502CDD3F213672A069CA494051C8C876EA2BDD3F24A625E85ACA4940ECB473EE1A20DD3FA7B6C3665BCA49408E926D654B14DD3FEE4158E55BCA49404811DD5F7B08DD3FD076E8635CCA49403BF474D5ABFCDC3F5AF769E25CCA49403102076A46FCDC3F6E38DD2A4ECA49401AE7CCE676F0DC3F7BF254A94ECA49405BF4E162A7E4DC3F4C27C3274FCA4940EBE9F152D7D8DC3FE0A92DA64FCA49407EC2F95808CDDC3F9101832450CA4940503CA84738C1DC3FF778DAA250CA49407F499BFFD2C0DC3F34C19EEA41CA49404B360D09A3CCDC3F108B476C41CA4940847F26FB71D8DC3FA174F2ED40CA49406C43B7A80CD8DC3FE5CB643632CA49406FB7C851A7D7DC3F4226167E23CA49409B16BB0042D7DC3FD15788C614CA4940FCC62DF111E3DC3F89DA1E4814CA494041C07699ACE2DC3F1D85A49005CA4940F209E3B0DCD6DC3F14C10D0F06CA494063F5065C77D6DC3FD1E2BE56F7C94940EE2F4691A8CADC3FF9B212D5F7C949408718294A43CADC3FA56A841DE9C94940DE44F26F73BEDC3F4F19DA9BE9C949403B5ABA2C0EBEDC3F63DD9DE3DAC9494074A003E53EB2DC3FB9F3E361DBC94940A22136136FA6DC3F1D031FE0DBC949405BAF6C47D4A6DC3FEF255C98EAC94940052BA57739A7DC3F6393EB4FF9C949403942BC5709B3DC3F923BAFD1F8C94940266F30AFD8BEDC3FE4A26853F8C94940027C4EF43DBFDC3FAA03B80B07CA49404F496934A3BFDC3FE91C33C315CA4940D77BB97508C0DC3FDE6DC17A24CA49403CEDA80639B4DC3F19CA08F924CA49409769FE1069A8DC3F57F8467725CA4940E8BFD10F9A9CDC3FBE1670F525CA494003BD5140FF9CDC3F3D84C0AD34CA4940A61E1449CEA8DC3F8BF8962F34CA494026F4F9459EB4DC3F643358B133CA4940F6B8CC8003B5DC3FC89FE66842CA494097FAA67C33A9DC3FDFF825E742CA49407C374F6C649DDC3FCEF14F6543CA494009F198639491DC3F8EBE7AE343CA494060A210D6C485DC3F2BDE966144CA4940E6DD3EB95F85DC3F219606AA35CA4940F9CDA0329079DC3F68C6182836CA49400340E3182B79DC3F4211C76F27CA4940A8CE08155C6DDC3FCE28CAED27CA4940F5F67C8D8B61DC3F40DFD36B28CA4940D10E0E98F061DC3FB56E262437CA49403EE86D0F2156DC3F15181CA237CA4940EEE0720CBC55DC3F9B1BC9E928CA494012014F0F5755DC3F94F336321ACA4940784C2F958749DC3FD24022B01ACA49406D44B8A5B83DDC3F2F3FFE2D1BCA49407BD1EEB8533DDC3FF8717E760CCA49408DD3BAB98331DC3FF21A5CF40CCA494054C056C9B325DC3F119C2F720DCA4940D16CF4A61826DC3F1843B0291CCA4940373A282A491ADC3F9C8775A71CCA4940D8925F01AE1ADC3F49D0095F2BCA494050E16BDE121BDC3F83ED5E173ACA49402771EFD5420FDC3FE4AF20953ACA4940A0E2E6A6A70FDC3FC439B54C49CA4940F605DD8DD803DC3F1B9A63CA49CA49409E96747C08F8DB3F19C412484ACA4940BA2290436DF8DB3F71B1550059CA4940EE0D8F5C3D04DC3FA81AA68258CA4940A5074727A204DC3FADE53A3A67CA4940AE3FD3F70605DC3F4E8590F275CA49404B1C5DC36B05DC3F0DDA11AA84CA4940D0181690D005DC3FA763A66193CA4940B5C9BD5800FADB3F68AD57DF93CA4940455DB42365FADB3F5B78AD97A2CA494078DDA8E9C9FADB3F7BF82E4FB1CA494082582E309A06DC3F22D57CD1B0CA4940B8DC507E6912DC3F6F7BCB53B0CA4940E3FAF550CE12DC3FF9935B0BBFCA4940B627389E9E1EDC3F6D7C968DBECA49400D5680C3391EDC3F5A5206D6AFCA49404AC9288C092ADC3F43CD3C58AFCA4940DFA9DBA7A429DC3F6100BDA0A0CA49407D891EE47435DC3F143EE522A0CA494041A8312F4541DC3F8B5303A59FCA49409C6AB336E040DC3FDE15B0EC90CA4940B8BB0B447B40DC3F95AC1D3582CA4940DCEC99684A4CDC3F8BB33EB781CA4940933FD762AF4CDC3FDEAFD06E90CA49406D91EB62144DDC3F958023279FCA49403C2CFB5D794DDC3FA206A2DEADCA494073E5F6234959DC3F4877B260ADCA494059972827AE59DC3F021C4318BCCA4940934397F47D65DC3FAC294A9ABBCA49407FB821C84E71DC3F704C3C1CBBCA4940C87744D1B371DC3F944E7DD4C9CA49404C63FD28837DDC3F31F57556C9CA4940183EE9FB5289DC3F14F25FD8C8CA49402C54880EB889DC3FEC15CB8FD7CA494064BD43E88795DC3FB502AB11D7CA4940B02C323D58A1DC3F2A447C93D6CA4940C2C9BD9927ADDC3FB15B4E15D6CA4940644EB5E7F7B8DC3F93150A97D5CA4940D408641E5DB9DC3F8EF9464FE4CA4940E415C6F32CC5DC3F6332FCD0E3CA49403123D353FDD0DC3F8F17A252E3CA49408938839CCCDCDC3FAC204AD4E2CA494035C3AAE531DDDC3F307DC48BF1CA4940E7BB064C02E9DC3FCEDC560DF1CA494019495D26D2F4DC3F328EE58EF0CA494009982F8437F5DC3FFB6C0C47FFCA49402E1582650701DD3FB11A91C8FECA4940AEA60600A200DD3F87BE6A10F0CA494099C902D9710CDD3FA56DE691EFCA49401D562746D70CDD3F3E470C4AFECA4940A1F24CAF3C0DDD3F336B84010DCB4940AFE8CA120D19DD3FA264F0820CCB4940B74EBEF9DC24DD3FD90B58040CCB49402F5AE3724225DD3F3213CFBB1ACB4940B332D2601231DD3F75B62C3D1ACB49403A3C80E77731DD3FB70C64F528CB49404DEA6ADC473DDD3F07ACB77628CB4940CAD1B765AD3DDD3FE5341A2E37CB4940BDA8F7EC7D49DD3F23F95DAF36CB4940C92030E84D55DD3F9F129E3036CB4940F6E73587B355DD3FE6B1D3E844CB4940FA1E6A898361DD3F35C7096A44CB494043A9F08A536DDD3F305B36EB43CB49407CB4A7072479DD3F523B546C43CB4940E1CC22B98979DD3FDF51C72352CB4940BED2F6C05985DD3FDB5FE0A451CB49406E021DC82991DD3F75ECEF2551CB494013E74F07C490DD3FECDB7D6E42CB49405A351F06949CDD3F346A84EF41CB4940DD96400464A8DD3F3577817041CB4940ECAE5FD4C9A8DD3F9F81F22750CB4940CB0CDEA92FA9DD3FD41211E05ECB4940255F597B95A9DD3F9FEE81976DCB49406D833C66C59DDD3FE96A86166ECB4940B0486A9C5F9DDD3F000C155F5FCB4940DC94488E8F91DD3FD8830FDE5FCB494033FD787FBF85DD3F407A005D60CB49404704F9392586DD3F3ADF72146FCB4940B8FF26F58A86DD3FE52CE5CB7DCB4940154B57D6BA7ADD3FE0A7CD4A7ECB49407047FA3AEA6EDD3F9AD3B1C97ECB494095FC32EC4F6FDD3F23AED2818DCB494099156A99B56FDD3F33D345399CCB494063901A44867BDD3F83A160BA9BCB494090183D725687DD3F9220773B9BCB4940A627B3B5F086DD3F780105848CCB49406B907EDBC092DD3FEF8112058CCB4940E3C2B19F2693DD3F081E84BC9ACB4940558378CCF69EDD3FF099873D9ACB49406175399E5C9FDD3F3A84B9F5A8CB494007A6EC6AC29FDD3F302417ADB7CB49405CDC093E28A0DD3FDBDF4865C6CB4940DB6E1F81F8ABDD3FDE5041E6C5CB4940AA6E58A692ABDD3F5018102EB7CB4940A9EFFBD12CABDD3F79FBB276A8CB494054B56C90FDB6DD3FED159DF7A7CB4940B20A58AF97B6DD3FFB316C3F99CB49406AB814DA67C2DD3FDC2853C098CB4940B9343CF701C2DD3F4999E3088ACB4940FEF65F109CC1DD3F6754C6507BCB49409C0DF6F4CBB5DD3F2057DECF7BCB49409D22231B66B5DD3FD1156E186DCB49409AEAE32E36C1DD3F359656996CCB494092FAAD4606CDDD3F6EDA351A6CCB49408761A4306CCDDD3FA676A5D17ACB494099EDD6503CD9DD3F6E247B527ACB4940C693825ED6D8DD3FD5A10B9B6BCB494073C3E86C70D8DD3F120F9CE35CCB494095DB56770AD8DD3F17CE7E2B4ECB494077613E703ACCDD3F74D3A8AA4ECB49406C717788D4CBDD3FBF0639F33FCB494042223287A4D7DD3F011B0F743FCB4940DD83100175E3DD3FBF70D6F43ECB494080A30F040FE3DD3FB7DEA53C30CB4940D39F870DA9E2DD3F606F498521CB494006A211FA78EEDD3FC1A50C0621CB49401420E1E548FADD3FD253C68620CB4940C06024EDAEFADD3FB38F223E2FCB4940FC8AE1FA14FBDD3F55EE52F63DCB49401EEE1F047BFBDD3F5854C2AD4CCB49406DD1CC12E1FBDD3F3148DF655BCB49404573591FB107DE3FD0068FE65ACB49400C1A0AA78113DE3F450530675ACB49408B2D9DC1511FDE3F7B0BCCE759CB494025A7F9CB212BDE3F20305F6859CB49400E4F9BD5F136DE3F4BCCE8E858CB494060C6240A5837DE3FAD9057A067CB4940B14625F8872BDE3F750ECE1F68CB4940D5F36AE5B71FDE3FB5033B9F68CB494034FA79C2E713DE3F55179F1E69CB4940E81E6B321708DE3FB732FE9D69CB4940AC9E801D47FCDD3FE08D4E1D6ACB4940241FEF28ADFCDD3F59C3BDD478CB49409A3ECC3913FDDD3FB586DA8C87CB49400208735FE308DE3FFAF7890D87CB49407D04B5744909DE3F64F3F8C495CB49404233DF1D1A15DE3F8D8A994595CB4940D594EA59EA20DE3F5A2935C694CB4940FE29BF85BA2CDE3F6CE6C74694CB4940B3BC6257542CDE3F9438598F85CB49400DD10B25EE2BDE3FA1DC3CD776CB49403C36693FBE37DE3FE644C65776CB49407BF6EAD48E43DE3F77EB40D875CB4940FB7FD2ED5E4FDE3F3C42B75875CB494029F2D1A7F84EDE3F05C248A166CB4940089AA0B7C85ADE3F43AAB52166CB49406D08FF052F5BDE3F6B1024D974CB49408A9ACF59955BDE3F6804409183CB4940EEC04439C54FDE3F4950D31084CB49400085BB802B50DE3F2CB041C892CB494028242ACE9150DE3F4CE87080A1CB4940D2119116F850DE3F68DDCB37B0CB4940C86C3650C85CDE3F694338B8AFCB4940B4B220899868DE3FA9209B38AFCB494002D64FC16874DE3F2A75F4B8AECB4940813DA4743980DE3FD2053F39AECB494029E65CAB098CDE3F8B4885B9ADCB494002021B24708CDE3FABDDB371BCCB494059FFF2714098DE3FE8D5EFF1BBCB49401E8693AF10A4DE3FCCEC2272BBCB494025768A3477A4DE3FDB549029CACB4940D5BDAEF547B0DE3FF98BB4A9C9CB4940FD4D5968E1AFDE3F4D3E47F2BACB4940BDE482A4B1BBDE3F4E436772BACB4940CAF0F0DF81C7DE3F9DBF7DF2B9CB4940EBAB027EE8C7DE3F82D8EAA9C8CB4940F74313C1B8D3DE3F9FB1F729C8CB4940862F2E6B1FD4DE3F725C4FE1D6CB49407134911F4FC8DE3F3F864261D7CB4940771F96D37EBCDE3F5A512CE1D7CB494073828174E5BCDE3FBCB25799E6CB494002F4771F15B1DE3F124B3819E7CB494093EF89B37BB1DE3F7302A3D0F5CB494036C7E6104CBDDE3FDF17C250F5CB49409FCA886D1CC9DE3F2BA8D7D0F4CB494096F80CCBECD4DE3F6E73E450F4CB4940897C70B4BDE0DE3F0E3DEAD0F3CB49408B3934218EECDE3F1CB6EB50F3CB49406947C5E5F4ECDE3F4F09170902CC4940F6368F7024E1DE3F3A5E158902CC4940530BA2278BE1DE3FD2416C4011CC49407D273BE5F1E1DE3F1C4D97F81FCC49404CEA7FE220D6DE3F58ED907820CC494022BB106A50CADE3FF5EE83F820CC49403C22B511B7CADE3FF9B1EDAF2FCC494014A7C493E6BEDE3FC26AD92F30CC49400351191516B3DE3F429EBBAF30CC49404DE91B7EAFB2DE3FC23651F821CC49401EA398E248B2DE3F11D3254013CC49407724F7F777A6DE3F5F1903C013CC49408FA47D88A79ADE3FA49DD13F14CC4940A4CE58130E9BDE3FB6A5FDF722CC4940C731268BDEA6DE3F40CF2E7822CC4940F8BFCF1945A7DE3FF088992F31CC494004D9AE99749BDE3F88B168AF31CC494066367925DB9BDE3F3B47816740CC4940EFC844AD419CDE3F242BEC1E4FCC4940010300000001000000A3000000EFC844AD419CDE3F242BEC1E4FCC49400417450C7190DE3F2C1AB39E4FCC4940EF45077AA084DE3F59DC6F1E50CC49403C02E3023A84DE3F4854046741CC4940B79CC087D383DE3F5F1AEBAE32CC494002AA11126D83DE3F566A7FF723CC49401656DE970683DE3F0EBE523F15CC49408C1C52AA3577DE3F8FED09BF15CC49406B3AEE37656BDE3FAF5CB23E16CC494094E6CFC4945FDE3F854651BE16CC4940422EF750C453DE3F3BABE63D17CC49407BBD91FE5D53DE3FD0D58C8608CC49401E1752928D47DE3F6F63180609CC4940A87B75A9BC3BDE3FB8A49F8509CC49408614AF62563BDE3FD3E470CDFACB4940A161DF21F03ADE3F60F90216ECCB49409E68D2C41F2FDE3F98D87A95ECCB4940D46AD487B92EDE3FFC9E4BDDDDCB494000086132E922DE3F63A7B95CDECB4940B955B7CC1817DE3FA1D11EDCDECB4940DBCD0DF97E17DE3FCAAE4E94EDCB4940206DF01DAE0BDE3FF235AF13EECB49408C45723D140CDE3F64681ECBFCCB49402A5EE320E517DE3F7D8FBD4BFCCB4940E931AE4E4B18DE3FBD44ED030BCC4940CBFB52CD1B24DE3F402587840ACC494087676AFE8124DE3FF041E23B19CC49400C237277B118DE3F1FB348BB19CC49400D0F5983E00CDE3F5B2FAA3A1ACC49406BF543AA460DDE3F630EDAF228CC4940530400297601DE3F571F2D7229CC4940CA16690A1001DE3FACEEFCB91ACC4940502DBF903FF5DD3FC12846391BCC4940522002A7A5F5DD3F10AB76F129CC49401B2AC5B80BF6DD3FE830E6A838CC4940E165F6CF71F6DD3FE740036147CC4940D0F1963CA1EADD3F73EA43E047CC4940EDC2B92D3BEADD3FED88262839CC494002564A24D5E9DD3F7FB1B6702ACC4940125F5B166FE9DD3F9BDD85B81BCC49404294E50E09E9DD3FC72829010DCC4940687D382038DDDD3FA13C64800DCC49401C795A1F9EDDDD3FFC42C1371CCC4940D11AF52404DEDD3F6868F2EF2ACC4940FF9110266ADEDD3F6B9162A739CC49409F7F919999D2DD3F5EDE8F263ACC49407938C697FFD2DD3FF3E2ADDE48CC4940F75839022FC7DD3F07FCD15D49CC49404EA2AD745EBBDD3F042AEFDC49CC494033F31B608DAFDD3F26310A5C4ACC494031029541F3AFDD3FBE887B1359CC4940ACD9CBAF22A4DD3F4BA3879259CC49406B78118A88A4DD3FB356F94968CC4940CEEDBA69EEA4DD3F2B92180277CC49406CDA4F0BBFB0DD3F94930B8376CC4940C04DC02359B0DD3F2FCAECCA67CC49405A001E482ABCDD3FF6DED04B67CC4940ECFF933790BCDD3F4836EF0376CC4940C0F40923F6BCDD3F64D95FBB84CC49404614E6D2C6C8DD3F96B2413C84CC494001DFD0DE60C8DD3F684AD18475CC4940AB82598D31D4DD3FE83CAC0575CC4940C19EC28997D4DD3FAA531CBD83CC4940F3801E8CFDD4DD3FFA3E4D7592CC494017A8954ACEE0DD3F05091EF691CC4940E6EF38849FECDD3F3E17E07691CC49407A5F389205EDDD3FA2183C2EA0CC494038BA8F57D6F8DD3FA385F9AE9FCC494059212D1CA704DE3F066DAD2F9FCC494079194F410D05DE3F25EADCE7ADCC4940683B5D743CF9DD3F65542967AECC4940F867B1A66BEDDD3F07396CE6AECC4940A79FAAB6D1EDDD3FF65CDB9DBDCC4940FE0AD8C637EEDD3F89223755CCCC49406ABEE26B66E2DD3F7B5A76D4CCCC494040C8096400E2DD3F61431A1DBECC49409312968C2FD6DD3FDE6D4A9CBECC4940869268B45ECADD3FAE12711BBFCC4940224899ABC4CADD3FBBCCCDD2CDCC4940612942A92ACBDD3FD9A5FE8ADCCC49409F1D0EB190CBDD3F49967342EBCC4940784FEFBFF6CBDD3F3AC9A9FAF9CC4940A8A1D5C925C0DD3FEA8EC879FACC494045C579CA8BC0DD3F78132A3109CD4940C3C6D0C95CCCDD3F3EC00BB208CD4940541C10CC2DD8DD3F993AE53208CD4940BEE38FCDFEE3DD3FBC23B5B307CD4940225F42EF64E4DD3FE0F1EB6B16CD4940309E947436F0DD3F9369ADEC15CD49406849759A9CF0DD3F809C23A424CD49407765C7AB6DFCDD3FF20EE12424CD494022C159BC3E08DE3F11F094A523CD4940764F2CCC0F14DE3FEA3F3F2623CD494008B9400C7614DE3FDD21A3DD31CD49401289C5F3A408DE3FFA7BF85C32CD4940121FB3310B09DE3FB732301541CD4940B77BD752DC14DE3F952EDB9540CD4940FCC9F1944215DE3FD649524D4FCD49401668E9391421DE3F81D2EECD4ECD494089A8238A7A21DE3F99D913865DCD49406A8397CA4B2DDE3F28B7AB065DCD49405B04CEFA1C39DE3F3CAA3A875CCD494062454199B638DE3F49F714CF4DCD4940677E0EC08744DE3F01039A4F4DCD49401DD605625950DE3FF24310D04CCD4940165CE5D4BF50DE3F95A236885BCD494042B1CC432651DE3F355AAF3F6ACD494046A76B7AF75CDE3F3EEE21C069CD4940D35C4AB0C868DE3FBBF08A4069CD4940A06483362F69DE3F4E34C5F877CD49409A234B740075DE3F02FB247977CD49406F6A27FE6675DE3F41588B3086CD4940E7B2D7433881DE3F10E3E1B085CD4940908452B1D180DE3F2B307BF976CD4940ACCEC6196B80DE3F2D41404168CD494071153C880480DE3FAC32C68959CD4940C7CBB7F29D7FDE3F197D9ED14ACD4940667DED906F8BDE3F70E4E4514ACD4940854E1B2FD68BDE3FAAEF0C0A59CD4940ED954F59A797DE3F26564F8A58CD49403CA1409278A3DE3F9383870A58CD4940E870C0E211A3DE3F27CD5E5249CD4940179A78B24097DE3F45F526D249CD494011FA1C11DA96DE3F5D2AAC1A3BCD4940E9933AF8088BDE3F206F6A9A3BCD494026F5AD62377FDE3F705D241A3CCD4940D82C24CED07EDE3F254CE9612DCD4940E9FD69BCFF72DE3F5CC394E12DCD4940A80410379972DE3FB6322E2A1FCD4940E1FFEFB13272DE3FFA4EB47210CD4940AC0D59B2037EDE3F762C08F30FCD494095A010209D7DDE3F7E01CD3A01CD4940D04A4F94367DDE3F77016683F2CC494039948EFE0789DE3F0167AA03F2CC4940B47325ECD894DE3F4F76EA83F1CC49402CE70B4A7294DE3FFF8EAECBE2CC49403E6BB63D43A0DE3F0810E44BE2CC49404D74232114ACDE3F5CA710CCE1CC49406D5DB77FE5B7DE3F90702E4CE1CC4940EBBCCB3B4CB8DE3F72586B04F0CC494018BED7F2B2B8DE3F2F04D4BBFECC4940E6A714E683C4DE3F9D23EE3BFECC494025D790D854D0DE3FD3B1FEBBFDCC4940F51D3410EECFDE3F555B9504EFCC494074A9CD05BFDBDE3FA7A7A684EECC49406A35EA7C90E7DE3FF085AE04EECC4940B396919F29E7DE3F44CC704CDFCC4940163422DBC2E6DE3F09FA0495D0CC49405647AA145CE6DE3F5B72DADCC1CC494066F8FFB48ADADE3F03ECD15CC2CC494043D181FD23DADE3F00BE7BA5B3CC4940522C3A46BDD9DE3F983A12EEA4CC4940774F6D8A56D9DE3F12C4E73596CC49407131D9C985CDDE3FF8B0D8B596CC49407E949D11B5C1DE3FAEA9C63597CC49400411A758E4B5DE3FE21CABB597CC494098E30F2313AADE3F0C478B3598CC4940DEF4D08FACA9DE3F9063347E89CC494026D985F745A9DE3F7D3909C67ACC494015CBC14D759DDE3FDCFCD9457BCC494041E4C5C30E9DDE3FDF546F8E6CCC49409C1DCB35A89CDE3F19FB56D65DCC4940EFC844AD419CDE3F242BEC1E4FCC4940 + new_record: false + active_record_yaml_version: 2 +- !ruby/object:LocationPolygon + concise_attributes: + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: id + value_before_type_cast: e6676ba6-5386-4abe-b8d9-3071c417b3f9 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: name + value_before_type_cast: liverpool + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: location_type + value_before_type_cast: cities + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: created_at + value_before_type_cast: 2024-11-28 16:34:27.936331000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: updated_at + value_before_type_cast: 2024-11-28 16:34:27.936331000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: area + value_before_type_cast: 0106000020E610000003000000010300000001000000E30B0000E4B8F167C25307C06045564E32BC4A40CBD72190375207C09F04BB7E32BC4A40650649B8AC5007C0E49215AF32BC4A405D5435CE214F07C0E52968DF32BC4A40EC5D6CDD264F07C0BC48689941BC4A40C16070049C4D07C042B0AEC941BC4A4018796B2B114C07C0CFE6EAF941BC4A40C7A85D52864A07C045EC1C2A42BC4A404780275E8B4A07C063AA5CE350BC4A408906D373004907C033B3861351BC4A404C7F1A69FB4807C06FB9465A42BC4A4033C5285EF64807C0E4AB45A033BC4A40167A1A866B4707C0501363D033BC4A404E4C03AEE04507C0B449760034BC4A40423DE3D5554407C0114F7F3034BC4A40605988EBCA4207C05E59806034BC4A4060C134F2CF4207C0E654821A43BC4A4009A4F118454107C02F33774A43BC4A40B38D5613404107C048FC749034BC4A40A7E61B3BB53F07C01B6E5FC034BC4A405650E336B03F07C08F35310726BC4A405F10B15F253E07C0173B113726BC4A40394B4A5C203E07C092660E7D17BC4A4023102E591B3E07C0E77ECCC308BC4A400C3D2156163E07C08AD09D0AFABB4A402AAFED718B3C07C0BDE8743AFABB4A4062C1B26F863C07C0769E7180EBBB4A40574CC26D813C07C017412FC7DCBB4A40D8CE00ACF63A07C040C7F7F6DCBB4A40E852EFAAF13A07C0A967073DCEBB4A403F989F6B7C3C07C0A81C3F0DCEBB4A40A31FC869773C07C0B1D1FE53BFBB4A4044FCC667723C07C0620A029AB0BB4A408B5410666D3C07C0A530C6E0A1BB4A40A8166964683C07C024919D2793BB4A40DA6200A8DD3A07C0C955655793BB4A40238795A8E23A07C0E50A8E10A2BB4A4019123AA9E73A07C04BFAC9C9B0BB4A40B00829AAEC3A07C035D7C683BFBB4A400EF628CA613907C0E89488B3BFBB4A409C01DEC9663907C0BB6BC96CCEBB4A4066FBEFF8DB3707C0374A7F9CCEBB4A40451D4CFAD63707C0172C3EE3BFBB4A40BF6E662A4C3607C0B191E912C0BB4A40B22BAE2C473607C02E74EC58B1BB4A406ECCFC6DBC3407C06D8B8C88B1BB4A40CAD69F71B73407C03C3950CFA2BB4A400BD16C812C3307C0C945ECFEA2BB4A402CC7B87C313307C07CC128B8B1BB4A40198AC9ADA63107C06DA1B6E7B1BB4A40BF9C4EA8AB3107C0A633B4A1C0BB4A40E8A145D8203007C0F50B38D1C0BB4A402A0E95D1253007C0E5777A8ACFBB4A40789F9E109B2E07C0656FF2B9CFBB4A409A0B2609A02E07C08D53E473DEBB4A40EF259116152D07C07F1858A3DEBB4A40F7D24B448A2B07C0EAC8BDD2DEBB4A4010FAE64D852B07C08990CB18D0BB4A402225AA7CFA2907C0C1E52648D0BB4A40190C9E87F52907C05272E38EC1BB4A402BDC6D92F02907C07211E5D4B2BB4A402E61879DEB2907C0B29DA71BA4BB4A408920B0A8E62907C0B1637D6295BB4A40863582CB5B2807C050BACF9195BB4A405E367DD7562807C024F7D0D786BB4A40A6DAC1E3512807C01921931E78BB4A401682D316C72607C0F941D94D78BB4A40EF62F723C22607C0677CED9369BB4A4055BB165A372507C0470529C369BB4A4057918E68322507C0E4B6EA095BBB4A40FA595E31BD2607C02357AFDA5ABB4A40B32D8D3EB82607C0B41EB0204CBB4A40ACCA4808432807C03F796AF14BBB4A407BF121E0CD2907C0ACF018C24BBB4A40A8A0C6A7582B07C02B27BF924BBB4A4068E812B2532B07C044A494D93CBB4A40EB127FEBC82907C07C44EE083DBB4A40F7D0B6143E2807C0E2A33F383DBB4A40022BE620392807C0866E407E2EBB4A40DC514C59AE2607C0AFC185AD2EBB4A409935AF93232507C020A6C0DC2EBB4A4062E049A21E2507C0A70B822320BB4A40A0E5B4DD932307C04696B25220BB4A40B99AEB08092207C089DEDA8120BB4A40C028B719042207C0C82BAFC811BB4A40B82C4D66792007C0EC3DC9F711BB4A404F5E8392EE1E07C000FBDC2612BB4A403D3B32A5E91E07C04996DC6C03BB4A40C5572AB8E41E07C0C21E9DB3F4BA4A406020A5F6591D07C0A66BA4E2F4BA4A40A5AA7C0A551D07C0D004B728E6BA4A40FBEF961E501D07C0563E776FD7BA4A40EA7BFADDDA1E07C032437040D7BA4A40460FCCF0D51E07C058926F86C8BA4A401EE0E603D11E07C0ACCE2FCDB9BA4A40EF664BD15B2007C03B071D9EB9BA4A408FF768E3562007C088BAF2E4AABA4A4058845D8FE12107C0FA10DAB5AABA4A40E4582FA0DC2107C0C89DDDFB9BBA4A4019894AB1D72107C0E914A2428DBA4A40B83734C2D22107C0FFC2B8887EBA4A4040D1438B5D2307C0ACD093597EBA4A4007835F9B582307C0F5B158A06FBA4A40FA722A53E32407C0E3152C716FBA4A40683FFD61DE2407C01E7730B760BA4A404BFF1F71D92407C0610F09FE51BA4A4057F94480D42407C01C45CE4443BA4A40F7B3D4345F2607C0C93C991543BA4A40041661EBE92707C044C959E642BA4A40DD520AB0742907C041760EB742BA4A406F9FC4BB6F2907C09A5714FD33BA4A40C553296FFA2A07C0E05CC1CD33BA4A402C4B8522852C07C0EA34649E33BA4A40B7296E2C802C07C0E9783FE524BA4A40413C18367B2C07C08D5A462B16BA4A4093E5DD84F02A07C0BB56A25A16BA4A406B85E28FEB2A07C09D8C69A107BA4A407566B59AE62A07C08FF982E7F8B94A40177DCBA5E12A07C0E7034A2EEAB94A40DDC6BAF7562907C06B119A5DEAB94A40595AEA03522907C02E7060A4DBB94A40E0BCE10F4D2907C03EB965EACCB94A40AF40291C482907C049393F31BEB94A4065163228432907C0CF564477AFB94A40039A84343E2907C074D309BEA0B94A4080D7A540392907C007111C0492B94A40C22F0A4D342907C0D5EBDB4A83B94A40918BA8F3BE2A07C08308901B83B94A40794406FFB92A07C06574506274B94A40DA38320AB52A07C0A11663A865B94A401C55A115B02A07C0265623EF56B94A400B0A09B93A2C07C0653CCFBF56B94A40B588BC7CC52D07C0A8146D9056B94A40709DD485C02D07C0668C6DD647B94A40EBF83C8FBB2D07C0F43A421D39B94A40FF7C4A20462F07C01908DDED38B94A40C3B46428412F07C0D2FADD332AB94A4040C0C8303C2F07C07BD79F7A1BB94A40821ED9CFC63007C07AD62F4B1BB94A4024233DD7C13007C0259105920CB94A409B3262DEBC3007C0A3E806D8FDB84A405B627041322F07C0D79A7507FEB84A40E991EE492D2F07C0DF34374EEFB84A40255D3452282F07C08AB83794E0B84A407B4382C79D2D07C060FF98C3E0B84A406B9027D1982D07C083126D0AD2B84A4099048EDA932D07C06BC26C50C3B84A4060B521631E2F07C038CA0C21C3B84A40D27ED6FBA83007C09EB5A0F1C2B84A40B4516803A43007C0359E6238B4B84A40722B059B2E3207C04F05ED08B4B84A40F30697A1293207C0E9CBC24FA5B84A40559A745AB43307C0F08B3F20A5B84A400D1EB85FAF3307C0ED96416696B84A40315FFBE4393507C075E7BA3696B84A4007356AE9343507C06D4F787D87B84A403B9C9EED2F3507C0409384C378B84A409566D380BA3607C0051BEE9378B84A408905EF13453807C0EBD6486478B84A4079722BB7CF3907C01D73973478B84A40915574B8CA3907C0F64B537B69B84A4048BC4716403807C0F80304AB69B84A40FCE53B84B53607C0629CA8DA69B84A4024CB6B87B03607C0D506A2205BB84A40D2CC67183B3807C02A1AFEF05AB84A403898D81A363807C07367CC374CB84A4057330A1D313807C00151C67D3DB84A40AAFD851F2C3807C0B82481C42EB84A409B4073BDB63907C0E91BD3942EB84A400691EEBEB13907C0ECD1A1DB1FB84A40EFA42AC0AC3907C043249C2111B84A404DF6B0C1A73907C0D160576802B84A401196133C323B07C04218A53802B84A40E6E1BFD6BC3C07C0D4BBE40802B84A40F0273A61473E07C0B2281CD901B84A4007A1ABEBD13F07C0946A49A901B84A408525BAE8CC3F07C0B13F46EFF2B74A409673585F423E07C0E751181FF3B74A40D6BAC75D3D3E07C008B2E865E4B74A40D9B619E6C73F07C0BB4B1736E4B74A4099D739E3C23F07C018F4137CD5B74A40C272A4E0BD3F07C09086D1C2C6B74A406A6C1EDEB83F07C0884FA209B8B74A40C5723863434107C015C2C8D9B7B74A406B3F635F3E4107C065D3C51FA9B74A4087CC92F5C84207C0F191E0EFA8B74A406D67F8F0C34207C045399F369AB74A40B45FE1734E4407C0BAADB2069AB74A408B728B79534407C0625AF3BFA8B74A4067447BFDDD4507C00EF8FB8FA8B74A40E983C1F6D84507C06BF7BBD699B74A40824CD5EFD34507C0F72CCE1C8BB74A4099E0046E494407C03337C44C8BB74A40B4A02BECBE4207C0B916B07C8BB74A40E0921B58344107C0230094AC8BB74A406B639E542F4107C07DAB50F37CB74A40C0629EE7B94207C0E64B6DC37CB74A40FF9D6768444407C054F481937CB74A40497481623F4407C06AF679D96DB74A408E89EC5C3A4407C0923146205FB74A40227B43DEAF4207C019C530505FB74A40C9C1634D254107C0D06013805FB74A400B3EF149204107C09976CBC650B74A40B89546CC953F07C0E44EA1F650B74A409445ABC9903F07C0ACED973C42B74A4076E6074D063E07C0A437636C42B74A4055A8CD4B013E07C0B0AD2DB333B74A401E8331D0763C07C08069EEE233B74A40A4B85BD07B3C07C04155249C42B74A403A147E43F13A07C0903ADDCB42B74A40A3F8E8D6663907C03C0B88FB42B74A40D8E143D56B3907C0A9F392B551B74A40B7834447E13707C012E137E551B74A403BAA5644E63707C0ED15829E60B74A40592C67C55B3607C0D4441BCE60B74A40EA345A46D13407C065CDA7FD60B74A4055FE4D41D63407C08F4CDFB66FB74A402C2249D14B3307C0FF1A5FE66FB74A4096527CCB503307C010086BA07EB74A40E7D1DD27C63107C0DEEFE6CF7EB74A404B39BB20CB3107C075442F898DB74A4092B25A9E403007C0DE2A9DB88DB74A40DB966A96453007C05A3C93729CB74A400F7BF112BB2E07C0C950F7A19CB74A4036B0BF09C02E07C0D0F43F5BABB74A4042085795352D07C0C846988AABB74A40A0365F8B3A2D07C0FE31A244BAB74A40949728813F2D07C057BBD7FDC8B74A4044661CDAB42B07C072662C2DC9B74A405BA359532A2A07C0D803735CC9B74A40487E12472F2A07C0257BBC15D8B74A40163237BFA42807C01F46F944D8B74A406BC729B2A92807C07E0404FFE6B74A40E1B90C191F2707C0C7EB382EE7B74A404FC7B00A242707C0C6A26FE7F5B74A40BD349F7E992507C029069916F6B74A404D198AF40E2407C091FEB745F6B74A4093505EE4132407C0F2A3C3FF04B84A405D9F3059892207C0B7C9D82E05B84A4057F4BC478E2207C06FB423E813B84A40FE6D4DAB032107C088F4301714B84A4086D7272F791F07C02F2D304614B84A405CA6DD1B7E1F07C03DB93C0023B84A4092D54C7EF31D07C06BF8352F23B84A409363B469F81D07C0D47C6EE831B84A40EB1D5508831F07C053E374B931B84A40F1B0DBF4871F07C00D46C07240B84A404077ABE18C1F07C05C95CC2C4FB84A40467E1062172107C04CF3CBFD4EB84A40ABD13074122107C05EFEBF4340B84A40F224D0139D2207C013AFB11440B84A40525D3DA3272407C09F1F9BE53FB84A405DE7A132B22507C0D2627AB63FB84A40EF72B123B72507C0634885704EB84A4029708214BC2507C0FCCBBB295DB84A40F35AA305C12507C00989C6E36BB84A40AB308CF6C52507C0FD30109D7AB84A40DF00B8E7CA2507C09778075789B84A40C4CC0353402407C0D8F9298689B84A40FB4DE642452407C09FC1703F98B84A4034130A334A2407C0A73F75F9A6B84A404B51EF224F2407C03A5AA5B2B5B84A402FB1E312542407C078ABE86BC4B84A40E4722103592407C0FBE6EC25D3B84A40A3DB1769CE2207C0B0430855D3B84A40B4DB0758D32207C0C2C2380EE2B84A408479BCAC482107C007884C3DE2B84A407642BC21BE1F07C0AC46526CE2B84A4092B5EA34B91F07C0AE7920B3D3B84A40F84B9D8A2E1E07C0613F1FE2D3B84A40B11D71F0A31C07C05CEC1111D4B84A4013CA7F059F1C07C0EF6D0A57C5B84A402EB19C9E291E07C0DC671828C5B84A403939E5B2241E07C0B97AD26EB6B84A40F5D53CC71F1E07C03FC49FB5A7B84A40C96B5C6EAA1F07C052F3A286A7B84A40816A6681A51F07C03E809CCC98B84A40E3AB1A07302107C03C049A9D98B84A4054B457192B2107C0FF6052E489B84A4062D55B2B262107C0FA095A2A7BB84A4090C5A23D212107C0A9520F716CB84A40B4FB1DBB961F07C060A910A06CB84A4022E53CCE911F07C0A48204E65DB84A4012526C2C071E07C0102BFF145EB84A4075D3EA40021E07C075E3C65B4FB84A40EE024BB0771C07C07617B58A4FB84A40BB2A9BC5721C07C08F13A8D040B84A40546634DB6D1C07C04AFC5B1732B84A40E2B6DCF0681C07C09C1D235E23B84A405DF36363DE1A07C09115068D23B84A402AC4AB4CE31A07C0684E3F4632B84A40C1A60236E81A07C0F2BF8BFF40B84A40378DA21FED1A07C01E1E99B94FB84A400BF01A9F621907C0460C71E84FB84A4044CD6C87671907C08662AAA15EB84A404D0E0E706C1907C057F2B75B6DB84A409556E1BCE11707C043288C8A6DB84A4051E33AA4E61707C024FDD8437CB84A403F92430E5C1607C0C3C69F727CB84A4019D7487AD11407C084255CA17CB84A400AEBC45FD61407C04F4E575B8BB84A409605E9DC4B1307C077F9088A8BB84A4049781EC1501307C09CB854439AB84A4004F2B008C61107C097FE04729AB84A40736D93723B1007C0C106A7A09AB84A40574E6DDCB00E07C0AFE13ECF9AB84A4002E21436260D07C03A77CEFD9AB84A409F93DD9F9B0B07C012F7512C9BB84A40558F057FA00B07C05B7F5FE6A9B84A40BE0FB5E7150A07C0F137D914AAB84A4043FD5B508B0807C02FC34843AAB84A40E632252D900807C03CB582FCB8B84A40DEF98382050707C02C9CEA2AB9B84A40703709EA7A0507C025324659B9B84A40C12AC0C47F0507C079289412C8B84A405D482C2BF50307C0DCF6E540C8B84A4090DA8F916A0207C0CA972D6FC8B84A40BE0CFAB8650207C0C7D5DEB5B9B84A40632173E0600207C0074CA3FCAAB84A40424CEF48D60007C0EDF3DF2AABB84A40ADEF62B14BFF06C06B6E1259ABB84A40A849A409C1FD06C04C9F3C87ABB84A4049EA1134BCFD06C0CD812BCD9CB84A40CC39C65EB7FD06C0D426DB138EB84A40E183630442FF06C033B6B1E58DB84A40E6D6D12D3DFF06C0D729B32B7FB84A405A2D2CC2C70007C0E7AB81FD7EB84A409265CBEAC20007C06CFD304470B84A408E820C7E4D0207C0808EF51570B84A40180F64A5480207C09B08E45B61B84A4089E48B37D30307C0C1A89E2D61B84A40862B215ECE0307C0A89A617452B84A401E020ACD430207C035BDA6A252B84A40884EEA3BB90007C0A5B1E1D052B84A4058A76364B40007C05EC7CF1644B84A4059A172F43E0207C0481095E843B84A40244C231C3A0207C0EC50442F35B84A407B1219ABC40307C0F7A8FF0035B84A403FF9C7D1BF0307C04360C24726B84A40978DA45F4A0507C0A7C7731926B84A40809478EDD40607C008011BEB25B84A4032FAEAC8D90607C0F9CE57A434B84A408FACF569640807C07E79F27534B84A407F38C9F8EE0907C0F418854734B84A40077A351BEA0907C0D4C5488E25B84A4094CCEFA8740B07C0BF74D15F25B84A404F8AA136FF0C07C0B6F54F3125B84A409F945616040D07C0BFCD8BEA33B84A4088C739B58E0E07C0C9FAFDBB33B84A40E5FAEA43191007C0B9E1678D33B84A40D5991462141007C0E3842CD424B84A402C0C74D4890E07C06060C20225B84A407F9270F3840E07C07064B24816B84A400DCFAE56FA0C07C033BC3F7716B84A40BFC40DCA6F0B07C0B7FDC0A516B84A40E32574EB6A0B07C0257471EC07B84A407946A30C660B07C0F9D56032F9B74A400631212E610B07C03E722479EAB74A40B483A9A4D60907C04FCD9AA7EAB74A406378FAC6D10907C088CA89EDDBB74A4009E48A3E470807C03DBAF51BDCB74A401575E4A3BC0607C02A9F594ADCB74A40C01B727FC10607C0DE1C6B04EBB74A400ABBE0F5360507C0F7EDC232EBB74A40834920D03B0507C0704700ECF9B74A40E1BC7545B10307C00B284E1AFAB74A407420F31EB60307C05EF95FD408B84A4053582F932B0207C06EE9A30209B84A40D413656B300207C056E3F4BB17B84A40EE1D88DEA50007C0BFE22EEA17B84A40752FF5B5AA0007C0850741A426B84A40CDFDFE2720FF06C02A1671D226B84A40D2231EFE24FF06C09916AF8B35B84A403F5BE55E9AFD06C01918D7B935B84A40DEA702349FFD06C0218F287344B84A401B1BDAA314FC06C096BB44A144B84A40E70BA9138AFA06C0ECB956CF44B84A40E4C0ECE68EFA06C0CA98698953B84A401DF9CB6504F906C09FC36FB753B84A4062FCC13709F906C0DF7DAE7062B84A40AD3B06837EF706C0E09AB09E62B84A407A499AF0F3F506C05B88A4CC62B84A4015B7C520EFF506C01E54651354B84A40BC3CB450EAF506C02FBE515945B84A402CC8FEE074F706C0A34A5E2B45B84A407230241070F706C059DF0B7236B84A402299ADC1FAF806C078790A4436B84A40240ED1EFF5F806C08F84CB8A27B84A40F663583F6BF706C079ADCCB827B84A4063A34F6E66F706C0F519B9FE18B84A40B91D37E1DBF506C0A8D6AB2C19B84A40DA9C8611D7F506C0D9F358730AB84A400C4176854CF406C0AE4541A10AB84A40A3D99FB647F406C032112DE7FBB74A4045F6C03BBDF206C075170915FCB74A40C7EA486EB8F206C0C7E0C85BEDB74A40EEC509C42DF106C0CF14A989EDB74A40C06066F728F106C0DC8894CFDEB74A4074550A2B24F106C041EA4016D0B74A401BE159A399EF06C0710E2344D0B74A409D46A56E9EEF06C0D8F976FDDEB74A4041B9DBE513EE06C06D3D4F2BDFB74A4019B35DB018EE06C0086364E5EDB74A4077A44C148EEC06C018E23413EEB74A40E54781DD92EC06C050F275CCFCB74A40720BA37A1DEE06C08126A59EFCB74A40AEF68D05A8EF06C05249CC70FCB74A40308B31D1ACEF06C053FAE02A0BB84A4084BC245D37F106C0D3A2FDFC0AB84A4011B88609C2F206C0CD881DCF0AB84A408DFA15D7C6F206C052E5708819B84A40AFA8ECA4CBF206C0A12F854228B84A40038B8672D0F206C03E18C5FB36B84A40FF2E2F40D5F206C0373A18B545B84A4009401F0EDAF206C0EC492C6F54B84A401F84D2DBDEF206C0FDF76B2863B84A404B82D3A9E3F206C0A9E07FE271B84A40C8FE9D77E8F206C091B4D29B80B84A40AA70B0C25DF106C0F756B2C980B84A40A78EAA8F62F106C0F7BAB2838FB84A40B87E705C67F106C046B2053D9EB84A406BC5D6C5DCEF06C036F6EB6A9EB84A4036CE20FAD7EF06C00EC698B18FB84A40AB998E644DEE06C03FA374DF8FB84A40670EC5BCC2EC06C0CA6E480D90B84A4032F7212738EB06C0A3EF0F3B90B84A40C7717691ADE906C08842CD6890B84A40D27FC2FB22E806C07A67809690B84A400C252D351EE806C0F3367EDC81B84A40C4EC579093E606C0DEBF280A82B84A40F572DC5598E606C0083D2BC490B84A401F5E41D00DE506C07327C8F190B84A402D96CD0B09E506C0C35DC53782B84A40CB8DE7667EE306C00F8A5B6582B84A40482DC5A379E306C06D1406AC73B84A40D6201110EFE106C02DE88FD973B84A40117FC94DEAE106C0B410791F65B84A40D3D9CE8BE5E106C0BA73366656B84A40FE68611D70E306C0EB38AD3856B84A40D8C7195A6BE306C02B86967E47B84A4033FC97C9E0E106C081741FAC47B84A40B1CD0D3956E006C01D359ED947B84A40BAB8A4B8CBDE06C083EB100748B84A4076F6D5F8C6DE06C00641BA4D39B84A40BB622E7851E006C0FDD6472039B84A4060925DB74CE006C0E4B104672AB84A405DCB1539C2DE06C0A0CF76942AB84A4009841979BDDE06C0ECFB5EDA1BB84A4085DA63B9B8DE06C0C91508210DB84A40104F78F9B3DE06C0481AF066FEB74A40F499D939AFDE06C04759ACADEFB74A4031CAFE79AADE06C0F83594F3E0B74A400343F3F234E006C0199623C6E0B74A4076734E3230E006C0B8ACCC0CD2B74A40A23DB8712BE006C06DFC8853C3B74A40A9E0E5B026E006C0D5E97099B4B74A40E92D5AF021E006C0C0C419E0A5B74A402ECA9E2F1DE006C056D7142697B74A40CFC760B3A7E106C09DAB99F896B74A405835D5F1A2E106C034AB423F88B74A40F9D4236F18E006C0828ABD6C88B74A40FAFD92FC8DDE06C053602C9A88B74A4074F0795703DD06C0DFD896C788B74A401876AFD478DB06C01430F3F488B74A40A028321774DB06C050E2D93A7AB74A40FAE7035A6FDB06C0DEC494816BB74A40C0C6D79C6ADB06C098463CC85CB74A4043DD75DF65DB06C0F4B2220E4EB74A40F89D602261DB06C0EB59DD543FB74A4066B7DEA4D6D906C0E90B2E823FB74A40FDDDE360DBD906C00BB0733B4EB74A40729D351DE0D906C0C88E8DF55CB74A404D01B9AF55D806C0F993D2225DB74A407A84AF0DCBD606C0FD7113505DB74A4040247E53C6D606C01DFDF8954EB74A40452BD3D43BD506C08B722BC34EB74A404C61F48D40D506C06832467D5DB74A405AFFDF4645D506C0D9DC9F366CB74A409940ABC7CFD606C071D16C096CB74A403DF3C46A5AD806C062A82BDC6BB74A408A03D3255FD806C0F75B71957AB74A40BC1AA981D4D606C01FD0B2C27AB74A40D306F53BD9D606C0B800CD7C89B74A40C22E09B94ED506C0A5A200AA89B74A40D4BD0F7253D506C011055A6398B74A4036F50AEEC8D306C0D8C5839098B74A4003041536C4D306C064172AD789B74A40FD9CEFA239D206C0DA374B048AB74A4041D2EA1FAFD006C0BD5160318AB74A40237CDF9A24CF06C0AC86705E8AB74A40FCC9A34F29CF06C087E1CA1799B74A40A0DBA7042ECF06C068DDD2D1A7B74A4073A58C7FA3CD06C0DE72E5FEA7B74A40D54F97CB9ECD06C0B034DD4499B74A4095AFE1179ACD06C08897828B8AB74A4066B9B2840FCC06C0F4528CB88AB74A40E25FCD1185CA06C0E13088E58AB74A40D7F38D7EFAC806C081907D128BB74A4044CECECDF5C806C009E160587CB74A40C2735A1DF1C806C067C8179F6DB74A4090DC7CAE7BCA06C0FB2723726DB74A408D61451F06CC06C05C0A28456DB74A40AE4CD6D10ACC06C04E3D70FE7BB74A40A497F66395CD06C09CD066D17BB74A40575957B090CD06C09E101F186DB74A40FB2ABAFC8BCD06C0CEEEC35E5EB74A401ECA8C7C16CF06C0BB13B3315EB74A4014E1ABC711CF06C0754E97774FB74A40510D17130DCF06C0F8C24FBE40B74A404204619582CD06C022B85FEB40B74A40880B7A07F8CB06C01159671841B74A403545C654F3CB06C045844A5E32B74A40CE4858A2EECB06C0619CEEA423B74A40D6FAD63664CA06C0B97BE7D123B74A40E2E541855FCA06C0690ACA1715B74A40967A75FAD4C806C0D3F9BB4415B74A40D98B3A4AD0C806C09D4F728B06B74A40C7BA9CD045C706C0D9C857B806B74A40B3B6F656BBC506C01C1633E506B74A40D94BDAA8B6C506C0AB24D52BF8B64A404CB888FAB1C506C0971CB671E9B64A4028791F9327C406C0DD82849EE9B64A4045AE34FB9CC206C0F73D4ECBE9B64A40973C4B4F98C206C0898A0212DBB64A40A362B7D80DC106C0C8FBBD3EDBB64A40F54F166083BF06C0B87B6F6BDBB64A401D54E30988BF06C03C14BC24EAB64A400F735EA4FDBD06C0B7916151EAB64A40A5989FFBF8BD06C0BD861498DBB64A40E25F9D626EBC06C08556B5C4DBB64A403AE3E8EBE3BA06C0EE1748F1DBB64A4099398B92E8BA06C0E10796AAEAB64A402FC37839EDBA06C0F131B864F9B64A40E67731E0F1BA06C05045191E08B74A40DF1D4A6667B906C00532A34A08B74A40D51432DCDCB706C038C5247708B74A4050E29537D8B706C026CDC2BDF9B64A40ABA49FC062B906C04CAC4191F9B64A407862C01A5EB906C0D50F1FD7EAB64A40C3F2C492D3B706C039BE9F03EBB64A4062143FEECEB706C0A1E9504ADCB64A401731727744B606C01127C576DCB64A4060C4BFD33FB606C0577CA1BCCDB64A40E006F95DB5B406C0AC1B0BE9CDB64A40CB2C2AE82AB306C0328F6A15CEB64A403BCA2560A0B106C09FE1C141CEB64A4087BC46EA15B006C008FD0C6ECEB64A4023985F748BAE06C0A3EC4D9ACEB64A4036574AFE00AD06C060917FC6CEB64A401B69D38776AB06C072F99AF2CEB64A40B46B5411ECA906C0C435AC1ECFB64A400A665676E7A906C0A9AA4565C0B64A40D7E2B4F05CA806C0B6124E91C0B64A40B0B1337BD2A606C029814ABDC0B64A40B076AA0548A506C0E9C33CE9C0B64A40EE9241A0BDA306C0B50E2315C1B64A40B37F520833A206C078CB0441C1B64A40C5FB6B722EA206C0B828EE86B2B64A40109FD8FDA3A006C00272C1B2B2B64A40E63F3D89199F06C0A88F8ADEB2B64A40C635C2248F9D06C00FB7470AB3B64A40E72CC68F049C06C0EB110036B3B64A40A95755FEFF9B06C0D338957CA4B64A407B7DEC6CFB9B06C0F44A2AC395B64A4024E654FA709A06C0E1F9D3EE95B64A40F90ECC696C9A06C01BCCBA3487B64A404C683AF8E19806C0DBD9596087B64A40F68C7374579706C0DEBDF08B87B64A407180E0025C9706C0B8D60A4696B64A400DFE3090D19506C04602967196B64A409386791D479406C03E02179D96B64A40796A2891429406C07CFEFBE287B64A4038F6D102CD9506C0F1737BB787B64A40FB93B075C89506C04E860EFE78B64A4071E65AE8C39506C0BE33E0436AB64A401E2ECD78399406C050D95F6F6AB64A401C823709AF9206C01253D59A6AB64A40F608467EAA9206C07EC179E15BB64A40E4C5CDEC349406C0FEB204B65BB64A403B8F4D5BBF9506C0D878858A5BB64A404F63C5C9499706C0F212FC5E5BB64A406A56624AD49806C00D7F66335BB64A40EA978BD9D89806C02963C0EC69B64A40F53EFD68DD9806C02ED7EDA678B64A406A0881D9679A06C0073F4F7B78B64A40356A0149639A06C0F33922C169B64A40CF39CAB85E9A06C051C1C8075BB64A40773659285A9A06C084E49A4D4CB64A40B322AB95E49B06C09D66F3214CB64A40B3FD6F04E09B06C04CE386683DB64A40E7FD2B98559A06C0AAF52D943DB64A402003E02BCB9806C072DCCABF3DB64A40414FFFBACF9806C0B83638794CB64A40D164703B459706C0235FCDA44CB64A40198D06CEBA9506C09D5956D04CB64A4082260341B69506C07128E8163EB64A40B0B307B4B19506C0B5E2795D2FB64A401EB4551F3C9706C006BFF1312FB64A4034901E91379706C0831AD67720B64A40D288830DC29806C07934424C20B64A40FE227C7EBD9806C0699CD49211B64A4041F340EFB89806C029EDA5D802B64A4074EDF7742E9706C04DFC380403B64A40D81D2503339706C0F91668BE11B64A40CDF9F299A89506C0DF63EFE911B64A40EFE0B8301E9406C04A856C1512B64A409C96A7A4199406C0C6933C5B03B64A40B67D733C8F9206C0671EAF8603B64A407594B9B18A9206C0C9FC52CDF4B54A40C01DC626869206C0C8762213E6B54A40D71F169C819206C0F4DEB259D7B54A40670574117D9206C0997F56A0C8B54A408F5E9886789206C0EABB25E6B9B54A401D2F00FC739206C058E6B52CABB54A402CE6EF89E99006C0D1881D58ABB54A40A7023800E59006C0CA7DFF9D9CB54A4054C67CAF5A8F06C01FFC58C99CB54A40B0221027568F06C0F926E80F8EB54A40C7CE0BB7CB8D06C0DD9B3A3B8EB54A409299792FC78D06C0294408817FB54A406CB8A2D03C8C06C0625C4EAC7FB54A40EC8A674A388C06C0E9D4EFF270B54A40AC562EC4338C06C0C8EB7D3962B54A402195E920BE8D06C0BFA9380E62B54A4078F39F99B98D06C09846085453B54A405F6FAC12B58D06C0FEAA999A44B54A407C4C647D3F8F06C01BDB486F44B54A40B7FB30F53A8F06C0CB9A2CB535B54A4037F97F3EC59006C0EB4ED58935B54A40EB5D15A84F9206C00F49705E35B54A4011EBFA1D4B9206C01CF301A526B54A40CDBE4E76D59306C062AB947926B54A40367AEEEAD09306C0BE6365BF17B54A40D100AD93469206C08487D2EA17B54A40595B3C2CBC9006C0A245371618B54A40B7424AA3B79006C000F3DB5C09B54A408515325D2D8F06C058D3328809B54A4039F011E5318F06C0D2498E4118B54A40D93A917DA78D06C049AEDE6C18B54A406DA22F261D8C06C0F71F239818B54A402E1734AC218C06C0D31A535227B54A4095DBC753978A06C096E98D7D27B54A40BBAE8B0B0D8906C08333BDA827B54A406F01CD90828706C09FD5E7D327B54A40E07C080E7E8706C0F725B81919B54A404A53B187088906C0685F8DEE18B54A4010CDD7CE928A06C0FBF05DC318B54A40C7F8304A8E8A06C0E236020A0AB54A405B1251C5898A06C0C01BD24FFBB44A408BE95580FF8806C006D3017BFBB44A407FEFCEFCFA8806C0B4CD92C1ECB44A401D746786708706C0D301BEECECB44A408E3504046C8706C0C95C6233DEB44A40E12FFDB0E18506C064C57F5EDEB44A40F7B0762FDD8506C0DFE34FA4CFB44A4073016881678706C0B6563279CFB44A40BEF80EFF628706C00D42C3BFC0B44A40272A3572ED8806C086A09794C0B44A40E23699EEE88806C076A07ADAB1B44A40EC3C282E738A06C000334AAFB1B44A40768CEF7DFD8B06C0F9230F84B1B44A40551BD1CD878D06C07DACCB58B1B44A40FFBC3547838D06C0A3405C9FA2B44A4024D223A60D8F06C08AFA0C74A2B44A4002CF421E098F06C0D59CDCB993B44A40BF0E67C07E8D06C024BF2BE593B44A4006A5E1397A8D06C0747ACF2B85B44A404A4F5EB3758D06C0CFD55F7276B44A40DDB7C567EB8B06C04EBEA29D76B44A40465721E2E68B06C049E071E367B44A40465DC3975C8A06C0284DAD0E68B44A40C2827713588A06C099763D5559B44A40253BC05CE28B06C008F2012A59B44A40685A34A66C8D06C0F350BFFE58B44A404AC7AD1F688D06C05339A3444AB44A4009FD4AD7DD8B06C0F6AAE56F4AB44A40F4DE8E52D98B06C07F157EB63BB44A409ADA700B4F8A06C0E1CAB9E13BB44A40B1A28CD4C48806C00838EB0C3CB44A400825286B3A8706C086FE17383CB44A4064D97AE9358706C0D9B8EF7D2DB44A408B9375A3AB8506C02FAB0EA92DB44A40AFC52623A78506C092BEBAEF1EB44A4090931668318706C005B19BC41EB44A40AA73B4E62C8706C09E4A340B10B44A40501DDAA2A28506C07073533610B44A40DE805A229E8506C086142B7C01B44A4070A18DDF138406C0982B40A701B44A40BBCBE3AE898206C00E1A49D201B44A40E978B549FF8006C050954DFD01B44A40687ED006757F06C0E424442802B44A40B77EE3C3EA7D06C06487305302B44A40EB1C1849E67D06C01CEFDC99F3B34A40FA4B12F75B7C06C09001C1C4F3B34A40CCE0237D577C06C00324990AE5B34A4054207803537C06C028373251D6B34A40967FBBC3C87A06C0D0910A7CD6B34A40A7CF513CCD7A06C01F637135E5B34A4064BF77FB427906C054753F60E5B34A40F4EA90B8B87706C0A592038BE5B34A4013AB80672E7606C0C10ABFB5E5B34A4081B92AF2297606C04B8C58FCD6B34A405C28A87C257606C018474442C8B34A40D211E13D9B7406C07109F46CC8B34A40B37EB0C9967406C0AB838DB3B9B34A40FC804D55927406C02DEA65F9AAB34A406B59A918087306C023B70B24ABB34A40659F69A5037306C0E974F7699CB34A40CE576632FF7206C058D690B08DB34A40B0046BBFFA7206C04B262AF77EB34A4086543D4CF67206C07862023D70B34A404FBF57D9F17206C071DCAE8361B34A403AD290107C7406C0B884085961B34A4063EEC147067606C08700582E61B34A40F5E1108F907706C06F8F9B0361B34A4029C436C81A7906C0A179D6D860B34A40A539C350167906C01024AE1E52B34A4089F7C686A07A06C028FEDEF351B34A40A4EF4FFFA47A06C0446F07AE60B34A40B61C61362F7C06C061382E8360B34A4004B7C2BC2A7C06C0BAAB05C951B34A409739DC02B57D06C0DA6A209E51B34A4003116B88B07D06C079B3B8E442B34A405A25F60DAC7D06C0EAC1A52A34B34A4043D503CA217C06C08E038B5534B34A403FCC00511D7C06C041D0279C25B34A404BA305D8187C06C09A89C4E216B34A4047FAD719A37D06C02CADDFB716B34A40FAD77C4B2D7F06C09E67F28C16B34A402CCA34D0287F06C0E7BDE1D207B34A40A67C2955247F06C0ECB57E19F9B24A40498EA684AE8006C034AB87EEF8B24A4081705808AA8006C098C06334EAB24A4038E2528CA58006C0C011147BDBB24A409FB0F55E1B7F06C026B70AA6DBB24A406453C7E3167F06C05173E6EBCCB24A4000901410A18006C08C00F0C0CCB24A40F34EA95E2B8206C0CBA4EB95CCB24A40A5ADF7DB2F8206C040830F50DBB24A40CDFA1AF7B98306C02F840625DBB24A40F6624075BE8306C09ACD55DEE9B24A40F13A0D59348206C05AFF5E09EAB24A4012696BD6388206C046B782C3F8B24A4057A796533D8206C0D359E57C07B34A40BFC2FED0418206C02A9EF53616B34A40F7A461F0CB8306C02FD4EB0B16B34A40FFE5E621568506C004E4D5E015B34A407EE15EA2518506C03705C62607B34A40E13BCCD2DB8606C0691DA6FB06B34A40B16C8125668806C0C54878D006B34A405D60B945F08906C054D045A506B34A4084843EC3EB8906C0E02BE4EBF7B24A40DE7116A4618806C077711617F8B24A40115778225D8806C0D884F35CE9B24A40A57C9040E78906C02972C131E9B24A40756B2BBEE28906C028F47278DAB24A40CC2123A1588806C0EFD3A4A3DAB24A404DE5941F548806C0B8C081E9CBB24A40AB458D3BDE8906C0E81350BECBB24A40E9E5A467688B06C05F981293CBB24A404EA153EB6C8B06C0A750354DDAB24A407ED69918F78C06C0DE20F021DAB24A4012C6D793F28C06C01663CD67CBB24A40E4F5580FEE8C06C04B956BAEBCB24A40C05A39E4638B06C012D0B0D9BCB24A402497A0605F8B06C0D240A11FAEB24A405BE2AC8AE98C06C08B005CF4ADB24A40AA6BD6C4738E06C05CCE0AC9ADB24A40CC5DADDEFD8F06C063FDB29DADB24A40E5CFC618889106C04F734D72ADB24A40BEEDB242129306C07584DF46ADB24A4080FB966C9C9406C0216A671BADB24A406FA8A3F6A09406C0B51977D5BBB24A40D4F392212B9606C010D9F4A9BBB24A40116C85AC2F9606C0F7C65663CAB24A404FEEA9EAB99706C0EF5DC837CAB24A40D324A45EB59706C0DE6A667EBBB24A40304683893F9906C09CD2CF52BBB24A40A04F5AB4C99A06C0C30E2F27BBB24A4002A28642CE9A06C01C0C91E0C9B24A40628AB38E589C06C0918DE2B4C9B24A409C4868AAE29D06C045412F89C9B24A40C71EFF3AE79D06C0C7385243D8B24A40EE6DE467719F06C0BBFB9217D8B24A40829DC194FBA006C01893C9EBD7B24A40EC4E452700A106C0843318A5E6B24A400B307D778AA206C00CD34079E6B24A4081605E0B8FA206C063B56333F5B24A40B30F13BA04A106C0E8103B5FF5B24A403401AD4C09A106C05CDA9C1804B34A40A6E7951C7F9F06C02634664404B34A4059AE76ECF49D06C03062257004B34A40C9FE277DF99D06C0B1C4342A13B34A407393AB0DFE9D06C03D6096E321B34A403845379E029E06C0C0E9F79C30B34A40A67990D18C9F06C0ABCA387130B34A4016BF9263919F06C042094A2B3FB34A4050ECF5971BA106C0A4AE80FF3EB34A40278EE10417A106C0B87F6F4530B34A40B7392F7212A106C041EC0D8C21B34A402A0685DF0DA106C0C146ACD212B34A40A72CF73298A206C014F5D4A612B34A408CB50B9F93A206C0BB83C5EC03B34A40D803EDBE1DA406C0A59DE9C003B34A409F6E2C2A19A406C068CA8707F5B24A400ED21759A3A506C0F7E79FDBF4B24A40CFB2EBEEA7A506C0FCBF019503B34A40483AE21E32A706C085B60F6903B34A4014B407B636A706C053361F2312B34A4010FC2EF7C0A806C06C3821F711B34A40CC8828284BAA06C0AFDB1ACB11B34A4042AF46C14FAA06C0EF9D7C8420B34A40EB5D4BF3D9AB06C00F1A6C5820B34A406D01858DDEAB06C0F3CECD112FB34A40A20E1628E3AB06C00A7ADECB3DB34A40E45E375C6DAD06C0D2B8C39F3DB34A40C0D194C068AD06C0C623B3E52EB34A40554DDCF3F2AE06C0BE468EB92EB34A40BCBE1D277DB006C00F3F5F8D2EB34A40EB7CE8C481B006C0931E6F473DB34A404E02600B0CB206C0F987331B3DB34A4045FAA43F96B306C018D1EFEE3CB34A408ACBE17320B506C07FF0A1C23CB34A407946541525B506C075180C7C4BB34A40062A994AAFB606C009B4B34F4BB34A40269FFB8F39B806C032544F234BB34A40B82B30C5C3B906C0C99BE2F64AB34A401D8A5CFA4DBB06C08BB96BCA4AB34A402CE6D051D8BC06C063CDE69D4AB34A40D16FC27462BE06C073A45D714AB34A40B0EFDAABECBF06C0F409C8444AB34A406382E6E076C106C01F8028184AB34A404B51353601C306C066237BEB49B34A40C16F7FE105C306C0990DA3A558B34A401D16650790C406C0E6A9F07858B34A403646683D1AC606C0DF47324C58B34A40EB386373A4C706C003BC691F58B34A407DE9A221A9C706C05733BCD866B34A4068562ED0ADC706C0A9E5E29275B34A40316D671838C906C0ADA40D6675B34A403F8F4C40C2CA06C046E6313975B34A404F2175884CCC06C0A450480C75B34A40FE946FC0D6CD06C0D46756DF74B34A40157D66FA60CF06C0231A5AB274B34A40508289465CCF06C0092D35F865B34A40447A397DE6D006C06F7F39CB65B34A40FA982432EBD006C0CA1A5E8574B34A40AE46DAE6EFD006C0129FC13E83B34A40E373BD2F7AD206C0C0C5BA1183B34A40D77E726804D406C02B9BABE482B34A40F5524D1F09D406C00A150E9E91B34A405589085993D506C07946F47091B34A4085BA311198D506C08FE5032BA0B34A40F7842BC99CD506C09CBA65E4AEB34A404E6E6B81A1D506C0AE7C889EBDB34A40DD6CAD39A6D506C0B5DC9758CCB34A40CE03C0F1AAD506C0C272F911DBB34A4038BB18AAAFD506C0C5F51BCCE9B34A4004AB3562B4D506C0C7146A85F8B34A4059419FC53ED706C091D23E58F8B34A400325177F43D706C0A7B0601207B44A403764593848D706C0C677C1CB15B44A4077B89DF14CD706C0E9DC0E8524B44A4073702EAB51D706C0FE7B303F33B44A4062704DDEDBD806C0CA27FF1133B44A4044588F2366DA06C0FC94C1E432B44A4081F4C868F0DB06C093D879B732B44A40BF884F25F5DB06C0DDEFD87041B44A402F07E18D7FDD06C0779C824341B44A40831CF2C309DF06C0AEEC271641B44A40D3724E0505DF06C076CBC95C32B44A40A3E7744600DF06C07293AAA223B44A40BD05878A8AE006C0BFD4447523B44A40E6D090CE14E206C08CECD44723B44A404F9EB8229FE306C0A9FD581A23B44A405D678B5629E506C0609FD6EC22B44A403685A2AAB3E606C0805C46BF22B44A4023F28AEE3DE806C097CDAD9122B44A40E2026B32C8E906C01F150B6422B44A40568AAAF8CCE906C04CEE261E31B44A40A3E9BBB342E806C02F22CA4B31B44A40ABECC46EB8E606C0682C637931B44A40B1339F192EE506C097EAF3A631B44A4097E5BDE4A3E306C021C476D431B44A40CB7C878F19E206C0462EF30132B44A402A2F48501EE206C0335950BB40B44A404631491123E206C081085B754FB44A40AB081AD227E206C08A6BB72E5EB44A40A853D5899DE006C0CF31295C5EB44A40AA9DDD49A2E006C02DF246166DB44A40D75D810018DF06C0C3FEAE436DB44A40FA9444BF1CDF06C008190CFD7BB44A4094E7097E21DF06C089D155B68AB44A40A6A8AD4297DD06C038B9B2E38AB44A405B73F78492DD06C06790682A7CB44A40C659291808DC06C038ABC0577CB44A4008F8A4CD7DDA06C06CA90A857CB44A40CBC43C8982DA06C0C3B2553E8BB44A40E61E214587DA06C028F674F899B44A40E2BCCF008CDA06C0F922D3B1A8B44A40697B15B301D906C0B14714DFA8B44A401303F56D06D906C0CD842099B7B44A40220DA5280BD906C051F87E52C6B44A4027BC7D7895DA06C03FF33C25C6B44A40A580BEBC90DA06C0E1EFDE6BB7B44A4042AE7F0B1BDC06C0B030933EB7B44A407EAE814E16DC06C00BD48784A8B44A40669E7DBEA0DD06C048682E57A8B44A401C2EF8FB2ADF06C006A0D029A8B44A40C9249149B5E006C0F5D166FCA7B44A4035C421973FE206C0ACD9F2CEA7B44A403BC5D0F4C9E306C0EFD972A1A7B44A40A6F5293254E506C0786AEC73A7B44A40400D116F4FE506C0305091BA98B44A409B1DA0CBD9E606C0C96BFD8C98B44A40CB1F001864E806C0CC3A615F98B44A40FBA992525FE806C047EB45A589B44A40CC5B728D5AE806C08CD5FEEB7AB44A407DBA3043D0E606C05B259A197BB44A407121C0E845E506C0B0282D477BB44A408E4BC02541E506C010D0D18D6CB44A4099668A623CE506C01461B5D35DB44A40678EDCBAC6E606C0DF3E23A65DB44A406340DEF6C1E606C0472DC8EC4EB44A402863F23D4CE806C03D2F2EBF4EB44A40D1D4FF0251E806C03ED088785DB44A4017BB1A4BDBE906C09F37E44A5DB44A40623F2D9365EB06C00175351D5DB44A40FCB062EDEFEC06C0DD6C7AEF5CB44A40286B64357AEE06C0D155B7C15CB44A4073BD5D7D04F006C0D514EA935CB44A40DDA69BE58EF106C01CE80E665CB44A404F10751D19F306C0FF5740385CB44A403D496F65A3F406C020C1670A5CB44A40C848E6979EF406C08B0810514DB44A40DED2C7DE28F606C054832D234DB44A403951041024F606C0230D28693EB44A4059F81E78AEF706C08098373B3EB44A403E1CB9AD38F906C0C8D9420D3EB44A4028B116DD33F906C02F7CEB532FB44A4016A23D0C2FF906C08C09D39920B44A402794C3D8A4F706C0DF4FC7C720B44A40206B4809A0F706C007DC820E12B44A4086425EA415F606C0209C723C12B44A407264F5D510F606C0A38B1A8303B44A40A0FB55070CF606C01C6601C9F4B34A4064D7D4C681F406C03D83E2F6F4B34A40183693F97CF406C08F5C9D3DE6B34A4073CB142C78F406C0E9D38383D7B34A405B4BABEDEDF206C0FD4D5AB1D7B34A4063488421E9F206C0427701F8C8B34A4026F44AF45EF106C06A75CF25C9B34A40879003295AF106C06EBFC86BBAB34A400CD966CCCFEF06C07BA89E99BAB34A4031F06E02CBEF06C0731645E0ABB34A401E9BE5C640EE06C0B3974B0DACB34A40158704FE3BEE06C02375F1539DB34A40E662F33437EE06C0D188E9998EB34A406412236C32EE06C0253C8FE07FB34A4040235BA32DEE06C05CDA342771B34A40CDF6416CA3EC06C02C46F05471B34A406E2A52A49EEC06C05652D49A62B34A4003AAAFDC99EC06C001988CE153B34A408F9DD01495EC06C0007A702745B34A408678BE481FEE06C09D80B6F944B34A40E4F0A37CA9EF06C0475EF2CB44B34A408060CCD033F106C00552209E44B34A40B28579F4BDF206C02F5C537044B34A4052F8422848F406C0B83A7F4244B34A4049F7035CD2F506C0D1EEA01444B34A40D78E0CB25CF706C01C79B4E643B34A408BF496D5E6F806C07CB9C3B843B34A40868D3E0971FA06C0D8EDC68A43B34A40F8F70B386CFA06C017A371D134B34A40B8E87405E2F806C06A1E6EFF34B34A401CFFFAE257F706C0C68D5E2D35B34A40591AA71353F706C0826D5E7326B34A40056A94444EF706C019EE0BBA17B34A400352BDF1C3F506C0BC9CF7E717B34A4026892DC139F406C0AE21D51518B34A40564A9590AFF206C05B7CA84318B34A405D1CBCC4AAF206C04F37558A09B34A40B35952A520F106C0598B21B809B34A40FF62715596EF06C0B2BAF1E509B34A40E4F1D2250CEE06C02D00B4130AB34A404A6EFF5C07EE06C090ECB159FBB24A40C0CE6A2E7DEC06C0B9986987FBB24A40D070EA6678EC06C064B414CEECB24A40787D3527EEEA06C0EFE1C3FBECB24A40872CA2F963E906C08CCB6629EDB24A40214010345FE906C09CF04F6FDEB24A40B6C48607D5E706C01241E89CDEB24A40C6D6F4DA4AE606C0A26876CADEB24A400799D41746E606C0F6E63211D0B24A40871C27DCBBE406C0AB52B83ED0B24A40A4DEBBC031E306C061DB2F6CD0B24A405AF283FF2CE306C0721617B2C1B24A4054EBD7C4A2E106C09BBF87DFC1B24A406DC5489A18E006C04B63EC0CC2B24A404A0D7CDB13E006C013AB9353B3B24A40FFB4F6B189DE06C00BB6ED80B3B24A40CCAA0CF484DE06C0A2C4E6C6A4B24A400164B6DBFADC06C0025C34F4A4B24A409CD51E1FF6DC06C0899ADA3A96B24A40C9AA8F62F1DC06C055C4808187B24A407547E11967DB06C0051FC9AE87B24A406CBF2E5E62DB06C096C2ADF478B24A40131BD938D8D906C0A593E72179B24A40D15C857ED3D906C04801A0686AB24A409D83395A49D806C0033ACF956AB24A40CC157B134ED806C0153C174F79B24A40082309CD52D806C00D78330988B24A40CB6579F3DCD906C0D85F03DC87B24A406F16E4ADE1D906C0B0155E9596B24A4052A2618657D806C09A9D8EC296B24A40BAA10071CDD606C067E8B2EF96B24A4055584F29D2D606C0F0680EA9A5B24A4013DD5ADE47D506C055FC2ED6A5B24A40891DADB5BDD306C054794103A6B24A401944176CC2D306C019794BBDB4B24A40DFE84E4238D206C0E93C54EAB4B24A4071F15808AED006C093AF5417B5B24A40C6606FBCB2D006C001C5B1D0C3B24A40FDA4819128CF06C0A996AAFDC3B24A402ABECA442DCF06C07BCFC8B7D2B24A409904B316A3CD06C00F07C2E4D2B24A40238A97EA18CC06C070D9B011D3B24A4049484EAE8ECA06C03F58973ED3B24A408FED48FE89CA06C070707884C4B24A406B69894E85CA06C0F8761ACBB5B24A40EC029B9E80CA06C039B50E11A7B24A40634DECEE7BCA06C0D594B05798B24A40C4FE453F77CA06C0FA60529E89B24A4073AA6A8F72CA06C0DD1733E47AB24A40794EDBDF6DCA06C0120AE82A6CB24A4008C9103069CA06C0099AC8705DB24A4065168C8064CA06C056186AB74EB24A40DD83D8D05FCA06C04ECE5DFD3FB24A40EC26B2BFD5C806C0CD2F342A40B24A40AB8D398E4BC706C09B13045740B24A40E77BDD6CC1C506C0A6F7C78340B24A4035E5ACC0BCC506C089A068CA31B24A40710C8C14B8C506C0DD2F111123B24A40F66555F52DC406C0D50ECA3D23B24A40EE09254A29C406C0444CCB8314B24A40EA5C233C9FC206C0D38677B014B24A4095FF4A929AC206C051B925F705B24A40492CEB5410C106C043A0CC2306B24A40AEE5AAFD14C106C0EE161FDD14B24A40C3FEA9A619C106C0C32B1F9723B24A4098175A878FBF06C05495B9C323B24A40B2BA1D2F94BF06C0977A137D32B24A4085A5A90C0ABE06C0ED8DA4A932B24A40AD535BFE7FBC06C0093029D632B24A40934B05A484BC06C0FBE2898F41B24A40F1392060FABA06C098810ABC41B24A40BEC3F204FFBA06C0D50F197650B24A409F583DE274B906C0B1DE8BA250B24A40B7FBCA8579B906C054DEEC5B5FB24A40D9C9F661EFB706C023BD55885FB24A404641F52D65B606C01943B6B45FB24A406B6F100ADBB406C0CFCD0AE15FB24A400C34C669D6B406C00E21A92751B24A40BD89EF464CB306C04448F35351B24A40C85023E650B306C0942E550D60B24A4007E72DC2C6B106C09365953960B24A4051941024C2B106C0A645338051B24A405CBAFFEE37B006C088226BAC51B24A409CC2CA5133B006C09B005BF242B24A40CB7DD4B42EB006C04E80F83834B24A4016E81194A4AE06C094B6236534B24A4021844AF89FAE06C0E0EEC3AB25B24A40A5D197D815AD06C01B93E5D725B24A40B8F8D63D11AD06C0490EDD1D17B24A408DFA311F87AB06C01783F74917B24A40C9ABC08582AB06C0114B9C9008B24A4082A42468F8A906C02343ACBC08B24A40C35090CFF3A906C0A2A18F02FAB14A40365D4637EFA906C0CA3A4749EBB14A404A47C29EEAA906C027712A8FDCB14A40D7F62AB974AB06C06D741B63DCB14A409E29DA1F70AB06C032ECBFA9CDB14A40988397866BAB06C0E29C77F0BEB14A40CCAE1AED66AB06C0E2EA5A36B0B14A40E0044804F1AC06C0ABC0420AB0B14A4083C6491B7BAE06C0AB1325DEAFB14A404A08EB7F76AE06C00E19CA24A1B14A40D58CFE69ECAC06C01350E750A1B14A40B341E25362AB06C08226FF7CA1B14A40B7AD75BA5DAB06C06E4CE2C292B14A40DAE180CFE7AC06C0BAC9CA9692B14A40DCB54D35E3AC06C0FC7D82DD83B14A409187532159AB06C0E8AC990984B14A400C34F78754AB06C0B3AA7C4F75B14A409AF80575CAA906C0385D897B75B14A40680EFFDCC5A906C0E8F42CC266B14A405D470645C1A906C083C5E30858B14A40207FD5554BAB06C073BAD7DC57B14A40BB8B91BC46AB06C00B7CBA2249B14A40A29547CCD0AC06C04E9CA4F648B14A40C2083732CCAC06C04E9F483D3AB14A40FE86934056AE06C0D26A2E113AB14A40F1FCB64EE0AF06C012390EE539B14A40AFEA4BB2DBAF06C00E82052B2BB14A404C8D1F16D7AF06C0A469AA711CB14A40D24F323461B106C069597F451CB14A4000321440EBB206C0A72B4C191CB14A40FBBDED4B75B406C087D70EED1BB14A40577563EB79B406C01CF667A62AB14A405A184DF803B606C003D31F7A2AB14A40072F1A9908B606C06CE7253439B14A40F41538B792B706C04024D10739B14A400C6DEF5897B706C04DC528C147B14A40FE49F96721B906C09703CB9447B14A4063360E0B26B906C03CE7E24E56B14A40FE37281BB0BA06C038567A2256B14A401BCD864D3ABC06C0E6BF03F655B14A40CA3F92F23EBC06C062ED45AF64B14A40282AAC9743BC06C0B3519B6873B14A405C590B3D48BC06C054A1B12282B14A40DD29353ED2BD06C0F4D434F681B14A40307FBD97CDBD06C0432E1F3C73B14A40EED0F3AB57BF06C0479D960F73B14A40FF01A90453BF06C0CA8A425664B14A40FAEBB915DDC006C099B6B02964B14A40E226656DD8C006C0FC83707055B14A40969E9D9D62C206C0778AD14355B14A40340D619DECC306C0FFE52D1755B14A40B1C6E647F1C306C081C66CD063B14A40C1087BF2F5C306C0D9DDBE8972B14A40D12C8B0480C506C0CBEC0D5D72B14A400B8D7DB084C506C01246201781B14A4004E1549DFAC306C048E0D14381B14A401CDBF347FFC306C09A7E10FD8FB14A40FBABCE4375C206C046C7B62990B14A40E5DAA0ED79C206C0AB46CAE39EB14A404E553E977EC206C0C4AE1C9DADB14A40A878949D08C406C0E3137570ADB14A4049FF8F480DC406C0FABD872ABCB14A4014A650F311C406C0E503C6E3CAB14A40DEE8F30B9CC506C0F01B11B7CAB14A402FBD8E2426C706C03B0D528ACAB14A408DF78ED12AC706C0A937A243D9B14A40B57B5EFBB4C806C01C83D616D9B14A403211BDA9B9C806C041EFE6D0E7B14A40E47653B443CA06C0621614A4E7B14A40ABB42ADFCDCB06C0126A3377E7B14A4009F59A2EC9CB06C0A25024BDD8B14A409320517EC4CB06C00322D603CAB14A4030E615CEBFCB06C0472A9B4ABBB14A40A6869F1DBBCB06C07BCE8B90ACB14A40DF106F6DB6CB06C08F5D3DD79DB14A40EE889E8240CD06C0A8AF57AA9DB14A407D8820D13BCD06C00BD148F08EB14A4086A7EE1F37CD06C02D2A0E3780B14A402E95816E32CD06C04E1FFF7C71B14A40AB7A5ABD2DCD06C05DFFB0C362B14A40C9FC410C29CD06C03216760A54B14A40DC0BF31DB3CE06C0AC5589DD53B14A4087DA866BAECE06C0F0B17A2345B14A40CEAF60B9A9CE06C005F92C6A36B14A404A970B07A5CE06C0F57531B027B14A40577770132FD006C009D5418327B14A401DC937602AD006C0C55EF5C918B14A403D0AAE7BB4D106C0AC69029D18B14A4079A49DC6AFD106C0753F02E309B14A400B83D911ABD106C00350D629FBB04A408DEAF81A35D306C0BA17DBFCFAB04A40C1E60F24BFD406C082B5D5CFFAB04A40F4A8236DBAD406C0D3769616ECB04A40D34A699744D606C01F0683E9EBB04A40A45B32DF3FD606C0E5BC822FDDB04A4093C5E5D3C9D706C03E2A6B02DDB04A40BA0FB9DA53D906C0FB5947D5DCB04A4014631A9558D906C02793478FEBB04A40D930464F5DD906C0D0B98648FAB04A408F6C3B58E7DA06C081AF581BFAB04A40BDA57E13ECDA06C0026F84D408B14A409705CD3F76DC06C0984248A708B14A40254272FC7ADC06C0AE34486117B14A4010FA5CF704DE06C01CA0073417B14A40C9AD80B409DE06C05DE34EED25B14A400DF8CF710EDE06C0FE9445A734B14A4096E1087F98DF06C0F2F8F77934B14A406896A0C093DF06C01CC401C025B14A405A3B63028FDF06C02907BB0617B14A40DA01610D19E106C0384464D916B14A4029177C4D14E106C0C36A641F08B14A40EF1FE48D0FE106C013CC3866F9B04A4068C3108585DF06C0867E8F93F9B04A40003990C680DF06C0777850DAEAB04A40928DC9BEF6DD06C0C9F89C07EBB04A40D2491EC76CDC06C0C874DD34EBB04A40CC6D920A68DC06C0E24BDD7ADCB04A4002E783E1DDDA06C0E45F19A8DCB04A40F8065A26D9DA06C0A169EDEECDB04A408F56A4204FD906C0A35B1B1CCEB04A404733E61AC5D706C0D1233F49CEB04A40CBF7AA61C0D706C01EBE3E8FBFB04A40FDCF216F36D606C0B74056BCBFB04A40140342B731D606C0F1C01603B1B04A40D37A5191A7D406C0B4112A30B1B04A40A18B51DAA2D406C072772976A2B04A40D2FF9D239ED406C00418FDBC93B04A40243A1B2214D306C0B64202EA93B04A40710A7F6C0FD306C04B7CC23085B04A40F688ADB60AD306C04FA3C17676B04A40FDA24CB780D106C09E94BCA376B04A40BF8BDC027CD106C099EE8FEA67B04A40C204314E77D106C031E98E3059B04A40CF86CE40EDCF06C05D78815D59B04A40D7357E8DE8CF06C01B5941A44AB04A402DD6FED9E3CF06C0277453EA3BB04A40D955FADE59CE06C056F53C173CB04A400581D02C55CE06C08C35FC5D2DB04A40C295DA30CBCC06C08DE2DB8A2DB04A406988CE7FC6CC06C0BA689AD11EB04A40028593CEC1CC06C05D25AB1710B04A40DE6CC4D637CB06C0DA297F4410B04A403CDD8B2633CB06C00D35338B01B04A400EB8C8752ECB06C0BB2F1CD1F2AF4A40D371F66FA4C906C0D497E8FDF2AF4A409221A71FA9C906C08112FFB701B04A40B1B9C9CEADC906C04BDE4A7110B04A406F170DE723C806C043C2089E10B04A40B0A401DF99C606C0BD2AC0CA10B04A40780E11E70FC506C0AE986BF710B04A407B1D18EF85C306C006E10C2411B04A40340E3A07FCC106C06C30A25011B04A40F419DFB000C206C04BEF950A20B04A40D080799776C006C0B136273720B04A403D1E529EECBE06C0A2B1AA6320B04A40F502D8F6E7BE06C038ABB5A911B04A40AE52B9FC5DBD06C02E972ED611B04A4094FF1DA362BD06C04141249020B04A40B7A80DBCD8BB06C0EC6491BC20B04A40315B82A04EBA06C0414CFAE820B04A40D99348FC49BA06C0E85A032F12B04A40A61E055845BA06C02C9FB77503B04A40B0B00CB340BA06C07491A6BBF4AF4A40329402BDB6B806C0653701E8F4AF4A4013AE6719B2B806C0F0F3C42EE6AF4A409BB1672428B706C063F8155BE6AF4A408C86A48123B706C053E305A1D7AF4A40F7A98B7D99B506C080164FCDD7AF4A4001A78D890FB406C08D4C8CF9D7AF4A40552D34E90AB406C020403E40C9AF4A406541A64806B406C0D4232F86BAAF4A40FD887F3A90B506C053D7F059BAAF4A4052312A998BB506C0D56EB5A0ABAF4A400F3C63A801B406C09746F4CCABAF4A40E7572208FDB306C0A20DA6139DAF4A401681651873B206C03B44DB3F9DAF4A407D78A028E9B006C06A4E066C9DAF4A4074DF4F8AE4B006C0421CF8B18EAF4A4053D16D895AAF06C0CA8D1BDE8EAF4A404A547AEC55AF06C0F225E22480AF4A400899C9FECBAD06C0C2EDF95080AF4A40130B041142AC06C02CB1077D80AF4A40B8A53223B8AA06C0AE570BA980AF4A40F7F258352EA906C08FD604D580AF4A40A4CE859C29A906C09B14F71A72AF4A40446CBCAF9FA706C05130E64672AF4A4053FBC7B215A606C08AF0CC7272AF4A40E1DC69491AA606C06729DB2C81AF4A40894D775B90A406C0F330B65881AF4A405BC1C6F094A406C0EF43F01190AF4A40685EB3010BA306C01D5FC13D90AF4A40F594BA2281A106C0D687866990AF4A40B42F23B685A106C0CA4B95239FAF4A40DA789CA3FB9F06C08621564F9FAF4A4021B0B83500A006C0400CA408AEAF4A4042545B44769E06C068265734AEAF4A40ED3761D57A9E06C001EC91EDBCAF4A40DB09E3E2F09C06C093193B19BDAF4A40705D1A73F59C06C0C5544AD3CBAF4A40F9599E8F6B9B06C069CCE7FECBAF4A408DF6B07BE19906C06777802ACCAF4A4095730188579806C023680B56CCAF4A403B1D14FB529806C0A57BFB9BBDAF4A40C7097508C99606C06E097CC7BDAF4A40925FA6033F9506C0E76FF4F2BDAF4A40820D34793A9506C0E147B839AFAF4A4042279D87B09306C0A44A2465AFAF4A4030A645FEAB9306C05987D4ABA0AF4A40C223BF0D229206C0702736D7A0AF4A4076FB4C851D9206C0AA14251D92AF4A401AEBD695939006C031527C4892AF4A40F4D7C60E8F9006C0173F3F8F83AF4A4085543E10058F06C0EEDF8DBA83AF4A403ACC0D8A008F06C096307C0075AF4A40EC5ADBAC768D06C053E3BC2B75AF4A409BC70628728D06C0D5E66B7266AF4A40330C05A36D8D06C0BA226DB857AF4A403670067EF78E06C078E52C8D57AF4A4031104579819006C00BF5DE6157AF4A408CB94FF27C9006C02B478EA848AF4A40628D626B789006C0D4853DEF39AF4A40D72348E4739006C0D2FC3E352BAF4A40894312CCFD9106C02C5BE9092BAF4A40BAE91C44F99106C0BCAD98501CAF4A40D358C62A839306C07F1F39251CAF4A40983785A17E9306C05798276B0DAF4A40DA57F4BBF49106C0B2EB86960DAF4A40604A5BD66A9006C0B317DCC10DAF4A407AB7944F669006C064559E08FFAE4A40C08DE95ADC8E06C018E5EA33FFAE4A4097167B86528D06C0E7C1295FFFAE4A40B89ABF91C88B06C02D02628AFFAE4A40CEA83C15CD8B06C0AF74A0430EAF4A40947F272F438A06C0BA92CC6E0EAF4A40F855C1AC3E8A06C08B738DB5FFAE4A406E2394C7B48806C07662AEE0FFAE4A408EF63D45B08806C01E548F26F1AE4A408D932CC2AB8806C0A51B246DE2AE4A405BFF18A5358A06C0C8050242E2AE4A40DCEBE087BF8B06C0DF8BD516E2AE4A407870777A498D06C0868F9CEBE1AE4A409161C14CD38E06C02EF35CC0E1AE4A40B81C483F5D9006C06DA00F95E1AE4A40B1C9DFB6589006C06093A1DBD2AE4A401FA02F98E29106C0E47D4BB0D2AE4A409A8D77796C9306C0B33DEB84D2AE4A406090B75AF69406C0BED28059D2AE4A40E497FBCEF19406C005E7639FC3AE4A403F45C8EE679306C099AFCECAC3AE4A4062775664639306C031C75F11B5AE4A40A60CB1D95E9306C01DCC2F57A6AE4A40311F8FFBD49106C065259182A6AE4A4042B23F72D09106C0C5C735C997AE4A40B0C2B6E8CB9106C07B0A060F89AE4A40DC2F715FC79106C0D13F97557AAE4A40107539D6C29106C04FB23B9C6BAE4A40AF38C84CBE9106C015C50BE25CAE4A40A4579AC3B99106C097CA9C284EAE4A406734BCEB2F9006C0AC2BF6534EAE4A4050566D632B9006C047C9D9993FAE4A40F5D93E3AB59106C0760A806E3FAE4A405C7508113F9306C052211C433FAE4A40A292709B439306C0203F39FD4DAE4A4071E33E73CD9406C04989CBD14DAE4A40346D2B5D579606C016A851A64DAE4A40F0E3E934E19706C00C9DCF7A4DAE4A4031DC5BA7DC9706C06D66B1C03EAE4A40C904AAD0529606C0FACE33EC3EAE4A40512F66444E9606C09F9BC33230AE4A40DBEE925CC49406C011383E5E30AE4A40B6CEDD863A9306C028A9AC8930AE4A40018E7FFC359306C05E1E7CCF21AE4A401B1128D1BF9406C09A4F0DA421AE4A409CA00646BB9406C0F7A6B0EA12AE4A408624E7BAB69406C04BA1403104AE4A408F03942FB29406C0F2880F77F5AD4A40E82F115E289306C095707FA2F5AD4A40160E0ED4239306C097A80FE9E6AD4A40D1CB7A4A1F9306C0F197EB2ED8AD4A40E160017B959106C0DA0C515AD8AD4A40D4D1B3F2909106C0FEC5D9A0C9AD4A40179B326A8C9106C08865A1E6BAAD4A40B57FFAE1879106C0B13E3D2DACAD4A406734C459839106C044B4C5739DAD4A40BCED23250D9306C04A4163489DAD4A406489B39B089306C0AD5D2B8E8EAD4A40724F8C12049306C0BDB3C7D47FAD4A409D712B89FF9206C00CA38F1A71AD4A409A237051899406C05B4E25EF70AD4A409C7CD22B139606C0ADD5AEC370AD4A40499F07F49C9706C03F3A309870AD4A40C6D47B80A19706C0330966527FAD4A408F9BAF492B9906C0E689DC267FAD4A4036341E33B59A06C0205545FB7EAD4A40D71121EC3E9C06C04458A9CF7EAD4A4052AB6E7B439C06C0827E08898DAD4A409D699145CD9D06C08DD45F5D8DAD4A405B56AC0F579F06C05C07AD318DAD4A408CFA517E529F06C0A9624F787EAD4A400978A569DCA006C019648F4C7EAD4A40710D892266A206C0CBDBCA207EAD4A4026BEE78E61A206C07E529A666FAD4A409A5CDE56EBA306C0269DCA3A6FAD4A40937E7AC2E6A306C0E5C05B8160AD4A40E9E5628970A506C064A9825560AD4A40E9A96460FAA606C075A29D2960AD4A40B45A3D2784A806C06F44B0FD5FAD4A40CF2D0EEE0DAA06C067C3B8D15FAD4A401C21D7B497AB06C05B1FB7A55FAD4A400833987B21AD06C03E58AB795FAD4A406D539E42ABAE06C0C36F9A4D5FAD4A404591D61B35B006C05BB37E215FAD4A409355E1E2BEB106C0B6D85AF55EAD4A4089FEE3A948B306C0B3D72CC95EAD4A408F8ADE70D2B406C052B0F49C5EAD4A405874DCD0CDB406C07699DDE24FAD4A405EC1F00A44B306C0EE8D150F50AD4A408DF1FC44BAB106C0255C433B50AD4A407806017F30B006C0FE03676750AD4A4058AED7A6A6AE06C09A8D829350AD4A405DA6DFE01CAD06C06B3693BF50AD4A40E9FC241B93AB06C0593C9EEB50AD4A401372625509AA06C0361F9F1751AD4A409C07988F7FA806C02BDF954351AD4A408CBFC5C9F5A606C0107C826F51AD4A40026FCAF36BA506C0FAC1669B51AD4A407E70E82DE2A306C076183FC751AD4A407A99FE6758A206C0EE4B0DF351AD4A4068192EB2CEA006C0AC91CF1E52AD4A403B16EEC9449F06C0654D8D4A52AD4A40B5C0EC03BB9D06C056173D7652AD4A40B999E33D319C06C035BEE2A152AD4A40B63CAFAE2C9C06C099F06FE843AD4A40D6C5C5F9A29A06C0B3EA081444AD4A4027157114199906C07F1C9D3F44AD4A403A435187149906C0EBB6288635AD4A406D683DC38A9706C0FD72AEB135AD4A40A3C321FF009606C01A0C2ADD35AD4A4044D2E073FC9506C0DA58062327AD4A40DD3FDDE8F79506C00945906918AD4A40E667A1146E9406C03D3A029518AD4A40BEEE8252E49206C0E40B68C018AD4A40626558C9DF9206C0505D2F060AAD4A4009107140DB9206C05D9BB74CFBAC4A40AFFD5BB7D69206C0CC0C9292ECAC4A40A72C842ED29206C0B71D1AD9DDAC4A40D799FCA5CD9206C0A63FA61FCFAC4A401690A11DC99206C0B6C18965C0AC4A40041290D9529406C07DCF273AC0AC4A40F60B64504E9406C01431B980B1AC4A409FEE8395C49206C0D7E51AACB1AC4A404EDE9BDA3A9106C0027572D7B1AC4A4073385953369106C07B45421DA3AC4A400AD8320DC09206C0C7F3EAF1A2AC4A401D0A2B85BB9206C0EA3D8F3894AC4A403D57EE3D459406C014042E0D94AC4A402866CE08CF9506C046A4C0E193AC4A40084D707ECA9506C02806912785AC4A4074411536549706C05EBE1BFC84AC4A405B3DB2EDDD9806C027519CD084AC4A40F26B88C5679A06C0F92C0FA584AC4A402D9C4238639A06C0BC36A1EB75AC4A40B1E07A61D99806C03B1D2E1776AC4A40BA41ECAA4F9706C0E04CAD4276AC4A4055AA55F4C59506C01757226E76AC4A40487E922B3C9406C0DC3B8F9976AC4A4053B758A2379406C02E8672DF67AC4A40319CC0ECAD9206C09207D30A68AC4A40BCA2D264A99206C070B6635159AC4A403A9AECDCA49206C0D851F4974AAC4A40BA3D69291B9106C0FE324AC34AAC4A40A0F0DD75918F06C0D1EE95EE4AAC4A404C2AE7EF8C8F06C0414678343CAC4A40B7AB2D6A888F06C0C13F087B2DAC4A4005D340E4838F06C00223D7C01EAC4A40B12E975E7F8F06C07AF5660710AC4A40311EC0D87A8F06C0BDFE484D01AC4A40DA532653768F06C01FAAD893F2AB4A408E925B00009106C0865E8E68F2AB4A400B6ABB79FB9006C0BE331EAFE3AB4A40AECBEDF2F69006C0CE3F00F5D4AB4A40357AFE9D809206C0F949ACC9D4AB4A40D0E75F167C9206C091353C10C6AB4A4033D89D8E779206C0E7A90B56B7AB4A40225FAAE5ED9006C0CA2B5F81B7AB4A40B8F0AE3C648F06C09388A8ACB7AB4A40422A56B75F8F06C075E34BF3A8AB4A40DC25C4315B8F06C045DB1A399AAB4A40C832A1D8E49006C02EE5D10D9AAB4A40874A767F6E9206C019CA7EE299AB4A406E6B4326F89306C0EA8921B799AB4A408224C79DF39306C0510BB2FD8AAB4A40CFC55815EF9306C076C655447CAB4A400702B18CEA9306C08A1E258A6DAB4A40006A6C42749506C08753BC5E6DAB4A400ADAF8B86F9506C071CE4CA55EAB4A401368795BF99606C0D411DC795EAB4A40C91EC9D0F49606C061F7BEBF4FAB4A40FF8332727E9806C0734944944FAB4A40A9A9B0E6799806C0CC04D5DA40AB4A40063842A7039A06C093D44CAF40AB4A4084DE6C378D9B06C0CED8BF8340AB4A40E825AFD7169D06C0BEEF265840AB4A409C69E977A09E06C0E9E1832C40AB4A409BDE5E3A2AA006C095E1D20040AB4A40E17369CAB3A106C0EF531DD53FAB4A4058A18B6A3DA306C059D75BA93FAB4A40A5C3A50AC7A406C0FD35907D3FAB4A400A79D7BA50A606C0FDA3B8513FAB4A40606E99254CA606C0551B8A9730AB4A40FF809F9047A606C0F3811CDE21AB4A4074448B2ED1A706C0A0FE3CB221AB4A405B4B94C4D5A706C00E64AA6B30AB4A40E51787635FA906C00F88C03F30AB4A401A75E3FA63A906C0B3A8EEF93EAB4A4079B70B9268A906C07AB35BB34DAB4A40AFB71433F2AA06C0A44A67874DAB4A407EA315D47BAC06C0FBBC685B4DAB4A4000769A6D80AC06C0C10183155CAB4A403AC4A30F0AAE06C079117AE95BAB4A403FBE0F7505AE06C01CFF5F2F4DAB4A40AE8F27288FAF06C064004B034DAB4A402ECAC28C8AAF06C0EFBEDE493EAB4A408EB929F185AF06C0B967B18F2FAB4A409924D55581AF06C0E5FF44D620AB4A409FC6EAA5F7AD06C0C272590221AB4A403070B30BF3AD06C02A16004912AB4A40CCECF56E69AC06C02C09087512AB4A407B7631D2DFAA06C05EC605A112AB4A4008EC643556A906C0025FF9CC12AB4A401D4F9098CCA706C0FED2E2F812AB4A402A495B02C8A706C05844B43E04AB4A40AA6E6A6CC3A706C0EAA44685F5AA4A40C1894BD6BEA706C0B63C2BCBE6AA4A40E8329C3C35A606C01FF009F7E6AA4A40FA85CAA730A606C026F69B3DD8AA4A40B0D8C4122CA606C040E66C83C9AA4A409E580C6BA2A406C0B1D842AFC9AA4A40C0DC5FD79DA406C036D1E7F5BAAA4A40A4A2CD4014A306C08D9FB121BBAA4A40199B32AE0FA306C0750D4368ACAA4A401F5BA71886A106C054850294ACAA4A4035453393FC9F06C0A50EB6BFACAA4A408DAB55DB729E06C0B40A65EBACAA4A402758B245E99C06C0CF140617ADAA4A40881220B7E49C06C0FBB7D55C9EAA4A405057B44B6E9E06C08ADD34319EAA4A40CBC65CBC699E06C0DAECD8778FAA4A404E251C72F39F06C02E502A4C8FAA4A40DECA8202F89F06C0261186059EAA4A4055DDE78681A106C08CB7D2D99DAA4A40F40E641B0BA306C0746F13AE9DAA4A407736D8AF94A406C0F8024A829DAA4A40C57763541EA606C056A674569DAA4A404285C7E8A7A706C0A4F0962A9DAA4A402E83237D31A906C08E16AFFE9CAA4A40C2EE62E62CA906C0907454458EAA4A403EDEA779B6AA06C016A662198EAA4A4062BAE40C40AC06C055B366ED8DAA4A40A24E1AA0C9AD06C0828860C18DAA4A408BB26D4553AF06C099E94D958DAA4A40900196D8DCB006C0EE2D33698DAA4A40C335B66B66B206C0EE4D0E3D8DAA4A40A54DCEFEEFB306C09949DF108DAA4A40555EFDA179B506C0F150A4E48CAA4A403F37053503B706C0820361B88CAA4A40DCED04C88CB806C0BD91138C8CAA4A407C903E7D16BA06C0121FB85F8CAA4A4083030BFE9FBB06C0836F58338CAA4A40262BF69229BD06C01756EC068CAA4A405B46D525B3BE06C0815276DA8BAA4A408C60EAD83CC006C0E084F2AD8BAA4A40730D9A5BC6C106C0180B6A818BAA4A4083A060EE4FC306C0119AD5548BAA4A407F021F81D9C406C0C40437288BAA4A401B9615D7D4C406C0695B0B6E7CAA4A40E4C7DB785EC606C037FD60417CAA4A408DB35BFAE7C706C0CD23B0147CAA4A406C79119C71C906C0487CF1E77BAA4A4074FE9F2DFBCA06C060852ABB7BAA4A403F2A2AC184CC06C06B2F598E7BAA4A40FC38A8520ECE06C0F5EF7D617BAA4A40581D3DF497CF06C03EB596347BAA4A405178B48521D106C06039A7077BAA4A400F912317ABD206C03B99ADDA7AAA4A40E052CCCA34D406C057E9A5AD7AAA4A40A4FA074ABED506C08B139A807AAA4A409D415EDB47D706C02F0682537AAA4A400F3FAC6CD1D806C08DD45F267AAA4A401BDB33205BDA06C0988F2FF979AA4A40923A52A1E4DB06C0E9EEFACB79AA4A4085E3ACE7DFDB06C0AA0593126BAA4A4097F2D27769DD06C0079752E56AAA4A407AB0F007F3DE06C02B0408B86AAA4A40F61325A87CE006C08D71B18A6AAA4A403232132806E206C0D771545D6AAA4A40D0E936C88FE306C0F495E92F6AAA4A400751335819E506C0E07176026AAA4A40005E27E8A2E606C09429F9D469AA4A40F80E13782CE806C00FBD71A769AA4A40C636191AB6E906C07E12DE7969AA4A409529F4A93FEB06C0245D424C69AA4A407FBAC639C9EC06C092839C1E69AA4A4053D2CEE952EE06C02CC7E8F068AA4A40B7A47169DCEF06C01B8430C368AA4A4020052BF965F106C07C3D6C9568AA4A4006010D89EFF206C077BD9F6768AA4A400AF49552F4F206C0F3DD042177AA4A4044CFCE057EF406C090932AF376AA4A40A04D9E8607F606C0F1024CC576AA4A40A11F90520CF606C008C4717F85AA4A405FF486E495F706C0CA06875185AA4A40714D75761FF906C0FF24922385AA4A40DEF24B4424F906C03935E3DC93AA4A40D7A561E7ADFA06C00D25E2AE93AA4A404BEA96B6B2FA06C0F4490769A2AA4A40E1D8954A3CFC06C0E4CFFD3AA2AA4A4041468CDEC5FD06C03931EA0CA2AA4A40608CACAFCAFD06C016F24DC6B0AA4A40103CAB4454FF06C056073098B0AA4A404517D91659FF06C020648051BFAA4A400284DFACE20007C0EA2C5823BFAA4A4045156A80E70007C0ABA77CDDCDAA4A40949453E95DFF06C01406A50BCEAA4A40555E97BB62FF06C0EF9208C5DCAA4A4026556823D9FD06C0C4F326F3DCAA4A401569DDF4DDFD06C0D54938ADEBAA4A4090CA955B54FC06C018AD4CDBEBAA4A403CAF45C2CAFA06C079EB5609ECAA4A4008BFCD1841F906C046E75837ECAA4A402EAF6C7FB7F706C09DDB4E65ECAA4A409530714CBCF706C0CF05B31EFBAA4A40774CE2E645F906C07EEABCF0FAAA4A40C9536A91CFFA06C0A9C7BAC2FAAA4A40F97ACA2B59FC06C03162B094FAAA4A4050BF46FC5DFC06C05806D54E09AB4A403585AE97E7FD06C0E854C02009AB4A4000CC0D3371FF06C0967EA1F208AB4A405E406D0576FF06C05F72F1AB17AB4A40E085DBD77AFF06C02DA0546526AB4A40CD1F5C3AF1FD06C0D5C4739326AB4A405D3AD49C67FC06C080C488C126AB4A407B1786CC62FC06C06948250818AB4A405EC60530D9FA06C00EFC2F3618AB4A40C87E5D834FF906C0F36C326418AB4A409F38CCE6C5F706C048D6289218AB4A40D87A324A3CF606C0BB1A15C018AB4A402267337E37F606C0953CC4060AAB4A40149DF7B132F606C05CFC9E4CFBAA4A401DFA9427A9F406C019ED7E7AFBAA4A4062B3C0F2ADF406C03F54A4340AAB4A40AEC3AFBDB2F406C04259F5ED18AB4A400234C2FE28F306C05651D11B19AB4A40DFC413629FF106C021529F4919AB4A40AFC745999AF106C0A1074E900AAB4A400C4AE33424F306C0742580620AAB4A407BC4C76A1FF306C062975AA8FBAA4A401A363BD095F106C0B75A28D6FBAA4A40A36DEB350CF006C07B82EE03FCAA4A4088EAE6FD10F006C0BA5E14BE0AAB4A4050E0A5C515F006C082D8657719AB4A40990E4F398CEE06C0D75A20A519AB4A4010AF0D0091EE06C0C13D855E28AB4A407B5013C795EE06C09C0FAB1837AB4A405A5737080CED06C07369614637AB4A40611B926982EB06C0A2DF097437AB4A40CE7CE4CAF8E906C0FD30A8A137AB4A40C2F90A1A6FE806C004773ECF37AB4A4028069EDC73E806C03CF0A38846AB4A403798719F78E806C05A0BB74255AB4A402B5F15627DE806C0325E1CFC63AB4A401EEAFF2482E806C0ED9F42B672AB4A40582EAEE786E806C04E7F946F81AB4A409A5AA443FDE606C0EB711F9D81AB4A40E429929F73E506C08A3FA0CA81AB4A40CB9D77FBE9E306C010E816F881AB4A402E3407BBEEE306C04E8E7CB190AB4A40FF60DD7AF3E306C09923A36B9FAB4A40F86D773AF8E306C06D56F524AEAB4A40D74B5EFAFCE306C04BC51BDFBCAB4A4005E8DE4173E206C0C4E08A0CBDAB4A40E01A97A9E9E006C0AE1EEC39BDAB4A40600807F15FDF06C0D9EE4667BDAB4A4081998E48D6DD06C01ABE9594BDAB4A4021D80DA04CDC06C01668DAC1BDAB4A4054E172E547DC06C0DC0EB307AFAB4A40AA65242B43DC06C0ABF15F4EA0AB4A40D8DF86D1CCDD06C040A51B21A0AB4A40105FED15C8DD06C06154F46691AB4A40A3359A5AC3DD06C090F28DAD82AB4A407FFC55B639DC06C069E1D1DA82AB4A4004402922B0DA06C037D1090883AB4A405ED5905B26D906C0CB643D3583AB4A4020B133B79CD706C010E4626283AB4A404B42CE1213D606C02D3E7E8F83AB4A4034E3D5C817D606C08889E54892AB4A40C08C237F1CD606C0E2C30D03A1AB4A403C3DA725A6D706C07A0CF2D5A0AB4A40FE5AC8DCAAD706C0CDB5458FAFAB4A406DC03594AFD706C0299B6D49BEAB4A40B26DCF3C39D906C04D61471CBEAB4A40CACB16F53DD906C09E12AED5CCAB4A40D751FBC0C7DA06C04E9879A8CCAB4A40027C735A51DC06C09BC1407BCCAB4A40FC590304DBDD06C06BEBFB4DCCAB4A40908DB8BFDFDD06C02DD10F08DBAB4A40B0444F6A69DF06C0A8ACC0DADAAB4A4084B5FD24F3E006C0018765ADDAAB4A40BD1F2A67EEE006C00CF351F3CBAB4A407EFE800078E206C06188F0C5CBAB4A40008A0FBA01E406C0FF3F8198CBAB4A4059B975638BE506C061AE096BCBAB4A400D8DD30C15E706C054F7873DCBAB4A40AE15044B10E706C010D72284BCAB4A406FE0FE880BE706C042C6FCC9ADAB4A40359E46C706E706C070F1AA109FAB4A40EFB16E6D90E806C0A7A01FE39EAB4A408F41B2251AEA06C0C51088B59EAB4A40A894C9CBA3EB06C03B75E8879EAB4A400994A7069FEB06C066CBC2CD8FAB4A40695CA7AB28ED06C0093A19A08FAB4A40FF28BDE523ED06C050AEB4E680AB4A403D05E5A9ADEE06C03068FDB880AB4A401A22A53D37F006C0F69A418B80AB4A402190AD053CF006C020C8A5448FAB4A408C12FDCD40F006C02DE4CAFE9DAB4A40F912F773CAF106C035DB02D19DAB4A4084421A3DCFF106C0E86F538AACAB4A4065E38A06D4F106C0A4407844BBAB4A40B06AEFAE5DF306C064C0A816BBAB4A40941F3A7962F306C0FB800CD0C9AB4A406D66C5CFD8F106C02429DCFDC9AB4A407E959A264FF006C01EA0A42BCAAB4A407FF105EF53F006C03298B6E5D8AB4A405D4A41B758F006C01BC81A9FE7AB4A40520A857F5DF006C000E57E58F6AB4A40D3FDE02BE7F106C04811B62AF6AB4A40A6B086D870F306C0FBF7E5FCF5AB4A40D63A68A7FAF406C0ECBA07CFF5AB4A40BF1F1E73FFF406C08F0F198904AC4A40EEE7A33E04F506C0329C7C4213AC4A409DFF700A09F506C0E217A1FC21AC4A40329B16AA92F606C09222BECE21AC4A40D603D4591CF806C08426CFA021AC4A4091F28809A6F906C0B304D67221AC4A4015A955C92FFB06C070DAD04421AC4A40D4BA2D9934FB06C0AFA933FE2FAC4A40B507E249BEFC06C0151626D02FAC4A403AD58DFA47FE06C0AB5C0EA22FAC4A40182131ABD1FF06C07D7DEC732FAC4A40C70728D8CCFF06C043208ABA20AC4A40AD13952843FE06C066D9ABE820AC4A40049EF978B9FC06C0C56CC31621AC4A409191DAA7B4FC06C079AE9F5C12AC4A408A0047F92AFB06C035F6AC8A12AC4A40EBE67F2926FB06C0FA004AD103AC4A40B22303D7AFFC06C03BDF3CA303AC4A40B363FB05ABFC06C0FC472CE9F4AB4A407DC265B234FE06C0A12615BBF4AB4A4049E17D8439FE06C0E397257503AC4A40951DF031C3FF06C0E52A044703AC4A40BBD659DF4C0107C04098D81803AC4A40110BBB8CD60207C0F4DFA2EA02AC4A40E2C8D361DB0207C0EA1605A411AC4A409C643437E00207C0EE3C285E20AC4A40BC78B287560107C07A415E8C20AC4A40BBE9CB5B5B0107C09B78C0452FAC4A4088D52630600107C0BF51D0FF3DAC4A40C94D5104650107C0F06232B94CAC4A40ABC39551DBFF06C005B45EE74CAC4A400EB6D19E51FE06C048DF80154DAC4A40B52605ECC7FC06C0ADE498434DAC4A40BB1730393EFB06C041C4A6714DAC4A4093253276B4F906C04260AC9F4DAC4A406C8259A7AFF906C0129149E63EAC4A401CD583F525F806C0A4FE42143FAC4A40A1ADA5439CF606C0654632423FAC4A407569DFA112F506C04D8715703FAC4A406791ABCD88F306C03381F49D3FAC4A40D606B41BFFF106C01157C5CB3FAC4A405A64056A75F006C090C38EF93FAC4A4091315FA170F006C0F7507D3F31AC4A407433FD51FAF106C0D102B41131AC4A40B44A8788F5F106C0B050505822AC4A408D13DBBEF0F106C084892B9E13AC4A40690C76F5EBF106C066B1C7E404AC4A40299D094862F006C0D9A3901205AC4A40FD2B5E1067F006C0969AF4CB13AC4A409AD3F9D86BF006C05380198622AC4A40B5979339E2EE06C05631D7B322AC4A401E2DC46958ED06C0CE5A90E122AC4A40CEE12CBACEEB06C0939F3B0F23AC4A40F1E5BEF4C9EB06C0D13D165514AC4A40906C2E4640EA06C0B333B78214AC4A4035527185B6E806C0991D50B014AC4A402617D0D62CE706C0CCC7DCDD14AC4A404A83D61428E706C080D9772406AC4A40AA103C679EE506C0FC34FA5106AC4A40094299B914E406C0EC6A727F06AC4A4090EACDFB8AE206C07757E2AC06AC4A40AD009ABA8FE206C0F5C0476615AC4A40DFA1AC7994E206C09D196E2024AC4A40B265893899E206C0115DD3D932AC4A400A7DA6F79DE206C08742E69341AC4A40C9BFAEB927E406C0D4B1756641AC4A40D44C8E6BB1E506C09FD7FC3841AC4A409B7D651D3BE706C0A8D7790B41AC4A40698380DF3FE706C0B379DEC44FAC4A40BDE5A3A144E706C0B808437E5EAC4A4002C8076449E706C0C13955386DAC4A40D6E33B264EE706C0ADA2B9F17BAC4A40FCE42770C4E506C021473D1F7CAC4A40B27B9331C9E506C02CC862D98AAC4A40F2DEC2F2CDE506C014E7B39299AC4A40D90A883A44E406C0CCB72DC099AC4A400812F5FA48E406C0CF3B537AA8AC4A401EF38131BFE206C0CFEBC4A7A8AC4A4048CD478835E106C052BD28D5A8AC4A407EFDC3BEABDF06C06D208602A9AC4A40DE81580522DE06C0A081D72FA9AC4A4099A128491DDE06C0AE59B1759AAC4A408219C49093DC06C0FF6BF8A29AAC4A409ADF77E809DB06C01D7E33D09AAC4A40C462BD0D80D906C091336AFD9AAC4A4059EB3F55F6D706C064D3922A9BAC4A400728BA9C6CD606C03C4DB1579BAC4A40C6CF50F6E2D406C07B8DC3849BAC4A40AC23751B59D306C0F1A6D1B19BAC4A40A56BFC6654D306C0EE9D7EF88CAC4A40FB056DAFCAD106C0B57C7E258DAC4A40CD5BD5F740D006C08F3574528DAC4A40CF631A30B7CE06C00BEC617F8DAC4A4069007C782DCD06C02CE043AC8DAC4A4060B9B72832CD06C0349597659CAC4A40AF5065E1BBCE06C03171B5389CAC4A40BAA62FAA45D006C0B78FC70B9CAC4A408B87D662CFD106C059AED1DE9BAC4A40CC148C16D4D106C0231CF998AAAC4A40B8F839D05DD306C037ECF86BAAAC4A40030425ACE7D406C012AAEA3EAAAC4A4037979D5371D606C03241D811AAAC4A4011A2320DFBD706C09D9EB9E4A9AC4A40BF60BFC684D906C00ED690B7A9AC4A40993C89A20EDB06C0CFF7598AA9AC4A4083B2E44B98DC06C0D8BC1E5DA9AC4A40189BCF069DDC06C06FF88316B8AC4A407DA552C126DE06C05F943CE9B7AC4A403D5CCD7BB0DF06C0440AEBBBB7AC4A40107260463AE106C0357E8D8EB7AC4A403F60B9043FE106C028E19F48C6AC4A40FBF311B0C8E206C0ADBD3B1BC6AC4A40D6774A6FCDE206C0732FA0D4D4AC4A404E07902ED2E206C0EB3F048EE3AC4A40A43616EED6E206C065ED1548F2AC4A40C3E9D4BC60E406C03C5FA31AF2AC4A40C5636A7BEAE506C05A8728EDF1AC4A40238CDE3CEFE506C0D6078CA600AD4A40886499FEF3E506C01A77B0600FAD4A40202E44BF7DE706C05A142B330FAD4A408C9BE67F07E906C0848B9B050FAD4A40AA090EBC02E906C02281774B00AD4A4035477CF8FDE806C079651492F1AC4A408983F73974E706C06E89A3BFF1AC4A40D5C144776FE706C006739205E3AC4A40DDADBA34F9E806C0898103D8E2AC4A4043F93971F4E806C0A332A01ED4AC4A408970C4ADEFE806C04B653C65C5AC4A400AC8387B79EA06C0D68CA137C5AC4A4073E77F3603EC06C0F4A7FE09C5AC4A40B1EDBB70FEEB06C0E864ED4FB6AC4A40E65FEB2A88ED06C038834022B6AC4A406BA2BEF18CED06C0EB9C51DCC4AC4A40247036CD16EF06C0A3AC96AEC4AC4A40D79F4378A0F006C08934D780C4AC4A40FBC051AF9BF006C0926DC6C6B5AC4A40C8CE530512EF06C047BC85F4B5AC4A400BF8B13D0DEF06C0DF6D223BA7AC4A4088E0D97508EF06C0600AFE8098AC4A408768B91D92F006C0760E3F5398AC4A408B781F558DF006C05810EF9989AC4A403DA4210C17F206C0530D256C89AC4A40415ECCD51BF206C098ED742598AC4A40DC46268EA5F306C07235A3F797AC4A40A90ABD682FF506C0F058C3C997AC4A402C42D63434F506C0D129E783A6AC4A400510B90039F506C0A7E5493DB5AC4A404C3E0124AFF306C0B30D2A6BB5AC4A407E8814EFB3F306C06E913A25C4AC4A40AF4989332AF206C0B7BA0C53C4AC4A40B0105CFD2EF206C01A9C6F0CD3AC4A4077760541A5F006C064333A3AD3AC4A402A62D009AAF006C069949CF3E1AC4A40FA47DCD2AEF006C0837BACADF0AC4A40C54BA22425EF06C0D07E6CDBF0AC4A4016646FEC29EF06C038D0CE94FFAC4A40D18A83B42EEF06C06710F24E0EAD4A40B819DB64B8F006C0D6A731210EAD4A402DBF752542F206C0958466F30DAD4A409FA4415B3DF206C06F9A4339FFAC4A40FAB9101BC7F306C027D8700BFFAC4A40ACAE1250C2F306C041040F52F0AC4A40C090E484BDF306C04D68FF97E1AC4A4077BCF7B9B8F306C01A4D9DDED2AC4A402CA2D09842F506C077D9BCB0D2AC4A407CE9DCCC3DF506C08F435AF7C3AC4A40217C3678C7F606C086AE75C9C3AC4A40BF55A83351F806C03112859BC3AC4A407DB411EFDAF906C0AA4F8A6DC3AC4A40EC5493BA64FB06C03184833FC3AC4A4032B8EB75EEFC06C0E0747411C3AC4A40E98975A4E9FC06C06AD46457B4AC4A40DCF5B45E73FE06C0E3C44B29B4AC4A403A9B3B3178FE06C05B3F5BE3C2AC4A40FEFB82EC010007C0A3E337B5C2AC4A408BDFEB18FDFF06C0448F28FBB3AC4A404B451AD3860107C07F33FBCCB3AC4A401525408D100307C096B1C39EB3AC4A40384482599A0407C09EE77F70B3AC4A407052FB82950407C0A9A71EB7A4AC4A405BA8C9B70B0307C0794B62E5A4AC4A40F630B4FE810107C03CA79913A5AC4A40C8339645F8FF06C0E7DCC641A5AC4A40C1B26F8C6EFE06C07BECE96FA5AC4A4069BDF3B969FE06C017FFC6B596AC4A40D1C90972F3FF06C08E15A48796AC4A40F275CB9EEEFF06C03F8A55CE87AC4A40099BC855780107C0B8A028A087AC4A408FC53C81730107C089D905E678AC4A40D9C1F8AC6E0107C04C01A42C6AAC4A40B64984D8690107C01D6194725BAC4A40E2AB478CF30207C010C45D445BAC4A40600227527D0407C02EDF1A165BAC4A409E53D905070607C0E5F5CFE75AAC4A40B633752E020607C03C6A6E2E4CAC4A40D89C0EE18B0707C0578119004CAC4A403F799F93150907C09372BAD14BAC4A40402848569F0A07C013574FA34BAC4A40066ADD30A40A07C0D56FB05C5AAC4A4097836DE42D0C07C092EE3C2E5AAC4A40700AF597B70D07C07D47BFFF59AC4A4038F5EC74BC0D07C059B5CDB968AC4A40284FC14B460F07C094B4418B68AC4A403DE898294B0F07C01134A24477AC4A40E67C0BCDD41007C0EF18121677AC4A40A0D93BACD91007C0D36033D085AC4A405ED8DA62631207C0F7D396A185AC4A4082067A1BED1307C01C13F07285AC4A40689B8EFCF11307C03CB63C2C94AC4A408425C7D47B1507C068558BFD93AC4A40DFF43AB7801507C05202ACB7A2AC4A40513719600A1707C07C06F688A2AC4A404D43957C051707C0608BD5CE93AC4A40605D7B348F1807C0EBB113A093AC4A40866136508A1807C045A4C7E684AC4A40ECBC0307141A07C0F8D6FBB784AC4A4041AB70210F1A07C01B99DBFD75AC4A40A0BB45E7981B07C0B3EC03CF75AC4A40FD4FEB00941B07C05DCFA41567AC4A4054A666A51D1D07C0F805C7E666AC4A4087F3CABD181D07C07F52BA2C58AC4A40EEBE71D6131D07C099405B7349AC4A404E0905999D1E07C034DE6F4449AC4A40FD56A4B0981E07C008EB108B3AAC4A40D482FE61222007C0E2801D5C3AAC4A40936F5C781D2007C0AFF710A22BAC4A40706412C8931E07C0C12F04D12BAC4A4085679F070A1D07C0182EEFFF2BAC4A40D01D6020051D07C05CE28F461DAC4A40671835817B1B07C0E4B16C751DAC4A40E2EFC0C1F11907C0833243A41DAC4A40FB656412681807C072A20DD31DAC4A4063D61D2E631807C0B2ABEC180FAC4A40B3CBC87FD91607C063C4AC470FAC4A40DA04DB9CD41607C0718A4C8E00AC4A40EA96ADFF4A1507C0486200BD00AC4A4050D59E1D461507C05E2EF202F2AB4A400F021F51BC1307C0B9B2A131F2AB4A40EE6B1C32C11307C06B0BB0EB00AC4A4069E3E812C61307C01D9C10A50FAC4A401089D1623C1207C04A57B6D30FAC4A403D9BB5B4B21007C0AEAF510210AC4A403250B518290F07C036BDE03010AC4A40DCC6193B240F07C0D9B87F7701AC4A40E7A7B86B9A0D07C02FAC0AA601AC4A40E0C1FC8E950D07C056B9FBEBF2AB4A4088C3E7E20B0C07C07A53781AF3AB4A401733CA36820A07C0F7C7EA48F3AB4A40175D6511870A07C09D07FA0202AC4A40BED4CFEB8B0A07C0517F5BBC10AC4A40777982C6900A07C0F6E57D761FAC4A40D1030B07070907C0668EE8A41FAC4A406F3FAB577D0707C0442A47D31FAC4A408D6C197F780707C0EE76241911AC4A4014A7CFA6730707C097B2C25F02AC4A40A14455CE6E0707C04E26B3A5F3AB4A40D6941CF6690707C0FB3B51ECE4AB4A404DA9F54AE00507C01619A51AE5AB4A400CD2D573DB0507C088F54261D6AB4A406D69859CD60507C0080A33A7C7AB4A4038AE8B45600707C06579DF78C7AB4A40B3A56E6D5B0707C06DC67DBFB8AB4A40AD231B95560707C03F195B05AAAB4A40D40316BD510707C00DA80C4C9BAB4A40C646E362DB0807C0C669AF1D9BAB4A40B0AA9089D60807C0F8BD8C638CAB4A406503653E600A07C0099B23358CAB4A4034D8C718650A07C05E1F46EF9AAB4A40AA43EDF2690A07C0BB4194A8A9AB4A40AF8AB999F30B07C0E690227AA9AB4A4021AC3D75F80B07C0A8C74434B8AB4A4026298B50FD0B07C0A5FFA5EDC6AB4A40DE316FF9860D07C0D8D829BFC6AB4A409E93111D820D07C008CAC805B8AB4A4004417D407D0D07C0CCBAA64BA9AB4A40092D7C09070F07C036B21C1DA9AB4A40D249262C020F07C08A06CF639AAB4A40D3E2A4BF8B1007C00A3241359AAB4A40D3BB3E65151207C01F13A7069AAB4A40C3F7D30C9F1307C0CD9102D899AB4A40482F5AEDA31307C081C64F91A8AB4A40036F84B42D1507C077F6A062A8AB4A4012DE524BB71607C0DC49EE33A8AB4A408759482EBC1607C06E660FEEB6AB4A408C9E3DD6451807C0127A50BFB6AB4A40E86E0BBA4A1807C0B358B078C5AB4A40067F209E4F1807C0C762BE32D4AB4A40EAAC2C48D91907C054ECF403D4AB4A403BB3202DDE1907C061FC54BDE2AB4A40B65C54E8671B07C08A437F8EE2AB4A40A13C3F83F11C07C0F43BA35FE2AB4A40969D613E7B1E07C0CF37B930E2AB4A405B703D56761E07C0BABD5977D3AB4A404405E86D711E07C08A7B4CBDC4AB4A40909AC116FB1F07C0B6A25A8EC4AB4A40669892BF842107C0B7A55E5FC4AB4A403F0408AA892107C043816B19D3AB4A407A434C948E2107C01F97CAD2E1AB4A40692B997E932107C0BD99298CF0AB4A40288E952C1D2307C0C9A1225DF0AB4A40B0363518222307C0C8132F17FFAB4A407680A303272307C0B9BD8DD00DAC4A401A8DD3C1B02407C0E78B7AA10DAC4A4081B8DA6F3A2607C00E225F720DAC4A40D4464C82352607C09CDC00B9FEAB4A408DB33A2FBF2707C0B07FDB89FEAB4A408C33D91DC42707C0E29239430DAC4A40925F0FEC4D2907C0570006140DAC4A405442DC89D72A07C00815CEE40CAC4A40F5A0C037612C07C059158AB50CAC4A4088EBF1455C2C07C047992CFCFDAB4A404584BDF2E52D07C0B0A6DECCFDAB4A407117ADFFE02D07C0F994D312EFAB4A400915A4CD6A2F07C0379077E3EEAB4A40A29FC6D9652F07C07D521A2AE0AB4A40B2914074EF3007C0906ABAFADFAB4A4006062E69F43007C0C57517B4EEAB4A40BF53CF147E3207C06845AB84EEAB4A403FE267C0073407C0D5EF3455EEAB4A4050BDB8B70C3407C04A373F0FFDAB4A409CC67874963507C07697BCDFFCAB4A4048E6A76C9B3507C03CE418990BAC4A400962380A253707C06ECC8F690BAC4A400734C0032A3707C069CFAC231AAC4A40DA9A99C2B33807C0B67115F419AC4A406E35F7BCB83807C0A62571AD28AC4A40BEDFB56C423A07C0A55BD17D28AC4A404CCD6B1CCC3B07C06D6C274E28AC4A4007692919D13B07C0E24D300837AC4A4093DEE4C95A3D07C082FF7BD836AC4A40D69F7EC75F3D07C0DBDED69145AC4A40D1F4638BE93E07C0B8FD156245AC4A4027BF148AEE3E07C09B8F701B54AC4A40772ADB3C784007C03582A7EB53AC4A407CEFDD3C7D4007C03A7BAFA562AC4A40467DAE3C824007C031AC095F71AC4A401AB188F10B4207C04105362F71AC4A407CDBB1F2104207C03AEA50E97FAC4A40C49991A89A4307C0C0E372B97FAC4A402FA789AA9F4307C0A42CB9728EAC4A4063A59BF3154207C02D6D97A28EAC4A40FADCA43C8C4007C039886BD28EAC4A40B63DD13C914007C05480868C9DAC4A40B35AD6F41A4207C02C2BB25C9DAC4A40EB3DD8F51F4207C020D40B16ACAC4A40EADCE2AEA94307C0521F2DE6ABAC4A404CE536B1AE4307C04C2F34A0BAAC4A40699F58B3B34307C02B778D59C9AC4A401ED4977E3D4507C0D931A229C9AC4A400255CF81424507C0DC27FBE2D7AC4A401290F33DCC4607C0917B07B3D7AC4A4078B57642D14607C0E4D10D6DE6AC4A40F17CC746D64607C0A9606626F5AC4A40F1790105604807C0DE3B68F6F4AC4A40602BAC0A654807C0E78F81B003AD4A4081A8ECC9EE4907C0AE1B798003AD4A409EA46DD0F34907C0E231D13912AD4A4059A3D9A27D4B07C0C536BC0912AD4A402F22AEAA824B07C042C5C1C320AD4A40088FFB6B0C4D07C066B1A49320AD4A400A21402D964E07C02C777D6320AD4A4045F44C23914E07C0503B78A911AD4A402FB91763074D07C0324C9FD911AD4A403C1F785A024D07C08288472003AD4A400E639F51FD4C07C047B02E66F4AC4A4086EA7F93734B07C039484B96F4AC4A404747018C6E4B07C02735F3DCE5AC4A40017B1149F84C07C070C6D6ACE5AC4A4027D41806824E07C09431B07CE5AC4A400101B60F874E07C014F20736F4AC4A40B5C2C3CD105007C09F0DD705F4AC4A40E627BBD8155007C01D93EFBF02AD4A40D75279E31A5007C01E04477911AD4A4058C3BDB3A45107C09EAC094911AD4A40C7A8CFBFA95107C0A1950E0320AD4A40A3E4AECBAE5107C015B765BC2EAD4A4008FF96D7B35107C075C5BC753DAD4A40668FDF9A3D5307C0D9C476453DAD4A40936E1BA8425307C02E4B7BFF4BAD4A40A5786A6CCC5407C096FA2ACF4BAD4A40779EB030565607C07683D09E4BAD4A40646BD83F5B5607C039EF26585AAD4A4095FC2405E55707C00F28C2275AAD4A40EE60A715EA5707C09858D9E168AD4A40A4472FEE735907C05D4068B168AD4A409B1B8BB4FD5A07C05245EF8068AD4A401537ECC6025B07C098AB313A77AD4A40D65E9FD9075B07C0C14C48F485AD4A40FAE210A2915C07C040C0C4C385AD4A400BC399B5965C07C027171A7D94AD4A4037A4117F205E07C0AF2E8C4C94AD4A408613AC93255E07C0A5EFCD05A3AD4A4089AC4B6EAF5F07C06CAD33D5A2AD4A404AB34784B45F07C08E73498FB1AD4A40B259CC4F3E6107C08CD2A65EB1AD4A40ECF89D66436107C0514EFB17C0AD4A406C94B47D486107C01C6BFDD1CEAD4A40E83F11B0BE5F07C08A77A002CFAD4A406B6FE5C5C35F07C05102F5BBDDAD4A402F4C08E7395E07C0551B90ECDDAD4A4096C61FFC3E5E07C0D375A5A6ECAD4A407AD90BDCC85F07C0392B0A76ECAD4A40BFD802F2CD5F07C064C35D2FFBAD4A40DE18FC07D35F07C064FB9DE809AE4A40F5F9DAD95C6107C07123FAB709AE4A407C3535F1616107C059640E7218AE4A402EE019C4EB6207C08233604118AE4A40B299F596756407C0DDDBA71018AE4A403F6433B07A6407C002A4FAC926AE4A407947B6C97F6407C03A0DFB8335AE4A4089F505E3846407C0D5AE4D3D44AE4A4056AA26C90E6607C0509A880C44AE4A4038941C9F986707C0FB5DBBDB43AE4A40C2860975226907C0AFFAE3AA43AE4A40B9BAF14CAC6A07C05030027A43AE4A409F3FC86AB16A07C0EFF6143452AE4A4060DDD3513B6C07C02312270352AE4A40AC567870406C07C0094565BC60AE4A40F7CA6748CA6D07C09D076F8B60AE4A407BAB2A68CF6D07C0D841C0446FAE4A40D2D61F41596F07C0FCAABF136FAE4A407CA53D625E6F07C0A5A0D1CD7DAE4A4088B43988D46D07C0EA69D2FE7DAE4A4025D807A8D96D07C0AD3010B88CAE4A40FCDC28C8DE6D07C0283222729BAE4A40246BFEEB546C07C0103919A39BAE4A40DD83D60A5A6C07C085586A5CAAAE4A4023B30FE8E36D07C0411F732BAAAE4A4065FC3B08E96D07C044AD71E5B8AE4A40B8CD3428EE6D07C0C573C29EC7AE4A40748A8207786F07C070AEC06DC7AE4A406D1C93287D6F07C03C2F1127D6AE4A40C39AE608077107C0131005F6D5AE4A40853B522B0C7107C03F4C16B0E4AE4A404589AB0C967207C036D3FF7EE4AE4A40EFEBE42F9B7207C09A7B3C38F3AE4A4003D97C4D117107C029275369F3AE4A4080B9FE6F167107C0D44E642302AF4A40CE1B48921B7107C05169B4DC10AF4A40F16DD076A57207C0FF429DAB10AF4A4093A97653A07207C09F674DF201AF4A40D9EB07472A7407C0F0552AC101AF4A4085B96D2AB47507C00520FF8F01AF4A40E94CE84FB97507C0F37C4E4910AF4A40B8685534437707C090E0181810AF4A40B935265B487707C0BF9E15D21EAF4A40B2A9A875BE7507C0697A4B031FAF4A40BE092290347407C0D32E77341FAF4A40C2DE6F9AAA7207C0E6BE9A651FAF4A40FCBFDBBDAF7207C00573EA1E2EAF4A40AFAF50E1B47207C093133AD83CAF4A40554D0B05BA7207C0A75437924BAF4A403E47411C307107C087774FC34BAF4A40C5E8B73E357107C0FF2F9F7C5AAF4A40555A9228BF7207C0F3CD864B5AAF4A40E6D2654CC47207C0B534970569AF4A40755F6A474E7407C0946872D468AF4A40A7460D6C537407C0872EAE8D77AF4A408F7DF657DD7507C0BAFE805C77AF4A402FA0D643677707C075A7492B77AF4A402FBFED6A6C7707C03D2959E585AF4A40816BCA91717707C05E96A79E94AF4A407F6BA9B8767707C0FEA2E257A3AF4A4046DCB1A7007907C03566A026A3AF4A401FBFF4CF057907C0C86DAFE0B1AF4A400EC22AD28F7A07C077A260AFB1AF4A4065A9D7A88A7A07C044D651F5A2AF4A401E08D87F857A07C09E44173C94AF4A40D17BBB6D0F7C07C07870C10A94AF4A406023AF430A7C07C043B3735185AF4A406C2A6819057C07C0ADE1649776AF4A40357B24058F7D07C0014F056676AF4A40000C22DA897D07C0A3ECCAAC67AF4A40EC4BC6C4137F07C0E566617B67AF4A40396073980E7F07C00DD852C158AF4A40D1546D6C097F07C0D33605084AAF4A40DB593340047F07C027CE094E3BAF4A407B763F14FF7E07C03A06BC942CAF4A40CE20C10A898007C00B2547632CAF4A40783217F1128207C0A722CA312CAF4A40BF2A64D79C8307C0AFF842002CAF4A4049FD8406A28307C03A2290B93AAF4A40660E291F188207C0078117EB3AAF4A400B06C4378E8007C040B8941C3BAF4A404C110D65938007C017EC8FD649AF4A40991E814D1D8207C0258012A549AF4A406D12EC35A78307C076EC8A7349AF4A4041181F65AC8307C05BEFD72C58AF4A4027EB8F4E368507C027FF45FB57AF4A401DEB4D1E318507C03331F94149AF4A40E38ECD18BB8607C0C3045B1049AF4A408C6348E7B58607C05CA460563AAF4A40DBFA88CE3F8807C048CEBA243AAF4A40A1383B9C3A8807C083436E6B2BAF4A403C95F669358807C063A521B21CAF4A40F020104FBF8907C0BB1172801CAF4A403850881BBA8907C043E177C60DAF4A407BC37D37308807C0EC3F27F80DAF4A40055E4B052B8807C0197BDA3EFFAE4A400CFA46E8B48907C06F512B0DFFAE4A40CF7339CB3E8B07C05C0072DBFEAE4A4084BA89FF438B07C0235BBE940DAF4A409E0082E3CD8C07C08CADFA620DAF4A40068893D7578E07C00ECE2A310DAF4A405B60480E5D8E07C0425F24EB1BAF4A4081563DF3E68F07C0312D4CB91BAF4A4022CACC2AEC8F07C0D6C197722AAF4A4002666562F18F07C03043E32B39AF4A40051C6F497B9107C02A7F00FA38AF4A409D715D82809107C0E26BF9B347AF4A401B5817BB859107C05091446D56AF4A40D3DB1EF48A9107C033A4502765AF4A40343FE42C909107C00E5688E073AF4A40FBCB20181A9307C06D959AAE73AF4A40A5347B15A49407C0485FA07C73AF4A40E034B350A99407C0DEE0AB3682AF4A4067D4AF8BAE9407C04C4EF6EF90AF4A401B10F878389607C0FDD2F3BD90AF4A40060406B53D9607C0DCAA2A779FAF4A40B30E54A3C79707C044D21D459FAF4A40B4C0C5E0CC9707C009AF28FFADAF4A4093A919D0569907C0357911CDADAF4A40E4E75E0E5C9907C0620C5B86BCAF4A406A8ADB0EE69A07C0436B3754BCAF4A40EE3A87CFE09A07C0860DEE9AADAF4A40997EC8BE6A9C07C0C373C268ADAF4A40B4DC2BFF6F9C07C0AD960B22BCAF4A40144A6FEFF99D07C022A6D3EFBBAF4A40C8553231FF9D07C0B0B4DDA9CAAF4A4010047E22899F07C0BB979B77CAAF4A40C21110658E9F07C09A43D130D9AF4A407F45F7A7939F07C0042BDBEAE7AF4A40328688B4099E07C0304E1D1DE8AF4A40008E22F60E9E07C0022666D6F6AF4A4017FD9801859C07C0D0229E08F7AF4A40F09A0B0DFB9A07C00FD5CA3AF7AF4A40F0E4CB4C009B07C0CF85C1F405B04A40B4BF68428A9C07C08E9F94C205B04A4029E40338149E07C09E9F5C9005B04A40C7BB952D9E9F07C02D761A5E05B04A40DFB85870A39F07C06FEA621714B04A40D39418792DA107C0BE2714E513B04A402AA0F5BC32A107C0B44E5C9E22B04A40F8F793B4BCA207C03A8C056C22B04A409CBDC7F9C1A207C0A42BFB2531B04A40742E6CF24BA407C031189AF330B04A40B15D7A3851A407C067C8E1AC3FB04A40E7DA2432DBA507C0EE63767A3FB04A40F6D09079E0A507C04DD97E344EB04A4072F2B9C0E5A507C03FEEB2ED5CB04A4040753808EBA507C0A23DBBA76BB04A4042322B1575A707C0BC2543756BB04A401C3F9DCC6FA707C0D0FE3ABB5CB04A40D9E053C8F9A807C083F7BA885CB04A40280C0C7FF4A807C09A3387CF4DB04A400F488135EFA807C0270F7F153FB04A4022E90F2F79AA07C03630F5E23EB04A40F867C4E473AA07C0F521AE2930B04A40731845ECE9A807C053D8375C30B04A400BD6D3A2E4A807C0C3DA42A221B04A40A5975AAB5AA707C0FE3FC2D421B04A4018DBB4A3D0A507C0868D390722B04A4049E5A95CCBA507C0BADFF14D13B04A407C642D6641A407C0EECA5C8013B04A403AE53A203CA407C05BAE14C704B04A402C00C52AB2A207C0BC5475F904B04A4068E3AEE5ACA207C0A3E47E3FF6AF4A40FE3E41F122A107C0535ED571F6AF4A40B82084AD1DA107C0C68C8CB8E7AF4A40684F8B6918A107C08CA882FED8AF4A4076B5E72513A107C0DDFF4C45CAAF4A40938201E20DA107C093F7428BBBAF4A40830429D297A207C0B18AEC58BBAF4A4086C420179DA207C0CB8FF612CAAF4A4023DED55BA2A207C03C352CCCD8AF4A40671A174E2CA407C09798CB99D8AF4A4070024F40B6A507C08DD26067D8AF4A40D7E976F9B0A507C099332BAEC9AF4A40C00F5CB2ABA507C00A3521F4BAAF4A40FE7B8AB235A707C0F63AAAC1BAAF4A40ADA98CA2BFA807C078282B8FBAAF4A40D2499D59BAA807C0561FE2D5ABAF4A40CBA0844844AA07C0F9E658A3ABAF4A40817D859249AA07C0C0ECA15CBAAF4A40B7F57482D3AB07C0B2870E2ABAAF4A40140ED6CDD8AB07C0AE7818E4C8AF4A409AB5CDBE62AD07C0E2E67AB1C8AF4A406CEDDEBFECAE07C04E18D17EC8AF4A409331C8B276B007C0EFF01E4CC8AF4A4092B4A3A300B207C0A4E26219C8AF4A409CDD07F305B207C0C76598D2D6AF4A405E7AEBE48FB307C0852AD29FD6AF4A40B7D275948AB307C011AB9CE6C7AF4A40D577619514B507C00F35CAB3C7AF4A40C3C520869EB607C061AAEF80C7AF4A40BA75B9D8A3B607C06922253AD6AF4A402DD780CA2DB807C0996A4007D6AF4A402A40811E33B807C0611A4AC1E4AF4A40B2C45011BDB907C063355B8EE4AF4A4049482666C2B907C096CEA347F3AF4A409CEF206A4CBB07C09BA5A814F3AF4A40516350C051BB07C0C0DC9ECE01B04A404F1D30B5DBBC07C0AD9C9B9B01B04A4098FC280CE1BC07C01877E25410B04A40ED2910026BBE07C09701D52110B04A40DD7CA7F9F4BF07C08CF6B1EE0FB04A409178B752FABF07C0EDF4F6A71EB04A40F560715984C107C08D5DC7741EB04A405DA8FE4F0EC307C0BEB48F411EB04A40FF9A79AB13C307C0DE6382FB2CB04A40959B0EA39DC407C07C9840C82CB04A402FF964FFA2C407C09E8985813BB04A4076A601F82CC607C0A99B394E3BB04A4034F7B85532C607C0E2823F084AB04A40FB5E5D4FBCC707C03172E9D449B04A400BF6E1ADC1C707C09C011B8E58B04A407B5EB1B84BC907C025B3B85A58B04A4027229E1851C907C07A85BE1467B04A404DEE5114DBCA07C0B42E54E166B04A40A0EC1275E0CA07C0F2F5989A75B04A409664CE716ACC07C0377C246775B04A405203A3D36FCC07C006EC552084B04A40C62566D1F9CD07C0484FD7EC83B04A40E020A334FFCD07C0C801DDA692B04A40F5ED954589CF07C0B9E1517392B04A402F10A7A98ECF07C02289962CA1B04A40039779A918D107C08BA503F9A0B04A40022CEC0E1ED107C0C44209B3AFB04A40D76BC60FA8D207C0E33B6C7FAFB04A4004F20576ADD207C0FB809D38BEB04A408CDBE77737D407C0C356F604BEB04A40D00C90DF3CD407C061DEFBBECCB04A40F6F3FA4642D407C0DE534078DBB04A406D87195BCCD507C0BCEE8C44DBB04A40EDD30A5F56D707C00F7DD110DBB04A4094B09AC85BD707C0B8A102CAE9B04A400428823261D707C0F9010884F8B04A40D8688C38EBD807C072734250F8B04A4006BC47A3F0D807C056C8860907B14A40EDA859AA7ADA07C00616B7D506B14A4077C36F1680DA07C09413A98F15B14A4027184F8285DA07C06DDCEB4824B14A403344A29D0FDC07C01CD80F1524B14A404A37E30A15DC07C0723C13CF32B14A40087915159FDD07C042AF2F9B32B14A40BECD2283A4DD07C011F65E5441B14A403CD640F1A9DD07C09779A10D50B14A4043A3AF5FAFDD07C05FEDA4C75EB14A40632E4A5225DC07C007BB87FB5EB14A40613563BF2ADC07C0A291B6B46DB14A408870BA9EA0DA07C07C5691E86DB14A4007C2309016D907C0FD8A5F1C6EB14A40D34D7FFB1BD907C0DC1E62D67CB14A40001D1A0BA6DA07C03C2A94A27CB14A4077483C77ABDA07C082EDD55B8BB14A40FF1AAFE3B0DA07C0FCA0D8159AB14A40FF4FDD4FB6DA07C02BF706CFA8B14A4049B7CA7440DC07C002322D9BA8B14A4016C11AE245DC07C0C8046F54B7B14A408D83BB4F4BDC07C0D2C7710EC6B14A40B49917BD50DC07C0812DA0C7D4B14A40CE86CB2A56DC07C046D0A281E3B14A406308CB41E0DD07C03941C24DE3B14A40148752B0E5DD07C065130407F2B14A40BDB1231FEBDD07C0E688F3C000B24A401AEC3B3875DF07C0C24C098D00B24A402A082151FFE007C09740115900B24A40090C31E0F9E007C0EE85219FF1B14A40C8B38A6FF4E007C0FE6DDFE5E2B14A4066F1C0586ADF07C06E85D719E3B14A402FA9EAE864DF07C00363D45FD4B14A407C5A6C795FDF07C09E7DA5A6C5B14A406244A9095ADF07C0ED3AA2ECB6B14A40B206379A54DF07C07FE85F33A8B14A400381D52A4FDF07C0C8D2307A99B14A400F3C3519C5DD07C099CD1CAE99B14A406514A0AABFDD07C05B9A19F48AB14A408DB35B3CBADD07C05157D73A7CB14A406CB9D9CDB4DD07C0CE03D4806DB14A4099A546DC3EDF07C08249E74C6DB14A4005869DEAC8E007C062EAEE186DB14A40887E3F5BCEE007C0FE88F2D27BB14A40314D527A58E207C0896AE19E7BB14A40ED54C2EB5DE207C0891F24588AB14A40A45AB3FBE7E307C07C1E0B248AB14A40881D806EEDE307C09DEA0EDE98B14A408DCD07E1F2E307C0CA583E97A7B14A407A1AA053F8E307C0F5028150B6B14A40FC4BAB6682E507C0844C5E1CB6B14A40AC6AA0DA87E507C0D10D62D6C4B14A401068504E8DE507C01A71918FD3B14A4069EE696317E707C094DD645BD3B14A4061F77DD81CE707C0C2A46815E2B14A40E1F7534D22E707C0C05AABCEF0B14A40C0D97B64ACE807C008EA749AF0B14A4056ACA7DAB1E807C0386A6554FFB14A4014D573C227E707C085B39B88FFB14A401AD05C372DE707C0EC47DE410EB24A401A929C50B7E807C00A26A80D0EB24A40EFF69AC6BCE807C016D1EAC61CB24A40C45906F346EA07C0A841A8921CB24A40BC88536A4CEA07C0DE4B984C2BB24A4043298FE051EA07C099D0CD053AB24A407BD51B5757EA07C01B44C4BF48B24A4054637774E1EB07C08A8E7A8B48B24A4005A4C8EBE6EB07C0A6C89C4457B24A40312B7263ECEB07C0693E93FE65B24A40DB7FDDDAF1EB07C087A3C8B774B24A40AA3164BA67EA07C03CED11EC74B24A401BF0B787DDE807C0A372532075B24A4019BB2B6753E707C00563885475B24A40CD159646C9E507C00C27B38875B24A40E828E3B9CEE507C033EBE74184B24A40462A3A9844E407C0B15E087684B24A40E301F7253FE407C0A9BED3BC75B24A40F444BDB339E407C0CE0D9F0367B24A400FAD1E94AFE207C03C9DB53767B24A4035EDB022AAE207C0F7FFBF7D58B24A40F30E9BB1A4E207C03E9E9EC449B24A40A920E2831AE107C0596BADF849B24A403531911315E107C08ED0B73E3BB24A40CB4977F68ADF07C00804B0723BB24A40D309BE6590DF07C0F2F1A52C4AB24A404BF4BFD495DF07C0DF7FC7E558B24A4037BC19449BDF07C0B346BD9F67B24A4037CD35B3A0DF07C040FAF15876B24A4018B077D42AE107C0558AF82476B24A40F3F7A64430E107C0E8E12CDE84B24A4081D01FB535E107C08CDB0E9893B24A400A9B0AE8BFE207C096C3006493B24A40B2AC5659C5E207C0A21D351DA2B24A40B180F3CACAE207C084662AD7B0B24A40A6D1C3EF54E407C0038C14A3B0B24A40ABFF1C7D4FE407C0031F1FE9A1B24A4098FFC60A4AE407C0BCA0EA2F93B24A4006F7792DD4E507C06A51CAFB92B24A40C17F23505EE707C092D59FC792B24A40D897C372E8E807C0432D6B9392B24A40E86237E8EDE807C0D717A04CA1B24A407C5C8DC463E707C0169CD480A1B24A40002A483969E707C06151CA3AB0B24A400E2EFC5DF3E807C032F19506B0B24A40636FD0947DEA07C0E2FB54D2AFB24A4048F2590B83EA07C0E59B768BBEB24A402AFF04310DEC07C020062E57BEB24A40EB8B71B907EC07C00C420C9EAFB24A40023209DE91ED07C0BF5BB969AFB24A40146226658CED07C06B16C3AFA0B24A40F292AA8816EF07C0A3DF657BA0B24A40286097021CEF07C0CF485C35AFB24A40EEB33E7C21EF07C0A1547EEEBDB24A40AE6FF2B1ABF007C0421315BABDB24A40BB3BFC2CB1F007C0937E0B74CCB24A4002AFC7A7B6F007C040D9402DDBB24A403E43DD22BCF007C00BD623E7E9B24A405964804B46F207C0C7F8B2B2E9B24A40A2C668C74BF207C08B55E86BF8B24A40C9A55A4351F207C06DA11D2507B34A40F83B086EDBF307C0FFDEA2F006B34A4030544EEBE0F307C0BDF085AA15B34A40EF2B5D68E6F307C0A83EBB6324B34A402675BDE5EBF307C0697BB11D33B34A40A79F7F1376F507C046F72CE932B34A402EDAA8917BF507C0B03548A241B34A40A5FE311081F507C0342C2D5C50B34A4099C27C8E86F507C0161151155FB34A4080F5915DFCF307C0F698D5495FB34A405B889D2C72F207C0DAF54F7E5FB34A40E6F7D4A877F207C0BB0F74376EB34A40B7DFD7DA01F407C0F18EF9026EB34A406527D10C8CF507C01DE374CE6DB34A403766E64E16F707C0CAE4E3996DB34A40A9CF93CE1BF707C01232B5537CB34A40160E8D03A6F807C08EC61B1F7CB34A404EBE1184ABF807C0CC2A3FD88AB34A404B33E804B1F807C0E77A239299B34A40BF17C185B6F807C07E6BF44BA8B34A40AA95D7BB40FA07C086AD5017A8B34A4055B9873D46FA07C005B573D0B6B34A40D612A374D0FB07C09EA7C59BB6B34A4012A0B3F7D5FB07C0EA76A955C5B34A4038607E7ADBFB07C0DFE7B80ED4B34A40430ED3C365FD07C0C03DFED9D3B34A40762AF8FCEFFE07C0EF903BA5D3B34A40F3433982F5FE07C001F21E5FE2B34A4003B13B07FBFE07C080414118F1B34A40C68E408C00FF07C06D3150D1FFB34A4085C5EF4F76FD07C0EE4A130600B44A40704B3FD47BFD07C0A997F6BF0EB44A400CB19E1106FF07C0ED59338B0EB44A40C025BE960BFF07C0CC7055441DB44A407667281C11FF07C0E02625FE2BB44A40CF4D9B5B9B0008C0FC7457C92BB44A4088B1DCE1A00008C0DB4179823AB44A40B12F7068A60008C08AFA5B3C49B44A40D9FBDAEEAB0008C035467AF557B44A406A237131360208C087FDA1C057B44A407E66F6B83B0208C07F95AB7966B44A4018881BFCC50308C0046ECB4466B44A40750A0885CB0308C0A511A9FE74B44A40FFC0B50DD10308C050A3C5B783B44A409D57DA625B0508C078F9D98283B44A408639E3EC600508C0C0EEA33C92B44A401F7FAE96D60308C04FD38F7192B44A4092B16F1FDC0308C0F13DAC2AA1B44A404A85B476660508C0BA1EC0F5A0B44A40902AD8006C0508C0A2399DAFAFB44A40ACB3B58A710508C007F6A568BEB44A40613FA414770508C083EBC121CDB44A40C81BE95E010708C06F1BCDECCCB44A4046263AEA060708C021C1A9A6DBB44A40A60545750C0708C05208B25FEAB44A40A495A900120708C0FC868E19F9B44A40D53DCF8B170708C0CCF3A9D207B54A4033AB4FDCA10808C0ADC7A99D07B54A407EA7D068A70808C0F097725716B54A4002F519F5AC0808C001A38D1025B54A40FAC0B581B20808C0E39869CA33B54A409A97120EB80808C0EC7C848342B54A40D3EC719ABD0808C0D6008C3C51B54A40257834EE470A08C071C8800751B54A40DA86FD7B4D0A08C010445CC15FB54A40EFCD8509530A08C0DD8A767A6EB54A400F635997580A08C00D703E347DB54A408640F5245E0A08C0279058ED8BB54A408CB4E3B2630A08C03C9B33A79AB54A40F4E08B40690A08C008483A60A9B54A40392045CE6E0A08C0142E5419B8B54A40CFF7505C740A08C01BFF2ED3C6B54A405BDEB6C8FE0B08C03EBC159EC6B54A401E428D57040C08C047F91B57D5B54A407798BDE6090C08C0D66DF610E4B54A408AF635787F0A08C02D1C1046E4B54A4086641606850A08C0D1B429FFF2B54A404D2542948A0A08C0C9EBF0B801B64A40438AEB04150C08C006D2D68301B64A40376EF0931A0C08C0400EF03C10B64A40DE1FFF22200C08C0203709F61EB64A40E47D60B2250C08C0ED4AE3AF2DB64A402D827B412B0C08C07200E9683CB64A409F7DF0D0300C08C08BEDC2224BB64A4004682660360C08C003C9DBDB59B64A4080B7A7EF3B0C08C0C242A29568B64A405BB9F07E410C08C079ECBA4E77B64A40D28BEFE7CB0D08C07D22971977B64A40AB725278D10D08C01D76AFD285B64A40CECB0009D70D08C0D867758C94B64A40524E7799DC0D08C08C948D45A3B64A40808F402AE20D08C0F5AB66FFB1B64A40B662C3BAE70D08C015656BB8C0B64A400E41A04BED0D08C084554472CFB64A40DFFB3DDCF20D08C051345C2BDEB64A405439DE6CF80D08C0F2B260E4ECB64A40DB83D8FDFD0D08C0FE68399EFBB64A40B6A9938E030E08C04D0D51570AB74A407392A11F090E08C05F9C291119B74A40E20969B00E0E08C028CD2DCA27B74A40ED908A41140E08C04035068436B74A40B9F16CD2190E08C0A88B1D3D45B74A4056D551631F0E08C0018221F653B74A40C2533FDCA90F08C07E21F0C053B74A409DF18E6EAF0F08C0DF14C87A62B74A40C35B9F00B50F08C091F6DE3371B74A40534FFB92BA0F08C05E76A3ED7FB74A40E2FA1925C00F08C0EC5ABAA68EB74A407F748BB7C50F08C03D2A92609DB74A408C66B649CB0F08C0449B9519ACB74A403D72F2DBD00F08C06145ACD2BAB74A406852816ED60F08C018DA838CC9B74A40FAD5E6EF601108C0FB6F4657C9B74A409A223F83661108C0446A4910D8B74A40B2A3F1166C1108C0BF9B20CAE6B74A40ACDC64AA711108C098BB3683F5B74A4029FC2A3E771108C0FDC50D3D04B84A407683AAD17C1108C0277210F612B84A4000477F68071308C07D7EC5C012B84A407EF71FFD0C1308C08927DB7921B84A409F283B65821108C0665726AF21B84A40D2A675DDF70F08C06C2A65E421B84A4058244970FD0F08C069363C9E30B84A4069C469E7720E08C0AF1771D330B84A401898805EE80C08C01DCB9B0831B84A402B7764C55D0B08C07E7DBE3D31B84A402A55C154630B08C067DFC1F63FB84A406392B4CAD80908C09372D82B40B84A403FE2983E4E0808C0491DE56040B84A40E79378B4C30608C07154E79540B84A40EF27FF40C90608C08BA1BF4F4FB84A40F6BF9BA53E0508C0DF11BA844FB84A406DD8571AB40308C08D28A8B94FB84A40DB597FA4B90308C098DBBF725EB84A40B97BD3172F0208C02969A5A75EB84A405F46998AA40008C0FB2C83DC5EB84A40664E55FD19FF07C0B0C256115FB84A40053EDE5F8FFD07C09A5322465FB84A409EC686D204FC07C0A28CE17A5FB84A407D9225457AFA07C08C9796AF5FB84A40088C35C97FFA07C076355D696EB84A40E369B438F5F807C09790089E6EB84A40A656059A6AF707C03CA0ABD26EB84A4045F0750BE0F507C0885942076FB84A40AE16998ADAF507C0B40F7B4D60B84A40B00111FD4FF407C0A761078260B84A404A397F6FC5F207C07C8589B660B84A407364BAD13AF107C01EA103EB60B84A40713A1544B0EF07C04668711F61B84A40ED6266B625EE07C04201D55361B84A4066DFAD289BEC07C0126C2E8861B84A40838424A3A0EC07C0AB0CF74170B84A4027BB220216EB07C032EB487670B84A40E4DD45738BE907C03C328EAA70B84A40565A5FE400E807C00B4BC9DE70B84A40E0076C5B06E807C041D1E4977FB84A402DE36ACB7BE607C0AEF415CC7FB84A40CA1B603BF1E407C0EFE93C0080B84A40A23E229B66E307C025D35B3480B84A400B024D0F6CE307C0B5EE38EE8EB84A40DBED1D7EE1E107C0BFBF4B228FB84A4001E0B7EC56E007C0B04D55568FB84A40F13B825ACCDE07C0CCAF588A8FB84A409A4539CBD1DE07C0DEC363439EB84A408E4ABA2547DD07C0AE905F779EB84A4089816092BCDB07C076C94EAB9EB84A403223FDFE31DA07C093D333DF9EB84A406431906BA7D807C0F8AE0E139FB84A40042314D8ACD807C048DF2DCCADB84A406203633322D707C05ED70000AEB84A402DF7D19E97D507C01381C733AEB84A401F5D370A0DD407C01EFC8367AEB84A40E736937582D207C06248369BAEB84A4039A523DE87D207C097141755BDB84A40B6053636FDD007C04CBFC188BDB84A40C5C36DA072CF07C09AD95FBCBDB84A40EFBF970678CF07C0529F6C75CCB84A400A1C196D7DCF07C0579D4D2FDBB84A402666030508D107C0212BAFFBDAB84A40EF81586C0DD107C07AEBCEB4E9B84A4014FBFDD312D107C05C97AF6EF8B84A4002115F3B18D107C0D9E4BB2707B94A4014B341A08DCF07C0D6DA5A5B07B94A40D05FA20693CF07C0E28D7A1416B94A40CC746A6A08CE07C0CC800F4816B94A40855A0AD00DCE07C04E4BF00125B94A40A0F6653513CE07C05BB7FCBA33B94A408767029788CC07C0F6D287EE33B94A40D43CA4FB8DCC07C021A368A842B94A409FE6086093CC07C09C61886151B94A401A8A4FAF08CB07C0A8C10B9551B94A40792CEC120ECB07C0D54AD94E60B94A40B8BE527613CB07C0F90EF9076FB94A40B3D1C2D918CB07C00BC018C17DB94A4008F87B3D1ECB07C0EE0FE67A8CB94A40CED69E9893C907C09CD35DAE8CB94A4087D410FB98C907C0498A7D679BB94A40BE1B19550EC807C04A4AEB9A9BB94A40BE39D7B613C807C06AFCCF54AAB94A40DD5DC50F89C607C06FCB3388AAB94A407F07AA68FEC407C0BE6A8DBBAAB94A4035C40CC803C507C0A209A174B9B94A4097DF38708EC607C005484741B9B94A40B26203D193C607C066FD2EFBC7B94A40B9E3903199C607C009A155B4D6B94A4018DE27929EC607C0D1317C6DE5B94A40D5C207F3A3C607C014625027F4B94A409AB0B153A9C607C033CD76E002BA4A407C96ABB4AEC607C084245E9A11BA4A407C6B6115B4C607C0531D715320BA4A4043466E76B9C607C0FB4E580D2FBA4A40251C3ED7BEC607C0D86E7EC63DBA4A401F5F1038C4C607C0312F917F4CBA4A40CFA93999C9C607C0552878395BBA4A4049EE25FACEC607C0BC0F9EF269BA4A40DF215B5BD4C607C0909671AC78BA4A40815B5ABCD9C607C04E58976587BA4A400EE8687364C807C05785313287BA4A40490FC9D569C807C0CE1018EC95BA4A402014E5376FC807C0D23D2AA5A4BA4A409A45129A74C807C086DE4F5EB3BA4A401EE1AEFC79C807C030A24118C2BA4A40F28EF5B704CA07C0E4D2D0E4C1BA4A401D54641B0ACA07C00647019ED0BA4A40EB1E1C7F0FCA07C05D5ADF57DFBA4A4041CB9DE214CA07C068A70F11EEBA4A40AC8E6F461ACA07C05EE000CBFCBA4A402512FDA91FCA07C0ABB91D840BBB4A40A3199B0D25CA07C01BCC4D3D1ABB4A40F73989712ACA07C085CA3EF728BB4A40071933D52FCA07C029695BB037BB4A40A322343935CA07C07C404C6A46BB4A40ABFAF79C3ACA07C0CE047C2355BB4A40C4AECE62C5CB07C022A8FEEF54BB4A40FBFBEAC7CACB07C013CFDBA963BB4A402BDD040140CA07C0476859DD63BB4A40F49DDB6445CA07C09005899672BB4A4099A9DC9CBAC807C0ECAAFCC972BB4A40A916F4FFBFC807C0A870ED8381BB4A40813EDC3635C707C01D2257B781BB4A406A12A0983AC707C09BC4737090BB4A4081656FCEAFC507C00E82D3A390BB4A403052342FB5C507C0299A035D9FBB4A40932D4990BAC507C02E9EF416AEBB4A409A47C4B32FC407C016BE4C4AAEBB4A40D59D8C1335C407C093EB7C03BDBB4A40F94C1544AAC207C0F33FC936BDBB4A4059240AA3AFC207C04705A7F0CBBB4A40D7B6BD01B5C207C00CC9D6A9DABB4A40A72624322AC107C0CB0F19DDDABB4A40802F81629FBF07C082255110DBBB4A4074C7958214BE07C0CAEA8043DBBB4A40C6E86CDE19BE07C0743572FDE9BB4A403EA4600D8FBC07C0105A9530EABB4A40DBF24A3C04BB07C0F74DAE63EABB4A401BD62B6B79B907C03A11BD96EABB4A40A1878DC37EB907C074B9DA4FF9BB4A404F4D28E1F3B707C0DFA1E182F9BB4A40A6D5E50E69B607C05942DCB5F9BB4A400643A5B863B607C01D1CBEFCEABB4A40CDEF69E7D8B407C0FF4CAE2FEBBB4A40C2B41F144EB307C0DC8F9462EBBB4A400E7BA532C3B107C070747295EBBB4A40E6014E6138B007C0D41244C8EBBB4A40D72AED8FADAE07C085800BFBEBBB4A4009FEDAE0B2AE07C00CE12AB4FABB4A402B24D931B8AE07C0B77A5D6D09BC4A4028562683BDAE07C06900512718BC4A4098E2B85748B007C05FD688F417BC4A40DE10422CD3B107C0947BB6C117BC4A400621EE105EB307C061DAD78E17BC4A40E1146AE7E8B407C0C9DAF05B17BC4A406145B63CEEB407C032050F1526BC4A4068C0296563B307C0AF43F64726BC4A4047156D7FD8B107C0B823D57A26BC4A405E41EED2DDB107C09904C83435BC4A4014E243FC52B007C010DD9A6735BC4A40C90A784E58B007C09CE9CC2044BC4A40DC57F4A05DB007C06B95ACDA52BC4A4079611FC8D2AE07C087BA750D53BC4A4055AC5519D8AE07C0B6DEA7C661BC4A40A252956ADDAE07C045EFD97F70BC4A40BFCB958F52AD07C0F86099B270BC4A4051D713E057AD07C03A9C8C6C7FBC4A405D4AFA03CDAB07C0911B429F7FBC4A4088752453D2AB07C09D3561588EBC4A40BA87A4A2D7AB07C0758854129DBC4A401859E8F1DCAB07C021C886CBABBC4A405BD0660252AA07C077E534FEABBC4A40AFA30823C7A807C0FDBDD630ACBC4A404A21A1433CA707C043656E63ACBC4A40EE4A3064B1A507C048DBFB95ACBC4A40464979AFB6A507C0A2B4DC4FBBBC4A40A8268DFABBA507C085C70F09CABC4A4021F0AE45C1A507C0249A42C2D8BC4A40C1AF2691C6A507C05E82227CE7BC4A40A432389B3BA407C0EC0BA9AEE7BC4A40DF926AE540A407C03167DB67F6BC4A40CF96EB2F46A407C099AECE2105BD4A40FE9F297A4BA407C03C96EDDA13BD4A402B3DBDC450A407C0B9B6E09422BD4A401DCE140F56A407C041C4124E31BD4A407775FE25CBA207C063E68D8031BD4A408F2E486FD0A207C0FBCCAC3940BD4A403F6CE7B8D5A207C079EC9FF34EBD4A4087A84A02DBA207C0F7F8D1AC5DBD4A40BA7CFC4BE0A207C08AF1C4666CBD4A4054DA9B5E55A107C0D7C636996CBD4A40EB81FAA65AA107C0ED9855527BBD4A40549FAEEF5FA107C0DDA3480C8ABD4A40E3C5263865A107C0D89B7AC598BD4A40F80D8C47DA9F07C0C3EAE2F798BD4A409A4EF68EDF9F07C0C0BB01B1A7BD4A40BEF5B5D6E49F07C096C5F46AB6BD4A40F0B0391EEA9F07C06ABC2624C5BD4A402749371A5F9E07C0B5948756C5BD4A400634F260649E07C024646710D4BD4A40552878A7699E07C0476D99C9E2BD4A40D79F36EE6E9E07C083A58C83F1BD4A405BB5AB34749E07C06D92AB3C00BE4A40EDF6307B799E07C0DDB8DDF50EBE4A40EB6A0282EE9C07C0435133280FBE4A409504B488639B07C0038A7E5A0FBE4A40304868CD689B07C09CFE71141EBE4A400CDAD9116E9B07C09A1391CD2CBE4A409BA1A056739B07C0A96184873BBE4A40326F0B5AE89907C07CE8C5B93BBE4A40143B869DED9907C01B57F8724ABE4A4064464FE1F29907C0F9B1EB2C59BE4A40C9A45CD0679807C002BD255F59BE4A404CCAD2126D9807C0BAEB441868BE4A407C059E55729807C0765338D276BE4A40518C2D98779807C05AA86A8B85BE4A401A6CBFDA7C9807C02F9D894494BE4A400F5FB6D7F19607C02DF2B77694BE4A409214A4D4669507C02914DCA894BE4A40AAA63294619507C0B1B8BCEF85BE4A4078592792D69307C07B74D62186BE4A4008B2E47F4B9207C01D0AE85386BE4A40D5F2C67DC09007C0AA5FED8586BE4A40E2918840BB9007C07A0ABACC77BE4A4085D5713F308F07C0F2F9B4FE77BE4A4020E5513EA58D07C091B6A53078BE4A40F795F802A08D07C049E8B07669BE4A4054B8DF02158C07C0EF3E97A869BE4A401BDD89F0898A07C0C2AE75DA69BE4A408DA05EF0FE8807C0479F470C6ABE4A40DD968AB8F98807C01F7126535BBE4A40126266B96E8707C0E3FBED845BBE4A40A80239BAE38507C0CF53ABB65BBE4A406978D4AA588407C0F28160E85BBE4A409B2CEF75538407C0675B6A2E4DBE4A4045BFBF77C88207C0811A13604DBE4A40342D87793D8107C0E0A6B1914DBE4A406AA70F47388107C043077CD83EBE4A408024DE49AD7F07C0272E100A3FBE4A4085D56F3A227E07C07A6A9C3B3FBE4A40D1DADD091D7E07C08A52A58130BE4A40C455AA0D927C07C0D5E024B330BE4A40E7B36D11077B07C07F3C9AE430BE4A40EA31DF3F0C7B07C0A6B9919E3FBE4A401DE2156E117B07C0CA23C8574EBE4A405995999C167B07C0757ABF115DBE4A403D7C1D9D8B7907C09D362B435DBE4A408387AA6F867907C045AC33894EBE4A40D9190261FB7707C02D0197BA4EBE4A408F857E62707607C05E1DEEEB4EBE4A4063C97B376B7607C0FE15B73240BE4A40526D3E0C667607C081FBBE7831BE4A4049F7D40FDB7407C0A17B0BAA31BE4A405FD0FCE5D57407C0C365E7F022BE4A40A951E3BBD07407C0F5EFEE3614BE4A40849D1692CB7407C0AD66B77D05BE4A400BD0D898407307C04816F9AE05BE4A40CA892D703B7307C0DC91D4F5F6BD4A406EFA4047367307C080ADDB3BE8BD4A4012B9B01E317307C0CD0AA382D9BD4A40C4449D28A67107C0FCF5D9B3D9BD4A40581FEC00A17107C0F147F3F9CABD4A40A1D780D99B7107C00A3ABA40BCBD4A40E17E57D5107007C099A2E871BCBD4A404224C2AE0B7007C00458EEB7ADBD4A4023FAC7B9806E07C0E0A010E9ADBD4A406E3F96947B6E07C05A66EA2F9FBD4A401109A9A2F06C07C0A51202619FBD4A40D7C7B2B0656B07C06D8C0F929FBD4A4035F9A38D606B07C0F09ED5D890BD4A407592878CD56907C071BEDA0991BD4A4012DD4E6AD06907C07094DF4F82BD4A407E37677A456807C0D855D88082BD4A409DD49159406807C02D3CB1C773BD4A402975B16AB56607C0B9A19FF873BD4A407E12C87B2A6507C0CFD4832974BD4A406872D25C256507C08508886F65BD4A402AEF283E206507C040294DB656BD4A40B44F451F1B6507C0DD3651FC47BD4A401582B400166507C0507E294339BD4A40D7FD25E2106507C0DE65EE892ABD4A40DBF657E8856307C0FE97C9BA2ABD4A40DCB19FCA806307C04143CD001CBD4A409E2B3AAD7B6307C04D28A5470DBD4A40348FE7A4066507C0DB48CA160DBD4A40D0EF3086016507C05CF7CD5CFEBC4A4010FE976C8C6607C03A0FEB2BFEBC4A40CD09F652176807C004F5FDFAFDBC4A4071114B39A26907C0BBA806CAFDBC4A409C0FC42F2D6B07C059280399FDBC4A40D9E6BB52326B07C017D4FE520CBD4A40122B0F3ABD6C07C0C3F9F2210CBD4A4021655921486E07C05BEDDCF00BBD4A405134A00AD36F07C0726EBCBF0BBD4A4060BF8730D86F07C0A03DE3781ABD4A40C82EFD28637107C08F9FB6471ABD4A40A57C3C11EE7207C0C3D281161ABD4A40F5B872F9787407C0C7D342E519BD4A40AA82DE227E7407C0815F3D9F28BD4A40C2F91B0C097607C0AA04F46D28BD4A40835B50F5937707C09577A03C28BD4A40FDC0A8EE1E7907C08EB2400B28BD4A4053C80A1B247907C0C5AD79C436BD4A40A2A03505AF7A07C02ED9119336BD4A40F783AA32B47A07C0F946374C45BD4A407DB1CB1D3F7C07C02FB0C51A45BD4A40F2B3E308CA7D07C0B3E749E944BD4A40A45D2506557F07C031A5C1B744BD4A40F47325375A7F07C09E88BA7153BD4A40588B3D23E58007C0391B2A4053BD4A40D02B1555EA8007C0F2A961F961BD4A407E773642758207C09BC9C6C761BD4A4049904E2F008407C093B7219661BD4A409D639863058407C0EDAF195070BD4A40740BE761908507C09D21681E70BD4A40372DFF4F1B8707C0566AAEEC6FBD4A4031082C86208707C0BE7FD1A57EBD4A4087584D75AB8807C04E550D747EBD4A403B6E6564368A07C01EF93E427EBD4A40D54AA765C18B07C0E41E64107EBD4A408DFA5F9FC68B07C0AAA85ACA8CBD4A402B0D788F518D07C0D9A677988CBD4A402DDF867FDC8E07C04A738A668CBD4A409C3EA943D78E07C0A26C94AC7DBD4A40D3559C32629007C0DC489D7A7DBD4A40150301F65C9007C0A3BC7BC16EBD4A406D6FD8E3E79107C0D0A87A8F6EBD4A4027E1D3E1729307C039566D5D6EBD4A40185BD1A26D9307C059ED77A35FBD4A400069E8A5E29107C02FFE84D55FBD4A40525A4668DD9107C0963F501C51BD4A40B3DC1C64689307C0727043EA50BD4A40E2E42C25639307C043E04D3042BD4A40A579BA0FEE9407C0D02D39FE41BD4A402E090DD0E89407C02D18184533BD4A4063FF6190E39407C009A2E38B24BD4A40008DC1786E9607C09E41C55924BD4A400094C837699607C000FACF9F15BD4A40BF6B0C1FF49707C0EBA9A76D15BD4A40CE2056DDEE9707C0E7DC86B406BD4A40E7555D9BE99707C0C9AF91FAF7BC4A4077AEA592749907C0A5615DC8F7BC4A408CB3E84F6F9907C06B62290FE9BC4A4037D8E233FA9A07C0B374EDDCE8BC4A40C8B9DEEFF49A07C0DFF00B23DABC4A40A598BDD27F9C07C042FFC5F0D9BC4A405960FD8D7A9C07C0FECE9137CBBC4A40F6834D49759C07C0C6455D7EBCBC4A40CDDC062A009E07C0DAB90C4CBCBC4A40BD6D11E4FA9D07C068A82A92ADBC4A404679639EF59D07C04736F6D89EBC4A40E1B07958F09D07C0EDB0001F90BC4A40975CF27A659C07C00B82505190BC4A40B94C669DDA9A07C0CD73958390BC4A40040ED1BF4F9907C0E630D0B590BC4A40D35700D0C49707C0480C03E890BC4A4048FFA711CA9707C0855FF9A19FBC4A403D338902559907C03D55C66F9FBC4A4002A705455A9907C0BE66FB28AEBC4A406C011453CF9707C0DC9F2E5BAEBC4A40566B4B73449607C00957558DAEBC4A406CCEEF323F9607C0DBE71FD49FBC4A4035602E54B49407C08E3E3C06A0BC4A4064B66375299307C090634E38A0BC4A40F262ED36249307C00784577E91BC4A404C4DFD48999107C0245561B091BC4A4004A3306B0E9007C0E0E75EE291BC4A40F2C25A8D838E07C0F948521492BC4A40EDAE7BAFF88C07C07D783B4692BC4A40A36893D16D8B07C06C761A7892BC4A406A78B70A738B07C00E3F1232A1BC4A4047498319E88907C07F85E963A1BC4A40E931783A5D8807C02D4EB495A1BC4A40C2127503588807C09528BCDB92BC4A40FD407125CD8607C039917C0D93BC4A4013EE635BD28607C038E574C7A1BC4A40707F467C478507C0A04A2BF9A1BC4A40FB35F38CBC8307C00487D92AA2BC4A401E77C3AD318207C0B6887B5CA2BC4A4059938ACEA68007C0B758138EA2BC4A408D7B0000AC8007C0F8524B47B1BC4A40010EAE1F217F07C0841FD978B1BC4A407328202D967D07C037025FAAB1BC4A40EB19CBFD907D07C0A8AB26F1A2BC4A408DD1761E067C07C034E69F22A3BC4A40D96B193F7B7A07C01DEF0E54A3BC4A40DFCB955FF07807C080077585A3BC4A40FDEED66F657707C01D2FD3B6A3BC4A404CBC8B44607707C02A07D9FC94BC4A40473194195B7707C0AC18B34386BC4A40B3445BEE557707C022CAB88977BC4A406A386FC3507707C03A687FD068BC4A404E4E8C984B7707C007F345175ABC4A404190756D467707C06BB75E5D4BBC4A403E664794BB7507C02470AF8E4BBC4A40EF1A10BB307407C09DF7F5BF4BBC4A4000B0CFE1A57207C0D54D32F14BBC4A40757335BAA07207C07516F8373DBC4A40D80DFEE1157107C096072A693DBC4A40038C3BBB107107C024892EAF2EBC4A40A8DBE0D3856F07C0931858E02EBC4A40E72291F98A6F07C0CECA539A3DBC4A402FFA411F006E07C07A9971CB3DBC4A403BC0A543056E07C01A6CAC844CBC4A4093474F680A6E07C0A7DE943E5BBC4A40753BC58C0F6E07C0BE8ACFF769BC4A402C4644B1146E07C089230AB178BC4A4079D10FD6196E07C0F6A8056B87BC4A40C24C9AFA1E6E07C065CE2C2496BC4A40238FDA1B946C07C06461415596BC4A40130DA63F996C07C0F5F33C0FA5BC4A40BFFBCA5F0E6B07C01B894740A5BC4A4029024A82136B07C0033C82F9B3BC4A403EE62691886907C0E4D4842AB4BC4A40DA49D9B28D6907C04A5B6DE4C2BC4A4029A0C7D0026807C014F46315C3BC4A4087E5ACEE776607C03C5B5046C3BC4A40066A070E7D6607C032828BFFD1BC4A40156BD12AF26407C02BEB6D30D2BC4A40177F2849F76407C01C68A9E9E0BC4A40170AAC546C6307C096CB831AE1BC4A40F4A23972716307C0A51F6DD4EFBC4A40EFD0D08CE66107C0037A3B05F0BC4A4061025FA75B6007C04DA2FF35F0BC4A40E138E4C1D05E07C0A198B966F0BC4A40297387A7CB5E07C0D1C8CFACE1BC4A40041E728DC65E07C0469D93F3D2BC4A40B947CC70516007C064FBD9C2D2BC4A4067A2BA554C6007C0D3069E09C4BC4A40EAAD7273C15E07C07875573AC4BC4A40A4134059BC5E07C018876D80B5BC4A4017C8753A476007C0BD4BB44FB5BC4A40E32F761F426007C0A2307896A6BC4A40C9AC523FB75E07C0B23831C7A6BC4A407A6C2B25B25E07C0F6D6330D98BC4A406ABE560BAD5E07C0D8AE0A5489BC4A408C641C1B225D07C0E85CBB8489BC4A40907419021D5D07C057A1BDCA7ABC4A40DB5562E9175D07C093D280116CBC4A403A39B4D0125D07C091F043585DBC4A40C1A2D9F5875B07C00F95E7885DBC4A40CF9B0ADE825B07C03FB9FCCE4EBC4A40D4A780C67D5B07C0767DBF1540BC4A4066F5BCAE785B07C04A2EC15B31BC4A40A5E50FD7ED5907C0FC075A8C31BC4A406E67C1EDF25907C0578A584640BC4A40C627F914685807C0E965E77640BC4A40A3D659FF625807C07CB0E8BC31BC4A4034CE0CEA5D5807C0AC34BE0323BC4A404D846713D35607C0567D413423BC4A40566F8E2C485507C0225FBC6423BC4A4004A8B83F4D5507C01A55E71D32BC4A40E4B8F167C25307C06045564E32BC4A400103000000010000008B00000085C13896A92707C02E921F7A83B94A40260DC588AE2707C09D5E603392B94A401F65947BB32707C046C84EEDA0B94A408539316EB82707C091CF89A6AFB94A406BD64CC22D2607C07F69C3D5AFB94A40B75F22B4322607C08A77BF8FBEB94A40D555B9A5372607C00F23E748CDB94A40D605B0F9AC2407C0937D1778CDB94A40C42C86EAB12407C0E2F51332DCB94A40FB4624DBB62407C062584FEBEAB94A400AB2F02C2C2307C047B1761AEBB94A40F4B8896EA12107C000CB9549EBB94A4048716FD0162007C004DCA678EBB94A40959D03E3112007C0A4B869BFDCB94A4012119C25871E07C0DCE173EEDCB94A40C97D5678FC1C07C0A8F0711DDDB94A40293F08CB711B07C06FD2654CDDB94A4078C041B5761B07C03FB6A405ECB94A4021EA839F7B1B07C05784E3BEFAB94A40F5B8088A801B07C00CF0CF7809BA4A407B40AAE9F51907C04479B9A709BA4A4046FEECD2FA1907C03EB1F86018BA4A40E6C378BCFF1907C0C4D3F81A27BA4A40E9796FE9741807C0A51DDF4927BA4A406434ACD1791807C0CB720B0336BA4A40A5DBD91BEF1607C06C8AE43136BA4A404DEDAD34EA1607C0E79FB77827BA4A406518E9815F1507C085B785A727BA4A40A1F74BE1D41307C0A57647D627BA4A40EBAE03FCCF1307C04BFB441C19BA4A409AC1E927451207C09B1A014B19BA4A404A422276BA1007C048FBAE7919BA4A4096BB4A59BF1007C0D4A4B23328BA4A40DCC96AA6340F07C048EF566228BA4A406D6157E3A90D07C0F5F4F29028BA4A40FA5222C4AE0D07C06B69234A37BA4A400B954588390F07C0C8CC861B37BA4A40665A6F6A3E0F07C0CFE18AD545BA4A4078FA6E1FC91007C06069E5A645BA4A4006277102CE1007C04DD1276054BA4A404EB3614C430F07C0A4E0CD8E54BA4A404539562E480F07C0E27CFD4763BA4A40E54D0367BD0D07C069DE9B7663BA4A401CDF3648C20D07C02549A03072BA4A407689F68F370C07C02A2B335F72BA4A40AEDFE26F3C0C07C09D16771881BA4A40721F8AB6B10A07C0FA61004781BA4A40C6A2ADD7AC0A07C0ADDFBB8D72BA4A40A02C5C1F220907C0C8663ABC72BA4A4055AAD154970707C027E4B0EA72BA4A4041BCDD77920707C0021EAA3064BA4A40FD73389B8D0707C0808F777755BA4A40C59EF5E4020607C0B68DE0A555BA4A402840AA2E780407C0855E3FD455BA4A40D4595678ED0207C0ED01940256BA4A40DFB8E29EE80207C0DF4C4C4947BA4A40C80B38C5E30207C06881438F38BA4A405854FB10590107C032CA8CBD38BA4A403B19B65CCEFF06C0B2E5CBEB38BA4A40567B7985C9FF06C0EF2496322ABA4A40BD91FFADC4FF06C0E1008C781BBA4A4047A6A6EB39FE06C043A6C1A61BBA4A409889841535FE06C0BAD677ED0CBA4A40B3C55D64AAFC06C0BDD3A01B0DBA4A4033F11A8FA5FC06C016A4A861FEB94A400C87FBDE1AFB06C080DDC68FFEB94A4093FA090B16FB06C0B5B57BD6EFB94A406A981C6C8BF906C09F488D04F0B94A402943439986F906C0C174414BE1B94A40C4BFD7C8FBF706C0EF284E79E1B94A408C94D7F6F6F706C021A840BFD2B94A401B21CE496CF606C0B4963EEDD2B94A400DAD2B7967F606C0BAB70434C4B94A4097404CA862F606C03075F679B5B94A40D4E959FDD7F406C03F0AE9A7B5B94A4049D0D12DD3F406C0C61C9BEEA6B94A40034A119448F306C0880D811CA7B94A40014F69C543F306C0C1D2826298B94A40FBD602F73EF306C09A3731A989B94A4086D5A4283AF306C0F287DFEF7AB94A4098B933BFC4F406C075CEFAC17AB94A4095D094EFBFF406C076BBFB076CB94A405A1F3720BBF406C03948AA4E5DB94A40898DC6C445F606C09B4ABA205DB94A4039804D69D0F706C0181FC0F25CB94A4052D29797CBF706C03C61AE384EB94A40DA5A5F5D56F906C0946BA60A4EB94A40C4E7E68A51F906C0E04C69513FB94A403C52111DDCFA06C001735D233FB94A4070705DBF66FC06C09B8845F53EB94A401A9E86EA61FC06C0A1D2343B30B94A405989B98BECFD06C02520130D30B94A40DAE919B6E7FD06C066BCC35321B94A40F8CC5D6672FF06C07F5D962521B94A40C00C6F06FD0007C0D0B460F720B94A404AC477A6870207C066DE20C920B94A40594F497F8C0207C0C2106F822FB94A40EBEC6258910207C0A42F7E3C3EB94A40136A84FA1B0407C0B25F330E3EB94A402C4F71D4200407C04CB66DC74CB94A407CE29A77AB0507C0A55218994CB94A4062FAE652B00507C09C7C26535BB94A4028B318F73A0707C03085C6245BB94A40BFE7BB1A360707C033C1B86A4CB94A4084E003D0C00807C024DE4C3C4CB94A409BC313734B0A07C084F0D80D4CB94A405F49E494460A07C0E331A0543DB94A4099F6DA36D10B07C0837C22263DB94A40C72E5D57CC0B07C09FC1156C2EB94A405D973AF8560D07C0A8448E3D2EB94A408B8C39A9E10E07C056B1FA0E2EB94A403CECE2C7DC0E07C017AFAF551FB94A4080849E67671007C05E3C14271FB94A409C815107F21107C0F79B6EF81EB94A409160C9EAF61107C0C2D1B8B12DB94A4074F089CEFB1107C0CCF3C36B3CB94A40AB41AF92861307C04E480F3D3CB94A4048A942778B1307C0CAA145F64AB94A4082F3EB07161507C0A2DD8CC74AB94A40A027DEED1A1507C096D6968159B94A405CF7BE91A51607C03029D15259B94A4064DD8878AA1607C0A864190C68B94A404B30955FAF1607C0BD3D0FC676B94A40F05791073A1807C034D93D9776B94A40F8C17BEF3E1807C09041855085B94A40DB1BCEB6C91907C01970A52185B94A4051A8984D541B07C09D34C1F284B94A4041938F634F1B07C0E6197B3976B94A40E6946C09DA1C07C0506D8B0A76B94A4086F440AF641E07C06C9491DB75B94A40C5083765EF1F07C0FDA18BAC75B94A40627FCE77EA1F07C02DB299F266B94A4034EE570C752107C0E2148EC366B94A407A4F2DC1FF2207C02570749466B94A408EBACF658A2407C0BA8C526566B94A40617A690A152607C01E7D263666B94A40CFD6FFB09F2707C04D03F00666B94A40DF23B5A3A42707C098AFDEC074B94A4085C13896A92707C02E921F7A83B94A4001030000000100000037000000ED18E9E997A906C0F3861782D3B04A40070AF9F021AB06C05AD81056D3B04A404FF1878A26AB06C0C22E4C0FE2B04A40090BA892B0AC06C0708E3AE3E1B04A40B9199A2DB5AC06C06C4F499DF0B04A408F7861242BAB06C032BC5BC9F0B04A405DFF06BE2FAB06C0BC31AA82FFB04A4045CAAE5734AB06C08743E53B0EB14A407AFF74F138AB06C0F498F7F51CB14A40DAD5E9E4AEA906C00D5502221DB14A40202CC87CB3A906C0A4215FDB2BB14A408BEA236F29A806C02D0960072CB14A403D6F53519FA606C02C9558332CB14A40F5F69E4315A506C0852B455F2CB14A40A39AF3AE10A506C00664E7A51DB14A40510448A286A306C0857EC9D11DB14A40086BB8A5FCA106C030A59FFD1DB14A40512B8712F8A106C0F15388430FB14A40540E97E46DA006C03323596F0FB14A40B242EBD8E39E06C08DFC1B9B0FB14A40FD2BEC69E89E06C01CE034551EB14A40E046205D5E9D06C0D758EE801EB14A40DFB176EC629D06C0B7C14D3A2DB14A402EE3B5EED89B06C09B9BFB652DB14A4044A780C04E9A06C056AAA4912DB14A400C3D4C334A9A06C0C79A44D81EB14A40B9306826C09806C0259ADF031FB14A4037B4C599BB9806C062B4C34910B14A4043DC430DB79806C045107F9001B14A40726B87022D9706C0E7610EBC01B14A40CB4D2077289706C0248EB502F3B04A4036B34B5B9E9506C0A2EF3B2EF3B04A404BCCC9D0999506C093372174E4B04A404C8D9146959506C036B7DABAD5B04A4097310E3F0B9406C0FE5953E6D5B04A405432B5B5069406C074A8372CC7B04A402DD69F2C029406C0BCE1DC72B8B04A40BC38F2318C9506C099D66547B8B04A405B1791A7879506C048C34A8DA9B04A4057F8EABD119706C05E5DC861A9B04A40A77414C29B9806C037D33D36A9B04A4077A4A64EA09806C0AC4E57F0B7B04A40E16BE0532A9A06C05AD3C1C4B7B04A4090845979B49B06C0889F1E99B7B04A407C165F6E3E9D06C0F7A2766DB7B04A4099318073C89E06C092B7C241B7B04A40520F997852A006C0F7A60416B7B04A404CACF59FDCA106C01DA138EAB6B04A405E46DA9466A306C0F71068BEB6B04A407B60DA99F0A406C049908B92B6B04A4070DEFC2EF5A406C0BD92DD4BC5B04A40FB260D357FA606C09D20F61FC5B04A400D7F8CCB83A606C00B4108DAD3B04A40F9DCD0E20DA806C0481014AED3B04A40ED18E9E997A906C0F3861782D3B04A40 + new_record: false + active_record_yaml_version: 2 diff --git a/spec/fixtures/st_albans_schools.yml b/spec/fixtures/st_albans_schools.yml new file mode 100644 index 0000000000..e40733a1e1 --- /dev/null +++ b/spec/fixtures/st_albans_schools.yml @@ -0,0 +1,461 @@ +--- +- !ruby/object:School + concise_attributes: + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: id + value_before_type_cast: '03478573-5c05-4968-b0bb-4c56df530148' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: type + value_before_type_cast: School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: name + value_before_type_cast: St Luke's School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: description + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: urn + value_before_type_cast: '117671' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: uid + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: phase + value_before_type_cast: 0 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url + value_before_type_cast: http://www.stlukes.herts.sch.uk/ + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: minimum_age + value_before_type_cast: 7 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: maximum_age + value_before_type_cast: 16 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address + value_before_type_cast: Crouch Hall Lane + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: town + value_before_type_cast: St Albans + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: county + value_before_type_cast: Hertfordshire + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: postcode + value_before_type_cast: AL3 7ET + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: locality + value_before_type_cast: Redbourn + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data + value_before_type_cast: '{"URN":"117671","LA (code)":"919","LA (name)":"Hertfordshire","EstablishmentNumber":"7012","EstablishmentName":"St + Luke''s School","TypeOfEstablishment (code)":"12","TypeOfEstablishment (name)":"Foundation + special school","EstablishmentTypeGroup (code)":"5","EstablishmentTypeGroup + (name)":"Special schools","EstablishmentStatus (code)":"1","EstablishmentStatus + (name)":"Open","ReasonEstablishmentOpened (code)":"00","ReasonEstablishmentOpened + (name)":"Not applicable","OpenDate":"","ReasonEstablishmentClosed (code)":"00","ReasonEstablishmentClosed + (name)":"Not applicable","CloseDate":"","PhaseOfEducation (code)":"0","PhaseOfEducation + (name)":"Not applicable","StatutoryLowAge":"7","StatutoryHighAge":"16","Boarders + (code)":"1","Boarders (name)":"No boarders","NurseryProvision (name)":"Not applicable","OfficialSixthForm + (code)":"0","OfficialSixthForm (name)":"Not applicable","Gender (code)":"3","Gender + (name)":"Mixed","ReligiousCharacter (code)":"00","ReligiousCharacter (name)":"Does + not apply","ReligiousEthos (name)":"Does not apply","Diocese (code)":"0000","Diocese + (name)":"Not applicable","AdmissionsPolicy (code)":"0","AdmissionsPolicy (name)":"Not + applicable","SchoolCapacity":"175","SpecialClasses (code)":"1","SpecialClasses + (name)":"Has Special Classes","CensusDate":"18-01-2024","NumberOfPupils":"172","NumberOfBoys":"113","NumberOfGirls":"59","PercentageFSM":"41.90","TrustSchoolFlag + (code)":"2","TrustSchoolFlag (name)":"Not supported by a trust","Trusts (code)":"","Trusts + (name)":"","SchoolSponsorFlag (name)":"Not applicable","SchoolSponsors (name)":"","FederationFlag + (name)":"Not under a federation","Federations (code)":"","Federations (name)":"","UKPRN":"10008515","FEHEIdentifier":"","FurtherEducationType + (name)":"Not applicable","OfstedLastInsp":"07-06-2023","OfstedSpecialMeasures + (code)":"0","OfstedSpecialMeasures (name)":"Not applicable","LastChangedDate":"15-11-2024","Street":"Crouch + Hall Lane","Locality":"Redbourn","Address3":"","Town":"St Albans","County (name)":"Hertfordshire","Postcode":"AL3 + 7ET","SchoolWebsite":"http://www.stlukes.herts.sch.uk/","TelephoneNum":"01582626727","HeadTitle + (name)":"Mr","HeadFirstName":"Stephen","HeadLastName":"Hoult-Allen","HeadPreferredJobTitle":"Headteacher","BSOInspectorateName + (name)":"Not applicable","InspectorateReport":"","DateOfLastInspectionVisit":"","NextInspectionVisit":"","TeenMoth + (name)":"Not applicable","TeenMothPlaces":"","CCF (name)":"Not applicable","SENPRU + (name)":"Not applicable","EBD (name)":"Not applicable","PlacesPRU":"","FTProv + (name)":"","EdByOther (name)":"Not applicable","Section41Approved (name)":"Not + applicable","SEN1 (name)":"SpLD - Specific Learning Difficulty","SEN2 (name)":"VI + - Visual Impairment","SEN3 (name)":"OTH - Other Difficulty/Disability","SEN4 + (name)":"SLCN - Speech, language and Communication","SEN5 (name)":"ASD - Autistic + Spectrum Disorder","SEN6 (name)":"MLD - Moderate Learning Difficulty","SEN7 + (name)":"","SEN8 (name)":"","SEN9 (name)":"","SEN10 (name)":"","SEN11 (name)":"","SEN12 + (name)":"","SEN13 (name)":"","TypeOfResourcedProvision (name)":"Not applicable","ResourcedProvisionOnRoll":"","ResourcedProvisionCapacity":"","SenUnitOnRoll":"","SenUnitCapacity":"","GOR + (code)":"G","GOR (name)":"East of England","DistrictAdministrative (code)":"E07000240","DistrictAdministrative + (name)":"St Albans","AdministrativeWard (code)":"E05013961","AdministrativeWard + (name)":"Redbourn","ParliamentaryConstituency (code)":"E14001268","ParliamentaryConstituency + (name)":"Harpenden and Berkhamsted","UrbanRural (code)":"D1","UrbanRural (name)":"(England/Wales) + Rural town and fringe","GSSLACode (name)":"E10000015","Easting":"510132","Northing":"212893","MSOA + (name)":"St Albans 006","LSOA (name)":"St Albans 006D","InspectorateName (name)":"","SENStat":"","SENNoStat":"","BoardingEstablishment + (name)":"","PropsName":"","PreviousLA (code)":"999","PreviousLA (name)":"","PreviousEstablishmentNumber":"","OfstedRating + (name)":"Good","Country (name)":"","UPRN":"100081153864","SiteName":"","QABName + (code)":"0","QABName (name)":"Not applicable","EstablishmentAccredited (code)":"0","EstablishmentAccredited + (name)":"Not applicable","QABReport":"","CHNumber":"","MSOA (code)":"E02004929","LSOA + (code)":"E01023725","FSM":"72","AccreditationExpiryDate":""}' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: created_at + value_before_type_cast: 2024-11-28 16:26:34.298924000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: updated_at + value_before_type_cast: 2024-11-28 23:00:43.233243000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: readable_phases + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url_override + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: region + value_before_type_cast: East of England + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: detailed_school_type + value_before_type_cast: Foundation special school + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: school_type + value_before_type_cast: Special schools + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_code + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: group_type + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_within + value_before_type_cast: Hertfordshire + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: establishment_status + value_before_type_cast: Open + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: geopoint + value_before_type_cast: 0101000020E6100000A323C00414DDD9BF17358951E4E64940 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data_hash + value_before_type_cast: 0a84f86339ce7f69c5c9ff3cf11d60b0192d1334ead9bc835cdbdf5c38e265b1 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: slug + value_before_type_cast: st-luke-s-school + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: email + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: safeguarding_information + value_before_type_cast: |- + Our organisation is committed to safeguarding and promoting the welfare of children, young people and vulnerable adults. We expect all staff, volunteers and trustees to share this commitment. + + Our recruitment process follows the keeping children safe in education guidance. + + Offers of employment may be subject to the following checks (where relevant): + childcare disqualification + Disclosure and Barring Service (DBS) + medical + online and social media + prohibition from teaching + right to work + satisfactory references + suitability to work with children + + You must tell us about any unspent conviction, cautions, reprimands or warnings under the Rehabilitation of Offenders Act 1974 (Exceptions) Order 1975. + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: searchable_content + value_before_type_cast: "'luke':2A 's':3A 'school':4A 'st':1A" + new_record: false + active_record_yaml_version: 2 +- !ruby/object:School + concise_attributes: + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: id + value_before_type_cast: 0a4962b9-cb35-4fb5-ac71-b95433d6ed39 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: type + value_before_type_cast: School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: name + value_before_type_cast: Links Academy + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: description + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: urn + value_before_type_cast: '139197' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: uid + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: phase + value_before_type_cast: 0 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url + value_before_type_cast: https://linksacademystalbans.co.uk/ + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: minimum_age + value_before_type_cast: 11 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: maximum_age + value_before_type_cast: 16 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address + value_before_type_cast: 1 Hixberry Lane + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: town + value_before_type_cast: St Albans + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: county + value_before_type_cast: Hertfordshire + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: postcode + value_before_type_cast: AL4 0TZ + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: locality + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data + value_before_type_cast: '{"URN":"139197","LA (code)":"919","LA (name)":"Hertfordshire","EstablishmentNumber":"1106","EstablishmentName":"Links + Academy","TypeOfEstablishment (code)":"42","TypeOfEstablishment (name)":"Academy + alternative provision converter","EstablishmentTypeGroup (code)":"10","EstablishmentTypeGroup + (name)":"Academies","EstablishmentStatus (code)":"1","EstablishmentStatus (name)":"Open","ReasonEstablishmentOpened + (code)":"10","ReasonEstablishmentOpened (name)":"Academy Converter","OpenDate":"01-02-2013","ReasonEstablishmentClosed + (code)":"99","ReasonEstablishmentClosed (name)":"","CloseDate":"","PhaseOfEducation + (code)":"0","PhaseOfEducation (name)":"Not applicable","StatutoryLowAge":"11","StatutoryHighAge":"16","Boarders + (code)":"1","Boarders (name)":"No boarders","NurseryProvision (name)":"Not applicable","OfficialSixthForm + (code)":"0","OfficialSixthForm (name)":"Not applicable","Gender (code)":"3","Gender + (name)":"Mixed","ReligiousCharacter (code)":"00","ReligiousCharacter (name)":"Does + not apply","ReligiousEthos (name)":"None","Diocese (code)":"0000","Diocese (name)":"Not + applicable","AdmissionsPolicy (code)":"0","AdmissionsPolicy (name)":"Not applicable","SchoolCapacity":"40","SpecialClasses + (code)":"0","SpecialClasses (name)":"Not applicable","CensusDate":"18-01-2024","NumberOfPupils":"5","NumberOfBoys":"4","NumberOfGirls":"1","PercentageFSM":"80.00","TrustSchoolFlag + (code)":"3","TrustSchoolFlag (name)":"Supported by a multi-academy trust","Trusts + (code)":"17357","Trusts (name)":"LINKS MULTI ACADEMY TRUST","SchoolSponsorFlag + (name)":"Linked to a sponsor","SchoolSponsors (name)":"Links Academy Trust","FederationFlag + (name)":"Not applicable","Federations (code)":"","Federations (name)":"","UKPRN":"10040055","FEHEIdentifier":"","FurtherEducationType + (name)":"Not applicable","OfstedLastInsp":"25-05-2023","OfstedSpecialMeasures + (code)":"0","OfstedSpecialMeasures (name)":"Not applicable","LastChangedDate":"09-10-2024","Street":"1 + Hixberry Lane","Locality":"","Address3":"","Town":"St Albans","County (name)":"Hertfordshire","Postcode":"AL4 + 0TZ","SchoolWebsite":"https://linksacademystalbans.co.uk/","TelephoneNum":"01727836150","HeadTitle + (name)":"","HeadFirstName":"David","HeadLastName":"Allen","HeadPreferredJobTitle":"Headteacher","BSOInspectorateName + (name)":"Not applicable","InspectorateReport":"","DateOfLastInspectionVisit":"","NextInspectionVisit":"","TeenMoth + (name)":"Not applicable","TeenMothPlaces":"","CCF (name)":"","SENPRU (name)":"Not + applicable","EBD (name)":"Not applicable","PlacesPRU":"","FTProv (name)":"","EdByOther + (name)":"","Section41Approved (name)":"Not applicable","SEN1 (name)":"","SEN2 + (name)":"","SEN3 (name)":"","SEN4 (name)":"","SEN5 (name)":"","SEN6 (name)":"","SEN7 + (name)":"","SEN8 (name)":"","SEN9 (name)":"","SEN10 (name)":"","SEN11 (name)":"","SEN12 + (name)":"","SEN13 (name)":"","TypeOfResourcedProvision (name)":"","ResourcedProvisionOnRoll":"","ResourcedProvisionCapacity":"","SenUnitOnRoll":"","SenUnitCapacity":"","GOR + (code)":"G","GOR (name)":"East of England","DistrictAdministrative (code)":"E07000240","DistrictAdministrative + (name)":"St Albans","AdministrativeWard (code)":"E05013956","AdministrativeWard + (name)":"Hill End","ParliamentaryConstituency (code)":"E14001507","ParliamentaryConstituency + (name)":"St Albans","UrbanRural (code)":"C1","UrbanRural (name)":"(England/Wales) + Urban city and town","GSSLACode (name)":"E10000015","Easting":"517883","Northing":"206960","MSOA + (name)":"St Albans 021","LSOA (name)":"St Albans 021B","InspectorateName (name)":"","SENStat":"","SENNoStat":"","BoardingEstablishment + (name)":"","PropsName":"","PreviousLA (code)":"999","PreviousLA (name)":"","PreviousEstablishmentNumber":"1111","OfstedRating + (name)":"Good","Country (name)":"","UPRN":"200003633791","SiteName":"","QABName + (code)":"0","QABName (name)":"Not applicable","EstablishmentAccredited (code)":"0","EstablishmentAccredited + (name)":"Not applicable","QABReport":"","CHNumber":"","MSOA (code)":"E02007090","LSOA + (code)":"E01023677","FSM":"4","AccreditationExpiryDate":""}' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: created_at + value_before_type_cast: 2024-11-28 16:28:20.135037000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: updated_at + value_before_type_cast: 2024-11-28 23:00:53.290075000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: readable_phases + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url_override + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: region + value_before_type_cast: East of England + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: detailed_school_type + value_before_type_cast: Academy alternative provision converter + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: school_type + value_before_type_cast: Academies + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_code + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: group_type + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_within + value_before_type_cast: Hertfordshire + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: establishment_status + value_before_type_cast: Open + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: geopoint + value_before_type_cast: 0101000020E6100000320240E119CDD2BF870A3B63DDDF4940 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data_hash + value_before_type_cast: 9c0ecb9a5bd95f44008cb35483cdbde037505059e5e070ce08ddf9a9f933dd36 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: slug + value_before_type_cast: links-academy + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: email + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: safeguarding_information + value_before_type_cast: |- + Our organisation is committed to safeguarding and promoting the welfare of children, young people and vulnerable adults. We expect all staff, volunteers and trustees to share this commitment. + + Our recruitment process follows the keeping children safe in education guidance. + + Offers of employment may be subject to the following checks (where relevant): + childcare disqualification + Disclosure and Barring Service (DBS) + medical + online and social media + prohibition from teaching + right to work + satisfactory references + suitability to work with children + + You must tell us about any unspent conviction, cautions, reprimands or warnings under the Rehabilitation of Offenders Act 1974 (Exceptions) Order 1975. + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: searchable_content + value_before_type_cast: "'academy':2A 'links':1A" + new_record: false + active_record_yaml_version: 2 +- !ruby/object:School + concise_attributes: + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: id + value_before_type_cast: 0c66dc6d-46eb-47b2-a27e-2bb75fca9029 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: type + value_before_type_cast: School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: name + value_before_type_cast: Mandeville Primary School + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: description + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: urn + value_before_type_cast: '139159' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: uid + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: phase + value_before_type_cast: 2 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url + value_before_type_cast: http://www.mandeville.herts.sch.uk + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: minimum_age + value_before_type_cast: 3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: maximum_age + value_before_type_cast: 11 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address + value_before_type_cast: Mandeville Drive + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: town + value_before_type_cast: St Albans + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: county + value_before_type_cast: Hertfordshire + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: postcode + value_before_type_cast: AL1 2LE + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: locality + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: address3 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data + value_before_type_cast: '{"URN":"139159","LA (code)":"919","LA (name)":"Hertfordshire","EstablishmentNumber":"2099","EstablishmentName":"Mandeville + Primary School","TypeOfEstablishment (code)":"34","TypeOfEstablishment (name)":"Academy + converter","EstablishmentTypeGroup (code)":"10","EstablishmentTypeGroup (name)":"Academies","EstablishmentStatus + (code)":"1","EstablishmentStatus (name)":"Open","ReasonEstablishmentOpened (code)":"10","ReasonEstablishmentOpened + (name)":"Academy Converter","OpenDate":"01-01-2013","ReasonEstablishmentClosed + (code)":"99","ReasonEstablishmentClosed (name)":"","CloseDate":"","PhaseOfEducation + (code)":"2","PhaseOfEducation (name)":"Primary","StatutoryLowAge":"3","StatutoryHighAge":"11","Boarders + (code)":"1","Boarders (name)":"No boarders","NurseryProvision (name)":"Has Nursery + Classes","OfficialSixthForm (code)":"2","OfficialSixthForm (name)":"Does not + have a sixth form","Gender (code)":"3","Gender (name)":"Mixed","ReligiousCharacter + (code)":"00","ReligiousCharacter (name)":"Does not apply","ReligiousEthos (name)":"Does + not apply","Diocese (code)":"0000","Diocese (name)":"Not applicable","AdmissionsPolicy + (code)":"0","AdmissionsPolicy (name)":"Not applicable","SchoolCapacity":"446","SpecialClasses + (code)":"2","SpecialClasses (name)":"No Special Classes","CensusDate":"18-01-2024","NumberOfPupils":"394","NumberOfBoys":"182","NumberOfGirls":"212","PercentageFSM":"25.90","TrustSchoolFlag + (code)":"3","TrustSchoolFlag (name)":"Supported by a multi-academy trust","Trusts + (code)":"3107","Trusts (name)":"SPIRAL PARTNERSHIP TRUST","SchoolSponsorFlag + (name)":"Linked to a sponsor","SchoolSponsors (name)":"Spiral Partnership Trust","FederationFlag + (name)":"Not applicable","Federations (code)":"","Federations (name)":"","UKPRN":"10039766","FEHEIdentifier":"","FurtherEducationType + (name)":"Not applicable","OfstedLastInsp":"14-10-2021","OfstedSpecialMeasures + (code)":"0","OfstedSpecialMeasures (name)":"Not applicable","LastChangedDate":"08-11-2024","Street":"Mandeville + Drive","Locality":"","Address3":"","Town":"St Albans","County (name)":"Hertfordshire","Postcode":"AL1 + 2LE","SchoolWebsite":"www.mandeville.herts.sch.uk","TelephoneNum":"01727519220","HeadTitle + (name)":"Mrs","HeadFirstName":"Cathy","HeadLastName":"Longhurst","HeadPreferredJobTitle":"Head + Teacher","BSOInspectorateName (name)":"Not applicable","InspectorateReport":"","DateOfLastInspectionVisit":"","NextInspectionVisit":"","TeenMoth + (name)":"Not applicable","TeenMothPlaces":"","CCF (name)":"Not applicable","SENPRU + (name)":"Not applicable","EBD (name)":"Not applicable","PlacesPRU":"","FTProv + (name)":"Not applicable","EdByOther (name)":"Not applicable","Section41Approved + (name)":"Not applicable","SEN1 (name)":"","SEN2 (name)":"","SEN3 (name)":"","SEN4 + (name)":"","SEN5 (name)":"","SEN6 (name)":"","SEN7 (name)":"","SEN8 (name)":"","SEN9 + (name)":"","SEN10 (name)":"","SEN11 (name)":"","SEN12 (name)":"","SEN13 (name)":"","TypeOfResourcedProvision + (name)":"","ResourcedProvisionOnRoll":"","ResourcedProvisionCapacity":"","SenUnitOnRoll":"","SenUnitCapacity":"","GOR + (code)":"G","GOR (name)":"East of England","DistrictAdministrative (code)":"E07000240","DistrictAdministrative + (name)":"St Albans","AdministrativeWard (code)":"E05013963","AdministrativeWard + (name)":"Sopwell","ParliamentaryConstituency (code)":"E14001507","ParliamentaryConstituency + (name)":"St Albans","UrbanRural (code)":"C1","UrbanRural (name)":"(England/Wales) + Urban city and town","GSSLACode (name)":"E10000015","Easting":"514697","Northing":"205557","MSOA + (name)":"St Albans 017","LSOA (name)":"St Albans 017C","InspectorateName (name)":"","SENStat":"","SENNoStat":"","BoardingEstablishment + (name)":"","PropsName":"","PreviousLA (code)":"999","PreviousLA (name)":"","PreviousEstablishmentNumber":"","OfstedRating + (name)":"Good","Country (name)":"","UPRN":"100081149771","SiteName":"","QABName + (code)":"0","QABName (name)":"Not applicable","EstablishmentAccredited (code)":"0","EstablishmentAccredited + (name)":"Not applicable","QABReport":"","CHNumber":"","MSOA (code)":"E02004940","LSOA + (code)":"E01023739","FSM":"96","AccreditationExpiryDate":""}' + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: created_at + value_before_type_cast: 2024-11-28 16:28:20.135037000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: updated_at + value_before_type_cast: 2024-11-28 23:00:56.309950000 Z + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: readable_phases + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: url_override + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: region + value_before_type_cast: East of England + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: detailed_school_type + value_before_type_cast: Academy converter + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: school_type + value_before_type_cast: Academies + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_code + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: group_type + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: local_authority_within + value_before_type_cast: Hertfordshire + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: establishment_status + value_before_type_cast: Open + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: geopoint + value_before_type_cast: 0101000020E6100000DB49E29078C8D5BFC11022DC55DE4940 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: gias_data_hash + value_before_type_cast: 53ddf0fd9e5bb33ade12784f2b321f95d338947b35ac7f2ab83ee558c1454801 + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: slug + value_before_type_cast: mandeville-primary-school + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: email + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: safeguarding_information + value_before_type_cast: |- + Our organisation is committed to safeguarding and promoting the welfare of children, young people and vulnerable adults. We expect all staff, volunteers and trustees to share this commitment. + + Our recruitment process follows the keeping children safe in education guidance. + + Offers of employment may be subject to the following checks (where relevant): + childcare disqualification + Disclosure and Barring Service (DBS) + medical + online and social media + prohibition from teaching + right to work + satisfactory references + suitability to work with children + + You must tell us about any unspent conviction, cautions, reprimands or warnings under the Rehabilitation of Offenders Act 1974 (Exceptions) Order 1975. + - !ruby/object:ActiveModel::Attribute::FromDatabase + name: searchable_content + value_before_type_cast: "'mandeville':1A 'primary':2A 'school':3A" + new_record: false + active_record_yaml_version: 2 diff --git a/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/with_a_polygon_Basildon_/with_a_large_radius/finds_liverpool_as_well.yml b/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/with_a_polygon_Basildon_/with_a_large_radius/finds_liverpool_as_well.yml new file mode 100644 index 0000000000..4de992289f --- /dev/null +++ b/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/with_a_polygon_Basildon_/with_a_large_radius/finds_liverpool_as_well.yml @@ -0,0 +1,86 @@ +--- +http_interactions: +- request: + method: get + uri: https://maps.googleapis.com/maps/api/geocode/json?address=basildon&components=country:gb&key=&language=en&sensor=false + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Teaching Vacancies Service teaching.vacancies@education.gov.uk + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Date: + - Mon, 02 Dec 2024 09:19:10 GMT + Pragma: + - no-cache + Expires: + - Fri, 01 Jan 1990 00:00:00 GMT + Cache-Control: + - no-cache, must-revalidate + Access-Control-Allow-Origin: + - "*" + Content-Security-Policy-Report-Only: + - script-src 'none'; form-action 'none'; frame-src 'none'; report-uri https://csp.withgoogle.com/csp/scaffolding/msaifdggmnwc:229:0 + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to=coop_reporting + Report-To: + - '{"group":"coop_reporting","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/scaffolding/msaifdggmnwc:229:0"}],}' + Server: + - mafe + Content-Length: + - '2350' + X-Xss-Protection: + - '0' + X-Frame-Options: + - SAMEORIGIN + Server-Timing: + - gfet4t7; dur=51 + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + body: + encoding: UTF-8 + string: "{\n \"results\" : \n [\n {\n \"address_components\" + : \n [\n {\n \"long_name\" : \"Basildon\",\n + \ \"short_name\" : \"Basildon\",\n \"types\" : + \n [\n \"locality\",\n \"political\"\n + \ ]\n },\n {\n \"long_name\" + : \"Basildon\",\n \"short_name\" : \"Basildon\",\n \"types\" + : \n [\n \"postal_town\"\n ]\n + \ },\n {\n \"long_name\" : \"Essex\",\n + \ \"short_name\" : \"Essex\",\n \"types\" : \n + \ [\n \"administrative_area_level_2\",\n \"political\"\n + \ ]\n },\n {\n \"long_name\" + : \"England\",\n \"short_name\" : \"England\",\n \"types\" + : \n [\n \"administrative_area_level_1\",\n + \ \"political\"\n ]\n },\n {\n + \ \"long_name\" : \"United Kingdom\",\n \"short_name\" + : \"GB\",\n \"types\" : \n [\n \"country\",\n + \ \"political\"\n ]\n }\n ],\n + \ \"formatted_address\" : \"Basildon, UK\",\n \"geometry\" + : \n {\n \"bounds\" : \n {\n \"northeast\" + : \n {\n \"lat\" : 51.5952192,\n \"lng\" + : 0.5250789\n },\n \"southwest\" : \n {\n + \ \"lat\" : 51.552998,\n \"lng\" : 0.4001419\n + \ }\n },\n \"location\" : \n {\n + \ \"lat\" : 51.57608399999999,\n \"lng\" : 0.488736\n + \ },\n \"location_type\" : \"APPROXIMATE\",\n \"viewport\" + : \n {\n \"northeast\" : \n {\n \"lat\" + : 51.5952192,\n \"lng\" : 0.5250789\n },\n + \ \"southwest\" : \n {\n \"lat\" + : 51.552998,\n \"lng\" : 0.4001419\n }\n }\n + \ },\n \"place_id\" : \"ChIJc8LrZATE2EcRidD0x-o6xFs\",\n \"types\" + : \n [\n \"locality\",\n \"political\"\n ]\n + \ }\n ],\n \"status\" : \"OK\"\n}" + recorded_at: Mon, 02 Dec 2024 09:19:10 GMT +recorded_with: VCR 6.3.1 diff --git a/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/with_a_polygon_Basildon_/with_a_medium_radius/finds_basildon_and_st_albans.yml b/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/with_a_polygon_Basildon_/with_a_medium_radius/finds_basildon_and_st_albans.yml new file mode 100644 index 0000000000..5ada8307a3 --- /dev/null +++ b/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/with_a_polygon_Basildon_/with_a_medium_radius/finds_basildon_and_st_albans.yml @@ -0,0 +1,86 @@ +--- +http_interactions: +- request: + method: get + uri: https://maps.googleapis.com/maps/api/geocode/json?address=basildon&components=country:gb&key=&language=en&sensor=false + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Teaching Vacancies Service teaching.vacancies@education.gov.uk + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Date: + - Mon, 02 Dec 2024 09:19:10 GMT + Pragma: + - no-cache + Expires: + - Fri, 01 Jan 1990 00:00:00 GMT + Cache-Control: + - no-cache, must-revalidate + Access-Control-Allow-Origin: + - "*" + Content-Security-Policy-Report-Only: + - script-src 'none'; form-action 'none'; frame-src 'none'; report-uri https://csp.withgoogle.com/csp/scaffolding/msaifdggmnwc:229:0 + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to=coop_reporting + Report-To: + - '{"group":"coop_reporting","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/scaffolding/msaifdggmnwc:229:0"}],}' + Server: + - mafe + Content-Length: + - '2350' + X-Xss-Protection: + - '0' + X-Frame-Options: + - SAMEORIGIN + Server-Timing: + - gfet4t7; dur=54 + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + body: + encoding: UTF-8 + string: "{\n \"results\" : \n [\n {\n \"address_components\" + : \n [\n {\n \"long_name\" : \"Basildon\",\n + \ \"short_name\" : \"Basildon\",\n \"types\" : + \n [\n \"locality\",\n \"political\"\n + \ ]\n },\n {\n \"long_name\" + : \"Basildon\",\n \"short_name\" : \"Basildon\",\n \"types\" + : \n [\n \"postal_town\"\n ]\n + \ },\n {\n \"long_name\" : \"Essex\",\n + \ \"short_name\" : \"Essex\",\n \"types\" : \n + \ [\n \"administrative_area_level_2\",\n \"political\"\n + \ ]\n },\n {\n \"long_name\" + : \"England\",\n \"short_name\" : \"England\",\n \"types\" + : \n [\n \"administrative_area_level_1\",\n + \ \"political\"\n ]\n },\n {\n + \ \"long_name\" : \"United Kingdom\",\n \"short_name\" + : \"GB\",\n \"types\" : \n [\n \"country\",\n + \ \"political\"\n ]\n }\n ],\n + \ \"formatted_address\" : \"Basildon, UK\",\n \"geometry\" + : \n {\n \"bounds\" : \n {\n \"northeast\" + : \n {\n \"lat\" : 51.5952192,\n \"lng\" + : 0.5250789\n },\n \"southwest\" : \n {\n + \ \"lat\" : 51.552998,\n \"lng\" : 0.4001419\n + \ }\n },\n \"location\" : \n {\n + \ \"lat\" : 51.57608399999999,\n \"lng\" : 0.488736\n + \ },\n \"location_type\" : \"APPROXIMATE\",\n \"viewport\" + : \n {\n \"northeast\" : \n {\n \"lat\" + : 51.5952192,\n \"lng\" : 0.5250789\n },\n + \ \"southwest\" : \n {\n \"lat\" + : 51.552998,\n \"lng\" : 0.4001419\n }\n }\n + \ },\n \"place_id\" : \"ChIJc8LrZATE2EcRidD0x-o6xFs\",\n \"types\" + : \n [\n \"locality\",\n \"political\"\n ]\n + \ }\n ],\n \"status\" : \"OK\"\n}" + recorded_at: Mon, 02 Dec 2024 09:19:10 GMT +recorded_with: VCR 6.3.1 diff --git a/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/with_a_polygon_Basildon_/with_a_small_radius/finds_just_basildon.yml b/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/with_a_polygon_Basildon_/with_a_small_radius/finds_just_basildon.yml new file mode 100644 index 0000000000..873089336d --- /dev/null +++ b/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/with_a_polygon_Basildon_/with_a_small_radius/finds_just_basildon.yml @@ -0,0 +1,86 @@ +--- +http_interactions: +- request: + method: get + uri: https://maps.googleapis.com/maps/api/geocode/json?address=basildon&components=country:gb&key=&language=en&sensor=false + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Teaching Vacancies Service teaching.vacancies@education.gov.uk + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Date: + - Mon, 02 Dec 2024 09:19:09 GMT + Pragma: + - no-cache + Expires: + - Fri, 01 Jan 1990 00:00:00 GMT + Cache-Control: + - no-cache, must-revalidate + Access-Control-Allow-Origin: + - "*" + Content-Security-Policy-Report-Only: + - script-src 'none'; form-action 'none'; frame-src 'none'; report-uri https://csp.withgoogle.com/csp/scaffolding/msaifdggmnwc:229:0 + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to=coop_reporting + Report-To: + - '{"group":"coop_reporting","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/scaffolding/msaifdggmnwc:229:0"}],}' + Server: + - mafe + Content-Length: + - '2350' + X-Xss-Protection: + - '0' + X-Frame-Options: + - SAMEORIGIN + Server-Timing: + - gfet4t7; dur=71 + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + body: + encoding: UTF-8 + string: "{\n \"results\" : \n [\n {\n \"address_components\" + : \n [\n {\n \"long_name\" : \"Basildon\",\n + \ \"short_name\" : \"Basildon\",\n \"types\" : + \n [\n \"locality\",\n \"political\"\n + \ ]\n },\n {\n \"long_name\" + : \"Basildon\",\n \"short_name\" : \"Basildon\",\n \"types\" + : \n [\n \"postal_town\"\n ]\n + \ },\n {\n \"long_name\" : \"Essex\",\n + \ \"short_name\" : \"Essex\",\n \"types\" : \n + \ [\n \"administrative_area_level_2\",\n \"political\"\n + \ ]\n },\n {\n \"long_name\" + : \"England\",\n \"short_name\" : \"England\",\n \"types\" + : \n [\n \"administrative_area_level_1\",\n + \ \"political\"\n ]\n },\n {\n + \ \"long_name\" : \"United Kingdom\",\n \"short_name\" + : \"GB\",\n \"types\" : \n [\n \"country\",\n + \ \"political\"\n ]\n }\n ],\n + \ \"formatted_address\" : \"Basildon, UK\",\n \"geometry\" + : \n {\n \"bounds\" : \n {\n \"northeast\" + : \n {\n \"lat\" : 51.5952192,\n \"lng\" + : 0.5250789\n },\n \"southwest\" : \n {\n + \ \"lat\" : 51.552998,\n \"lng\" : 0.4001419\n + \ }\n },\n \"location\" : \n {\n + \ \"lat\" : 51.57608399999999,\n \"lng\" : 0.488736\n + \ },\n \"location_type\" : \"APPROXIMATE\",\n \"viewport\" + : \n {\n \"northeast\" : \n {\n \"lat\" + : 51.5952192,\n \"lng\" : 0.5250789\n },\n + \ \"southwest\" : \n {\n \"lat\" + : 51.552998,\n \"lng\" : 0.4001419\n }\n }\n + \ },\n \"place_id\" : \"ChIJc8LrZATE2EcRidD0x-o6xFs\",\n \"types\" + : \n [\n \"locality\",\n \"political\"\n ]\n + \ }\n ],\n \"status\" : \"OK\"\n}" + recorded_at: Mon, 02 Dec 2024 09:19:09 GMT +recorded_with: VCR 6.3.1 diff --git a/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/without_a_polygon_basildon_postcode_/with_a_large_radius/finds_liverpool_as_well.yml b/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/without_a_polygon_basildon_postcode_/with_a_large_radius/finds_liverpool_as_well.yml new file mode 100644 index 0000000000..2ae789d63e --- /dev/null +++ b/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/without_a_polygon_basildon_postcode_/with_a_large_radius/finds_liverpool_as_well.yml @@ -0,0 +1,86 @@ +--- +http_interactions: +- request: + method: get + uri: https://maps.googleapis.com/maps/api/geocode/json?address=basildon%20ss14%203wb&components=country:gb&key=&language=en&sensor=false + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Teaching Vacancies Service teaching.vacancies@education.gov.uk + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Date: + - Fri, 29 Nov 2024 13:52:50 GMT + Pragma: + - no-cache + Expires: + - Fri, 01 Jan 1990 00:00:00 GMT + Cache-Control: + - no-cache, must-revalidate + Access-Control-Allow-Origin: + - "*" + Content-Security-Policy-Report-Only: + - script-src 'none'; form-action 'none'; frame-src 'none'; report-uri https://csp.withgoogle.com/csp/scaffolding/msaifdggmnwc:229:0 + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to=coop_reporting + Report-To: + - '{"group":"coop_reporting","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/scaffolding/msaifdggmnwc:229:0"}],}' + Server: + - mafe + Content-Length: + - '2326' + X-Xss-Protection: + - '0' + X-Frame-Options: + - SAMEORIGIN + Server-Timing: + - gfet4t7; dur=47 + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + body: + encoding: UTF-8 + string: "{\n \"results\" : \n [\n {\n \"address_components\" + : \n [\n {\n \"long_name\" : \"SS14 3WB\",\n + \ \"short_name\" : \"SS14 3WB\",\n \"types\" : + \n [\n \"postal_code\"\n ]\n + \ },\n {\n \"long_name\" : \"Basildon\",\n + \ \"short_name\" : \"Basildon\",\n \"types\" : + \n [\n \"postal_town\"\n ]\n + \ },\n {\n \"long_name\" : \"Essex\",\n + \ \"short_name\" : \"Essex\",\n \"types\" : \n + \ [\n \"administrative_area_level_2\",\n \"political\"\n + \ ]\n },\n {\n \"long_name\" + : \"England\",\n \"short_name\" : \"England\",\n \"types\" + : \n [\n \"administrative_area_level_1\",\n + \ \"political\"\n ]\n },\n {\n + \ \"long_name\" : \"United Kingdom\",\n \"short_name\" + : \"GB\",\n \"types\" : \n [\n \"country\",\n + \ \"political\"\n ]\n }\n ],\n + \ \"formatted_address\" : \"Basildon SS14 3WB, UK\",\n \"geometry\" + : \n {\n \"bounds\" : \n {\n \"northeast\" + : \n {\n \"lat\" : 51.5889501,\n \"lng\" + : 0.4710636\n },\n \"southwest\" : \n {\n + \ \"lat\" : 51.58221349999999,\n \"lng\" + : 0.4594734\n }\n },\n \"location\" : + \n {\n \"lat\" : 51.58521409999999,\n \"lng\" + : 0.4631834\n },\n \"location_type\" : \"APPROXIMATE\",\n + \ \"viewport\" : \n {\n \"northeast\" : + \n {\n \"lat\" : 51.5889501,\n \"lng\" + : 0.4710636\n },\n \"southwest\" : \n {\n + \ \"lat\" : 51.58221349999999,\n \"lng\" + : 0.4594734\n }\n }\n },\n \"place_id\" + : \"ChIJAw_TH6XG2EcRM8pv6e6_tBU\",\n \"types\" : \n [\n \"postal_code\"\n + \ ]\n }\n ],\n \"status\" : \"OK\"\n}" + recorded_at: Fri, 29 Nov 2024 13:52:50 GMT +recorded_with: VCR 6.3.1 diff --git a/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/without_a_polygon_basildon_postcode_/with_a_medium_radius/finds_basildon_and_st_albans.yml b/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/without_a_polygon_basildon_postcode_/with_a_medium_radius/finds_basildon_and_st_albans.yml new file mode 100644 index 0000000000..b569509498 --- /dev/null +++ b/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/without_a_polygon_basildon_postcode_/with_a_medium_radius/finds_basildon_and_st_albans.yml @@ -0,0 +1,86 @@ +--- +http_interactions: +- request: + method: get + uri: https://maps.googleapis.com/maps/api/geocode/json?address=basildon%20ss14%203wb&components=country:gb&key=&language=en&sensor=false + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Teaching Vacancies Service teaching.vacancies@education.gov.uk + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Date: + - Fri, 29 Nov 2024 16:38:19 GMT + Pragma: + - no-cache + Expires: + - Fri, 01 Jan 1990 00:00:00 GMT + Cache-Control: + - no-cache, must-revalidate + Access-Control-Allow-Origin: + - "*" + Content-Security-Policy-Report-Only: + - script-src 'none'; form-action 'none'; frame-src 'none'; report-uri https://csp.withgoogle.com/csp/scaffolding/msaifdggmnwc:229:0 + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to=coop_reporting + Report-To: + - '{"group":"coop_reporting","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/scaffolding/msaifdggmnwc:229:0"}],}' + Server: + - mafe + Content-Length: + - '2326' + X-Xss-Protection: + - '0' + X-Frame-Options: + - SAMEORIGIN + Server-Timing: + - gfet4t7; dur=123 + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + body: + encoding: UTF-8 + string: "{\n \"results\" : \n [\n {\n \"address_components\" + : \n [\n {\n \"long_name\" : \"SS14 3WB\",\n + \ \"short_name\" : \"SS14 3WB\",\n \"types\" : + \n [\n \"postal_code\"\n ]\n + \ },\n {\n \"long_name\" : \"Basildon\",\n + \ \"short_name\" : \"Basildon\",\n \"types\" : + \n [\n \"postal_town\"\n ]\n + \ },\n {\n \"long_name\" : \"Essex\",\n + \ \"short_name\" : \"Essex\",\n \"types\" : \n + \ [\n \"administrative_area_level_2\",\n \"political\"\n + \ ]\n },\n {\n \"long_name\" + : \"England\",\n \"short_name\" : \"England\",\n \"types\" + : \n [\n \"administrative_area_level_1\",\n + \ \"political\"\n ]\n },\n {\n + \ \"long_name\" : \"United Kingdom\",\n \"short_name\" + : \"GB\",\n \"types\" : \n [\n \"country\",\n + \ \"political\"\n ]\n }\n ],\n + \ \"formatted_address\" : \"Basildon SS14 3WB, UK\",\n \"geometry\" + : \n {\n \"bounds\" : \n {\n \"northeast\" + : \n {\n \"lat\" : 51.5889501,\n \"lng\" + : 0.4710636\n },\n \"southwest\" : \n {\n + \ \"lat\" : 51.58221349999999,\n \"lng\" + : 0.4594734\n }\n },\n \"location\" : + \n {\n \"lat\" : 51.58521409999999,\n \"lng\" + : 0.4631834\n },\n \"location_type\" : \"APPROXIMATE\",\n + \ \"viewport\" : \n {\n \"northeast\" : + \n {\n \"lat\" : 51.5889501,\n \"lng\" + : 0.4710636\n },\n \"southwest\" : \n {\n + \ \"lat\" : 51.58221349999999,\n \"lng\" + : 0.4594734\n }\n }\n },\n \"place_id\" + : \"ChIJAw_TH6XG2EcRM8pv6e6_tBU\",\n \"types\" : \n [\n \"postal_code\"\n + \ ]\n }\n ],\n \"status\" : \"OK\"\n}" + recorded_at: Fri, 29 Nov 2024 16:38:19 GMT +recorded_with: VCR 6.3.1 diff --git a/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/without_a_polygon_basildon_postcode_/with_a_small_radius/finds_just_basildon.yml b/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/without_a_polygon_basildon_postcode_/with_a_small_radius/finds_just_basildon.yml new file mode 100644 index 0000000000..673ad0a4c9 --- /dev/null +++ b/spec/fixtures/vcr/Subscription/_vacancies_matching/with_vacancies/with_location/without_a_polygon_basildon_postcode_/with_a_small_radius/finds_just_basildon.yml @@ -0,0 +1,86 @@ +--- +http_interactions: +- request: + method: get + uri: https://maps.googleapis.com/maps/api/geocode/json?address=basildon%20ss14%203wb&components=country:gb&key=&language=en&sensor=false + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Teaching Vacancies Service teaching.vacancies@education.gov.uk + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Content-Type: + - application/json; charset=UTF-8 + Date: + - Fri, 29 Nov 2024 13:52:49 GMT + Pragma: + - no-cache + Expires: + - Fri, 01 Jan 1990 00:00:00 GMT + Cache-Control: + - no-cache, must-revalidate + Access-Control-Allow-Origin: + - "*" + Content-Security-Policy-Report-Only: + - script-src 'none'; form-action 'none'; frame-src 'none'; report-uri https://csp.withgoogle.com/csp/scaffolding/msaifdggmnwc:229:0 + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to=coop_reporting + Report-To: + - '{"group":"coop_reporting","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/scaffolding/msaifdggmnwc:229:0"}],}' + Server: + - mafe + Content-Length: + - '2326' + X-Xss-Protection: + - '0' + X-Frame-Options: + - SAMEORIGIN + Server-Timing: + - gfet4t7; dur=110 + Alt-Svc: + - h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 + body: + encoding: UTF-8 + string: "{\n \"results\" : \n [\n {\n \"address_components\" + : \n [\n {\n \"long_name\" : \"SS14 3WB\",\n + \ \"short_name\" : \"SS14 3WB\",\n \"types\" : + \n [\n \"postal_code\"\n ]\n + \ },\n {\n \"long_name\" : \"Basildon\",\n + \ \"short_name\" : \"Basildon\",\n \"types\" : + \n [\n \"postal_town\"\n ]\n + \ },\n {\n \"long_name\" : \"Essex\",\n + \ \"short_name\" : \"Essex\",\n \"types\" : \n + \ [\n \"administrative_area_level_2\",\n \"political\"\n + \ ]\n },\n {\n \"long_name\" + : \"England\",\n \"short_name\" : \"England\",\n \"types\" + : \n [\n \"administrative_area_level_1\",\n + \ \"political\"\n ]\n },\n {\n + \ \"long_name\" : \"United Kingdom\",\n \"short_name\" + : \"GB\",\n \"types\" : \n [\n \"country\",\n + \ \"political\"\n ]\n }\n ],\n + \ \"formatted_address\" : \"Basildon SS14 3WB, UK\",\n \"geometry\" + : \n {\n \"bounds\" : \n {\n \"northeast\" + : \n {\n \"lat\" : 51.5889501,\n \"lng\" + : 0.4710636\n },\n \"southwest\" : \n {\n + \ \"lat\" : 51.58221349999999,\n \"lng\" + : 0.4594734\n }\n },\n \"location\" : + \n {\n \"lat\" : 51.58521409999999,\n \"lng\" + : 0.4631834\n },\n \"location_type\" : \"APPROXIMATE\",\n + \ \"viewport\" : \n {\n \"northeast\" : + \n {\n \"lat\" : 51.5889501,\n \"lng\" + : 0.4710636\n },\n \"southwest\" : \n {\n + \ \"lat\" : 51.58221349999999,\n \"lng\" + : 0.4594734\n }\n }\n },\n \"place_id\" + : \"ChIJAw_TH6XG2EcRM8pv6e6_tBU\",\n \"types\" : \n [\n \"postal_code\"\n + \ ]\n }\n ],\n \"status\" : \"OK\"\n}" + recorded_at: Fri, 29 Nov 2024 13:52:49 GMT +recorded_with: VCR 6.3.1 diff --git a/spec/jobs/send_daily_alert_email_job_spec.rb b/spec/jobs/send_daily_alert_email_job_spec.rb index f747f07a6a..fc86b75142 100644 --- a/spec/jobs/send_daily_alert_email_job_spec.rb +++ b/spec/jobs/send_daily_alert_email_job_spec.rb @@ -4,165 +4,24 @@ subject(:job) { described_class.perform_later } describe "#perform" do - let(:mail) { double(:mail, deliver_later: nil) } + let(:mail) { double(:mail) } context "with vacancies" do before do - create(:vacancy, :published_slugged, job_roles: %w[headteacher], visa_sponsorship_available: false, ect_status: :ect_unsuitable, subjects: %w[German], phases: %w[secondary], working_patterns: %w[full_time]) + create(:vacancy, :published_slugged) end - context "with keyword" do - let(:subscription) { create(:daily_subscription, keyword: keyword) } - let(:nice_job) { Vacancy.find_by!(contact_number: "9") } + let(:subscription) { create(:daily_subscription) } - before do - create(:vacancy, :published_slugged, contact_number: "9", job_title: "This is a Really Nice job", job_roles: %w[headteacher], phases: %w[secondary], working_patterns: %w[full_time]) - end - - context "with plain keyword" do - let(:keyword) { "nice" } - - it "only finds the nice job" do - expect(Jobseekers::AlertMailer).to receive(:alert).with(subscription.id, [nice_job].pluck(:id)) { mail } - perform_enqueued_jobs { job } - end - end - - context "with keyword caps and trailing space" do - let(:keyword) { "Nice " } - - it "only finds the nice job" do - expect(Jobseekers::AlertMailer).to receive(:alert).with(subscription.id, [nice_job].pluck(:id)) { mail } - perform_enqueued_jobs { job } - end - end - end - - # context "with location" do - # context "with nationwide location" do - # let(:subscription) { create(:daily_subscription, location: "england")} - # end - # end - - context "with teaching job roles" do - before do - create(:vacancy, :published_slugged, contact_number: "1", job_roles: %w[teacher], subjects: %w[English], phases: %w[secondary], working_patterns: %w[full_time]) - end - - let(:teacher_vacancy) { Vacancy.find_by!(contact_number: "1") } - let(:subscription) { create(:subscription, teaching_job_roles: %w[teacher], frequency: :daily) } - - it "only finds the teaching job" do - expect(Jobseekers::AlertMailer).to receive(:alert).with(subscription.id, [teacher_vacancy].pluck(:id)) { mail } - perform_enqueued_jobs { job } - end - end - - context "with support job roles" do - before do - create(:vacancy, :published_slugged, contact_number: "2", job_roles: %w[it_support], subjects: %w[English], phases: %w[secondary], working_patterns: %w[full_time]) - end - - let(:support_vacancy) { Vacancy.find_by!(contact_number: "2") } - let(:subscription) { create(:subscription, support_job_roles: %w[it_support], frequency: :daily) } - - it "only finds the support job" do - expect(Jobseekers::AlertMailer).to receive(:alert).with(subscription.id, [support_vacancy].pluck(:id)) { mail } - perform_enqueued_jobs { job } - end - end - - context "with visa sponsorship" do - before do - create(:vacancy, :published_slugged, contact_number: "3", visa_sponsorship_available: true, job_roles: %w[headteacher], subjects: %w[English], phases: %w[secondary], working_patterns: %w[full_time]) - end - - let(:visa_job) { Vacancy.find_by!(contact_number: "3") } - let(:subscription) { create(:subscription, :visa_sponsorship_required, frequency: :daily) } - - it "only finds the visa job" do - expect(Jobseekers::AlertMailer).to receive(:alert).with(subscription.id, [visa_job].pluck(:id)) { mail } - perform_enqueued_jobs { job } - end - end - - context "with ECT" do - before do - create(:vacancy, :published_slugged, contact_number: "4", ect_status: :ect_suitable, job_roles: %w[headteacher teacher], subjects: %w[English], phases: %w[secondary], working_patterns: %w[full_time]) - create(:vacancy, :published_slugged, ect_status: nil, job_roles: %w[headteacher teacher], subjects: %w[English], phases: %w[secondary], working_patterns: %w[full_time]) - end - - let(:subscription) { create(:subscription, :ect_suitable, frequency: :daily) } - let(:ect_job) { Vacancy.find_by!(contact_number: "4") } - - it "only finds the ECT job" do - expect(Jobseekers::AlertMailer).to receive(:alert).with(subscription.id, [ect_job].pluck(:id)) { mail } - perform_enqueued_jobs { job } - end - end - - context "with subjects filter" do - before do - create(:vacancy, :published_slugged, contact_number: "5", job_roles: %w[headteacher], subjects: %w[French], phases: %w[secondary], working_patterns: %w[full_time]) - end - - let(:french_job) { Vacancy.find_by!(contact_number: "5") } - let(:subscription) { create(:subscription, subjects: %w[French], frequency: :daily) } - - it "only finds the French job" do - expect(Jobseekers::AlertMailer).to receive(:alert).with(subscription.id, [french_job].pluck(:id)) { mail } - perform_enqueued_jobs { job } - end - end - - context "with phases filter" do - before do - create(:vacancy, :published_slugged, contact_number: "6", job_roles: %w[headteacher], phases: %w[primary], working_patterns: %w[full_time]) - end - - let(:subscription) { create(:subscription, phases: %w[primary], frequency: :daily) } - let(:primary_job) { Vacancy.find_by!(contact_number: "6") } - - it "only finds the primary school job" do - expect(Jobseekers::AlertMailer).to receive(:alert).with(subscription.id, [primary_job].pluck(:id)) { mail } - perform_enqueued_jobs { job } - end - end - - context "with working patterns filter" do - before do - create(:vacancy, :published_slugged, contact_number: "7", job_roles: %w[headteacher], phases: %w[secondary], working_patterns: %w[part_time]) - end - - let(:subscription) { create(:subscription, working_patterns: %w[part_time], frequency: :daily) } - let(:part_time_job) { Vacancy.find_by!(contact_number: "7") } - - it "only finds the part_time job" do - expect(Jobseekers::AlertMailer).to receive(:alert).with(subscription.id, [part_time_job].pluck(:id)) { mail } - perform_enqueued_jobs { job } - end - end - - context "with organisation filter" do - before do - create(:vacancy, :published_slugged, contact_number: "8", organisations: [new_org], job_roles: %w[headteacher], phases: %w[secondary], working_patterns: %w[full_time]) - end - - let(:new_org) { create(:school) } - let(:new_org_job) { Vacancy.find_by!(contact_number: "8") } - let(:subscription) { create(:subscription, organisation_slug: new_org.slug, frequency: :daily) } - - it "only finds the new_publisher job" do - expect(Jobseekers::AlertMailer).to receive(:alert).with(subscription.id, [new_org_job].pluck(:id)) { mail } - perform_enqueued_jobs { job } - end + it "sends an email" do + expect(Jobseekers::AlertMailer).to receive(:alert).with(subscription.id, Vacancy.pluck(:id)) { mail } + expect(mail).to receive(:deliver_later) { ActionMailer::MailDeliveryJob.new } + perform_enqueued_jobs { job } end context "when a run exists" do - let(:subscription) { create(:subscription, frequency: :daily) } - before do - subscription.alert_runs.create(run_on: Date.current) + create(:alert_run, subscription: subscription, run_on: Date.current) end it "does not send another email" do @@ -172,21 +31,6 @@ end end - context "with old and new vacancies" do - before do - create(:vacancy, :published_slugged, contact_number: "2", publish_on: Date.current) - create(:vacancy, :published_slugged, contact_number: "1", publish_on: 1.day.ago) - end - - let(:expected_vacancies) { [Vacancy.find_by!(contact_number: "2"), Vacancy.find_by!(contact_number: "1")] } - let(:subscription) { create(:subscription, frequency: :daily) } - - it "sends the vacancies in publish order descending" do - expect(Jobseekers::AlertMailer).to receive(:alert).with(subscription.id, expected_vacancies.pluck(:id)) { mail } - perform_enqueued_jobs { job } - end - end - context "with no vacancies" do let(:subscription) { create(:subscription, frequency: :daily) } diff --git a/spec/models/subscription_spec.rb b/spec/models/subscription_spec.rb index 078f70ae92..841bdc2990 100644 --- a/spec/models/subscription_spec.rb +++ b/spec/models/subscription_spec.rb @@ -128,4 +128,243 @@ end end end + + describe "#vacancies_matching" do + let(:vacancies) { subscription.vacancies_matching(default_scope) } + let(:default_scope) { Vacancy.includes(:organisations).live.order(publish_on: :desc) } + + context "with vacancies" do + before do + YAML.unsafe_load_file(Rails.root.join("spec/fixtures/polygons.yml")).map(&:attributes).each { |s| LocationPolygon.create!(s) } + YAML.unsafe_load_file(Rails.root.join("spec/fixtures/liverpool_schools.yml")).map(&:attributes).each { |s| School.create!(s) } + create(:vacancy, :published_slugged, slug: "liv", contact_number: "0", organisations: [liverpool_school], job_roles: %w[headteacher], visa_sponsorship_available: false, ect_status: :ect_unsuitable, subjects: %w[German], phases: %w[secondary], working_patterns: %w[full_time]) + end + + let(:liverpool_school) { School.find_by!(town: "Liverpool") } + + context "with keyword" do + let(:subscription) { create(:daily_subscription, keyword: keyword) } + let(:nice_job) { Vacancy.find_by!(contact_number: "9") } + + before do + create(:vacancy, :published_slugged, contact_number: "9", job_title: "This is a Really Nice job", job_roles: %w[headteacher], phases: %w[secondary], working_patterns: %w[full_time]) + end + + context "with plain keyword" do + let(:keyword) { "nice" } + + it "only finds the nice job" do + expect(vacancies).to eq([nice_job]) + end + end + + context "with keyword caps and trailing space" do + let(:keyword) { "Nice " } + + it "only finds the nice job" do + expect(vacancies).to eq([nice_job]) + end + end + end + + context "with location" do + before do + YAML.unsafe_load_file(Rails.root.join("spec/fixtures/basildon_schools.yml")).map(&:attributes).each { |s| School.create!(s) } + YAML.unsafe_load_file(Rails.root.join("spec/fixtures/st_albans_schools.yml")).map(&:attributes).each { |s| School.create!(s) } + create(:vacancy, :published_slugged, slug: "bas", contact_number: "1", organisations: [basildon_school]) + create(:vacancy, :published_slugged, slug: "sta", contact_number: "2", organisations: [st_albans_school]) + end + + let(:basildon_school) { School.find_by!(town: "Basildon") } + let(:st_albans_school) { School.find_by!(town: "St Albans") } + let(:liverpool_vacancy) { Vacancy.find_by!(contact_number: "0") } + let(:basildon_vacancy) { Vacancy.find_by!(contact_number: "1") } + let(:st_albans_vacancy) { Vacancy.find_by!(contact_number: "2") } + + context "with nationwide location" do + let(:subscription) { create(:daily_subscription, location: "england") } + + it "finds everything" do + expect(vacancies.map(&:slug)).to contain_exactly(liverpool_vacancy.slug, basildon_vacancy.slug, st_albans_vacancy.slug) + end + end + + context "with a polygon (Basildon)", :geocode, :vcr do + let(:subscription) { create(:daily_subscription, location: "Basildon", radius: radius) } + + context "with a small radius" do + let(:radius) { 4 } + + it "finds just basildon" do + expect(vacancies.map(&:slug)).to eq([basildon_vacancy.slug]) + end + end + + context "with a medium radius" do + let(:radius) { 50 } + + it "finds basildon and st albans" do + expect(vacancies.map(&:slug)).to contain_exactly(st_albans_vacancy.slug, basildon_vacancy.slug) + end + end + + context "with a large radius" do + let(:radius) { 200 } + + it "finds liverpool as well" do + expect(vacancies.map(&:slug)).to contain_exactly(liverpool_vacancy.slug, st_albans_vacancy.slug, basildon_vacancy.slug) + end + end + end + + context "without a polygon (basildon postcode)", :geocode, :vcr do + let(:subscription) { create(:daily_subscription, location: "Basildon SS14 3WB", radius: radius) } + + context "with a small radius" do + let(:radius) { 4 } + + it "finds just basildon" do + expect(vacancies).to eq([basildon_vacancy]) + end + end + + context "with a medium radius" do + let(:radius) { 50 } + + it "finds basildon and st albans" do + expect(vacancies).to contain_exactly(st_albans_vacancy, basildon_vacancy) + end + end + + context "with a large radius" do + let(:radius) { 200 } + + it "finds liverpool as well" do + expect(vacancies).to contain_exactly(liverpool_vacancy, st_albans_vacancy, basildon_vacancy) + end + end + end + end + + context "with teaching job roles" do + before do + create(:vacancy, :published_slugged, contact_number: "1", job_roles: %w[teacher], subjects: %w[English], phases: %w[secondary], working_patterns: %w[full_time]) + end + + let(:teacher_vacancy) { Vacancy.find_by!(contact_number: "1") } + let(:subscription) { create(:subscription, teaching_job_roles: %w[teacher], frequency: :daily) } + + it "only finds the teaching job" do + expect(vacancies).to eq([teacher_vacancy]) + end + end + + context "with support job roles" do + before do + create(:vacancy, :published_slugged, contact_number: "2", job_roles: %w[it_support], subjects: %w[English], phases: %w[secondary], working_patterns: %w[full_time]) + end + + let(:support_vacancy) { Vacancy.find_by!(contact_number: "2") } + let(:subscription) { create(:subscription, support_job_roles: %w[it_support], frequency: :daily) } + + it "only finds the support job" do + expect(vacancies).to eq([support_vacancy]) + end + end + + context "with visa sponsorship" do + before do + create(:vacancy, :published_slugged, contact_number: "3", visa_sponsorship_available: true, job_roles: %w[headteacher], subjects: %w[English], phases: %w[secondary], working_patterns: %w[full_time]) + end + + let(:visa_job) { Vacancy.find_by!(contact_number: "3") } + let(:subscription) { create(:subscription, :visa_sponsorship_required, frequency: :daily) } + + it "only finds the visa job" do + expect(vacancies).to eq([visa_job]) + end + end + + context "with ECT" do + before do + create(:vacancy, :published_slugged, contact_number: "4", ect_status: :ect_suitable, job_roles: %w[headteacher teacher], subjects: %w[English], phases: %w[secondary], working_patterns: %w[full_time]) + create(:vacancy, :published_slugged, ect_status: nil, job_roles: %w[headteacher teacher], subjects: %w[English], phases: %w[secondary], working_patterns: %w[full_time]) + end + + let(:subscription) { create(:subscription, :ect_suitable, frequency: :daily) } + let(:ect_job) { Vacancy.find_by!(contact_number: "4") } + + it "only finds the ECT job" do + expect(vacancies).to eq([ect_job]) + end + end + + context "with subjects filter" do + before do + create(:vacancy, :published_slugged, contact_number: "5", job_roles: %w[headteacher], subjects: %w[French], phases: %w[secondary], working_patterns: %w[full_time]) + end + + let(:french_job) { Vacancy.find_by!(contact_number: "5") } + let(:subscription) { create(:subscription, subjects: %w[French], frequency: :daily) } + + it "only finds the French job" do + expect(vacancies).to eq([french_job]) + end + end + + context "with phases filter" do + before do + create(:vacancy, :published_slugged, contact_number: "6", job_roles: %w[headteacher], phases: %w[primary], working_patterns: %w[full_time]) + end + + let(:subscription) { create(:subscription, phases: %w[primary], frequency: :daily) } + let(:primary_job) { Vacancy.find_by!(contact_number: "6") } + + it "only finds the primary school job" do + expect(vacancies).to eq([primary_job]) + end + end + + context "with working patterns filter" do + before do + create(:vacancy, :published_slugged, contact_number: "7", job_roles: %w[headteacher], phases: %w[secondary], working_patterns: %w[part_time]) + end + + let(:subscription) { create(:daily_subscription, working_patterns: %w[part_time]) } + let(:part_time_job) { Vacancy.find_by!(contact_number: "7") } + + it "only finds the part_time job" do + expect(vacancies).to eq([part_time_job]) + end + end + + context "with organisation filter" do + before do + create(:vacancy, :published_slugged, contact_number: "8", organisations: [new_org], job_roles: %w[headteacher], phases: %w[secondary], working_patterns: %w[full_time]) + end + + let(:new_org) { create(:school) } + let(:new_org_job) { Vacancy.find_by!(contact_number: "8") } + let(:subscription) { create(:subscription, organisation_slug: new_org.slug, frequency: :daily) } + + it "only finds the new_publisher job" do + expect(vacancies).to eq([new_org_job]) + end + end + end + + context "with old and new vacancies" do + before do + create(:vacancy, :published_slugged, contact_number: "2", publish_on: Date.current) + create(:vacancy, :published_slugged, contact_number: "1", publish_on: 1.day.ago) + end + + let(:expected_vacancies) { [Vacancy.find_by!(contact_number: "2"), Vacancy.find_by!(contact_number: "1")] } + let(:subscription) { create(:daily_subscription) } + + it "sends the vacancies in publish order descending" do + expect(vacancies).to eq(expected_vacancies) + end + end + end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index a1cfb6408d..fc37cebe9a 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -76,6 +76,11 @@ stub_request(:get, %r{maps.googleapis.com/maps/api/place/autocomplete}).to_return(status: 200, body: '{"predictions": []}', headers: {}) end + config.before(:each, geocode: true) do + allow(Geocoder).to receive(:search).and_call_original + allow(Rails.application.config).to receive(:geocoder_lookup).and_return(:default) + end + config.before(:each, type: :system) do driven_by :rack_test Capybara.default_host = "http://#{ENV.fetch('DOMAIN', 'localhost:3000')}" @@ -112,11 +117,6 @@ allow(DisableExpensiveJobs).to receive(:enabled?).and_return(true) end - config.before(:each, geocode: true) do - allow(Geocoder).to receive(:search).and_call_original - allow(Rails.application.config).to receive(:geocoder_lookup).and_return(:default) - end - config.around(:each, :with_csrf_protection) do |example| orig = ActionController::Base.allow_forgery_protection @@ -166,6 +166,34 @@ config.ignore_localhost = true config.ignore_hosts "ea-edubase-api-prod.azurewebsites.net", "selenium-chrome" config.ignore_hosts IPSocket.getaddress(Socket.gethostname) if ENV.fetch("DEVCONTAINER", nil) == "true" + + # defaults to method and URI + config.default_cassette_options = { + match_requests_on: %i[ + method + uri_without_key_parameter + ], + } + + # we redact the 'key' parameter on map searches, so we need to exclude it from matches too. + # as it defaults to matching the uri (which includes the query params) + config.register_request_matcher :uri_without_key_parameter do |r1, r2| + if r1.parsed_uri.host == "maps.googleapis.com" + r1.parsed_uri.host == r2.parsed_uri.host && + r1.parsed_uri.scheme == r2.parsed_uri.scheme && + r1.parsed_uri.port == r2.parsed_uri.port && + r1.parsed_uri.path == r2.parsed_uri.path && + URI::QueryParams.parse(r1.parsed_uri.query).except("key") == URI::QueryParams.parse(r2.parsed_uri.query).except("key") + else + r1.uri == r2.uri + end + end + + config.filter_sensitive_data("") do |interaction| + if interaction.request.parsed_uri.host == "maps.googleapis.com" + URI::QueryParams.parse(interaction.request.parsed_uri.query)["key"] + end + end end Shoulda::Matchers.configure do |config|