Merge pull request #15351 from civicrm/5.18
authorTim Otten <totten@civicrm.org>
Fri, 27 Sep 2019 04:22:17 +0000 (21:22 -0700)
committerGitHub <noreply@github.com>
Fri, 27 Sep 2019 04:22:17 +0000 (21:22 -0700)
5.18

644 files changed:
CONTRIBUTORS.txt
CRM/Admin/Page/APIExplorer.php
CRM/Admin/Page/ConfigTaskList.php
CRM/Api4/Page/AJAX.php [new file with mode: 0644]
CRM/Api4/Page/Api4Explorer.php [new file with mode: 0644]
CRM/Api4/Services.php [new file with mode: 0644]
CRM/Batch/Form/Entry.php
CRM/Contact/BAO/Contact.php
CRM/Contact/BAO/Individual.php
CRM/Contribute/BAO/Contribution.php
CRM/Contribute/Form/Contribution/Confirm.php
CRM/Contribute/Import/Parser/Contribution.php
CRM/Core/BAO/Dashboard.php
CRM/Core/Block.php
CRM/Core/ClassLoader.php
CRM/Core/Config/Runtime.php
CRM/Core/Form.php
CRM/Core/Menu.php
CRM/Core/Resources.php
CRM/Core/xml/Menu/Api4.xml [new file with mode: 0644]
CRM/Export/BAO/ExportProcessor.php
CRM/Mailing/DAO/Mailing.php
CRM/Mailing/DAO/MailingJob.php
CRM/Member/BAO/MembershipPayment.php
CRM/Price/BAO/LineItem.php
CRM/Report/Form/Contact/CurrentEmployer.php
CRM/Report/Form/Contribute/Bookkeeping.php
CRM/Report/Form/Contribute/History.php
CRM/Report/Form/Contribute/SoftCredit.php
CRM/Report/Form/Contribute/TopDonor.php
CRM/Report/Form/Event/ParticipantListCount.php
CRM/Report/Form/Event/ParticipantListing.php
CRM/Upgrade/Form.php
CRM/Upgrade/Incremental/php/FiveNineteen.php [new file with mode: 0644]
CRM/Upgrade/Incremental/sql/5.19.alpha1.mysql.tpl [new file with mode: 0644]
CRM/Utils/Hook.php
CRM/Utils/JS.php
CRM/Utils/System/Joomla.php
Civi/API/Events.php
Civi/Angular/Manager.php
Civi/Api4/ACL.php [new file with mode: 0644]
Civi/Api4/Action/Address/AddressSaveTrait.php [new file with mode: 0644]
Civi/Api4/Action/Address/Create.php [new file with mode: 0644]
Civi/Api4/Action/Address/Save.php [new file with mode: 0644]
Civi/Api4/Action/Address/Update.php [new file with mode: 0644]
Civi/Api4/Action/Campaign/Get.php [new file with mode: 0644]
Civi/Api4/Action/Contact/GetChecksum.php [new file with mode: 0644]
Civi/Api4/Action/Contact/GetFields.php [new file with mode: 0644]
Civi/Api4/Action/Contact/ValidateChecksum.php [new file with mode: 0644]
Civi/Api4/Action/CustomValue/Create.php [new file with mode: 0644]
Civi/Api4/Action/CustomValue/Delete.php [new file with mode: 0644]
Civi/Api4/Action/CustomValue/Get.php [new file with mode: 0644]
Civi/Api4/Action/CustomValue/GetActions.php [new file with mode: 0644]
Civi/Api4/Action/CustomValue/GetFields.php [new file with mode: 0644]
Civi/Api4/Action/CustomValue/Replace.php [new file with mode: 0644]
Civi/Api4/Action/CustomValue/Save.php [new file with mode: 0644]
Civi/Api4/Action/CustomValue/Update.php [new file with mode: 0644]
Civi/Api4/Action/Domain/Get.php [new file with mode: 0644]
Civi/Api4/Action/Entity/Get.php [new file with mode: 0644]
Civi/Api4/Action/Entity/GetLinks.php [new file with mode: 0644]
Civi/Api4/Action/Event/Get.php [new file with mode: 0644]
Civi/Api4/Action/GetActions.php [new file with mode: 0644]
Civi/Api4/Action/GroupContact/Create.php [new file with mode: 0644]
Civi/Api4/Action/GroupContact/GroupContactSaveTrait.php [new file with mode: 0644]
Civi/Api4/Action/GroupContact/Save.php [new file with mode: 0644]
Civi/Api4/Action/GroupContact/Update.php [new file with mode: 0644]
Civi/Api4/Action/Relationship/Get.php [new file with mode: 0644]
Civi/Api4/Action/Setting/AbstractSettingAction.php [new file with mode: 0644]
Civi/Api4/Action/Setting/Get.php [new file with mode: 0644]
Civi/Api4/Action/Setting/GetFields.php [new file with mode: 0644]
Civi/Api4/Action/Setting/Revert.php [new file with mode: 0644]
Civi/Api4/Action/Setting/Set.php [new file with mode: 0644]
Civi/Api4/Action/System/Check.php [new file with mode: 0644]
Civi/Api4/Action/System/Flush.php [new file with mode: 0644]
Civi/Api4/ActionSchedule.php [new file with mode: 0644]
Civi/Api4/Activity.php [new file with mode: 0644]
Civi/Api4/ActivityContact.php [new file with mode: 0644]
Civi/Api4/Address.php [new file with mode: 0644]
Civi/Api4/Campaign.php [new file with mode: 0644]
Civi/Api4/Contact.php [new file with mode: 0644]
Civi/Api4/ContactType.php [new file with mode: 0644]
Civi/Api4/Contribution.php [new file with mode: 0644]
Civi/Api4/ContributionPage.php [new file with mode: 0644]
Civi/Api4/CustomField.php [new file with mode: 0644]
Civi/Api4/CustomGroup.php [new file with mode: 0644]
Civi/Api4/CustomValue.php [new file with mode: 0644]
Civi/Api4/Domain.php [new file with mode: 0644]
Civi/Api4/Email.php [new file with mode: 0644]
Civi/Api4/Entity.php [new file with mode: 0644]
Civi/Api4/EntityTag.php [new file with mode: 0644]
Civi/Api4/Event.php [new file with mode: 0644]
Civi/Api4/Event/Events.php [new file with mode: 0644]
Civi/Api4/Event/GetSpecEvent.php [new file with mode: 0644]
Civi/Api4/Event/PostSelectQueryEvent.php [new file with mode: 0644]
Civi/Api4/Event/SchemaMapBuildEvent.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/ContactPreSaveSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/ContactSchemaMapSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/ContributionPreSaveSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/CustomFieldPreSaveSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/Generic/AbstractPrepareSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/Generic/PreCreationSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/Generic/PreSaveSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/IsCurrentSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/PermissionCheckSubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/PostSelectQuerySubscriber.php [new file with mode: 0644]
Civi/Api4/Event/Subscriber/ValidateFieldsSubscriber.php [new file with mode: 0644]
Civi/Api4/Generic/AbstractAction.php [new file with mode: 0644]
Civi/Api4/Generic/AbstractBatchAction.php [new file with mode: 0644]
Civi/Api4/Generic/AbstractCreateAction.php [new file with mode: 0644]
Civi/Api4/Generic/AbstractEntity.php [new file with mode: 0644]
Civi/Api4/Generic/AbstractGetAction.php [new file with mode: 0644]
Civi/Api4/Generic/AbstractQueryAction.php [new file with mode: 0644]
Civi/Api4/Generic/AbstractSaveAction.php [new file with mode: 0644]
Civi/Api4/Generic/AbstractUpdateAction.php [new file with mode: 0644]
Civi/Api4/Generic/BasicBatchAction.php [new file with mode: 0644]
Civi/Api4/Generic/BasicCreateAction.php [new file with mode: 0644]
Civi/Api4/Generic/BasicGetAction.php [new file with mode: 0644]
Civi/Api4/Generic/BasicGetFieldsAction.php [new file with mode: 0644]
Civi/Api4/Generic/BasicReplaceAction.php [new file with mode: 0644]
Civi/Api4/Generic/BasicSaveAction.php [new file with mode: 0644]
Civi/Api4/Generic/BasicUpdateAction.php [new file with mode: 0644]
Civi/Api4/Generic/DAOCreateAction.php [new file with mode: 0644]
Civi/Api4/Generic/DAODeleteAction.php [new file with mode: 0644]
Civi/Api4/Generic/DAOEntity.php [new file with mode: 0644]
Civi/Api4/Generic/DAOGetAction.php [new file with mode: 0644]
Civi/Api4/Generic/DAOGetFieldsAction.php [new file with mode: 0644]
Civi/Api4/Generic/DAOSaveAction.php [new file with mode: 0644]
Civi/Api4/Generic/DAOUpdateAction.php [new file with mode: 0644]
Civi/Api4/Generic/Result.php [new file with mode: 0644]
Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php [new file with mode: 0644]
Civi/Api4/Generic/Traits/CustomValueActionTrait.php [new file with mode: 0644]
Civi/Api4/Generic/Traits/DAOActionTrait.php [new file with mode: 0644]
Civi/Api4/Generic/Traits/IsCurrentTrait.php [new file with mode: 0644]
Civi/Api4/Group.php [new file with mode: 0644]
Civi/Api4/GroupContact.php [new file with mode: 0644]
Civi/Api4/GroupNesting.php [new file with mode: 0644]
Civi/Api4/GroupOrganization.php [new file with mode: 0644]
Civi/Api4/IM.php [new file with mode: 0644]
Civi/Api4/LocationType.php [new file with mode: 0644]
Civi/Api4/MailSettings.php [new file with mode: 0644]
Civi/Api4/Mapping.php [new file with mode: 0644]
Civi/Api4/MappingField.php [new file with mode: 0644]
Civi/Api4/Navigation.php [new file with mode: 0644]
Civi/Api4/Note.php [new file with mode: 0644]
Civi/Api4/OpenID.php [new file with mode: 0644]
Civi/Api4/OptionGroup.php [new file with mode: 0644]
Civi/Api4/OptionValue.php [new file with mode: 0644]
Civi/Api4/Participant.php [new file with mode: 0644]
Civi/Api4/Phone.php [new file with mode: 0644]
Civi/Api4/Provider/ActionObjectProvider.php [new file with mode: 0644]
Civi/Api4/Query/Api4SelectQuery.php [new file with mode: 0644]
Civi/Api4/Relationship.php [new file with mode: 0644]
Civi/Api4/RelationshipType.php [new file with mode: 0644]
Civi/Api4/Result/ReplaceResult.php [new file with mode: 0644]
Civi/Api4/Route.php [new file with mode: 0644]
Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php [new file with mode: 0644]
Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php [new file with mode: 0644]
Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php [new file with mode: 0644]
Civi/Api4/Service/Schema/Joinable/Joinable.php [new file with mode: 0644]
Civi/Api4/Service/Schema/Joinable/OptionValueJoinable.php [new file with mode: 0644]
Civi/Api4/Service/Schema/Joiner.php [new file with mode: 0644]
Civi/Api4/Service/Schema/SchemaMap.php [new file with mode: 0644]
Civi/Api4/Service/Schema/SchemaMapBuilder.php [new file with mode: 0644]
Civi/Api4/Service/Schema/Table.php [new file with mode: 0644]
Civi/Api4/Service/Spec/CustomFieldSpec.php [new file with mode: 0644]
Civi/Api4/Service/Spec/FieldSpec.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/ACLCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/ContactTypeCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/CustomFieldCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/DefaultLocationTypeProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/DomainCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/EntityTagCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/GroupCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/MappingCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/NavigationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/NoteCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/OptionValueCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/PhoneCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/RelationshipTypeCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/StatusPreferenceCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/UFFieldCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/Provider/UFMatchCreationSpecProvider.php [new file with mode: 0644]
Civi/Api4/Service/Spec/RequestSpec.php [new file with mode: 0644]
Civi/Api4/Service/Spec/SpecFormatter.php [new file with mode: 0644]
Civi/Api4/Service/Spec/SpecGatherer.php [new file with mode: 0644]
Civi/Api4/Setting.php [new file with mode: 0644]
Civi/Api4/StatusPreference.php [new file with mode: 0644]
Civi/Api4/System.php [new file with mode: 0644]
Civi/Api4/Tag.php [new file with mode: 0644]
Civi/Api4/UFField.php [new file with mode: 0644]
Civi/Api4/UFGroup.php [new file with mode: 0644]
Civi/Api4/UFJoin.php [new file with mode: 0644]
Civi/Api4/UFMatch.php [new file with mode: 0644]
Civi/Api4/Utils/ActionUtil.php [new file with mode: 0644]
Civi/Api4/Utils/ArrayInsertionUtil.php [new file with mode: 0644]
Civi/Api4/Utils/CoreUtil.php [new file with mode: 0644]
Civi/Api4/Utils/FormattingUtil.php [new file with mode: 0644]
Civi/Api4/Utils/ReflectionUtils.php [new file with mode: 0644]
Civi/Api4/Website.php [new file with mode: 0644]
Civi/Api4/services.xml [new file with mode: 0644]
Civi/Core/Container.php
Civi/Test/Api3DocTrait.php
Civi/Test/Api3TestTrait.php
ang/api4.ang.php [new file with mode: 0644]
ang/api4.js [new file with mode: 0644]
ang/api4/crmApi4.js [new file with mode: 0644]
ang/api4Explorer.ang.php [new file with mode: 0644]
ang/api4Explorer.js [new file with mode: 0644]
ang/api4Explorer/Chain.html [new file with mode: 0644]
ang/api4Explorer/Explorer.html [new file with mode: 0644]
ang/api4Explorer/Explorer.js [new file with mode: 0644]
ang/api4Explorer/WhereClause.html [new file with mode: 0644]
ang/crmCaseType.js
api/api.php
api/v3/examples/Activity/ContactRefCustomField.ex.php [moved from api/v3/examples/Activity/ContactRefCustomField.php with 100% similarity]
api/v3/examples/Activity/ContactRefCustomFieldGet.ex.php [moved from api/v3/examples/Activity/ContactRefCustomFieldGet.php with 100% similarity]
api/v3/examples/Activity/Create.ex.php [moved from api/v3/examples/Activity/Create.php with 100% similarity]
api/v3/examples/Activity/DateTimeHigh.ex.php [moved from api/v3/examples/Activity/DateTimeHigh.php with 100% similarity]
api/v3/examples/Activity/DateTimeLow.ex.php [moved from api/v3/examples/Activity/DateTimeLow.php with 100% similarity]
api/v3/examples/Activity/Delete.ex.php [moved from api/v3/examples/Activity/Delete.php with 100% similarity]
api/v3/examples/Activity/Get.ex.php [moved from api/v3/examples/Activity/Get.php with 100% similarity]
api/v3/examples/Activity/GetFields.ex.php [moved from api/v3/examples/Activity/GetFields.php with 100% similarity]
api/v3/examples/Activity/GetTargetandAssignee.ex.php [moved from api/v3/examples/Activity/GetTargetandAssignee.php with 100% similarity]
api/v3/examples/Activity/GetTargetandAssigneeName.ex.php [moved from api/v3/examples/Activity/GetTargetandAssigneeName.php with 100% similarity]
api/v3/examples/Activity/ReturnAssigneeContact.ex.php [moved from api/v3/examples/Activity/ReturnAssigneeContact.php with 100% similarity]
api/v3/examples/ActivityContact/Create.ex.php [moved from api/v3/examples/ActivityContact/Create.php with 100% similarity]
api/v3/examples/ActivityContact/Delete.ex.php [moved from api/v3/examples/ActivityContact/Delete.php with 100% similarity]
api/v3/examples/ActivityType/Create.ex.php [moved from api/v3/examples/ActivityType/Create.php with 100% similarity]
api/v3/examples/ActivityType/Get.ex.php [moved from api/v3/examples/ActivityType/Get.php with 100% similarity]
api/v3/examples/Address/AddressLike.ex.php [moved from api/v3/examples/Address/AddressLike.php with 100% similarity]
api/v3/examples/Address/AddressParse.ex.php [moved from api/v3/examples/Address/AddressParse.php with 100% similarity]
api/v3/examples/Address/AddressSort.ex.php [moved from api/v3/examples/Address/AddressSort.php with 100% similarity]
api/v3/examples/Address/Create.ex.php [moved from api/v3/examples/Address/Create.php with 100% similarity]
api/v3/examples/Address/Delete.ex.php [moved from api/v3/examples/Address/Delete.php with 100% similarity]
api/v3/examples/Address/Get.ex.php [moved from api/v3/examples/Address/Get.php with 100% similarity]
api/v3/examples/Address/GetOptions.ex.php [moved from api/v3/examples/Address/GetOptions.php with 100% similarity]
api/v3/examples/Batch/Create.ex.php [moved from api/v3/examples/Batch/Create.php with 100% similarity]
api/v3/examples/Batch/Delete.ex.php [moved from api/v3/examples/Batch/Delete.php with 100% similarity]
api/v3/examples/Batch/Get.ex.php [moved from api/v3/examples/Batch/Get.php with 100% similarity]
api/v3/examples/Batch/Update.ex.php [moved from api/v3/examples/Batch/Update.php with 100% similarity]
api/v3/examples/Campaign/Create.ex.php [moved from api/v3/examples/Campaign/Create.php with 100% similarity]
api/v3/examples/Campaign/Delete.ex.php [moved from api/v3/examples/Campaign/Delete.php with 100% similarity]
api/v3/examples/Campaign/Get.ex.php [moved from api/v3/examples/Campaign/Get.php with 100% similarity]
api/v3/examples/Case/Create.ex.php [moved from api/v3/examples/Case/Create.php with 100% similarity]
api/v3/examples/CaseContact/Create.ex.php [moved from api/v3/examples/CaseContact/Create.php with 100% similarity]
api/v3/examples/CaseContact/Get.ex.php [moved from api/v3/examples/CaseContact/Get.php with 100% similarity]
api/v3/examples/Constant/Get.ex.php [moved from api/v3/examples/Constant/Get.php with 100% similarity]
api/v3/examples/Contact/APIChainedArray.ex.php [moved from api/v3/examples/Contact/APIChainedArray.php with 100% similarity]
api/v3/examples/Contact/APIChainedArrayFormats.ex.php [moved from api/v3/examples/Contact/APIChainedArrayFormats.php with 100% similarity]
api/v3/examples/Contact/APIChainedArrayMultipleCustom.ex.php [moved from api/v3/examples/Contact/APIChainedArrayMultipleCustom.php with 100% similarity]
api/v3/examples/Contact/APIChainedArrayValuesFromSiblingFunction.ex.php [moved from api/v3/examples/Contact/APIChainedArrayValuesFromSiblingFunction.php with 100% similarity]
api/v3/examples/Contact/ChainTwoWebsites.ex.php [moved from api/v3/examples/Contact/ChainTwoWebsites.php with 100% similarity]
api/v3/examples/Contact/ChainTwoWebsitesSyntax2.ex.php [moved from api/v3/examples/Contact/ChainTwoWebsitesSyntax2.php with 100% similarity]
api/v3/examples/Contact/ContactIDOfLoggedInUserContactAPI.ex.php [moved from api/v3/examples/Contact/ContactIDOfLoggedInUserContactAPI.php with 100% similarity]
api/v3/examples/Contact/Create.ex.php [moved from api/v3/examples/Contact/Create.php with 100% similarity]
api/v3/examples/Contact/CreateParticipantPayment.ex.php [moved from api/v3/examples/Contact/CreateParticipantPayment.php with 100% similarity]
api/v3/examples/Contact/CustomFieldGet.ex.php [moved from api/v3/examples/Contact/CustomFieldGet.php with 100% similarity]
api/v3/examples/Contact/CustomFieldGetReturnSyntaxVariation.ex.php [moved from api/v3/examples/Contact/CustomFieldGetReturnSyntaxVariation.php with 100% similarity]
api/v3/examples/Contact/Delete.ex.php [moved from api/v3/examples/Contact/Delete.php with 100% similarity]
api/v3/examples/Contact/FormatIsSuccess_Fail.ex.php [moved from api/v3/examples/Contact/FormatIsSuccess_Fail.php with 100% similarity]
api/v3/examples/Contact/FormatIsSuccess_True.ex.php [moved from api/v3/examples/Contact/FormatIsSuccess_True.php with 100% similarity]
api/v3/examples/Contact/FormatOnlyID.ex.php [moved from api/v3/examples/Contact/FormatOnlyID.php with 100% similarity]
api/v3/examples/Contact/FormatSingleValue.ex.php [moved from api/v3/examples/Contact/FormatSingleValue.php with 100% similarity]
api/v3/examples/Contact/Get.ex.php [moved from api/v3/examples/Contact/Get.php with 100% similarity]
api/v3/examples/Contact/GetActions.ex.php [moved from api/v3/examples/Contact/GetActions.php with 100% similarity]
api/v3/examples/Contact/GetCountContact.ex.php [moved from api/v3/examples/Contact/GetCountContact.php with 100% similarity]
api/v3/examples/Contact/GetFieldsOptions.ex.php [moved from api/v3/examples/Contact/GetFieldsOptions.php with 100% similarity]
api/v3/examples/Contact/GetMergedfrom.ex.php [moved from api/v3/examples/Contact/GetMergedfrom.php with 100% similarity]
api/v3/examples/Contact/GetMergedto.ex.php [moved from api/v3/examples/Contact/GetMergedto.php with 100% similarity]
api/v3/examples/Contact/GetOptions.ex.php [moved from api/v3/examples/Contact/GetOptions.php with 100% similarity]
api/v3/examples/Contact/GetSingleContact.ex.php [moved from api/v3/examples/Contact/GetSingleContact.php with 100% similarity]
api/v3/examples/Contact/GetUnique.ex.php [moved from api/v3/examples/Contact/GetUnique.php with 100% similarity]
api/v3/examples/Contact/GroupFilterUsingContactAPI.ex.php [moved from api/v3/examples/Contact/GroupFilterUsingContactAPI.php with 100% similarity]
api/v3/examples/Contact/NestedReplaceEmail.ex.php [moved from api/v3/examples/Contact/NestedReplaceEmail.php with 100% similarity]
api/v3/examples/Contribution/ContributionCreateWithHonoreeContact.ex.php [moved from api/v3/examples/Contribution/ContributionCreateWithHonoreeContact.php with 100% similarity]
api/v3/examples/Contribution/ContributionCreateWithNote.ex.php [moved from api/v3/examples/Contribution/ContributionCreateWithNote.php with 100% similarity]
api/v3/examples/Contribution/ContributionCreateWithSoftCredit.ex.php [moved from api/v3/examples/Contribution/ContributionCreateWithSoftCredit.php with 100% similarity]
api/v3/examples/Contribution/ContributionCreateWithSoftCreditDefaults.ex.php [moved from api/v3/examples/Contribution/ContributionCreateWithSoftCreditDefaults.php with 100% similarity]
api/v3/examples/Contribution/Create.ex.php [moved from api/v3/examples/Contribution/Create.php with 100% similarity]
api/v3/examples/Contribution/CreateWithNestedLineItems.ex.php [moved from api/v3/examples/Contribution/CreateWithNestedLineItems.php with 100% similarity]
api/v3/examples/Contribution/Delete.ex.php [moved from api/v3/examples/Contribution/Delete.php with 100% similarity]
api/v3/examples/Contribution/Get.ex.php [moved from api/v3/examples/Contribution/Get.php with 100% similarity]
api/v3/examples/Contribution/GetUnique.ex.php [moved from api/v3/examples/Contribution/GetUnique.php with 100% similarity]
api/v3/examples/ContributionPage/Create.ex.php [moved from api/v3/examples/ContributionPage/Create.php with 100% similarity]
api/v3/examples/ContributionPage/Delete.ex.php [moved from api/v3/examples/ContributionPage/Delete.php with 100% similarity]
api/v3/examples/ContributionPage/Get.ex.php [moved from api/v3/examples/ContributionPage/Get.php with 100% similarity]
api/v3/examples/ContributionPage/Submit.ex.php [moved from api/v3/examples/ContributionPage/Submit.php with 100% similarity]
api/v3/examples/ContributionRecur/Create.ex.php [moved from api/v3/examples/ContributionRecur/Create.php with 100% similarity]
api/v3/examples/ContributionRecur/Delete.ex.php [moved from api/v3/examples/ContributionRecur/Delete.php with 100% similarity]
api/v3/examples/ContributionRecur/Get.ex.php [moved from api/v3/examples/ContributionRecur/Get.php with 100% similarity]
api/v3/examples/ContributionSoft/Create.ex.php [moved from api/v3/examples/ContributionSoft/Create.php with 100% similarity]
api/v3/examples/ContributionSoft/Delete.ex.php [moved from api/v3/examples/ContributionSoft/Delete.php with 100% similarity]
api/v3/examples/ContributionSoft/Get.ex.php [moved from api/v3/examples/ContributionSoft/Get.php with 100% similarity]
api/v3/examples/Country/Create.ex.php [moved from api/v3/examples/Country/Create.php with 100% similarity]
api/v3/examples/Country/Delete.ex.php [moved from api/v3/examples/Country/Delete.php with 100% similarity]
api/v3/examples/Country/Get.ex.php [moved from api/v3/examples/Country/Get.php with 100% similarity]
api/v3/examples/CustomField/Create.ex.php [moved from api/v3/examples/CustomField/Create.php with 100% similarity]
api/v3/examples/CustomField/Delete.ex.php [moved from api/v3/examples/CustomField/Delete.php with 100% similarity]
api/v3/examples/CustomGroup/Create.ex.php [moved from api/v3/examples/CustomGroup/Create.php with 100% similarity]
api/v3/examples/CustomGroup/Delete.ex.php [moved from api/v3/examples/CustomGroup/Delete.php with 100% similarity]
api/v3/examples/CustomGroup/Get.ex.php [moved from api/v3/examples/CustomGroup/Get.php with 100% similarity]
api/v3/examples/CustomValue/Create.ex.php [moved from api/v3/examples/CustomValue/Create.php with 100% similarity]
api/v3/examples/CustomValue/FormatFieldName.ex.php [moved from api/v3/examples/CustomValue/FormatFieldName.php with 100% similarity]
api/v3/examples/CustomValue/Get.ex.php [moved from api/v3/examples/CustomValue/Get.php with 100% similarity]
api/v3/examples/Domain/Create.ex.php [moved from api/v3/examples/Domain/Create.php with 100% similarity]
api/v3/examples/Domain/Get.ex.php [moved from api/v3/examples/Domain/Get.php with 100% similarity]
api/v3/examples/Email/Create.ex.php [moved from api/v3/examples/Email/Create.php with 100% similarity]
api/v3/examples/Email/Delete.ex.php [moved from api/v3/examples/Email/Delete.php with 100% similarity]
api/v3/examples/Email/Replace.ex.php [moved from api/v3/examples/Email/Replace.php with 100% similarity]
api/v3/examples/EntityBatch/Create.ex.php [moved from api/v3/examples/EntityBatch/Create.php with 100% similarity]
api/v3/examples/EntityBatch/Delete.ex.php [moved from api/v3/examples/EntityBatch/Delete.php with 100% similarity]
api/v3/examples/EntityBatch/Get.ex.php [moved from api/v3/examples/EntityBatch/Get.php with 100% similarity]
api/v3/examples/EntityTag/Create.ex.php [moved from api/v3/examples/EntityTag/Create.php with 100% similarity]
api/v3/examples/EntityTag/Delete.ex.php [moved from api/v3/examples/EntityTag/Delete.php with 100% similarity]
api/v3/examples/EntityTag/Get.ex.php [moved from api/v3/examples/EntityTag/Get.php with 100% similarity]
api/v3/examples/Event/ContactRefCustomField.ex.php [moved from api/v3/examples/Event/ContactRefCustomField.php with 100% similarity]
api/v3/examples/Event/Create.ex.php [moved from api/v3/examples/Event/Create.php with 100% similarity]
api/v3/examples/Event/Delete.ex.php [moved from api/v3/examples/Event/Delete.php with 100% similarity]
api/v3/examples/Event/Get.ex.php [moved from api/v3/examples/Event/Get.php with 100% similarity]
api/v3/examples/Event/IsCurrentOption.ex.php [moved from api/v3/examples/Event/IsCurrentOption.php with 100% similarity]
api/v3/examples/Event/IsFullOption.ex.php [moved from api/v3/examples/Event/IsFullOption.php with 100% similarity]
api/v3/examples/Grant/Create.ex.php [moved from api/v3/examples/Grant/Create.php with 100% similarity]
api/v3/examples/Grant/Delete.ex.php [moved from api/v3/examples/Grant/Delete.php with 100% similarity]
api/v3/examples/Grant/Get.ex.php [moved from api/v3/examples/Grant/Get.php with 100% similarity]
api/v3/examples/Group/Get.ex.php [moved from api/v3/examples/Group/Get.php with 100% similarity]
api/v3/examples/Group/GetFields.ex.php [moved from api/v3/examples/Group/GetFields.php with 100% similarity]
api/v3/examples/GroupContact/Create.ex.php [moved from api/v3/examples/GroupContact/Create.php with 100% similarity]
api/v3/examples/GroupContact/Delete.ex.php [moved from api/v3/examples/GroupContact/Delete.php with 100% similarity]
api/v3/examples/GroupContact/Get.ex.php [moved from api/v3/examples/GroupContact/Get.php with 100% similarity]
api/v3/examples/GroupContact/GetWithGroupID.ex.php [moved from api/v3/examples/GroupContact/GetWithGroupID.php with 100% similarity]
api/v3/examples/GroupNesting/Create.ex.php [moved from api/v3/examples/GroupNesting/Create.php with 100% similarity]
api/v3/examples/GroupNesting/Delete.ex.php [moved from api/v3/examples/GroupNesting/Delete.php with 100% similarity]
api/v3/examples/GroupNesting/Get.ex.php [moved from api/v3/examples/GroupNesting/Get.php with 100% similarity]
api/v3/examples/GroupOrganization/Create.ex.php [moved from api/v3/examples/GroupOrganization/Create.php with 100% similarity]
api/v3/examples/GroupOrganization/Delete.ex.php [moved from api/v3/examples/GroupOrganization/Delete.php with 100% similarity]
api/v3/examples/GroupOrganization/Get.ex.php [moved from api/v3/examples/GroupOrganization/Get.php with 100% similarity]
api/v3/examples/Im/Create.ex.php [moved from api/v3/examples/Im/Create.php with 100% similarity]
api/v3/examples/Im/Delete.ex.php [moved from api/v3/examples/Im/Delete.php with 100% similarity]
api/v3/examples/Im/Get.ex.php [moved from api/v3/examples/Im/Get.php with 100% similarity]
api/v3/examples/Job/Clone.ex.php [moved from api/v3/examples/Job/Clone.php with 100% similarity]
api/v3/examples/Job/Create.ex.php [moved from api/v3/examples/Job/Create.php with 100% similarity]
api/v3/examples/Job/Delete.ex.php [moved from api/v3/examples/Job/Delete.php with 100% similarity]
api/v3/examples/LineItem/Create.ex.php [moved from api/v3/examples/LineItem/Create.php with 100% similarity]
api/v3/examples/LineItem/Delete.ex.php [moved from api/v3/examples/LineItem/Delete.php with 100% similarity]
api/v3/examples/LineItem/Get.ex.php [moved from api/v3/examples/LineItem/Get.php with 100% similarity]
api/v3/examples/LocBlock/Create.ex.php [moved from api/v3/examples/LocBlock/Create.php with 100% similarity]
api/v3/examples/LocBlock/CreateEntities.ex.php [moved from api/v3/examples/LocBlock/CreateEntities.php with 100% similarity]
api/v3/examples/LocBlock/Get.ex.php [moved from api/v3/examples/LocBlock/Get.php with 100% similarity]
api/v3/examples/Logging/Get.ex.php [moved from api/v3/examples/Logging/Get.php with 100% similarity]
api/v3/examples/Logging/Revert.ex.php [moved from api/v3/examples/Logging/Revert.php with 100% similarity]
api/v3/examples/MailSettings/ChainedGetDelete.ex.php [moved from api/v3/examples/MailSettings/ChainedGetDelete.php with 100% similarity]
api/v3/examples/MailSettings/Create.ex.php [moved from api/v3/examples/MailSettings/Create.php with 100% similarity]
api/v3/examples/MailSettings/Delete.ex.php [moved from api/v3/examples/MailSettings/Delete.php with 100% similarity]
api/v3/examples/MailSettings/Get.ex.php [moved from api/v3/examples/MailSettings/Get.php with 100% similarity]
api/v3/examples/MailSettings/GetOptions.ex.php [moved from api/v3/examples/MailSettings/GetOptions.php with 100% similarity]
api/v3/examples/Mailing/Clone.ex.php [moved from api/v3/examples/Mailing/Clone.php with 100% similarity]
api/v3/examples/Mailing/Create.ex.php [moved from api/v3/examples/Mailing/Create.php with 100% similarity]
api/v3/examples/Mailing/Delete.ex.php [moved from api/v3/examples/Mailing/Delete.php with 100% similarity]
api/v3/examples/Mailing/GetTokens.ex.php [moved from api/v3/examples/Mailing/GetTokens.php with 100% similarity]
api/v3/examples/Mailing/Submit.ex.php [moved from api/v3/examples/Mailing/Submit.php with 100% similarity]
api/v3/examples/MailingAB/Create.ex.php [moved from api/v3/examples/MailingAB/Create.php with 100% similarity]
api/v3/examples/MailingEventSubscribe/Create.ex.php [moved from api/v3/examples/MailingEventSubscribe/Create.php with 100% similarity]
api/v3/examples/MailingGroup/Subscribe.ex.php [moved from api/v3/examples/MailingGroup/Subscribe.php with 100% similarity]
api/v3/examples/Mapping/Create.ex.php [moved from api/v3/examples/Mapping/Create.php with 100% similarity]
api/v3/examples/Mapping/Delete.ex.php [moved from api/v3/examples/Mapping/Delete.php with 100% similarity]
api/v3/examples/Mapping/Get.ex.php [moved from api/v3/examples/Mapping/Get.php with 100% similarity]
api/v3/examples/MappingField/Create.ex.php [moved from api/v3/examples/MappingField/Create.php with 100% similarity]
api/v3/examples/MappingField/Delete.ex.php [moved from api/v3/examples/MappingField/Delete.php with 100% similarity]
api/v3/examples/MappingField/Get.ex.php [moved from api/v3/examples/MappingField/Get.php with 100% similarity]
api/v3/examples/Membership/Create.ex.php [moved from api/v3/examples/Membership/Create.php with 100% similarity]
api/v3/examples/Membership/CreateWithCustomData.ex.php [moved from api/v3/examples/Membership/CreateWithCustomData.php with 100% similarity]
api/v3/examples/Membership/Delete.ex.php [moved from api/v3/examples/Membership/Delete.php with 100% similarity]
api/v3/examples/Membership/FilterIsCurrent.ex.php [moved from api/v3/examples/Membership/FilterIsCurrent.php with 100% similarity]
api/v3/examples/Membership/Get.ex.php [moved from api/v3/examples/Membership/Get.php with 100% similarity]
api/v3/examples/Membership/SearchWithCustomData.ex.php [moved from api/v3/examples/Membership/SearchWithCustomData.php with 100% similarity]
api/v3/examples/Membership/UpdateCustomData.ex.php [moved from api/v3/examples/Membership/UpdateCustomData.php with 100% similarity]
api/v3/examples/MembershipPayment/Create.ex.php [moved from api/v3/examples/MembershipPayment/Create.php with 100% similarity]
api/v3/examples/MembershipPayment/Get.ex.php [moved from api/v3/examples/MembershipPayment/Get.php with 100% similarity]
api/v3/examples/MembershipStatus/Create.ex.php [moved from api/v3/examples/MembershipStatus/Create.php with 100% similarity]
api/v3/examples/MembershipStatus/Get.ex.php [moved from api/v3/examples/MembershipStatus/Get.php with 100% similarity]
api/v3/examples/MembershipType/Create.ex.php [moved from api/v3/examples/MembershipType/Create.php with 100% similarity]
api/v3/examples/MembershipType/Delete.ex.php [moved from api/v3/examples/MembershipType/Delete.php with 100% similarity]
api/v3/examples/MembershipType/Get.ex.php [moved from api/v3/examples/MembershipType/Get.php with 100% similarity]
api/v3/examples/MessageTemplate/Create.ex.php [moved from api/v3/examples/MessageTemplate/Create.php with 100% similarity]
api/v3/examples/MessageTemplate/Delete.ex.php [moved from api/v3/examples/MessageTemplate/Delete.php with 100% similarity]
api/v3/examples/MessageTemplate/Get.ex.php [moved from api/v3/examples/MessageTemplate/Get.php with 100% similarity]
api/v3/examples/Note/Create.ex.php [moved from api/v3/examples/Note/Create.php with 100% similarity]
api/v3/examples/Note/Delete.ex.php [moved from api/v3/examples/Note/Delete.php with 100% similarity]
api/v3/examples/Note/Get.ex.php [moved from api/v3/examples/Note/Get.php with 100% similarity]
api/v3/examples/OpenID/Create.ex.php [moved from api/v3/examples/OpenID/Create.php with 100% similarity]
api/v3/examples/OpenID/Delete.ex.php [moved from api/v3/examples/OpenID/Delete.php with 100% similarity]
api/v3/examples/OpenID/Get.ex.php [moved from api/v3/examples/OpenID/Get.php with 100% similarity]
api/v3/examples/OptionGroup/Create.ex.php [moved from api/v3/examples/OptionGroup/Create.php with 100% similarity]
api/v3/examples/OptionGroup/Delete.ex.php [moved from api/v3/examples/OptionGroup/Delete.php with 100% similarity]
api/v3/examples/OptionGroup/Get.ex.php [moved from api/v3/examples/OptionGroup/Get.php with 100% similarity]
api/v3/examples/OptionValue/Get.ex.php [moved from api/v3/examples/OptionValue/Get.php with 100% similarity]
api/v3/examples/OptionValue/SortOption.ex.php [moved from api/v3/examples/OptionValue/SortOption.php with 100% similarity]
api/v3/examples/Order/Cancel.ex.php [moved from api/v3/examples/Order/Cancel.php with 100% similarity]
api/v3/examples/Order/Create.ex.php [moved from api/v3/examples/Order/Create.php with 100% similarity]
api/v3/examples/Order/CreateOrderParticipant.ex.php [moved from api/v3/examples/Order/CreateOrderParticipant.php with 100% similarity]
api/v3/examples/Order/Delete.ex.php [moved from api/v3/examples/Order/Delete.php with 100% similarity]
api/v3/examples/Order/Get.ex.php [moved from api/v3/examples/Order/Get.php with 100% similarity]
api/v3/examples/Participant/Create.ex.php [moved from api/v3/examples/Participant/Create.php with 100% similarity]
api/v3/examples/Participant/Get.ex.php [moved from api/v3/examples/Participant/Get.php with 100% similarity]
api/v3/examples/Participant/NestedDelete.ex.php [moved from api/v3/examples/Participant/NestedDelete.php with 100% similarity]
api/v3/examples/Participant/NestedEventGet.ex.php [moved from api/v3/examples/Participant/NestedEventGet.php with 100% similarity]
api/v3/examples/ParticipantPayment/Create.ex.php [moved from api/v3/examples/ParticipantPayment/Create.php with 100% similarity]
api/v3/examples/ParticipantPayment/Delete.ex.php [moved from api/v3/examples/ParticipantPayment/Delete.php with 100% similarity]
api/v3/examples/ParticipantPayment/Get.ex.php [moved from api/v3/examples/ParticipantPayment/Get.php with 100% similarity]
api/v3/examples/ParticipantStatusType/Create.ex.php [moved from api/v3/examples/ParticipantStatusType/Create.php with 100% similarity]
api/v3/examples/ParticipantStatusType/Delete.ex.php [moved from api/v3/examples/ParticipantStatusType/Delete.php with 100% similarity]
api/v3/examples/ParticipantStatusType/Get.ex.php [moved from api/v3/examples/ParticipantStatusType/Get.php with 100% similarity]
api/v3/examples/Payment/Cancel.ex.php [moved from api/v3/examples/Payment/Cancel.php with 100% similarity]
api/v3/examples/Payment/Create.ex.php [moved from api/v3/examples/Payment/Create.php with 100% similarity]
api/v3/examples/Payment/CreatePaymentWithLineItems.ex.php [moved from api/v3/examples/Payment/CreatePaymentWithLineItems.php with 100% similarity]
api/v3/examples/Payment/Delete.ex.php [moved from api/v3/examples/Payment/Delete.php with 100% similarity]
api/v3/examples/Payment/Get.ex.php [moved from api/v3/examples/Payment/Get.php with 100% similarity]
api/v3/examples/Payment/UpdatePayment.ex.php [moved from api/v3/examples/Payment/UpdatePayment.php with 100% similarity]
api/v3/examples/PaymentProcessor/Create.ex.php [moved from api/v3/examples/PaymentProcessor/Create.php with 100% similarity]
api/v3/examples/PaymentProcessor/Delete.ex.php [moved from api/v3/examples/PaymentProcessor/Delete.php with 100% similarity]
api/v3/examples/PaymentProcessorType/Create.ex.php [moved from api/v3/examples/PaymentProcessorType/Create.php with 100% similarity]
api/v3/examples/PaymentProcessorType/Delete.ex.php [moved from api/v3/examples/PaymentProcessorType/Delete.php with 100% similarity]
api/v3/examples/PaymentToken/Create.ex.php [moved from api/v3/examples/PaymentToken/Create.php with 100% similarity]
api/v3/examples/PaymentToken/Delete.ex.php [moved from api/v3/examples/PaymentToken/Delete.php with 100% similarity]
api/v3/examples/PaymentToken/Get.ex.php [moved from api/v3/examples/PaymentToken/Get.php with 100% similarity]
api/v3/examples/Pcp/ChainedGetDelete.ex.php [moved from api/v3/examples/Pcp/ChainedGetDelete.php with 100% similarity]
api/v3/examples/Pcp/Create.ex.php [moved from api/v3/examples/Pcp/Create.php with 100% similarity]
api/v3/examples/Pcp/Delete.ex.php [moved from api/v3/examples/Pcp/Delete.php with 100% similarity]
api/v3/examples/Pcp/Get.ex.php [moved from api/v3/examples/Pcp/Get.php with 100% similarity]
api/v3/examples/Phone/Create.ex.php [moved from api/v3/examples/Phone/Create.php with 100% similarity]
api/v3/examples/Phone/Delete.ex.php [moved from api/v3/examples/Phone/Delete.php with 100% similarity]
api/v3/examples/Phone/Get.ex.php [moved from api/v3/examples/Phone/Get.php with 100% similarity]
api/v3/examples/Phone/GetOptions.ex.php [moved from api/v3/examples/Phone/GetOptions.php with 100% similarity]
api/v3/examples/Pledge/Create.ex.php [moved from api/v3/examples/Pledge/Create.php with 100% similarity]
api/v3/examples/Pledge/Delete.ex.php [moved from api/v3/examples/Pledge/Delete.php with 100% similarity]
api/v3/examples/Pledge/Get.ex.php [moved from api/v3/examples/Pledge/Get.php with 100% similarity]
api/v3/examples/Pledge/GetFilterHighDate.ex.php [moved from api/v3/examples/Pledge/GetFilterHighDate.php with 100% similarity]
api/v3/examples/PledgePayment/Create.ex.php [moved from api/v3/examples/PledgePayment/Create.php with 100% similarity]
api/v3/examples/PledgePayment/Delete.ex.php [moved from api/v3/examples/PledgePayment/Delete.php with 100% similarity]
api/v3/examples/PledgePayment/Get.ex.php [moved from api/v3/examples/PledgePayment/Get.php with 100% similarity]
api/v3/examples/PledgePayment/Update.ex.php [moved from api/v3/examples/PledgePayment/Update.php with 100% similarity]
api/v3/examples/PriceField/Create.ex.php [moved from api/v3/examples/PriceField/Create.php with 100% similarity]
api/v3/examples/PriceField/Delete.ex.php [moved from api/v3/examples/PriceField/Delete.php with 100% similarity]
api/v3/examples/PriceField/Get.ex.php [moved from api/v3/examples/PriceField/Get.php with 100% similarity]
api/v3/examples/PriceFieldValue/Create.ex.php [moved from api/v3/examples/PriceFieldValue/Create.php with 100% similarity]
api/v3/examples/PriceFieldValue/Delete.ex.php [moved from api/v3/examples/PriceFieldValue/Delete.php with 100% similarity]
api/v3/examples/PriceFieldValue/Get.ex.php [moved from api/v3/examples/PriceFieldValue/Get.php with 100% similarity]
api/v3/examples/PriceSet/Create.ex.php [moved from api/v3/examples/PriceSet/Create.php with 100% similarity]
api/v3/examples/PriceSet/Delete.ex.php [moved from api/v3/examples/PriceSet/Delete.php with 100% similarity]
api/v3/examples/PriceSet/Get.ex.php [moved from api/v3/examples/PriceSet/Get.php with 100% similarity]
api/v3/examples/Profile/Apply.ex.php [moved from api/v3/examples/Profile/Apply.php with 100% similarity]
api/v3/examples/Profile/Get.ex.php [moved from api/v3/examples/Profile/Get.php with 100% similarity]
api/v3/examples/Profile/GetFields.ex.php [moved from api/v3/examples/Profile/GetFields.php with 100% similarity]
api/v3/examples/Profile/Submit.ex.php [moved from api/v3/examples/Profile/Submit.php with 100% similarity]
api/v3/examples/Relationship/BetweenRelationshipType.ex.php [moved from api/v3/examples/Relationship/BetweenRelationshipType.php with 100% similarity]
api/v3/examples/Relationship/Create.ex.php [moved from api/v3/examples/Relationship/Create.php with 100% similarity]
api/v3/examples/Relationship/Delete.ex.php [moved from api/v3/examples/Relationship/Delete.php with 100% similarity]
api/v3/examples/Relationship/Get.ex.php [moved from api/v3/examples/Relationship/Get.php with 100% similarity]
api/v3/examples/Relationship/INRelationshipType.ex.php [moved from api/v3/examples/Relationship/INRelationshipType.php with 100% similarity]
api/v3/examples/Relationship/NotBetweenRelationshipType.ex.php [moved from api/v3/examples/Relationship/NotBetweenRelationshipType.php with 100% similarity]
api/v3/examples/Relationship/NotInRelationshipType.ex.php [moved from api/v3/examples/Relationship/NotInRelationshipType.php with 100% similarity]
api/v3/examples/Relationship/filterIsCurrent.ex.php [moved from api/v3/examples/Relationship/filterIsCurrent.php with 100% similarity]
api/v3/examples/RelationshipType/Create.ex.php [moved from api/v3/examples/RelationshipType/Create.php with 100% similarity]
api/v3/examples/RelationshipType/Delete.ex.php [moved from api/v3/examples/RelationshipType/Delete.php with 100% similarity]
api/v3/examples/ReportTemplate/Getrows.ex.php [moved from api/v3/examples/ReportTemplate/Getrows.php with 100% similarity]
api/v3/examples/ReportTemplate/Getstatistics.ex.php [moved from api/v3/examples/ReportTemplate/Getstatistics.php with 100% similarity]
api/v3/examples/SavedSearch/Create.ex.php [moved from api/v3/examples/SavedSearch/Create.php with 100% similarity]
api/v3/examples/SavedSearch/Delete.ex.php [moved from api/v3/examples/SavedSearch/Delete.php with 100% similarity]
api/v3/examples/SavedSearch/Get.ex.php [moved from api/v3/examples/SavedSearch/Get.php with 100% similarity]
api/v3/examples/Setting/Create.ex.php [moved from api/v3/examples/Setting/Create.php with 100% similarity]
api/v3/examples/Setting/CreateAllDomains.ex.php [moved from api/v3/examples/Setting/CreateAllDomains.php with 100% similarity]
api/v3/examples/Setting/CreateSettingCurrentDomain.ex.php [moved from api/v3/examples/Setting/CreateSettingCurrentDomain.php with 100% similarity]
api/v3/examples/Setting/CreateSpecifiedDomains.ex.php [moved from api/v3/examples/Setting/CreateSpecifiedDomains.php with 100% similarity]
api/v3/examples/Setting/Get.ex.php [moved from api/v3/examples/Setting/Get.php with 100% similarity]
api/v3/examples/Setting/GetAllDomains.ex.php [moved from api/v3/examples/Setting/GetAllDomains.php with 100% similarity]
api/v3/examples/Setting/GetDefaults.ex.php [moved from api/v3/examples/Setting/GetDefaults.php with 100% similarity]
api/v3/examples/Setting/GetFields.ex.php [moved from api/v3/examples/Setting/GetFields.php with 100% similarity]
api/v3/examples/Setting/GetSettingCurrentDomain.ex.php [moved from api/v3/examples/Setting/GetSettingCurrentDomain.php with 100% similarity]
api/v3/examples/Setting/GetSpecifiedDomains.ex.php [moved from api/v3/examples/Setting/GetSpecifiedDomains.php with 100% similarity]
api/v3/examples/Setting/GetValue.ex.php [moved from api/v3/examples/Setting/GetValue.php with 100% similarity]
api/v3/examples/Setting/Revert.ex.php [moved from api/v3/examples/Setting/Revert.php with 100% similarity]
api/v3/examples/StateProvince/Create.ex.php [moved from api/v3/examples/StateProvince/Create.php with 100% similarity]
api/v3/examples/StateProvince/Delete.ex.php [moved from api/v3/examples/StateProvince/Delete.php with 100% similarity]
api/v3/examples/StateProvince/Get.ex.php [moved from api/v3/examples/StateProvince/Get.php with 100% similarity]
api/v3/examples/StatusPreference/Create.ex.php [moved from api/v3/examples/StatusPreference/Create.php with 100% similarity]
api/v3/examples/StatusPreference/Delete.ex.php [moved from api/v3/examples/StatusPreference/Delete.php with 100% similarity]
api/v3/examples/StatusPreference/Get.ex.php [moved from api/v3/examples/StatusPreference/Get.php with 100% similarity]
api/v3/examples/Survey/ChainedGetDelete.ex.php [moved from api/v3/examples/Survey/ChainedGetDelete.php with 100% similarity]
api/v3/examples/Survey/Create.ex.php [moved from api/v3/examples/Survey/Create.php with 100% similarity]
api/v3/examples/Survey/Delete.ex.php [moved from api/v3/examples/Survey/Delete.php with 100% similarity]
api/v3/examples/Survey/Get.ex.php [moved from api/v3/examples/Survey/Get.php with 100% similarity]
api/v3/examples/SurveyRespondant/Get.ex.php [moved from api/v3/examples/SurveyRespondant/Get.php with 100% similarity]
api/v3/examples/System/Flush.ex.php [moved from api/v3/examples/System/Flush.php with 100% similarity]
api/v3/examples/Tag/Create.ex.php [moved from api/v3/examples/Tag/Create.php with 100% similarity]
api/v3/examples/Tag/Delete.ex.php [moved from api/v3/examples/Tag/Delete.php with 100% similarity]
api/v3/examples/Tag/Get.ex.php [moved from api/v3/examples/Tag/Get.php with 100% similarity]
api/v3/examples/Tag/GetFields.ex.php [moved from api/v3/examples/Tag/GetFields.php with 100% similarity]
api/v3/examples/Tag/GetList.ex.php [moved from api/v3/examples/Tag/GetList.php with 100% similarity]
api/v3/examples/Tag/GetReturnArray.ex.php [moved from api/v3/examples/Tag/GetReturnArray.php with 100% similarity]
api/v3/examples/TaxContributionPage/Create.ex.php [moved from api/v3/examples/TaxContributionPage/Create.php with 100% similarity]
api/v3/examples/TaxContributionPage/CreateWithNestedLineItems.ex.php [moved from api/v3/examples/TaxContributionPage/CreateWithNestedLineItems.php with 100% similarity]
api/v3/examples/TaxContributionPage/Delete.ex.php [moved from api/v3/examples/TaxContributionPage/Delete.php with 100% similarity]
api/v3/examples/UFField/Create.ex.php [moved from api/v3/examples/UFField/Create.php with 100% similarity]
api/v3/examples/UFField/Delete.ex.php [moved from api/v3/examples/UFField/Delete.php with 100% similarity]
api/v3/examples/UFField/Get.ex.php [moved from api/v3/examples/UFField/Get.php with 100% similarity]
api/v3/examples/UFField/Replace.ex.php [moved from api/v3/examples/UFField/Replace.php with 100% similarity]
api/v3/examples/UFGroup/Create.ex.php [moved from api/v3/examples/UFGroup/Create.php with 100% similarity]
api/v3/examples/UFGroup/Delete.ex.php [moved from api/v3/examples/UFGroup/Delete.php with 100% similarity]
api/v3/examples/UFGroup/Get.ex.php [moved from api/v3/examples/UFGroup/Get.php with 100% similarity]
api/v3/examples/UFJoin/Create.ex.php [moved from api/v3/examples/UFJoin/Create.php with 100% similarity]
api/v3/examples/UFJoin/Get.ex.php [moved from api/v3/examples/UFJoin/Get.php with 100% similarity]
api/v3/examples/UFMatch/Get.ex.php [moved from api/v3/examples/UFMatch/Get.php with 100% similarity]
api/v3/examples/User/Get.ex.php [moved from api/v3/examples/User/Get.php with 100% similarity]
api/v3/examples/User/GetFields.ex.php [moved from api/v3/examples/User/GetFields.php with 100% similarity]
api/v3/examples/Website/Create.ex.php [moved from api/v3/examples/Website/Create.php with 100% similarity]
api/v3/examples/Website/Delete.ex.php [moved from api/v3/examples/Website/Delete.php with 100% similarity]
api/v3/examples/Website/Get.ex.php [moved from api/v3/examples/Website/Get.php with 100% similarity]
api/v3/examples/Website/GetFields.ex.php [moved from api/v3/examples/Website/GetFields.php with 100% similarity]
api/v3/examples/Website/GetWithMetadata.ex.php [moved from api/v3/examples/Website/GetWithMetadata.php with 100% similarity]
bin/cli.class.php
composer.json
composer.lock
contributor-key.yml
css/api4-explorer.css [new file with mode: 0644]
distmaker/dists/backdrop_php5.sh
distmaker/dists/drupal6_php5.sh
distmaker/dists/drupal7_dir_php5.sh
distmaker/dists/drupal_php5.sh
distmaker/dists/drupal_sk_php5.sh
distmaker/dists/joomla_php5.sh
distmaker/dists/wordpress_php5.sh
extension-compatibility.json
js/crm.ajax.js
js/load-bootstrap.js [new file with mode: 0644]
karma.conf.js
sql/civicrm_generated.mysql
templates/CRM/Admin/Page/ConfigTaskList.tpl
templates/CRM/Api4/Page/Api4Explorer.tpl [new file with mode: 0644]
templates/CRM/Contribute/Form/ContributionPage/Settings.tpl
templates/CRM/Contribute/Form/ContributionView.tpl
templates/CRM/Event/Form/ManageEvent/EventInfo.tpl
tests/phpunit/CRM/Batch/Form/EntryTest.php
tests/phpunit/CRM/Contribute/Form/ContributionTest.php
tests/phpunit/CRM/Core/ResourcesTest.php
tests/phpunit/CRM/Export/BAO/ExportTest.php
tests/phpunit/CRM/Member/BAO/MembershipTest.php
tests/phpunit/CRM/Utils/JSTest.php
tests/phpunit/CiviTest/CiviUnitTestCase.php
tests/phpunit/CiviTest/bootstrap.php
tests/phpunit/api/v3/ActivityTest.php
tests/phpunit/api/v3/ContributionTest.php
tests/phpunit/api/v3/CustomFieldTest.php
tests/phpunit/api/v3/MailingTest.php
tests/phpunit/api/v3/NoteTest.php
tests/phpunit/api/v3/PaymentProcessorTest.php
tests/phpunit/api/v3/PaymentProcessorTypeTest.php
tests/phpunit/api/v3/RelationshipTypeTest.php
tests/phpunit/api/v3/TaxContributionPageTest.php
tests/phpunit/api/v3/UFJoinTest.php
tests/phpunit/api/v3/UFMatchTest.php
tests/phpunit/api/v4/Action/BaseCustomValueTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/BasicActionsTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/BasicCustomFieldTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/ChainTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/ComplexQueryTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/ContactApiKeyTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/ContactChecksumTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/ContactGetTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/CreateCustomValueTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/CreateWithOptionGroupTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/CurrentFilterTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/CustomValuePerformanceTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/CustomValueTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/DateTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/EvaluateConditionTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/ExtendFromIndividualTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/FkJoinTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/GetExtraFieldsTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/GetFromArrayTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/IndexTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/NullValueTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/ReplaceTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/RequiredFieldTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/UpdateContactTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Action/UpdateCustomValueTest.php [new file with mode: 0644]
tests/phpunit/api/v4/AllTests.php [new file with mode: 0644]
tests/phpunit/api/v4/DataSets/ConformanceTest.json [new file with mode: 0644]
tests/phpunit/api/v4/DataSets/DefaultDataSet.json [new file with mode: 0644]
tests/phpunit/api/v4/DataSets/MultiContactMultiEmail.json [new file with mode: 0644]
tests/phpunit/api/v4/DataSets/SingleContact.json [new file with mode: 0644]
tests/phpunit/api/v4/Entity/ConformanceTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Entity/ContactJoinTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Entity/EntityTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Entity/ParticipantTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Entity/RouteTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Entity/SettingTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Mock/Api4/Action/MockArrayEntity/Get.php [new file with mode: 0644]
tests/phpunit/api/v4/Mock/Api4/MockArrayEntity.php [new file with mode: 0644]
tests/phpunit/api/v4/Mock/Api4/MockBasicEntity.php [new file with mode: 0644]
tests/phpunit/api/v4/Mock/MockEntityDataStorage.php [new file with mode: 0644]
tests/phpunit/api/v4/Mock/MockV4ReflectionBase.php [new file with mode: 0644]
tests/phpunit/api/v4/Mock/MockV4ReflectionChild.php [new file with mode: 0644]
tests/phpunit/api/v4/Mock/MockV4ReflectionGrandchild.php [new file with mode: 0644]
tests/phpunit/api/v4/Query/Api4SelectQueryComplexJoinTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Query/Api4SelectQueryTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Query/OneToOneJoinTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Query/OptionValueJoinTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Query/SelectQueryMultiJoinTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Service/Schema/SchemaMapRealTableTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Service/Schema/SchemaMapperTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Service/TestCreationParameterProvider.php [new file with mode: 0644]
tests/phpunit/api/v4/Spec/RequestSpecTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Spec/SpecFormatterTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Spec/SpecGathererTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Traits/OptionCleanupTrait.php [new file with mode: 0644]
tests/phpunit/api/v4/Traits/QueryCounterTrait.php [new file with mode: 0644]
tests/phpunit/api/v4/Traits/TableDropperTrait.php [new file with mode: 0644]
tests/phpunit/api/v4/Traits/TestDataLoaderTrait.php [new file with mode: 0644]
tests/phpunit/api/v4/UnitTestCase.php [new file with mode: 0644]
tests/phpunit/api/v4/Utils/ArrayInsertionServiceTest.php [new file with mode: 0644]
tests/phpunit/api/v4/Utils/ReflectionUtilsTest.php [new file with mode: 0644]
tests/phpunit/api/v4/services.xml [new file with mode: 0644]
tools/scripts/phpunit
xml/schema/Mailing/Mailing.xml
xml/schema/Mailing/MailingJob.xml
xml/templates/civicrm_navigation.tpl
xml/version.xml

index d4cbb1448672b3540512b4f84776a5c176e45833..376e56ecbac9baed27c48aa0d187d30eefe0e218 100644 (file)
@@ -7,7 +7,7 @@ Code Contributors for 5.x
 CiviCRM - Coleman Watts, Tim Otten
 
 AGH Strategies - Alice Frumin, Andrew Hunt, Eli Lisseck
-Agileware - Alok Patel, Francis Whittle, Justin Freeman
+Agileware - Francis Whittle, Justin Freeman, Pengyi Zhang
 Andrew Thompson
 applicado
 Australian Greens - Seamus Lee
index a1ade427f6a98199b32058d6f721081eea4c735b..d0a220cd560bf6bb0140f7f5b2e498c5e0844486 100644 (file)
@@ -114,7 +114,7 @@ class CRM_Admin_Page_APIExplorer extends CRM_Core_Page {
         $dir = \CRM_Utils_File::addTrailingSlash($path) . 'api' . DIRECTORY_SEPARATOR . 'v3' . DIRECTORY_SEPARATOR . 'examples' . DIRECTORY_SEPARATOR . $_GET['entity'];
         if (is_dir($dir)) {
           foreach (scandir($dir) as $item) {
-            $item = str_replace('.php', '', $item);
+            $item = str_replace('.ex.php', '', $item);
             if ($item && strpos($item, '.') === FALSE) {
               $examples[] = ['key' => $item, 'value' => $item];
             }
@@ -127,7 +127,7 @@ class CRM_Admin_Page_APIExplorer extends CRM_Core_Page {
       $paths = self::uniquePaths();
       $fileFound = FALSE;
       foreach ($paths as $path) {
-        $fileName = \CRM_Utils_File::addTrailingSlash($path) . 'api' . DIRECTORY_SEPARATOR . 'v3' . DIRECTORY_SEPARATOR . 'examples' . DIRECTORY_SEPARATOR . $_GET['file'] . '.php';
+        $fileName = \CRM_Utils_File::addTrailingSlash($path) . 'api' . DIRECTORY_SEPARATOR . 'v3' . DIRECTORY_SEPARATOR . 'examples' . DIRECTORY_SEPARATOR . $_GET['file'] . '.ex.php';
         if (!$fileFound && file_exists($fileName)) {
           $fileFound = TRUE;
           echo file_get_contents($fileName);
index 7d43f650e4852ccbab3b708a3e24e6897c7fafe0..ccb987294b94d7f9c55495e50b4ed1fa0f686bf8 100644 (file)
@@ -57,6 +57,17 @@ class CRM_Admin_Page_ConfigTaskList extends CRM_Core_Page {
 
     $this->assign('registerSite', htmlspecialchars('https://civicrm.org/register-your-site?src=iam&sid=' . CRM_Utils_System::getSiteID()));
 
+    //Provide ability to optionally display some component checklist items when components are on
+    $result = civicrm_api3('Setting', 'get', [
+      'sequential' => 1,
+      'return' => ["enable_components"],
+    ]);
+    $enabled = array();
+    foreach ($result['values'][0]['enable_components'] as $component) {
+      $enabled[$component] = 1;
+    }
+    $this->assign('enabledComponents', $enabled);
+
     return parent::run();
   }
 
diff --git a/CRM/Api4/Page/AJAX.php b/CRM/Api4/Page/AJAX.php
new file mode 100644 (file)
index 0000000..e560c85
--- /dev/null
@@ -0,0 +1,105 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+class CRM_Api4_Page_AJAX extends CRM_Core_Page {
+
+  /**
+   * Handler for api4 ajax requests
+   */
+  public function run() {
+    try {
+      // Call multiple
+      if (empty($this->urlPath[3])) {
+        $calls = CRM_Utils_Request::retrieve('calls', 'String', CRM_Core_DAO::$_nullObject, TRUE, NULL, 'POST', TRUE);
+        $calls = json_decode($calls, TRUE);
+        $response = [];
+        foreach ($calls as $index => $call) {
+          $response[$index] = call_user_func_array([$this, 'execute'], $call);
+        }
+      }
+      // Call single
+      else {
+        $entity = $this->urlPath[3];
+        $action = $this->urlPath[4];
+        $params = CRM_Utils_Request::retrieve('params', 'String');
+        $params = $params ? json_decode($params, TRUE) : [];
+        $index = CRM_Utils_Request::retrieve('index', 'String');
+        $response = $this->execute($entity, $action, $params, $index);
+      }
+    }
+    catch (Exception $e) {
+      http_response_code(500);
+      $response = [
+        'error_code' => $e->getCode(),
+      ];
+      if (CRM_Core_Permission::check('view debug output')) {
+        $response['error_message'] = $e->getMessage();
+        if (\Civi::settings()->get('backtrace')) {
+          $response['backtrace'] = $e->getTrace();
+        }
+      }
+    }
+    CRM_Utils_System::setHttpHeader('Content-Type', 'application/json');
+    echo json_encode($response);
+    CRM_Utils_System::civiExit();
+  }
+
+  /**
+   * Run api call & prepare result for json encoding
+   *
+   * @param string $entity
+   * @param string $action
+   * @param array $params
+   * @param string $index
+   * @return array
+   */
+  protected function execute($entity, $action, $params = [], $index = NULL) {
+    $params['checkPermissions'] = TRUE;
+
+    // Handle numeric indexes later so we can get the count
+    $itemAt = CRM_Utils_Type::validate($index, 'Integer', FALSE);
+
+    $result = civicrm_api4($entity, $action, $params, isset($itemAt) ? NULL : $index);
+
+    // Convert arrayObject into something more suitable for json
+    $vals = ['values' => isset($itemAt) ? $result->itemAt($itemAt) : (array) $result];
+    foreach (get_class_vars(get_class($result)) as $key => $val) {
+      $vals[$key] = $result->$key;
+    }
+    $vals['count'] = $result->count();
+    return $vals;
+  }
+
+}
diff --git a/CRM/Api4/Page/Api4Explorer.php b/CRM/Api4/Page/Api4Explorer.php
new file mode 100644 (file)
index 0000000..8203923
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+class CRM_Api4_Page_Api4Explorer extends CRM_Core_Page {
+
+  public function run() {
+    $vars = [
+      'operators' => \CRM_Core_DAO::acceptedSQLOperators(),
+      'basePath' => Civi::resources()->getUrl('civicrm'),
+      'schema' => (array) \Civi\Api4\Entity::get()->setChain(['fields' => ['$name', 'getFields']])->execute(),
+      'links' => (array) \Civi\Api4\Entity::getLinks()->execute(),
+    ];
+    Civi::resources()
+      ->addVars('api4', $vars)
+      ->addScriptFile('civicrm', 'js/load-bootstrap.js')
+      ->addScriptFile('civicrm', 'bower_components/js-yaml/dist/js-yaml.min.js')
+      ->addScriptFile('civicrm', 'bower_components/google-code-prettify/bin/prettify.min.js')
+      ->addStyleFile('civicrm', 'bower_components/google-code-prettify/bin/prettify.min.css');
+
+    $loader = new Civi\Angular\AngularLoader();
+    $loader->setModules(['api4Explorer']);
+    $loader->setPageName('civicrm/api4');
+    $loader->useApp([
+      'defaultRoute' => '/explorer',
+    ]);
+    $loader->load();
+    parent::run();
+  }
+
+}
diff --git a/CRM/Api4/Services.php b/CRM/Api4/Services.php
new file mode 100644 (file)
index 0000000..03dcf6c
--- /dev/null
@@ -0,0 +1,114 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+use Symfony\Component\DependencyInjection\Reference;
+use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
+use Symfony\Component\Config\FileLocator;
+
+class CRM_Api4_Services {
+
+  /**
+   * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
+   */
+  public static function hook_container($container) {
+    $loader = new XmlFileLoader($container, new FileLocator(dirname(dirname(__DIR__))));
+    $loader->load('Civi/Api4/services.xml');
+
+    self::loadServices('Civi\Api4\Service\Spec\Provider', 'spec_provider', $container);
+    self::loadServices('Civi\Api4\Event\Subscriber', 'event_subscriber', $container);
+
+    $container->getDefinition('civi_api_kernel')->addMethodCall(
+      'registerApiProvider',
+      [new Reference('action_object_provider')]
+    );
+
+    // add event subscribers$container->get(
+    $dispatcher = $container->getDefinition('dispatcher');
+    $subscribers = $container->findTaggedServiceIds('event_subscriber');
+
+    foreach (array_keys($subscribers) as $subscriber) {
+      $dispatcher->addMethodCall(
+        'addSubscriber',
+        [new Reference($subscriber)]
+      );
+    }
+
+    // add spec providers
+    $providers = $container->findTaggedServiceIds('spec_provider');
+    $gatherer = $container->getDefinition('spec_gatherer');
+
+    foreach (array_keys($providers) as $provider) {
+      $gatherer->addMethodCall(
+        'addSpecProvider',
+        [new Reference($provider)]
+      );
+    }
+
+    if (defined('CIVICRM_UF') && CIVICRM_UF === 'UnitTests') {
+      $loader->load('tests/phpunit/api/v4/services.xml');
+    }
+  }
+
+  /**
+   * Load all services in a given directory
+   *
+   * @param string $namespace
+   * @param string $tag
+   * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
+   */
+  public static function loadServices($namespace, $tag, $container) {
+    $namespace = \CRM_Utils_File::addTrailingSlash($namespace, '\\');
+    $locations = array_merge([\Civi::paths()->getPath('[civicrm.root]/Civi.php')],
+      array_column(\CRM_Extension_System::singleton()->getMapper()->getActiveModuleFiles(), 'filePath')
+    );
+    foreach ($locations as $location) {
+      $path = \CRM_Utils_File::addTrailingSlash(dirname($location)) . str_replace('\\', DIRECTORY_SEPARATOR, $namespace);
+      $container->addResource(new \Symfony\Component\Config\Resource\DirectoryResource($path, ';\.php$;'));
+      foreach (glob("$path*.php") as $file) {
+        $matches = [];
+        preg_match('/(\w*).php/', $file, $matches);
+        $serviceName = $namespace . array_pop($matches);
+        $serviceClass = new \ReflectionClass($serviceName);
+        if ($serviceClass->isInstantiable()) {
+          $definition = $container->register(str_replace('\\', '_', $serviceName), $serviceName);
+          $definition->addTag($tag);
+        }
+      }
+    }
+  }
+
+}
index 5d98871c54b81d288a7769f3dfc4636fd524bcf4..2f279e509f643c45308ef43efcbd74bfd129b0fd 100644 (file)
@@ -525,7 +525,7 @@ class CRM_Batch_Form_Entry extends CRM_Core_Form {
           'payment_instrument' => 'payment_instrument_id',
           'contribution_source' => 'source',
           'contribution_note' => 'note',
-
+          'contribution_check_number' => 'check_number',
         ];
         foreach ($fieldTranslations as $formField => $baoField) {
           if (isset($value[$formField])) {
index fce78b7affacef83d9395f3a698c39bfcb61872a..2e5927e9cbe35e128b390807335fad08fb0d87c4 100644 (file)
@@ -34,12 +34,14 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
 
   /**
    * SQL function used to format the phone_numeric field via trigger.
+   *
    * @see self::triggerInfo()
    *
    * Note that this is also used by the 4.3 upgrade script.
    * @see CRM_Upgrade_Incremental_php_FourThree
    */
   const DROP_STRIP_FUNCTION_43 = "DROP FUNCTION IF EXISTS civicrm_strip_non_numeric";
+
   const CREATE_STRIP_FUNCTION_43 = "
     CREATE FUNCTION civicrm_strip_non_numeric(input VARCHAR(255) CHARACTER SET utf8)
       RETURNS VARCHAR(255) CHARACTER SET utf8
@@ -62,31 +64,31 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
    *
    * @var array
    */
-  public static $_commPrefs = array(
+  public static $_commPrefs = [
     'do_not_phone',
     'do_not_email',
     'do_not_mail',
     'do_not_sms',
     'do_not_trade',
-  );
+  ];
 
   /**
    * Types of greetings.
    *
    * @var array
    */
-  public static $_greetingTypes = array(
+  public static $_greetingTypes = [
     'addressee',
     'email_greeting',
     'postal_greeting',
-  );
+  ];
 
   /**
    * Static field for all the contact information that we can potentially import.
    *
    * @var array
    */
-  public static $_importableFields = array();
+  public static $_importableFields = [];
 
   /**
    * Static field for all the contact information that we can potentially export.
@@ -115,6 +117,7 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
    * @return CRM_Contact_BAO_Contact|CRM_Core_Error|NULL
    *   Created or updated contact object or error object.
    *   (error objects are being phased out in favour of exceptions)
+   * @throws \Exception
    */
   public static function add(&$params) {
     $contact = new CRM_Contact_DAO_Contact();
@@ -162,7 +165,7 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
 
     $contact->id = CRM_Utils_Array::value('contact_id', $params);
 
-    if ($contact->contact_type == 'Individual') {
+    if ($contact->contact_type === 'Individual') {
       $allNull = FALSE;
       // @todo allow the lines below to be overridden by input or hooks & add tests,
       // as has been done for households and organizations.
@@ -210,7 +213,7 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
       );
     }
 
-    if ($contact->contact_type == 'Individual' && (isset($params['current_employer']) || isset($params['employer_id']))) {
+    if ($contact->contact_type === 'Individual' && (isset($params['current_employer']) || isset($params['employer_id']))) {
       // Create current employer.
       $newEmployer = !empty($params['employer_id']) ? $params['employer_id'] : CRM_Utils_Array::value('current_employer', $params);
 
@@ -229,7 +232,7 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
     }
 
     // Update cached employer name.
-    if ($contact->contact_type == 'Organization') {
+    if ($contact->contact_type === 'Organization') {
       CRM_Contact_BAO_Contact_Utils::updateCurrentEmployer($contact->id);
     }
 
@@ -254,12 +257,12 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
    * @param bool $skipDelete
    *   Unclear parameter, passed to website create
    *
-   * @todo explain this parameter
-   *
-   * @throws Exception
    * @return CRM_Contact_BAO_Contact|CRM_Core_Error
    *   Created or updated contribution object. We are deprecating returning an error in
    *   favour of exceptions
+   * @throws Exception
+   * @todo explain this parameter
+   *
    */
   public static function &create(&$params, $fixAddress = TRUE, $invokeHooks = TRUE, $skipDelete = FALSE) {
     $contact = NULL;
@@ -325,13 +328,13 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
           $params['group'][$domainGroupID] = 1;
         }
         else {
-          $params['group'] = array($domainGroupID => 1);
+          $params['group'] = [$domainGroupID => 1];
         }
       }
     }
 
     if (array_key_exists('group', $params)) {
-      $contactIds = array($params['contact_id']);
+      $contactIds = [$params['contact_id']];
       foreach ($params['group'] as $groupId => $flag) {
         if ($flag == 1) {
           CRM_Contact_BAO_GroupContact::addContactsToGroup($contactIds, $groupId);
@@ -369,13 +372,13 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
             $contactId = $userID;
           }
 
-          $noteParams = array(
+          $noteParams = [
             'entity_id' => $contact->id,
             'entity_table' => 'civicrm_contact',
             'note' => $note['note'],
             'subject' => CRM_Utils_Array::value('subject', $note),
             'contact_id' => $contactId,
-          );
+          ];
           CRM_Core_BAO_Note::add($noteParams);
         }
       }
@@ -386,13 +389,13 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
           $contactId = $userID;
         }
 
-        $noteParams = array(
+        $noteParams = [
           'entity_id' => $contact->id,
           'entity_table' => 'civicrm_contact',
           'note' => $params['note'],
           'subject' => CRM_Utils_Array::value('subject', $params),
           'contact_id' => $contactId,
-        );
+        ];
         CRM_Core_BAO_Note::add($noteParams);
       }
     }
@@ -408,11 +411,11 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
 
     // make a civicrm_subscription_history entry only on contact create (CRM-777)
     if (empty($params['contact_id'])) {
-      $subscriptionParams = array(
+      $subscriptionParams = [
         'contact_id' => $contact->id,
         'status' => 'Added',
         'method' => 'Admin',
-      );
+      ];
       CRM_Contact_BAO_SubscriptionHistory::create($subscriptionParams);
     }
 
@@ -454,6 +457,7 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
 
   /**
    * Format the output of the create contact function
+   *
    * @param CRM_Contact_DAO_Contact[]|array[] $contacts
    */
   public static function unsetProtectedFields(&$contacts) {
@@ -481,10 +485,12 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
    * (ie. knowing we have definitely tried disambiguates between NULL & not loaded.)
    *
    * @param array $params
+   *
+   * @throws \CiviCRM_API3_Exception
    */
   public static function ensureGreetingParamsAreSet(&$params) {
-    $allGreetingParams = array('addressee' => 'addressee_id', 'postal_greeting' => 'postal_greeting_id', 'email_greeting' => 'email_greeting_id');
-    $missingGreetingParams = array();
+    $allGreetingParams = ['addressee' => 'addressee_id', 'postal_greeting' => 'postal_greeting_id', 'email_greeting' => 'email_greeting_id'];
+    $missingGreetingParams = [];
 
     foreach ($allGreetingParams as $greetingIndex => $greetingParam) {
       if (empty($params[$greetingParam])) {
@@ -493,11 +499,10 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact {
     }
 
     if (!empty($params['contact_id']) && !empty($missingGreetingParams)) {
-      $savedGreetings = civicrm_api3('Contact', 'getsingle', array(
+      $savedGreetings = civicrm_api3('Contact', 'getsingle', [
         'id' => $params['contact_id'],
         'return' => array_keys($missingGreetingParams),
-      )
-      );
+      ]);
 
       foreach (array_keys($missingGreetingParams) as $missingGreetingParam) {
         if (!empty($savedGreetings[$missingGreetingParam . '_custom'])) {
@@ -547,10 +552,10 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
     $dao->query($sql);
     if ($dao->fetch()) {
       $image = CRM_Contact_BAO_Contact_Utils::getImage($dao->contact_sub_type ?
-          $dao->contact_sub_type : $dao->contact_type, FALSE, $id
+        $dao->contact_sub_type : $dao->contact_type, FALSE, $id
       );
       $imageUrl = CRM_Contact_BAO_Contact_Utils::getImage($dao->contact_sub_type ?
-          $dao->contact_sub_type : $dao->contact_type, TRUE, $id
+        $dao->contact_sub_type : $dao->contact_type, TRUE, $id
       );
 
       // use email if display_name is empty
@@ -563,13 +568,13 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
 
       CRM_Utils_Hook::alterDisplayName($displayName, $id, $dao);
 
-      return $includeTypeInReturnParameters ? array(
+      return $includeTypeInReturnParameters ? [
         $displayName,
         $image,
         $dao->contact_type,
         $dao->contact_sub_type,
         $imageUrl,
-      ) : array($displayName, $image, $imageUrl);
+      ] : [$displayName, $image, $imageUrl];
     }
     return NULL;
   }
@@ -589,7 +594,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
    * @fixme How does this relate to almost the same thing being done in CRM_Core_Form::formatParamsForPaymentProcessor()
    */
   public static function addBillingNameFieldsIfOtherwiseNotSet(&$params) {
-    $nameFields = array('first_name', 'middle_name', 'last_name', 'nick_name', 'prefix_id', 'suffix_id');
+    $nameFields = ['first_name', 'middle_name', 'last_name', 'nick_name', 'prefix_id', 'suffix_id'];
     foreach ($nameFields as $field) {
       if (!empty($params[$field])) {
         return;
@@ -644,7 +649,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
       // The underlying lookupValue function needs some de-fanging. Until that has been unravelled we
       // continue to resolve stateprovince lists in descending order of preference & just 'keep trying'.
       // prefer matching country..
-      $stateProvinceList = CRM_Core_BAO_Address::buildOptions('state_province_id', NULL, array('country_id' => Civi::settings()->get('defaultContactCountry')));
+      $stateProvinceList = CRM_Core_BAO_Address::buildOptions('state_province_id', NULL, ['country_id' => Civi::settings()->get('defaultContactCountry')]);
       if (CRM_Utils_Array::lookupValue($values,
         'state_province',
         $stateProvinceList,
@@ -720,26 +725,26 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
   public function createDefaultCrudLink($crudLinkSpec) {
     switch ($crudLinkSpec['action']) {
       case CRM_Core_Action::VIEW:
-        $result = array(
+        $result = [
           'title' => $this->display_name,
           'path' => 'civicrm/contact/view',
-          'query' => array(
+          'query' => [
             'reset' => 1,
             'cid' => $this->id,
-          ),
-        );
+          ],
+        ];
         return $result;
 
       case CRM_Core_Action::UPDATE:
-        $result = array(
+        $result = [
           'title' => $this->display_name,
           'path' => 'civicrm/contact/add',
-          'query' => array(
+          'query' => [
             'reset' => 1,
             'action' => 'update',
             'cid' => $this->id,
-          ),
-        );
+          ],
+        ];
         return $result;
     }
     return NULL;
@@ -748,15 +753,16 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
   /**
    * Get the values for pseudoconstants for name->value and reverse.
    *
+   * @param array $defaults
+   *   (reference) the default values, some of which need to be resolved.
+   * @param bool $reverse
+   *   Always true as this function is only called from one place..
+   *
    * @deprecated
    *
    * This is called specifically from the contact import parser & should be moved there
    * as it is not truly a generic function.
    *
-   * @param array $defaults
-   *   (reference) the default values, some of which need to be resolved.
-   * @param bool $reverse
-   *   Always true as this function is only called from one place..
    */
   public static function resolveDefaults(&$defaults, $reverse = FALSE) {
     // Hack for birth_date.
@@ -773,16 +779,16 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
 
     //lookup value of email/postal greeting, addressee, CRM-4575
     foreach (self::$_greetingTypes as $greeting) {
-      $filterCondition = array(
+      $filterCondition = [
         'contact_type' => CRM_Utils_Array::value('contact_type', $defaults),
         'greeting_type' => $greeting,
-      );
+      ];
       CRM_Utils_Array::lookupValue($defaults, $greeting,
         CRM_Core_PseudoConstant::greeting($filterCondition), $reverse
       );
     }
 
-    $blocks = array('address', 'im', 'phone');
+    $blocks = ['address', 'im', 'phone'];
     foreach ($blocks as $name) {
       if (!array_key_exists($name, $defaults) || !is_array($defaults[$name])) {
         continue;
@@ -795,7 +801,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
         if ($name == 'address') {
           // FIXME: lookupValue doesn't work for vcard_name
           if (!empty($values['location_type_id'])) {
-            $vcardNames = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id', array('labelColumn' => 'vcard_name'));
+            $vcardNames = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id', ['labelColumn' => 'vcard_name']);
             $values['vcard_name'] = $vcardNames[$values['location_type_id']];
           }
 
@@ -878,7 +884,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
     unset($params['id']);
 
     //get the block information for this contact
-    $entityBlock = array('contact_id' => $params['contact_id']);
+    $entityBlock = ['contact_id' => $params['contact_id']];
     $blocks = CRM_Core_BAO_Location::getValues($entityBlock, $microformat);
     $defaults = array_merge($defaults, $blocks);
     foreach ($blocks as $block => $value) {
@@ -949,7 +955,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
     // make sure we have edit permission for this contact
     // before we delete
     if ($checkPermissions && (($skipUndelete && !CRM_Core_Permission::check('delete contacts')) ||
-      ($restore && !CRM_Core_Permission::check('access deleted contacts')))
+        ($restore && !CRM_Core_Permission::check('access deleted contacts')))
     ) {
       return FALSE;
     }
@@ -957,7 +963,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
     // CRM-12929
     // Restrict contact to be delete if contact has financial trxns
     $error = NULL;
-    if ($skipUndelete && CRM_Financial_BAO_FinancialItem::checkContactPresent(array($id), $error)) {
+    if ($skipUndelete && CRM_Financial_BAO_FinancialItem::checkContactPresent([$id], $error)) {
       return FALSE;
     }
 
@@ -1078,7 +1084,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
       // a table-locking query. It still seems a bit inadequate as it assumes the acl users can't see deleted
       // but this should not cause any change as long as contacts are not being trashed outside the
       // main functions for that.
-      CRM_Core_DAO::executeQuery('DELETE FROM civicrm_acl_contact_cache WHERE contact_id = %1', array(1 => array($contactID, 'Integer')));
+      CRM_Core_DAO::executeQuery('DELETE FROM civicrm_acl_contact_cache WHERE contact_id = %1', [1 => [$contactID, 'Integer']]);
     }
     else {
       CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
@@ -1136,7 +1142,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
       $imageThumbWidth = round($thumbWidth * $imageRatio);
     }
 
-    return array($imageThumbWidth, $imageThumbHeight);
+    return [$imageThumbWidth, $imageThumbHeight];
   }
 
   /**
@@ -1159,7 +1165,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
     $statusMsg = NULL,
     $opType = 'status'
   ) {
-    $mimeType = array(
+    $mimeType = [
       'image/jpeg',
       'image/jpg',
       'image/png',
@@ -1167,7 +1173,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
       'image/p-jpeg',
       'image/gif',
       'image/x-png',
-    );
+    ];
 
     if (in_array($params[$imageIndex]['type'], $mimeType)) {
       $photo = basename($params[$imageIndex]['name']);
@@ -1220,14 +1226,14 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
    * @return bool
    */
   public static function contactTrashRestore($contact, $restore = FALSE) {
-    $updateParams = array(
+    $updateParams = [
       'id' => $contact->id,
       'is_deleted' => $restore ? 0 : 1,
-    );
+    ];
 
     CRM_Utils_Hook::pre('update', $contact->contact_type, $contact->id, $updateParams);
 
-    $params = array(1 => array($contact->id, 'Integer'));
+    $params = [1 => [$contact->id, 'Integer']];
     if (!$restore) {
       $query = "DELETE FROM civicrm_uf_match WHERE contact_id = %1";
       CRM_Core_DAO::executeQuery($query, $params);
@@ -1269,7 +1275,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
   public static function getContactSubType($id, $implodeDelimiter = NULL) {
     $subtype = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $id, 'contact_sub_type');
     if (!$subtype) {
-      return $implodeDelimiter ? NULL : array();
+      return $implodeDelimiter ? NULL : [];
     }
 
     $subtype = CRM_Utils_Array::explodePadded($subtype);
@@ -1289,16 +1295,16 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
    * @return array
    */
   public static function getContactTypes($id) {
-    $params = array('id' => $id);
-    $details = array();
+    $params = ['id' => $id];
+    $details = [];
     $contact = CRM_Core_DAO::commonRetrieve('CRM_Contact_DAO_Contact',
       $params,
       $details,
-      array('contact_type', 'contact_sub_type')
+      ['contact_type', 'contact_sub_type']
     );
 
     if ($contact) {
-      $contactTypes = array();
+      $contactTypes = [];
       if ($contact->contact_sub_type) {
         $contactTypes = CRM_Utils_Array::explodePadded($contact->contact_sub_type);
       }
@@ -1357,12 +1363,12 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
       $fields = CRM_Contact_DAO_Contact::import();
 
       // get the fields thar are meant for contact types
-      if (in_array($contactType, array(
+      if (in_array($contactType, [
         'Individual',
         'Household',
         'Organization',
         'All',
-      ))) {
+      ])) {
         $fields = array_merge($fields, CRM_Core_OptionValue::getFields('', $contactType));
       }
 
@@ -1407,14 +1413,14 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
         );
         //unset the fields, which are not related to their
         //contact type.
-        $commonValues = array(
-          'Individual' => array(
+        $commonValues = [
+          'Individual' => [
             'household_name',
             'legal_name',
             'sic_code',
             'organization_name',
-          ),
-          'Household' => array(
+          ],
+          'Household' => [
             'first_name',
             'middle_name',
             'last_name',
@@ -1431,8 +1437,8 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
             'home_URL',
             'is_deceased',
             'deceased_date',
-          ),
-          'Organization' => array(
+          ],
+          'Organization' => [
             'first_name',
             'middle_name',
             'last_name',
@@ -1445,14 +1451,14 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
             'household_name',
             'is_deceased',
             'deceased_date',
-          ),
-        );
+          ],
+        ];
         foreach ($commonValues[$contactType] as $value) {
           unset($fields[$value]);
         }
       }
       else {
-        foreach (array('Individual', 'Household', 'Organization') as $type) {
+        foreach (['Individual', 'Household', 'Organization'] as $type) {
           $fields = array_merge($fields,
             CRM_Core_BAO_CustomField::getFieldsForImport($type,
               $showAll,
@@ -1466,24 +1472,24 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
       }
 
       if ($isProfile) {
-        $fields = array_merge($fields, array(
-          'group' => array(
+        $fields = array_merge($fields, [
+          'group' => [
             'title' => ts('Group(s)'),
             'name' => 'group',
-          ),
-          'tag' => array(
+          ],
+          'tag' => [
             'title' => ts('Tag(s)'),
             'name' => 'tag',
-          ),
-          'note' => array(
+          ],
+          'note' => [
             'title' => ts('Note'),
             'name' => 'note',
-          ),
-          'communication_style_id' => array(
+          ],
+          'communication_style_id' => [
             'title' => ts('Communication Style'),
             'name' => 'communication_style_id',
-          ),
-        ));
+          ],
+        ]);
       }
 
       //Sorting fields in alphabetical order(CRM-1507)
@@ -1496,12 +1502,12 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
 
     if (!$isProfile) {
       if (!$status) {
-        $fields = array_merge(array('do_not_import' => array('title' => ts('- do not import -'))),
+        $fields = array_merge(['do_not_import' => ['title' => ts('- do not import -')]],
           self::$_importableFields[$cacheKeyString]
         );
       }
       else {
-        $fields = array_merge(array('' => array('title' => ts('- Contact Fields -'))),
+        $fields = array_merge(['' => ['title' => ts('- Contact Fields -')]],
           self::$_importableFields[$cacheKeyString]
         );
       }
@@ -1524,6 +1530,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
    *
    * @param bool $withMultiRecord
    * @param bool $checkPermissions
+   *
    * @return array
    *   array of exportable Fields
    */
@@ -1543,7 +1550,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
 
     if (!self::$_exportableFields || !CRM_Utils_Array::value($cacheKeyString, self::$_exportableFields)) {
       if (!self::$_exportableFields) {
-        self::$_exportableFields = array();
+        self::$_exportableFields = [];
       }
 
       // check if we can retrieve from database cache
@@ -1553,38 +1560,38 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
         $fields = CRM_Contact_DAO_Contact::export();
 
         // The fields are meant for contact types.
-        if (in_array($contactType, array(
+        if (in_array($contactType, [
           'Individual',
           'Household',
           'Organization',
           'All',
-        ))) {
+        ])) {
           $fields = array_merge($fields, CRM_Core_OptionValue::getFields('', $contactType));
         }
         // add current employer for individuals
-        $fields = array_merge($fields, array(
+        $fields = array_merge($fields, [
           'current_employer' =>
-            array(
+            [
               'name' => 'organization_name',
               'title' => ts('Current Employer'),
-            ),
-        ));
+            ],
+        ]);
 
-        $locationType = array(
-          'location_type' => array(
+        $locationType = [
+          'location_type' => [
             'name' => 'location_type',
             'where' => 'civicrm_location_type.name',
             'title' => ts('Location Type'),
-          ),
-        );
+          ],
+        ];
 
-        $IMProvider = array(
-          'im_provider' => array(
+        $IMProvider = [
+          'im_provider' => [
             'name' => 'im_provider',
             'where' => 'civicrm_im.provider_id',
             'title' => ts('IM Provider'),
-          ),
-        );
+          ],
+        ];
 
         $locationFields = array_merge($locationType,
           CRM_Core_DAO_Address::export(),
@@ -1623,11 +1630,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
           );
         }
         else {
-          foreach (array(
-            'Individual',
-            'Household',
-            'Organization',
-          ) as $type) {
+          foreach (['Individual', 'Household', 'Organization'] as $type) {
             $fields = array_merge($fields,
               CRM_Core_BAO_CustomField::getFieldsForImport($type, FALSE, FALSE, $search, $checkPermissions, $withMultiRecord)
             );
@@ -1636,36 +1639,36 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
         $fields['current_employer_id']['title'] = ts('Current Employer ID');
         //fix for CRM-791
         if ($export) {
-          $fields = array_merge($fields, array(
-            'groups' => array(
+          $fields = array_merge($fields, [
+            'groups' => [
               'title' => ts('Group(s)'),
               'name' => 'groups',
-            ),
-            'tags' => array(
+            ],
+            'tags' => [
               'title' => ts('Tag(s)'),
               'name' => 'tags',
-            ),
-            'notes' => array(
+            ],
+            'notes' => [
               'title' => ts('Note(s)'),
               'name' => 'notes',
-            ),
-          ));
+            ],
+          ]);
         }
         else {
-          $fields = array_merge($fields, array(
-            'group' => array(
+          $fields = array_merge($fields, [
+            'group' => [
               'title' => ts('Group(s)'),
               'name' => 'group',
-            ),
-            'tag' => array(
+            ],
+            'tag' => [
               'title' => ts('Tag(s)'),
               'name' => 'tag',
-            ),
-            'note' => array(
+            ],
+            'note' => [
               'title' => ts('Note(s)'),
               'name' => 'note',
-            ),
-          ));
+            ],
+          ]);
         }
 
         //Sorting fields in alphabetical order(CRM-1507)
@@ -1676,8 +1679,8 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
         $fields = array_merge($sortArray, $fields);
         //unset the field which are not related to their contact type.
         if ($contactType != 'All') {
-          $commonValues = array(
-            'Individual' => array(
+          $commonValues = [
+            'Individual' => [
               'household_name',
               'legal_name',
               'sic_code',
@@ -1685,8 +1688,8 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
               'email_greeting_custom',
               'postal_greeting_custom',
               'addressee_custom',
-            ),
-            'Household' => array(
+            ],
+            'Household' => [
               'first_name',
               'middle_name',
               'last_name',
@@ -1709,8 +1712,8 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
               'addressee_custom',
               'prefix_id',
               'suffix_id',
-            ),
-            'Organization' => array(
+            ],
+            'Organization' => [
               'first_name',
               'middle_name',
               'last_name',
@@ -1730,8 +1733,8 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
               'is_deceased',
               'deceased_date',
               'current_employer',
-            ),
-          );
+            ],
+          ];
           foreach ($commonValues[$contactType] as $value) {
             unset($fields[$value]);
           }
@@ -1746,7 +1749,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
       $fields = self::$_exportableFields[$cacheKeyString];
     }
     else {
-      $fields = array_merge(array('' => array('title' => ts('- Contact Fields -'))),
+      $fields = array_merge(['' => ['title' => ts('- Contact Fields -')]],
         self::$_exportableFields[$cacheKeyString]
       );
     }
@@ -1766,8 +1769,8 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
    *   Contact details
    */
   public static function getHierContactDetails($contactId, $fields) {
-    $params = array(array('contact_id', '=', $contactId, 0, 0));
-    $options = array();
+    $params = [['contact_id', '=', $contactId, 0, 0]];
+    $options = [];
 
     $returnProperties = self::makeHierReturnProperties($fields, $contactId);
 
@@ -1796,9 +1799,9 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
   public static function &makeHierReturnProperties($fields, $contactId = NULL) {
     $locationTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id');
 
-    $returnProperties = array();
+    $returnProperties = [];
 
-    $multipleFields = array('website' => 'url');
+    $multipleFields = ['website' => 'url'];
     foreach ($fields as $name => $dontCare) {
       if (strpos($name, '-') !== FALSE) {
         list($fieldName, $id, $type) = CRM_Utils_System::explode('-', $name, 3);
@@ -1815,19 +1818,19 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
           }
 
           if (empty($returnProperties['location'])) {
-            $returnProperties['location'] = array();
+            $returnProperties['location'] = [];
           }
           if (empty($returnProperties['location'][$locationTypeName])) {
-            $returnProperties['location'][$locationTypeName] = array();
+            $returnProperties['location'][$locationTypeName] = [];
             $returnProperties['location'][$locationTypeName]['location_type'] = $id;
           }
-          if (in_array($fieldName, array(
+          if (in_array($fieldName, [
             'phone',
             'im',
             'email',
             'openid',
             'phone_ext',
-          ))) {
+          ])) {
             if ($type) {
               $returnProperties['location'][$locationTypeName][$fieldName . '-' . $type] = 1;
             }
@@ -1870,7 +1873,7 @@ WHERE     civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer');
    */
   public static function getPrimaryLocationType($contactId, $skipDefaultPriamry = FALSE, $block = NULL) {
     if ($block) {
-      $entityBlock = array('contact_id' => $contactId);
+      $entityBlock = ['contact_id' => $contactId];
       $blocks = CRM_Core_BAO_Location::getValues($entityBlock);
       foreach ($blocks[$block] as $key => $value) {
         if (!empty($value['is_primary'])) {
@@ -1898,7 +1901,7 @@ FROM civicrm_contact
      LEFT JOIN civicrm_openid  ON ( civicrm_openid.is_primary  = 1 AND civicrm_openid.contact_id = civicrm_contact.id)
 WHERE  civicrm_contact.id = %1 ";
 
-      $params = array(1 => array($contactId, 'Integer'));
+      $params = [1 => [$contactId, 'Integer']];
 
       $dao = CRM_Core_DAO::executeQuery($query, $params);
 
@@ -1942,7 +1945,7 @@ SELECT $nameFields, civicrm_email.email, civicrm_contact.do_not_email, civicrm_e
 FROM   civicrm_contact LEFT JOIN civicrm_email ON (civicrm_contact.id = civicrm_email.contact_id)
 WHERE  civicrm_contact.id = %1
 ORDER BY civicrm_email.is_primary DESC";
-    $params = array(1 => array($id, 'Integer'));
+    $params = [1 => [$id, 'Integer']];
     $dao = CRM_Core_DAO::executeQuery($sql, $params);
 
     if ($dao->fetch()) {
@@ -1961,9 +1964,9 @@ ORDER BY civicrm_email.is_primary DESC";
       $doNotEmail = $dao->do_not_email ? TRUE : FALSE;
       $onHold = $dao->on_hold ? TRUE : FALSE;
       $isDeceased = $dao->is_deceased ? TRUE : FALSE;
-      return array($name, $email, $doNotEmail, $onHold, $isDeceased);
+      return [$name, $email, $doNotEmail, $onHold, $isDeceased];
     }
-    return array(NULL, NULL, NULL, NULL, NULL);
+    return [NULL, NULL, NULL, NULL, NULL];
   }
 
   /**
@@ -2028,11 +2031,11 @@ ORDER BY civicrm_email.is_primary DESC";
       $data['is_opt_out'] = $isOptOut;
       // on change, create new civicrm_subscription_history entry
       if (($wasOptOut != $isOptOut) && !empty($contactDetails['contact_id'])) {
-        $shParams = array(
+        $shParams = [
           'contact_id' => $contactDetails['contact_id'],
           'status' => $isOptOut ? 'Removed' : 'Added',
           'method' => 'Web',
-        );
+        ];
         CRM_Contact_BAO_SubscriptionHistory::create($shParams);
       }
     }
@@ -2067,13 +2070,13 @@ ORDER BY civicrm_email.is_primary DESC";
 
     //to add profile in default group
     if (is_array($addToGroupID)) {
-      $contactIds = array($contactID);
+      $contactIds = [$contactID];
       foreach ($addToGroupID as $groupId) {
         CRM_Contact_BAO_GroupContact::addContactsToGroup($contactIds, $groupId);
       }
     }
     elseif ($addToGroupID) {
-      $contactIds = array($contactID);
+      $contactIds = [$contactID];
       CRM_Contact_BAO_GroupContact::addContactsToGroup($contactIds, $addToGroupID);
     }
 
@@ -2109,7 +2112,7 @@ ORDER BY civicrm_email.is_primary DESC";
     $skipCustom = FALSE
   ) {
 
-    $data = $contactDetails = array();
+    $data = $contactDetails = [];
 
     // get the contact details (hier)
     if ($contactID) {
@@ -2172,7 +2175,7 @@ ORDER BY civicrm_email.is_primary DESC";
       $data['household_name'] = CRM_Utils_Array::value('household_name', $contactDetails);
     }
 
-    $locationType = array();
+    $locationType = [];
     $count = 1;
 
     if ($contactID) {
@@ -2187,9 +2190,9 @@ ORDER BY civicrm_email.is_primary DESC";
 
     $billingLocationTypeId = CRM_Core_BAO_LocationType::getBilling();
 
-    $blocks = array('email', 'phone', 'im', 'openid');
+    $blocks = ['email', 'phone', 'im', 'openid'];
 
-    $multiplFields = array('url');
+    $multiplFields = ['url'];
     // prevent overwritten of formatted array, reset all block from
     // params if it is not in valid format (since import pass valid format)
     foreach ($blocks as $blk) {
@@ -2255,7 +2258,7 @@ ORDER BY civicrm_email.is_primary DESC";
           $data[$blockName][$loc]['is_primary'] = 1;
         }
 
-        if (in_array($fieldName, array('phone'))) {
+        if (in_array($fieldName, ['phone'])) {
           if ($typeId) {
             $data['phone'][$loc]['phone_type_id'] = $typeId;
           }
@@ -2399,20 +2402,20 @@ ORDER BY civicrm_email.is_primary DESC";
             FALSE
           );
         }
-        elseif ($key == 'edit') {
+        elseif ($key === 'edit') {
           continue;
         }
         else {
-          if ($key == 'location') {
+          if ($key === 'location') {
             foreach ($value as $locationTypeId => $field) {
               foreach ($field as $block => $val) {
-                if ($block == 'address' && array_key_exists('address_name', $val)) {
+                if ($block === 'address' && array_key_exists('address_name', $val)) {
                   $value[$locationTypeId][$block]['name'] = $value[$locationTypeId][$block]['address_name'];
                 }
               }
             }
           }
-          if ($key == 'phone' && isset($params['phone_ext'])) {
+          if ($key === 'phone' && isset($params['phone_ext'])) {
             $data[$key] = $value;
             foreach ($value as $cnt => $phoneBlock) {
               if ($params[$key][$cnt]['location_type_id'] == $params['phone_ext'][$cnt]['location_type_id']) {
@@ -2420,18 +2423,10 @@ ORDER BY civicrm_email.is_primary DESC";
               }
             }
           }
-          elseif (in_array($key, array(
-            'nick_name',
-            'job_title',
-            'middle_name',
-            'birth_date',
-            'gender_id',
-            'current_employer',
-            'prefix_id',
-            'suffix_id',
-          )) && ($value == '' || !isset($value)) &&
-          ($session->get('authSrc') & (CRM_Core_Permission::AUTH_SRC_CHECKSUM + CRM_Core_Permission::AUTH_SRC_LOGIN)) == 0 ||
-          ($key == 'current_employer' && empty($params['current_employer']))) {
+          elseif (in_array($key, ['nick_name', 'job_title', 'middle_name', 'birth_date', 'gender_id', 'current_employer', 'prefix_id', 'suffix_id'])
+            && ($value == '' || !isset($value)) &&
+            ($session->get('authSrc') & (CRM_Core_Permission::AUTH_SRC_CHECKSUM + CRM_Core_Permission::AUTH_SRC_LOGIN)) == 0 ||
+            ($key === 'current_employer' && empty($params['current_employer']))) {
             // CRM-10128: if auth source is not checksum / login && $value is blank, do not fill $data with empty value
             // to avoid update with empty values
             continue;
@@ -2464,7 +2459,7 @@ ORDER BY civicrm_email.is_primary DESC";
       }
     }
 
-    return array($data, $contactDetails);
+    return [$data, $contactDetails];
   }
 
   /**
@@ -2504,11 +2499,11 @@ INNER JOIN civicrm_group_contact gc ON
 
     $query .= "
 WHERE      civicrm_email.email = %1 AND civicrm_contact.is_deleted=0";
-    $p = array(1 => array($mail, 'String'));
+    $p = [1 => [$mail, 'String']];
 
     if ($ctype) {
       $query .= " AND civicrm_contact.contact_type = %3";
-      $p[3] = array($ctype, 'String');
+      $p[3] = [$ctype, 'String'];
     }
 
     $query .= " ORDER BY civicrm_email.is_primary DESC";
@@ -2543,11 +2538,11 @@ SELECT     civicrm_contact.id as contact_id,
 FROM       civicrm_contact
 INNER JOIN civicrm_openid    ON ( civicrm_contact.id = civicrm_openid.contact_id )
 WHERE      civicrm_openid.openid = %1";
-    $p = array(1 => array($openId, 'String'));
+    $p = [1 => [$openId, 'String']];
 
     if ($ctype) {
       $query .= " AND civicrm_contact.contact_type = %3";
-      $p[3] = array($ctype, 'String');
+      $p[3] = [$ctype, 'String'];
     }
 
     $query .= " ORDER BY civicrm_openid.is_primary DESC";
@@ -2577,7 +2572,7 @@ WHERE      civicrm_openid.openid = %1";
 LEFT JOIN civicrm_email    ON ( civicrm_contact.id = civicrm_email.contact_id )
     WHERE civicrm_email.is_primary = 1
       AND civicrm_contact.id = %1";
-    $p = array(1 => array($contactID, 'Integer'));
+    $p = [1 => [$contactID, 'Integer']];
     $dao = CRM_Core_DAO::executeQuery($query, $p);
 
     $email = NULL;
@@ -2604,7 +2599,7 @@ FROM      civicrm_contact
 LEFT JOIN civicrm_openid ON ( civicrm_contact.id = civicrm_openid.contact_id )
 WHERE     civicrm_contact.id = %1
 AND       civicrm_openid.is_primary = 1";
-    $p = array(1 => array($contactID, 'Integer'));
+    $p = [1 => [$contactID, 'Integer']];
     $dao = CRM_Core_DAO::executeQuery($query, $p);
 
     $openId = NULL;
@@ -2634,7 +2629,7 @@ AND       civicrm_openid.is_primary = 1";
 
       CRM_Core_DAO::storeValues($contact, $values);
 
-      $privacy = array();
+      $privacy = [];
       foreach (self::$_commPrefs as $name) {
         if (isset($contact->$name)) {
           $privacy[$name] = $contact->$name;
@@ -2646,21 +2641,21 @@ AND       civicrm_openid.is_primary = 1";
       }
 
       // communication Prefferance
-      $preffComm = $comm = array();
+      $preffComm = $comm = [];
       $comm = explode(CRM_Core_DAO::VALUE_SEPARATOR,
         $contact->preferred_communication_method
       );
       foreach ($comm as $value) {
         $preffComm[$value] = 1;
       }
-      $temp = array('preferred_communication_method' => $contact->preferred_communication_method);
+      $temp = ['preferred_communication_method' => $contact->preferred_communication_method];
 
-      $names = array(
-        'preferred_communication_method' => array(
+      $names = [
+        'preferred_communication_method' => [
           'newName' => 'preferred_communication_method_display',
           'groupName' => 'preferred_communication_method',
-        ),
-      );
+        ],
+      ];
 
       // @todo This can be figured out from metadata & we can avoid the uncached query.
       CRM_Core_OptionGroup::lookupValues($temp, $names, FALSE);
@@ -2755,16 +2750,16 @@ AND       civicrm_openid.is_primary = 1";
         return CRM_Grant_BAO_Grant::getContactGrantCount($contactId);
 
       case 'activity':
-        $input = array(
+        $input = [
           'contact_id' => $contactId,
           'admin' => FALSE,
           'caseId' => NULL,
           'context' => 'activity',
-        );
+        ];
         return CRM_Activity_BAO_Activity::getActivitiesCount($input);
 
       case 'mailing':
-        $params = array('contact_id' => $contactId);
+        $params = ['contact_id' => $contactId];
         return CRM_Mailing_BAO_Mailing::getContactMailingsCount($params);
 
       default:
@@ -2825,12 +2820,12 @@ AND       civicrm_openid.is_primary = 1";
     }
 
     // store object values to an array
-    $contactDetails = array();
+    $contactDetails = [];
     CRM_Core_DAO::storeValues($contact, $contactDetails);
-    $contactDetails = array(array($contact->id => $contactDetails));
+    $contactDetails = [[$contact->id => $contactDetails]];
 
     $emailGreetingString = $postalGreetingString = $addresseeString = NULL;
-    $updateQueryString = array();
+    $updateQueryString = [];
 
     //cache email and postal greeting to greeting display
     if ($contact->email_greeting_custom != 'null' && $contact->email_greeting_custom) {
@@ -2838,10 +2833,10 @@ AND       civicrm_openid.is_primary = 1";
     }
     elseif ($contact->email_greeting_id != 'null' && $contact->email_greeting_id) {
       // the filter value for Individual contact type is set to 1
-      $filter = array(
+      $filter = [
         'contact_type' => $contact->contact_type,
         'greeting_type' => 'email_greeting',
-      );
+      ];
 
       $emailGreeting = CRM_Core_PseudoConstant::greeting($filter);
       $emailGreetingString = $emailGreeting[$contact->email_greeting_id];
@@ -2864,14 +2859,14 @@ AND       civicrm_openid.is_primary = 1";
     }
 
     //postal greetings
-    if ($contact->postal_greeting_custom != 'null' && $contact->postal_greeting_custom) {
+    if ($contact->postal_greeting_custom !== 'null' && $contact->postal_greeting_custom) {
       $postalGreetingString = $contact->postal_greeting_custom;
     }
-    elseif ($contact->postal_greeting_id != 'null' && $contact->postal_greeting_id) {
-      $filter = array(
+    elseif ($contact->postal_greeting_id !== 'null' && $contact->postal_greeting_id) {
+      $filter = [
         'contact_type' => $contact->contact_type,
         'greeting_type' => 'postal_greeting',
-      );
+      ];
       $postalGreeting = CRM_Core_PseudoConstant::greeting($filter);
       $postalGreetingString = $postalGreeting[$contact->postal_greeting_id];
       $updateQueryString[] = " postal_greeting_custom = NULL ";
@@ -2893,14 +2888,14 @@ AND       civicrm_openid.is_primary = 1";
     }
 
     // addressee
-    if ($contact->addressee_custom != 'null' && $contact->addressee_custom) {
+    if ($contact->addressee_custom !== 'null' && $contact->addressee_custom) {
       $addresseeString = $contact->addressee_custom;
     }
-    elseif ($contact->addressee_id != 'null' && $contact->addressee_id) {
-      $filter = array(
+    elseif ($contact->addressee_id !== 'null' && $contact->addressee_id) {
+      $filter = [
         'contact_type' => $contact->contact_type,
         'greeting_type' => 'addressee',
-      );
+      ];
 
       $addressee = CRM_Core_PseudoConstant::greeting($filter);
       $addresseeString = $addressee[$contact->addressee_id];
@@ -2943,13 +2938,13 @@ AND       civicrm_openid.is_primary = 1";
    * @return array
    *   loc block ids which fulfill condition.
    */
-  public static function getLocBlockIds($contactId, $criteria = array(), $condOperator = 'AND') {
-    $locBlockIds = array();
+  public static function getLocBlockIds($contactId, $criteria = [], $condOperator = 'AND') {
+    $locBlockIds = [];
     if (!$contactId) {
       return $locBlockIds;
     }
 
-    foreach (array('Email', 'OpenID', 'Phone', 'Address', 'IM') as $block) {
+    foreach (['Email', 'OpenID', 'Phone', 'Address', 'IM'] as $block) {
       $name = strtolower($block);
       $className = "CRM_Core_DAO_$block";
       $blockDAO = new $className();
@@ -2957,12 +2952,12 @@ AND       civicrm_openid.is_primary = 1";
       // build the condition.
       if (is_array($criteria)) {
         $fields = $blockDAO->fields();
-        $conditions = array();
+        $conditions = [];
         foreach ($criteria as $field => $value) {
           if (array_key_exists($field, $fields)) {
             $cond = "( $field = $value )";
             // value might be zero or null.
-            if (!$value || strtolower($value) == 'null') {
+            if (!$value || strtolower($value) === 'null') {
               $cond = "( $field = 0 OR $field IS NULL )";
             }
             $conditions[] = $cond;
@@ -2992,31 +2987,31 @@ AND       civicrm_openid.is_primary = 1";
    *   Array of context menu for logged in user.
    */
   public static function contextMenu($contactId = NULL) {
-    $menu = array(
-      'view' => array(
+    $menu = [
+      'view' => [
         'title' => ts('View Contact'),
         'weight' => 0,
         'ref' => 'view-contact',
         'class' => 'no-popup',
         'key' => 'view',
-        'permissions' => array('view all contacts'),
-      ),
-      'add' => array(
+        'permissions' => ['view all contacts'],
+      ],
+      'add' => [
         'title' => ts('Edit Contact'),
         'weight' => 0,
         'ref' => 'edit-contact',
         'class' => 'no-popup',
         'key' => 'add',
-        'permissions' => array('edit all contacts'),
-      ),
-      'delete' => array(
+        'permissions' => ['edit all contacts'],
+      ],
+      'delete' => [
         'title' => ts('Delete Contact'),
         'weight' => 0,
         'ref' => 'delete-contact',
         'key' => 'delete',
-        'permissions' => array('access deleted contacts', 'delete contacts'),
-      ),
-      'contribution' => array(
+        'permissions' => ['access deleted contacts', 'delete contacts'],
+      ],
+      'contribution' => [
         'title' => ts('Add Contribution'),
         'weight' => 5,
         'ref' => 'new-contribution',
@@ -3026,12 +3021,12 @@ AND       civicrm_openid.is_primary = 1";
         'href' => CRM_Utils_System::url('civicrm/contact/view/contribution',
           'reset=1&action=add&context=contribution'
         ),
-        'permissions' => array(
+        'permissions' => [
           'access CiviContribute',
           'edit contributions',
-        ),
-      ),
-      'participant' => array(
+        ],
+      ],
+      'participant' => [
         'title' => ts('Register for Event'),
         'weight' => 10,
         'ref' => 'new-participant',
@@ -3039,19 +3034,19 @@ AND       civicrm_openid.is_primary = 1";
         'tab' => 'participant',
         'component' => 'CiviEvent',
         'href' => CRM_Utils_System::url('civicrm/contact/view/participant', 'reset=1&action=add&context=participant'),
-        'permissions' => array(
+        'permissions' => [
           'access CiviEvent',
           'edit event participants',
-        ),
-      ),
-      'activity' => array(
+        ],
+      ],
+      'activity' => [
         'title' => ts('Record Activity'),
         'weight' => 35,
         'ref' => 'new-activity',
         'key' => 'activity',
-        'permissions' => array('edit all contacts'),
-      ),
-      'pledge' => array(
+        'permissions' => ['edit all contacts'],
+      ],
+      'pledge' => [
         'title' => ts('Add Pledge'),
         'weight' => 15,
         'ref' => 'new-pledge',
@@ -3061,12 +3056,12 @@ AND       civicrm_openid.is_primary = 1";
           'reset=1&action=add&context=pledge'
         ),
         'component' => 'CiviPledge',
-        'permissions' => array(
+        'permissions' => [
           'access CiviPledge',
           'edit pledges',
-        ),
-      ),
-      'membership' => array(
+        ],
+      ],
+      'membership' => [
         'title' => ts('Add Membership'),
         'weight' => 20,
         'ref' => 'new-membership',
@@ -3076,12 +3071,12 @@ AND       civicrm_openid.is_primary = 1";
         'href' => CRM_Utils_System::url('civicrm/contact/view/membership',
           'reset=1&action=add&context=membership'
         ),
-        'permissions' => array(
+        'permissions' => [
           'access CiviMember',
           'edit memberships',
-        ),
-      ),
-      'case' => array(
+        ],
+      ],
+      'case' => [
         'title' => ts('Add Case'),
         'weight' => 25,
         'ref' => 'new-case',
@@ -3089,9 +3084,9 @@ AND       civicrm_openid.is_primary = 1";
         'tab' => 'case',
         'component' => 'CiviCase',
         'href' => CRM_Utils_System::url('civicrm/case/add', 'reset=1&action=add&context=case'),
-        'permissions' => array('add cases'),
-      ),
-      'grant' => array(
+        'permissions' => ['add cases'],
+      ],
+      'grant' => [
         'title' => ts('Add Grant'),
         'weight' => 26,
         'ref' => 'new-grant',
@@ -3101,9 +3096,9 @@ AND       civicrm_openid.is_primary = 1";
         'href' => CRM_Utils_System::url('civicrm/contact/view/grant',
           'reset=1&action=add&context=grant'
         ),
-        'permissions' => array('edit grants'),
-      ),
-      'rel' => array(
+        'permissions' => ['edit grants'],
+      ],
+      'rel' => [
         'title' => ts('Add Relationship'),
         'weight' => 30,
         'ref' => 'new-relationship',
@@ -3112,9 +3107,9 @@ AND       civicrm_openid.is_primary = 1";
         'href' => CRM_Utils_System::url('civicrm/contact/view/rel',
           'reset=1&action=add'
         ),
-        'permissions' => array('edit all contacts'),
-      ),
-      'note' => array(
+        'permissions' => ['edit all contacts'],
+      ],
+      'note' => [
         'title' => ts('Add Note'),
         'weight' => 40,
         'ref' => 'new-note',
@@ -3124,35 +3119,35 @@ AND       civicrm_openid.is_primary = 1";
         'href' => CRM_Utils_System::url('civicrm/contact/view/note',
           'reset=1&action=add'
         ),
-        'permissions' => array('edit all contacts'),
-      ),
-      'email' => array(
+        'permissions' => ['edit all contacts'],
+      ],
+      'email' => [
         'title' => ts('Send an Email'),
         'weight' => 45,
         'ref' => 'new-email',
         'key' => 'email',
-        'permissions' => array('view all contacts'),
-      ),
-      'group' => array(
+        'permissions' => ['view all contacts'],
+      ],
+      'group' => [
         'title' => ts('Add to Group'),
         'weight' => 50,
         'ref' => 'group-add-contact',
         'key' => 'group',
         'tab' => 'group',
-        'permissions' => array('edit groups'),
-      ),
-      'tag' => array(
+        'permissions' => ['edit groups'],
+      ],
+      'tag' => [
         'title' => ts('Tag Contact'),
         'weight' => 55,
         'ref' => 'tag-contact',
         'key' => 'tag',
         'tab' => 'tag',
-        'permissions' => array('edit all contacts'),
-      ),
-    );
+        'permissions' => ['edit all contacts'],
+      ],
+    ];
 
-    $menu['otherActions'] = array(
-      'print' => array(
+    $menu['otherActions'] = [
+      'print' => [
         'title' => ts('Print Summary'),
         'description' => ts('Printer-friendly view of this page.'),
         'weight' => 5,
@@ -3164,8 +3159,8 @@ AND       civicrm_openid.is_primary = 1";
         ),
         'class' => 'print',
         'icon' => 'crm-i fa-print',
-      ),
-      'vcard' => array(
+      ],
+      'vcard' => [
         'title' => ts('vCard'),
         'description' => ts('vCard record for this contact.'),
         'weight' => 10,
@@ -3177,11 +3172,11 @@ AND       civicrm_openid.is_primary = 1";
         ),
         'class' => 'vcard',
         'icon' => 'crm-i fa-list-alt',
-      ),
-    );
+      ],
+    ];
 
     if (CRM_Core_Permission::check('access Contact Dashboard')) {
-      $menu['otherActions']['dashboard'] = array(
+      $menu['otherActions']['dashboard'] = [
         'title' => ts('Contact Dashboard'),
         'description' => ts('Contact Dashboard'),
         'weight' => 15,
@@ -3193,12 +3188,12 @@ AND       civicrm_openid.is_primary = 1";
         //  as CRM_Core_Config::singleton()->userSystem->getUserRecordUrl($contactId)
         'href' => CRM_Utils_System::url('civicrm/user', "reset=1&id={$contactId}"),
         'icon' => 'crm-i fa-tachometer',
-      );
+      ];
     }
 
     $uid = CRM_Core_BAO_UFMatch::getUFId($contactId);
     if ($uid) {
-      $menu['otherActions']['user-record'] = array(
+      $menu['otherActions']['user-record'] = [
         'title' => ts('User Record'),
         'description' => ts('User Record'),
         'weight' => 20,
@@ -3208,10 +3203,10 @@ AND       civicrm_openid.is_primary = 1";
         'class' => 'user-record',
         'href' => CRM_Core_Config::singleton()->userSystem->getUserRecordUrl($contactId),
         'icon' => 'crm-i fa-user',
-      );
+      ];
     }
     elseif (CRM_Core_Config::singleton()->userSystem->checkPermissionAddUser()) {
-      $menu['otherActions']['user-add'] = array(
+      $menu['otherActions']['user-add'] = [
         'title' => ts('Create User Record'),
         'description' => ts('Create User Record'),
         'weight' => 25,
@@ -3221,7 +3216,7 @@ AND       civicrm_openid.is_primary = 1";
         'class' => 'user-add',
         'href' => CRM_Utils_System::url('civicrm/contact/view/useradd', 'reset=1&action=add&cid=' . $contactId),
         'icon' => 'crm-i fa-user-plus',
-      );
+      ];
     }
 
     CRM_Utils_Hook::summaryActions($menu, $contactId);
@@ -3230,7 +3225,7 @@ AND       civicrm_openid.is_primary = 1";
     //3. check for acls.
     //3. edit and view contact are directly accessible to user.
 
-    $aclPermissionedTasks = array(
+    $aclPermissionedTasks = [
       'view-contact',
       'edit-contact',
       'new-activity',
@@ -3238,40 +3233,40 @@ AND       civicrm_openid.is_primary = 1";
       'group-add-contact',
       'tag-contact',
       'delete-contact',
-    );
+    ];
     $corePermission = CRM_Core_Permission::getPermission();
 
-    $contextMenu = array();
+    $contextMenu = [];
     foreach ($menu as $key => $values) {
-      if ($key != 'otherActions') {
+      if ($key !== 'otherActions') {
 
         // user does not have necessary permissions.
         if (!self::checkUserMenuPermissions($aclPermissionedTasks, $corePermission, $values)) {
           continue;
         }
         // build directly accessible action menu.
-        if (in_array($values['ref'], array(
+        if (in_array($values['ref'], [
           'view-contact',
           'edit-contact',
-        ))) {
-          $contextMenu['primaryActions'][$key] = array(
+        ])) {
+          $contextMenu['primaryActions'][$key] = [
             'title' => $values['title'],
             'ref' => $values['ref'],
             'class' => CRM_Utils_Array::value('class', $values),
             'key' => $values['key'],
-          );
+          ];
           continue;
         }
 
         // finally get menu item for -more- action widget.
-        $contextMenu['moreActions'][$values['weight']] = array(
+        $contextMenu['moreActions'][$values['weight']] = [
           'title' => $values['title'],
           'ref' => $values['ref'],
           'href' => CRM_Utils_Array::value('href', $values),
           'tab' => CRM_Utils_Array::value('tab', $values),
           'class' => CRM_Utils_Array::value('class', $values),
           'key' => $values['key'],
-        );
+        ];
       }
       else {
         foreach ($values as $value) {
@@ -3281,7 +3276,7 @@ AND       civicrm_openid.is_primary = 1";
           }
 
           // finally get menu item for -more- action widget.
-          $contextMenu['otherActions'][$value['weight']] = array(
+          $contextMenu['otherActions'][$value['weight']] = [
             'title' => $value['title'],
             'ref' => $value['ref'],
             'href' => CRM_Utils_Array::value('href', $value),
@@ -3289,7 +3284,7 @@ AND       civicrm_openid.is_primary = 1";
             'class' => CRM_Utils_Array::value('class', $value),
             'icon' => CRM_Utils_Array::value('icon', $value),
             'key' => $value['key'],
-          );
+          ];
         }
       }
     }
@@ -3343,15 +3338,15 @@ AND       civicrm_openid.is_primary = 1";
       }
 
       // if still user does not have required permissions, check acl.
-      if (!$hasAllPermissions && $menuOptions['ref'] != 'delete-contact') {
+      if (!$hasAllPermissions && $menuOptions['ref'] !== 'delete-contact') {
         if (in_array($menuOptions['ref'], $aclPermissionedTasks) &&
-            $corePermission == CRM_Core_Permission::EDIT
-            ) {
+          $corePermission == CRM_Core_Permission::EDIT
+        ) {
           $hasAllPermissions = TRUE;
         }
-        elseif (in_array($menuOptions['ref'], array(
+        elseif (in_array($menuOptions['ref'], [
           'new-email',
-        ))) {
+        ])) {
           // grant permissions for these tasks.
           $hasAllPermissions = TRUE;
         }
@@ -3402,15 +3397,15 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id )
       'SELECT created_date, modified_date
       FROM civicrm_contact
       WHERE id = %1',
-      array(
-        1 => array($contactId, 'Integer'),
-      )
+      [
+        1 => [$contactId, 'Integer'],
+      ]
     );
     if ($timestamps->fetch()) {
-      return array(
+      return [
         'created_date' => $timestamps->created_date,
         'modified_date' => $timestamps->modified_date,
-      );
+      ];
     }
     else {
       return NULL;
@@ -3420,12 +3415,13 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id )
   /**
    * Get a list of triggers for the contact table.
    *
-   * @see hook_civicrm_triggerInfo
-   * @see CRM_Core_DAO::triggerRebuild
-   * @see http://issues.civicrm.org/jira/browse/CRM-10554
-   *
    * @param $info
    * @param null $tableName
+   *
+   * @see http://issues.civicrm.org/jira/browse/CRM-10554
+   *
+   * @see hook_civicrm_triggerInfo
+   * @see CRM_Core_DAO::triggerRebuild
    */
   public static function triggerInfo(&$info, $tableName = NULL) {
     //during upgrade, first check for valid version and then create triggers
@@ -3440,13 +3436,13 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id )
 
     // Modifications to these records should update the contact timestamps.
     \Civi\Core\SqlTrigger\TimestampTriggers::create('civicrm_contact', 'Contact')
-      ->setRelations(array(
-          array('table' => 'civicrm_address', 'column' => 'contact_id'),
-          array('table' => 'civicrm_email', 'column' => 'contact_id'),
-          array('table' => 'civicrm_im', 'column' => 'contact_id'),
-          array('table' => 'civicrm_phone', 'column' => 'contact_id'),
-          array('table' => 'civicrm_website', 'column' => 'contact_id'),
-      ))
+      ->setRelations([
+        ['table' => 'civicrm_address', 'column' => 'contact_id'],
+        ['table' => 'civicrm_email', 'column' => 'contact_id'],
+        ['table' => 'civicrm_im', 'column' => 'contact_id'],
+        ['table' => 'civicrm_phone', 'column' => 'contact_id'],
+        ['table' => 'civicrm_website', 'column' => 'contact_id'],
+      ])
       ->alterTriggerInfo($info, $tableName);
 
     // Update phone table to populate phone_numeric field
@@ -3455,12 +3451,12 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id )
       $sqlTriggers = Civi::service('sql_triggers');
       $sqlTriggers->enqueueQuery(self::DROP_STRIP_FUNCTION_43);
       $sqlTriggers->enqueueQuery(self::CREATE_STRIP_FUNCTION_43);
-      $info[] = array(
-        'table' => array('civicrm_phone'),
+      $info[] = [
+        'table' => ['civicrm_phone'],
         'when' => 'BEFORE',
-        'event' => array('INSERT', 'UPDATE'),
+        'event' => ['INSERT', 'UPDATE'],
         'sql' => "\nSET NEW.phone_numeric = civicrm_strip_non_numeric(NEW.phone);\n",
-      );
+      ];
     }
   }
 
@@ -3490,21 +3486,21 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id )
   /**
    * Get options for a given contact field.
    *
-   * @see CRM_Core_DAO::buildOptions
-   *
-   * TODO: Should we always assume chainselect? What fn should be responsible for controlling that flow?
-   * TODO: In context of chainselect, what to return if e.g. a country has no states?
-   *
    * @param string $fieldName
    * @param string $context
-   * @see CRM_Core_DAO::buildOptionsContext
    * @param array $props
    *   whatever is known about this dao object.
    *
    * @return array|bool
+   * @see CRM_Core_DAO::buildOptions
+   *
+   * TODO: Should we always assume chainselect? What fn should be responsible for controlling that flow?
+   * TODO: In context of chainselect, what to return if e.g. a country has no states?
+   *
+   * @see CRM_Core_DAO::buildOptionsContext
    */
-  public static function buildOptions($fieldName, $context = NULL, $props = array()) {
-    $params = array();
+  public static function buildOptions($fieldName, $context = NULL, $props = []) {
+    $params = [];
     // Special logic for fields whose options depend on context or properties
     switch ($fieldName) {
       case 'contact_sub_type':
@@ -3553,6 +3549,7 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id )
    *
    * @param string $type
    * @param int $id
+   *
    * @return bool
    */
   public static function deleteObjectWithPrimary($type, $id) {
@@ -3597,10 +3594,10 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id )
   public function addSelectWhereClause() {
     // We always return an array with these keys, even if they are empty,
     // because this tells the query builder that we have considered these fields for acls
-    $clauses = array(
+    $clauses = [
       'id' => (array) CRM_Contact_BAO_Contact_Permission::cacheSubquery(),
-      'is_deleted' => CRM_Core_Permission::check('access deleted contacts') ? array() : array('!= 1'),
-    );
+      'is_deleted' => CRM_Core_Permission::check('access deleted contacts') ? [] : ['!= 1'],
+    ];
     CRM_Utils_Hook::selectWhereClause($this, $clauses);
     return $clauses;
   }
@@ -3715,13 +3712,13 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id )
       ];
       foreach ($retrieved['values'] as $id => $profile) {
         if (in_array($profile['name'], $profiles)) {
-          $links[] = array(
+          $links[] = [
             'label' => $profile['title'],
             'url' => CRM_Utils_System::url('civicrm/profile/create', "reset=1&context=dialog&gid=$id",
               NULL, NULL, FALSE, FALSE, TRUE),
             'type' => ucfirst(str_replace('new_', '', $profile['name'])),
             'icon' => CRM_Utils_Array::value(str_replace('new_', '', $profile['name']), $icons),
-          );
+          ];
         }
         else {
           $append[] = $id;
index e0ada62e16dac9ee23f477442e962aab2a0bb0b9..754b2bd1fca4b1aa9ff5b31ed8314b3ae5f1e966 100644 (file)
@@ -47,7 +47,7 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
    *
    * @param array $params
    *   (reference ) an assoc array of name/value pairs.
-   * @param CRM $contact
+   * @param CRM_Contact_BAO_Contact $contact
    *   Contact object.
    *
    * @return CRM_Contact_BAO_Contact
index 33a350ef6ae8a7cb681e0d680d8ee762975bb9f1..f2995582e1caafbe86388162ec77c1d6318d3d7d 100644 (file)
@@ -4526,6 +4526,10 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
       elseif ($recurContrib && $recurringContributionID) {
         //CRM-13273 - is_email_receipt setting on recurring contribution should take precedence over contribution page setting
         // but CRM-16124 if $input['is_email_receipt'] is set then that should not be overridden.
+        // dev/core#1245 this maybe not the desired effect because the default value for is_email_receipt is set to 0 rather than 1 in
+        // Instance that had the table added via an upgrade in 4.1
+        // see also https://github.com/civicrm/civicrm-svn/commit/7f39befd60bc735408d7866b02b3ac7fff1d4eea#diff-9ad8e290180451a2d6eacbd3d1ca7966R354
+        // https://lab.civicrm.org/dev/core/issues/1245
         $values['is_email_receipt'] = $recurContrib->is_email_receipt;
       }
 
@@ -4686,7 +4690,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
     // if we are still empty see if we can use anything from a contribution page.
     if (!empty($pageValues['receipt_from_email'])) {
       return [
-        $pageValues['receipt_from_name'],
+        CRM_Utils_Array::value('receipt_from_name', $pageValues),
         $pageValues['receipt_from_email'],
       ];
     }
index 95fddb2ce9c5a9ae853acf673d6f96ad012590fe..8f7e170fddb1609ba710796344c9066caf9ca530 100644 (file)
@@ -283,7 +283,6 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
    * Set variables up before form is built.
    */
   public function preProcess() {
-    $config = CRM_Core_Config::singleton();
     parent::preProcess();
 
     // lineItem isn't set until Register postProcess
@@ -305,7 +304,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       $this->_params['month'] = CRM_Core_Payment_Form::getCreditCardExpirationMonth($this->_params);
     }
 
-    $this->_params['currencyID'] = $config->defaultCurrency;
+    $this->_params['currencyID'] = CRM_Core_Config::singleton()->defaultCurrency;
 
     if (!empty($this->_membershipBlock)) {
       $this->_params['selectMembership'] = $this->get('selectMembership');
@@ -1977,6 +1976,10 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       }
     }
 
+    if (!empty($params['useForMember'])) {
+      $form->set('useForMember', 1);
+      $form->_useForMember = 1;
+    }
     $priceFields = $priceFields[$priceSetID]['fields'];
     $lineItems = [];
     CRM_Price_BAO_PriceSet::processAmount($priceFields, $paramsProcessedForForm, $lineItems, 'civicrm_contribution', $priceSetID);
@@ -2269,11 +2272,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     $this->_useForMember = $this->get('useForMember');
 
     // store the fact that this is a membership and membership type is selected
-    if ((!empty($membershipParams['selectMembership']) &&
-        $membershipParams['selectMembership'] != 'no_thanks'
-      ) ||
-      $this->_useForMember
-    ) {
+    if ($this->isMembershipSelected($membershipParams)) {
       if (!$this->_useForMember) {
         $this->assign('membership_assign', TRUE);
         $this->set('membershipTypeID', $this->_params['selectMembership']);
@@ -2338,6 +2337,53 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
     }
   }
 
+  /**
+   * Return True/False if we have a membership selected on the contribution page
+   * @param array $membershipParams
+   *
+   * @return bool
+   */
+  private function isMembershipSelected($membershipParams) {
+    $priceFieldIds = $this->get('memberPriceFieldIDS');
+    if ((!empty($membershipParams['selectMembership']) && $membershipParams['selectMembership'] != 'no_thanks')
+        && empty($priceFieldIds)) {
+      return TRUE;
+    }
+    else {
+      $membershipParams = $this->getMembershipParamsFromPriceSet($membershipParams);
+    }
+    return !empty($membershipParams['selectMembership']);
+  }
+
+  /**
+   * Extract the selected memberships from a priceSet
+   *
+   * @param array $membershipParams
+   *
+   * @return array
+   */
+  private function getMembershipParamsFromPriceSet($membershipParams) {
+    $priceFieldIds = $this->get('memberPriceFieldIDS');
+    if (empty($priceFieldIds)) {
+      return $membershipParams;
+    }
+    $membershipParams['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceFieldIds['id'], 'financial_type_id');
+    unset($priceFieldIds['id']);
+    $membershipTypeIds = [];
+    $membershipTypeTerms = [];
+    foreach ($priceFieldIds as $priceFieldId) {
+      $membershipTypeId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceFieldValue', $priceFieldId, 'membership_type_id');
+      if ($membershipTypeId) {
+        $membershipTypeIds[] = $membershipTypeId;
+        $term = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceFieldValue', $priceFieldId, 'membership_num_terms') ?: 1;
+        $membershipTypeTerms[$membershipTypeId] = ($term > 1) ? $term : 1;
+      }
+    }
+    $membershipParams['selectMembership'] = $membershipTypeIds;
+    $membershipParams['types_terms'] = $membershipTypeTerms;
+    return $membershipParams;
+  }
+
   /**
    * Membership processing section.
    *
@@ -2387,24 +2433,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr
       $fieldTypes = ['Contact', 'Organization', 'Membership'];
     }
 
-    $priceFieldIds = $this->get('memberPriceFieldIDS');
-
-    if (!empty($priceFieldIds)) {
-      $membershipParams['financial_type_id'] = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceFieldIds['id'], 'financial_type_id');
-      unset($priceFieldIds['id']);
-      $membershipTypeIds = [];
-      $membershipTypeTerms = [];
-      foreach ($priceFieldIds as $priceFieldId) {
-        $membershipTypeId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceFieldValue', $priceFieldId, 'membership_type_id');
-        if ($membershipTypeId) {
-          $membershipTypeIds[] = $membershipTypeId;
-          $term = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceFieldValue', $priceFieldId, 'membership_num_terms') ?: 1;
-          $membershipTypeTerms[$membershipTypeId] = ($term > 1) ? $term : 1;
-        }
-      }
-      $membershipParams['selectMembership'] = $membershipTypeIds;
-      $membershipParams['types_terms'] = $membershipTypeTerms;
-    }
+    $membershipParams = $this->getMembershipParamsFromPriceSet($membershipParams);
     if (!empty($membershipParams['selectMembership'])) {
       // CRM-12233
       $membershipLineItems = $formLineItems;
index 7fc5fe9ac2cbef9a8f56d1c6cbc753f01bbff0e9..49cb0522e83a6615e7aca2ddf63bc48d06fe184a 100644 (file)
@@ -896,7 +896,7 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Contribute_Import_Pa
 
           // giving respect to pledge_payment flag.
           if (empty($params['pledge_payment'])) {
-            continue;
+            break;
           }
 
           // get total amount of from import fields
index 8eef1432321fb40c383683ca6df78d6188f518c4..2c89838c40ba87704ecba71db6d9e47488704c43 100644 (file)
@@ -394,6 +394,9 @@ class CRM_Core_BAO_Dashboard extends CRM_Core_DAO_Dashboard {
       if (empty($params['domain_id'])) {
         $dashlet->domain_id = CRM_Core_Config::domainID();
       }
+      else {
+        $dashlet->domain_id = CRM_Utils_Array::value('domain_id', $params);
+      }
 
       // Try and find an existing dashlet - it will be updated if found.
       if (!empty($params['name'])) {
index a34bf4da646ebdfe9d7a271919b5207d5a219356..a3bb87f07666ee737f74efc5c9db41c9bbeae601 100644 (file)
@@ -530,19 +530,6 @@ class CRM_Core_Block {
     self::setProperty(self::MAIL, 'templateValues', array('shortCuts' => $values));
   }
 
-  /**
-   * Create the list of shortcuts for the application and format is as a block.
-   */
-  private static function setTemplateMenuValues() {
-    $config = CRM_Core_Config::singleton();
-
-    $path = 'navigation';
-    $values = CRM_Core_Menu::getNavigation();
-    if ($values) {
-      self::setProperty(self::MENU, 'templateValues', array('menu' => $values));
-    }
-  }
-
   /**
    * Create the event blocks for upcoming events.
    */
index 51dbcf9b1d46f1f1857b95cf7fd22a719ef883a7..b7fa50df7393d4e991ecf4533781d937461f9246 100644 (file)
@@ -193,7 +193,7 @@ class CRM_Core_ClassLoader {
     // we do this to prevent a autoloader errors with joomla / 3rd party packages
     // Use absolute path, since we don't know the content of include_path yet.
     // CRM-11304
-    $file = dirname(__FILE__) . '/../../packages/IDS/vendors/htmlpurifer/HTMLPurifier/Bootstrap.php';
+    $file = dirname(__FILE__) . '/../../packages/IDS/vendors/htmlpurifier/HTMLPurifier/Bootstrap.php';
     if (file_exists($file)) {
       return $file;
     }
index d64c5ce5f94319ca6f4e3080c5fc0017ed67414e..da2abcec7b759fb6adc68a4b1424de4dfec42f63 100644 (file)
@@ -163,6 +163,8 @@ class CRM_Core_Config_Runtime extends CRM_Core_Config_MagicMerge {
         \CRM_Utils_Array::value('HTTP_HOST', $_SERVER, ''),
         // e.g. port-based vhosts
         \CRM_Utils_Array::value('SERVER_PORT', $_SERVER, ''),
+        // e.g. unit testing
+        defined('CIVICRM_TEST') ? 1 : 0,
         // Depending on deployment arch, these signals *could* be redundant, but who cares?
       ]));
     }
index 6d5e6e5a14ca02265b4cda218e1c2256f464542c..db02ed542a955b0a7a3ce41737c30442df77a0de 100644 (file)
@@ -820,7 +820,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
   }
 
   /**
-   * Format the fields for the payment processor.
+   * Format the fields in $this->_params for the payment processor.
    *
    * In order to pass fields to the payment processor in a consistent way we add some renamed
    * parameters.
@@ -830,33 +830,48 @@ class CRM_Core_Form extends HTML_QuickForm_Page {
    * @return array
    */
   protected function formatParamsForPaymentProcessor($fields) {
+    $this->_params = $this->prepareParamsForPaymentProcessor($this->_params);
+    $fields = array_merge($fields, ['first_name' => 1, 'middle_name' => 1, 'last_name' => 1]);
+    return $fields;
+  }
+
+  /**
+   * Format the fields in $params for the payment processor.
+   *
+   * In order to pass fields to the payment processor in a consistent way we add some renamed
+   * parameters.
+   *
+   * @param array $params Payment processor params
+   *
+   * @return array $params
+   */
+  protected function prepareParamsForPaymentProcessor($params) {
     // also add location name to the array
-    $this->_params["address_name-{$this->_bltID}"] = CRM_Utils_Array::value('billing_first_name', $this->_params) . ' ' . CRM_Utils_Array::value('billing_middle_name', $this->_params) . ' ' . CRM_Utils_Array::value('billing_last_name', $this->_params);
-    $this->_params["address_name-{$this->_bltID}"] = trim($this->_params["address_name-{$this->_bltID}"]);
+    $params["address_name-{$this->_bltID}"] = CRM_Utils_Array::value('billing_first_name', $params) . ' ' . CRM_Utils_Array::value('billing_middle_name', $params) . ' ' . CRM_Utils_Array::value('billing_last_name', $params);
+    $params["address_name-{$this->_bltID}"] = trim($params["address_name-{$this->_bltID}"]);
     // Add additional parameters that the payment processors are used to receiving.
-    if (!empty($this->_params["billing_state_province_id-{$this->_bltID}"])) {
-      $this->_params['state_province'] = $this->_params["state_province-{$this->_bltID}"] = $this->_params["billing_state_province-{$this->_bltID}"] = CRM_Core_PseudoConstant::stateProvinceAbbreviation($this->_params["billing_state_province_id-{$this->_bltID}"]);
+    if (!empty($params["billing_state_province_id-{$this->_bltID}"])) {
+      $params['state_province'] = $params["state_province-{$this->_bltID}"] = $params["billing_state_province-{$this->_bltID}"] = CRM_Core_PseudoConstant::stateProvinceAbbreviation($params["billing_state_province_id-{$this->_bltID}"]);
     }
-    if (!empty($this->_params["billing_country_id-{$this->_bltID}"])) {
-      $this->_params['country'] = $this->_params["country-{$this->_bltID}"] = $this->_params["billing_country-{$this->_bltID}"] = CRM_Core_PseudoConstant::countryIsoCode($this->_params["billing_country_id-{$this->_bltID}"]);
+    if (!empty($params["billing_country_id-{$this->_bltID}"])) {
+      $params['country'] = $params["country-{$this->_bltID}"] = $params["billing_country-{$this->_bltID}"] = CRM_Core_PseudoConstant::countryIsoCode($params["billing_country_id-{$this->_bltID}"]);
     }
 
-    list($hasAddressField, $addressParams) = CRM_Contribute_BAO_Contribution::getPaymentProcessorReadyAddressParams($this->_params, $this->_bltID);
+    list($hasAddressField, $addressParams) = CRM_Contribute_BAO_Contribution::getPaymentProcessorReadyAddressParams($params, $this->_bltID);
     if ($hasAddressField) {
-      $this->_params = array_merge($this->_params, $addressParams);
+      $params = array_merge($params, $addressParams);
     }
 
     // @fixme it would be really nice to have a comment here so I had a clue why we are setting $fields[$name] = 1
     // Also how does relate to similar code in CRM_Contact_BAO_Contact::addBillingNameFieldsIfOtherwiseNotSet()
     $nameFields = ['first_name', 'middle_name', 'last_name'];
     foreach ($nameFields as $name) {
-      $fields[$name] = 1;
-      if (array_key_exists("billing_$name", $this->_params)) {
-        $this->_params[$name] = $this->_params["billing_{$name}"];
-        $this->_params['preserveDBName'] = TRUE;
+      if (array_key_exists("billing_$name", $params)) {
+        $params[$name] = $params["billing_{$name}"];
+        $params['preserveDBName'] = TRUE;
       }
     }
-    return $fields;
+    return $params;
   }
 
   /**
index 796491120402e5ddfba89dcc2c04d6b1a7f031aa..c6fefdc91a5951343e3edf09bacfff9781cbea00 100644 (file)
@@ -401,120 +401,6 @@ class CRM_Core_Menu {
     $menu['admin'] = array('breadcrumb' => $values);
   }
 
-  /**
-   * Get navigation.
-   *
-   * @param bool $all
-   *
-   * @return mixed
-   * @throws Exception
-   */
-  public static function &getNavigation($all = FALSE) {
-    CRM_Core_Error::fatal();
-
-    if (!self::$_menuCache) {
-      self::get('navigation');
-    }
-
-    if (CRM_Core_Config::isUpgradeMode()) {
-      return array();
-    }
-
-    if (!array_key_exists('navigation', self::$_menuCache)) {
-      // problem could be due to menu table empty. Just do a
-      // menu store and try again
-      self::store();
-
-      // here we goo
-      self::get('navigation');
-      if (!array_key_exists('navigation', self::$_menuCache)) {
-        CRM_Core_Error::fatal();
-      }
-    }
-    $nav = &self::$_menuCache['navigation'];
-
-    if (!$nav ||
-      !isset($nav['breadcrumb'])
-    ) {
-      return NULL;
-    }
-
-    $values = &$nav['breadcrumb'];
-    $config = CRM_Core_Config::singleton();
-    foreach ($values as $index => $item) {
-      if (strpos(CRM_Utils_Array::value($config->userFrameworkURLVar, $_REQUEST),
-          $item['path']
-        ) === 0
-      ) {
-        $values[$index]['active'] = 'class="active"';
-      }
-      else {
-        $values[$index]['active'] = '';
-      }
-
-      if ($values[$index]['parent']) {
-        $parent = $values[$index]['parent'];
-
-        // only reset if still a leaf
-        if ($values[$parent]['class'] == 'leaf') {
-          $values[$parent]['class'] = 'collapsed';
-        }
-
-        // if a child or the parent is active, expand the menu
-        if ($values[$index]['active'] ||
-          $values[$parent]['active']
-        ) {
-          $values[$parent]['class'] = 'expanded';
-        }
-
-        // make the parent inactive if the child is active
-        if ($values[$index]['active'] &&
-          $values[$parent]['active']
-        ) {
-          $values[$parent]['active'] = '';
-        }
-      }
-    }
-
-    if (!$all) {
-      // remove all collapsed menu items from the array
-      foreach ($values as $weight => $v) {
-        if ($v['parent'] &&
-          $values[$v['parent']]['class'] == 'collapsed'
-        ) {
-          unset($values[$weight]);
-        }
-      }
-    }
-
-    // check permissions for the rest
-    $activeChildren = array();
-
-    foreach ($values as $weight => $v) {
-      if (CRM_Core_Permission::checkMenuItem($v)) {
-        if ($v['parent']) {
-          $activeChildren[] = $weight;
-        }
-      }
-      else {
-        unset($values[$weight]);
-      }
-    }
-
-    // add the start / end tags
-    $len = count($activeChildren) - 1;
-    if ($len >= 0) {
-      $values[$activeChildren[0]]['start'] = TRUE;
-      $values[$activeChildren[$len]]['end'] = TRUE;
-    }
-
-    ksort($values, SORT_NUMERIC);
-    $i18n = CRM_Core_I18n::singleton();
-    $i18n->localizeTitles($values);
-
-    return $values;
-  }
-
   /**
    * Get admin links.
    *
index 5a67b904c4a4b221c327ccdcdd6665e66a5fa4df..3a347827afe28a94aaa9b1858018625fece66229 100644 (file)
@@ -933,7 +933,7 @@ class CRM_Core_Resources {
       }
     }
 
-    CRM_Utils_Hook::entityRefFilters($data['filters']);
+    CRM_Utils_Hook::entityRefFilters($data['filters'], $data['links']);
 
     return $data;
   }
diff --git a/CRM/Core/xml/Menu/Api4.xml b/CRM/Core/xml/Menu/Api4.xml
new file mode 100644 (file)
index 0000000..1973f23
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<menu>
+  <item>
+    <path>civicrm/ajax/api4</path>
+    <page_callback>CRM_Api4_Page_AJAX</page_callback>
+    <access_arguments>access CiviCRM</access_arguments>
+  </item>
+  <item>
+    <path>civicrm/api4</path>
+    <page_callback>CRM_Api4_Page_Api4Explorer</page_callback>
+    <title>CiviCRM</title>
+    <access_arguments>access CiviCRM</access_arguments>
+  </item>
+</menu>
index 6fae79fac17873f45d5b32ff2c74c89a4db5354d..b46e41e283fdb27a2c3fb800a285e0743912c781 100644 (file)
@@ -610,7 +610,10 @@ class CRM_Export_BAO_ExportProcessor {
    * @return array
    */
   public function getQueryFields() {
-    return $this->queryFields;
+    return array_merge(
+      $this->queryFields,
+      $this->getComponentPaymentFields()
+    );
   }
 
   /**
@@ -746,7 +749,7 @@ class CRM_Export_BAO_ExportProcessor {
       return $this->getQueryFields()[$field]['title'];
     }
     elseif ($this->isExportPaymentFields() && array_key_exists($field, $this->getcomponentPaymentFields())) {
-      return CRM_Utils_Array::value($field, $this->getcomponentPaymentFields());
+      return CRM_Utils_Array::value($field, $this->getcomponentPaymentFields())['title'];
     }
     else {
       return $field;
@@ -1278,11 +1281,11 @@ class CRM_Export_BAO_ExportProcessor {
    */
   public function getComponentPaymentFields() {
     return [
-      'componentPaymentField_total_amount' => ts('Total Amount'),
-      'componentPaymentField_contribution_status' => ts('Contribution Status'),
-      'componentPaymentField_received_date' => ts('Date Received'),
-      'componentPaymentField_payment_instrument' => ts('Payment Method'),
-      'componentPaymentField_transaction_id' => ts('Transaction ID'),
+      'componentPaymentField_total_amount' => ['title' => ts('Total Amount'), 'type' => CRM_Utils_Type::T_MONEY],
+      'componentPaymentField_contribution_status' => ['title' => ts('Contribution Status'), 'type' => CRM_Utils_Type::T_STRING],
+      'componentPaymentField_received_date' => ['title' => ts('Date Received'), 'type' => CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME],
+      'componentPaymentField_payment_instrument' => ['title' => ts('Payment Method'), 'type' => CRM_Utils_Type::T_STRING],
+      'componentPaymentField_transaction_id' => ['title' => ts('Transaction ID'), 'type' => CRM_Utils_Type::T_STRING],
     ];
   }
 
@@ -1294,7 +1297,7 @@ class CRM_Export_BAO_ExportProcessor {
    */
   public function getPaymentHeaders() {
     if ($this->isExportPaymentFields() && !$this->isExportSpecifiedPaymentFields()) {
-      return $this->getcomponentPaymentFields();
+      return CRM_Utils_Array::collect('title', $this->getcomponentPaymentFields());
     }
     return [];
   }
@@ -2356,6 +2359,9 @@ WHERE  id IN ( $deleteIDString )
     if ($exportMode !== $this->getExportMode() || $componentTable !== $this->getComponentTable()) {
       CRM_Core_Error::deprecatedFunctionWarning('altering the export mode and/or component table in the hook is no longer supported.');
     }
+    if ($ids !== $this->getIds()) {
+      CRM_Core_Error::deprecatedFunctionWarning('altering the ids in the hook is no longer supported.');
+    }
     if ($exportTempTable !== $this->getTemporaryTable()) {
       CRM_Core_Error::deprecatedFunctionWarning('altering the export table in the hook is deprecated (in some flows the table itself will be)');
       $this->setTemporaryTable($exportTempTable);
index a3bc2c85c9fccb145925b0e9f9e1287ef8e1473b..9f727b0c260d91278d80eb6372b2118868dc8293 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Mailing.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c294c497dac6129fe311fe8484e1e975)
+ * (GenCodeChecksum:aa54484f6e9b8d5ad8e75680f95cfc67)
  */
 
 /**
@@ -405,6 +405,12 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'bao' => 'CRM_Mailing_BAO_Mailing',
           'localizable' => 0,
           'FKClassName' => 'CRM_Mailing_DAO_MailingComponent',
+          'pseudoconstant' => [
+            'table' => 'civicrm_mailing_component',
+            'keyColumn' => 'id',
+            'labelColumn' => 'name',
+            'condition' => 'component_type = "Header"',
+          ],
         ],
         'footer_id' => [
           'name' => 'footer_id',
@@ -417,6 +423,12 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO {
           'bao' => 'CRM_Mailing_BAO_Mailing',
           'localizable' => 0,
           'FKClassName' => 'CRM_Mailing_DAO_MailingComponent',
+          'pseudoconstant' => [
+            'table' => 'civicrm_mailing_component',
+            'keyColumn' => 'id',
+            'labelColumn' => 'name',
+            'condition' => 'component_type = "Footer"',
+          ],
         ],
         'reply_id' => [
           'name' => 'reply_id',
index f891f18c2b5631b3363d521d79365529d2e6eabf..265dca6c9f25a18e6e633e41a7de0cdd475fcc5e 100644 (file)
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/MailingJob.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:195e6d4c124fba8e32203464c1b38673)
+ * (GenCodeChecksum:c1fc45fd2cf5bcc6cdfafb15b3aaf840)
  */
 
 /**
@@ -172,7 +172,7 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO {
           'bao' => 'CRM_Mailing_BAO_MailingJob',
           'localizable' => 0,
         ],
-        'start_date' => [
+        'mailing_job_start_date' => [
           'name' => 'start_date',
           'type' => CRM_Utils_Type::T_TIMESTAMP,
           'title' => ts('Mailing Job Start Date'),
@@ -184,6 +184,7 @@ class CRM_Mailing_DAO_MailingJob extends CRM_Core_DAO {
           'entity' => 'MailingJob',
           'bao' => 'CRM_Mailing_BAO_MailingJob',
           'localizable' => 0,
+          'unique_title' => ts('Mailing Start Date'),
         ],
         'end_date' => [
           'name' => 'end_date',
index 7a509ec3e26d77de3d31a264368fbea1a50e351b..080fab308b91d6b1bcea10b5847c34205fa96f96 100644 (file)
@@ -72,6 +72,10 @@ class CRM_Member_BAO_MembershipPayment extends CRM_Member_DAO_MembershipPayment
     // table. However, at this stage we have both - there is still quite a bit of refactoring to do to set the line_iten entity_id right the first time
     // however, we can assume at this stage that any contribution id will have only one line item with that membership type in the line item table
     // OR the caller will have taken responsibility for updating the line items themselves so we will update using SQL here
+    if (!empty($params['isSkipLineItem'])) {
+      // Caller has taken responsibility for updating the line items.
+      return $dao;
+    }
     if (!isset($params['membership_type_id'])) {
       $membership_type_id = civicrm_api3('membership', 'getvalue', [
         'id' => $dao->membership_id,
index 0c88ab14d9bb459f2eeb3c77879e43548052cb85..cd9145d6ccf35461bc2d26cd254791734a94c4f8 100644 (file)
@@ -90,6 +90,9 @@ class CRM_Price_BAO_LineItem extends CRM_Price_DAO_LineItem {
         'contribution_id' => $lineItemBAO->contribution_id,
       ];
       if (!civicrm_api3('MembershipPayment', 'getcount', $membershipPaymentParams)) {
+        // If we are creating the membership payment row from the line item then we
+        // should have correct line item & membership payment should not need to fix.
+        $membershipPaymentParams['isSkipLineItem'] = TRUE;
         civicrm_api3('MembershipPayment', 'create', $membershipPaymentParams);
       }
     }
index b1780c73c99ec2d347958ae7ff91df8fe9694714..49f122b44edf2970744cdc1c87b9ae0652ca12ce 100644 (file)
@@ -361,14 +361,6 @@ FROM civicrm_contact {$this->_aliases['civicrm_contact']}
       // Handle ID to label conversion for contact fields
       $entryFound = $this->alterDisplayContactFields($row, $rows, $rowNum, 'contact/currentEmployer', 'View Contact Detail') ? TRUE : $entryFound;
       $entryFound = $this->alterDisplayAddressFields($row, $rows, $rowNum, NULL, NULL) ? TRUE : $entryFound;
-      // display birthday in the configured custom format
-      if (array_key_exists('civicrm_contact_birth_date', $row)) {
-        $birthDate = $row['civicrm_contact_birth_date'];
-        if ($birthDate) {
-          $rows[$rowNum]['civicrm_contact_birth_date'] = CRM_Utils_Date::customFormat($birthDate, '%Y%m%d');
-        }
-        $entryFound = TRUE;
-      }
 
       // convert employee name to links
       if (array_key_exists('civicrm_contact_sort_name', $row) &&
index adceb9a0cbde2c6b5a77d3e3fbf2770dc94476be..021f92d23462ee489b1b13a6246ebb061db47670 100644 (file)
@@ -689,28 +689,12 @@ class CRM_Report_Form_Contribute_Bookkeeping extends CRM_Report_Form {
         $rows[$rowNum]['civicrm_entity_financial_trxn_amount'] = CRM_Utils_Money::format($rows[$rowNum]['civicrm_entity_financial_trxn_amount'], $rows[$rowNum]['civicrm_financial_trxn_currency']);
       }
 
-      //handle gender
-      if (array_key_exists('civicrm_contact_gender_id', $row)) {
-        if ($value = $row['civicrm_contact_gender_id']) {
-          $gender = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'gender_id');
-          $rows[$rowNum]['civicrm_contact_gender_id'] = $gender[$value];
-        }
-        $entryFound = TRUE;
-      }
-
       if (!empty($row['civicrm_financial_trxn_card_type_id'])) {
         $rows[$rowNum]['civicrm_financial_trxn_card_type_id'] = CRM_Utils_Array::value($row['civicrm_financial_trxn_card_type_id'], $creditCardTypes);
         $entryFound = TRUE;
       }
 
-      // display birthday in the configured custom format
-      if (array_key_exists('civicrm_contact_birth_date', $row)) {
-        $birthDate = $row['civicrm_contact_birth_date'];
-        if ($birthDate) {
-          $rows[$rowNum]['civicrm_contact_birth_date'] = CRM_Utils_Date::customFormat($birthDate, '%Y%m%d');
-        }
-        $entryFound = TRUE;
-      }
+      $entryFound = $this->alterDisplayContactFields($row, $rows, $rowNum, NULL, NULL) ? TRUE : $entryFound;
 
     }
   }
index 2e8c9be10c2ed169590134243ad58689c6e85458..a46611a55427fc955a4a74cf3b038a4c7f206752 100644 (file)
@@ -810,15 +810,6 @@ class CRM_Report_Form_Contribute_History extends CRM_Report_Form {
 
     $last_primary = NULL;
     foreach ($rows as $rowNum => $row) {
-      //handle gender
-      if (array_key_exists('civicrm_contact_gender_id', $row)) {
-        if ($value = $row['civicrm_contact_gender_id']) {
-          $gender = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'gender_id');
-          $row['civicrm_contact_gender_id'] = $rows[$rowNum]['civicrm_contact_gender_id'] = $gender[$value];
-        }
-        $entryFound = TRUE;
-      }
-
       // Highlight primary contact and amount row
       if (is_numeric($rowNum) ||
         ($last_primary && ($rowNum == "{$last_primary}_total"))
@@ -860,15 +851,7 @@ class CRM_Report_Form_Contribute_History extends CRM_Report_Form {
         $entryFound = TRUE;
       }
 
-      // display birthday in the configured custom format
-      if (array_key_exists('civicrm_contact_birth_date', $row)) {
-        $birthDate = $row['civicrm_contact_birth_date'];
-        if ($birthDate) {
-          $rows[$rowNum]['civicrm_contact_birth_date'] = CRM_Utils_Date::customFormat($birthDate, '%Y%m%d');
-        }
-        $entryFound = TRUE;
-      }
-
+      $entryFound = $this->alterDisplayContactFields($row, $rows, $rowNum, NULL, NULL) ? TRUE : $entryFound;
       $entryFound = $this->alterDisplayAddressFields($row, $rows, $rowNum, NULL, NULL) ? TRUE : $entryFound;
 
     }
index 31d50193cdae5efa6e1f73c7fc3ca326c4a738b0..3f8fdd54f0cac749b56e8d63c7f3d3087c88905c 100644 (file)
@@ -613,29 +613,13 @@ GROUP BY   {$this->_aliases['civicrm_contribution']}.currency
         );
       }
 
-      //handle gender
-      if (array_key_exists('civicrm_contact_gender_id', $row)) {
-        if ($value = $row['civicrm_contact_gender_id']) {
-          $gender = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'gender_id');
-          $rows[$rowNum]['civicrm_contact_gender_id'] = $gender[$value];
-        }
-        $entryFound = TRUE;
-      }
-
-      // display birthday in the configured custom format
-      if (array_key_exists('civicrm_contact_birth_date', $row)) {
-        $birthDate = $row['civicrm_contact_birth_date'];
-        if ($birthDate) {
-          $rows[$rowNum]['civicrm_contact_birth_date'] = CRM_Utils_Date::customFormat($birthDate, '%Y%m%d');
-        }
-        $entryFound = TRUE;
-      }
-
       if (!empty($row['civicrm_financial_trxn_card_type_id']) && !in_array('Subtotal', $rows[$rowNum])) {
         $rows[$rowNum]['civicrm_financial_trxn_card_type_id'] = $this->getLabels($row['civicrm_financial_trxn_card_type_id'], 'CRM_Financial_DAO_FinancialTrxn', 'card_type_id');
         $entryFound = TRUE;
       }
 
+      $entryFound = $this->alterDisplayContactFields($row, $rows, $rowNum, NULL, NULL) ? TRUE : $entryFound;
+
       // skip looking further in rows, if first row itself doesn't
       // have the column we need
       if (!$entryFound) {
index 9b613bef3cdb66caf9342b039018c478db8c93ff..b6479c14aa9e04773a5dc9e47196160672a6a7ff 100644 (file)
@@ -410,29 +410,13 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form {
         }
         $entryFound = $this->alterDisplayAddressFields($row, $rows, $rowNum, 'contribute/detail', 'List all contribution(s)') ? TRUE : $entryFound;
 
-        //handle gender
-        if (array_key_exists('civicrm_contact_gender_id', $row)) {
-          if ($value = $row['civicrm_contact_gender_id']) {
-            $gender = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'gender_id');
-            $rows[$rowNum]['civicrm_contact_gender_id'] = $gender[$value];
-          }
-          $entryFound = TRUE;
-        }
-
-        // display birthday in the configured custom format
-        if (array_key_exists('civicrm_contact_birth_date', $row)) {
-          $birthDate = $row['civicrm_contact_birth_date'];
-          if ($birthDate) {
-            $rows[$rowNum]['civicrm_contact_birth_date'] = CRM_Utils_Date::customFormat($birthDate, '%Y%m%d');
-          }
-          $entryFound = TRUE;
-        }
-
         if (!empty($row['civicrm_financial_trxn_card_type_id'])) {
           $rows[$rowNum]['civicrm_financial_trxn_card_type_id'] = $this->getLabels($row['civicrm_financial_trxn_card_type_id'], 'CRM_Financial_DAO_FinancialTrxn', 'card_type_id');
           $entryFound = TRUE;
         }
 
+        $entryFound = $this->alterDisplayContactFields($row, $rows, $rowNum, NULL, NULL) ? TRUE : $entryFound;
+
         // skip looking further in rows, if first row itself doesn't
         // have the column we need
         if (!$entryFound) {
index 7ff1c1fca6f92c48a2575fffed982bdd9c4845f3..faedec726abd780ddd5b8571670f07dbe937f1ad 100644 (file)
@@ -599,23 +599,7 @@ class CRM_Report_Form_Event_ParticipantListCount extends CRM_Report_Form {
         $entryFound = TRUE;
       }
 
-      //handle gender
-      if (array_key_exists('civicrm_contact_gender_id', $row)) {
-        if ($value = $row['civicrm_contact_gender_id']) {
-          $gender = CRM_Core_PseudoConstant::get('CRM_Contact_DAO_Contact', 'gender_id');
-          $rows[$rowNum]['civicrm_contact_gender_id'] = $gender[$value];
-        }
-        $entryFound = TRUE;
-      }
-
-      // display birthday in the configured custom format
-      if (array_key_exists('civicrm_contact_birth_date', $row)) {
-        $birthDate = $row['civicrm_contact_birth_date'];
-        if ($birthDate) {
-          $rows[$rowNum]['civicrm_contact_birth_date'] = CRM_Utils_Date::customFormat($birthDate, '%Y%m%d');
-        }
-        $entryFound = TRUE;
-      }
+      $entryFound = $this->alterDisplayContactFields($row, $rows, $rowNum, NULL, NULL) ? TRUE : $entryFound;
 
       // skip looking further in rows, if first row itself doesn't
       // have the column we need
index 018be0cf2dfb7bed1461e2c42da193670681538c..949a6ff8e79f8261d9b957919940337ae9375eaa 100644 (file)
@@ -761,14 +761,6 @@ ORDER BY  cv.label
 
       $entryFound = $this->alterDisplayContactFields($row, $rows, $rowNum, 'event/participantListing', 'View Event Income Details') ? TRUE : $entryFound;
 
-      // display birthday in the configured custom format
-      if (array_key_exists('civicrm_contact_birth_date', $row)) {
-        $birthDate = $row['civicrm_contact_birth_date'];
-        if ($birthDate) {
-          $rows[$rowNum]['civicrm_contact_birth_date'] = CRM_Utils_Date::customFormat($birthDate, '%Y%m%d');
-        }
-        $entryFound = TRUE;
-      }
       $entryFound = $this->alterDisplayAddressFields($row, $rows, $rowNum, 'event/ParticipantListing', 'List all participant(s) for this ') ? TRUE : $entryFound;
 
       // skip looking further in rows, if first row itself doesn't
index d9561c39532db39f55131892204b230ace216a7e..f37f68224680ade57ec0925fc905f5ab6b01bd19 100644 (file)
@@ -648,7 +648,7 @@ SET    version = '$version'
     $disabled = [];
     $manager = CRM_Extension_System::singleton()->getManager();
     foreach ($compatInfo as $key => $ext) {
-      if (!empty($ext['obsolete']) && $manager->getStatus($key) == $manager::STATUS_INSTALLED) {
+      if (!empty($ext['obsolete']) && in_array($manager->getStatus($key), [$manager::STATUS_INSTALLED, $manager::STATUS_INSTALLED_MISSING])) {
         $disabled[$key] = sprintf("<li>%s</li>", ts('The extension %1 is now obsolete and has been disabled.', [1 => $key]));
       }
     }
diff --git a/CRM/Upgrade/Incremental/php/FiveNineteen.php b/CRM/Upgrade/Incremental/php/FiveNineteen.php
new file mode 100644 (file)
index 0000000..588f701
--- /dev/null
@@ -0,0 +1,111 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007.                                       |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License along with this program; if not, contact CiviCRM LLC       |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ * Upgrade logic for FiveNineteen */
+class CRM_Upgrade_Incremental_php_FiveNineteen extends CRM_Upgrade_Incremental_Base {
+
+  /**
+   * Compute any messages which should be displayed beforeupgrade.
+   *
+   * Note: This function is called iteratively for each upcoming
+   * revision to the database.
+   *
+   * @param string $preUpgradeMessage
+   * @param string $rev
+   *   a version number, e.g. '4.4.alpha1', '4.4.beta3', '4.4.0'.
+   * @param null $currentVer
+   */
+  public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) {
+    // Example: Generate a pre-upgrade message.
+    // if ($rev == '5.12.34') {
+    //   $preUpgradeMessage .= '<p>' . ts('A new permission, "%1", has been added. This permission is now used to control access to the Manage Tags screen.', array(1 => ts('manage tags'))) . '</p>';
+    // }
+  }
+
+  /**
+   * Compute any messages which should be displayed after upgrade.
+   *
+   * @param string $postUpgradeMessage
+   *   alterable.
+   * @param string $rev
+   *   an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs.
+   */
+  public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) {
+    // Example: Generate a post-upgrade message.
+    // if ($rev == '5.12.34') {
+    //   $postUpgradeMessage .= '<br /><br />' . ts("By default, CiviCRM now disables the ability to import directly from SQL. To use this feature, you must explicitly grant permission 'import SQL datasource'.");
+    // }
+  }
+
+  /**
+   * Upgrade function.
+   *
+   * @param string $rev
+   */
+  public function upgrade_5_19_alpha1($rev) {
+    $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev);
+    $this->addTask('Add api4 menu', 'api4Menu');
+  }
+
+  /**
+   * Add menu item for api4 explorer; rename v3 explorer menu item.
+   *
+   * @param \CRM_Queue_TaskContext $ctx
+   * @return bool
+   */
+  public static function api4Menu(CRM_Queue_TaskContext $ctx) {
+    try {
+      $v3Item = civicrm_api3('Navigation', 'get', [
+        'name' => 'API Explorer',
+        'return' => ['id', 'parent_id', 'weight'],
+        'sequential' => 1,
+        'domain_id' => CRM_Core_Config::domainID(),
+        'api.Navigation.create' => ['label' => ts("Api Explorer v3")],
+      ]);
+      $existing = civicrm_api3('Navigation', 'getcount', [
+        'name' => "Api Explorer v4",
+        'domain_id' => CRM_Core_Config::domainID(),
+      ]);
+      if (!$existing) {
+        civicrm_api3('Navigation', 'create', [
+          'parent_id' => $v3Item['values'][0]['parent_id'] ?? 'Developer',
+          'label' => ts("Api Explorer v4"),
+          'weight' => $v3Item['values'][0]['weight'] ?? 2,
+          'name' => "Api Explorer v4",
+          'permission' => "administer CiviCRM",
+          'url' => "civicrm/api4#/explorer",
+          'is_active' => 1,
+        ]);
+      }
+    }
+    catch (Exception $e) {
+      // Couldn't create menu item.
+    }
+    return TRUE;
+  }
+
+}
diff --git a/CRM/Upgrade/Incremental/sql/5.19.alpha1.mysql.tpl b/CRM/Upgrade/Incremental/sql/5.19.alpha1.mysql.tpl
new file mode 100644 (file)
index 0000000..01c1f5b
--- /dev/null
@@ -0,0 +1 @@
+{* file to handle db changes in 5.19.alpha1 during upgrade *}
index 6b70eadf012ea1636ca10407621d9b3eac810e43..76887f2bc3cba8bb4ab9908f63b7c4cf6c739db6 100644 (file)
@@ -1368,7 +1368,7 @@ abstract class CRM_Utils_Hook {
    *
    * @return mixed
    */
-  public static function export(&$exportTempTable, &$headerRows, &$sqlColumns, &$exportMode, &$componentTable, &$ids) {
+  public static function export(&$exportTempTable, &$headerRows, &$sqlColumns, $exportMode, $componentTable, $ids) {
     return self::singleton()->invoke(['exportTempTable', 'headerRows', 'sqlColumns', 'exportMode', 'componentTable', 'ids'],
       $exportTempTable, $headerRows, $sqlColumns,
       $exportMode, $componentTable, $ids,
@@ -2498,9 +2498,10 @@ abstract class CRM_Utils_Hook {
    * @see CRM_Core_Resources::entityRefFilters
    *
    * @param array $filters
+   * @param array $links
    */
-  public static function entityRefFilters(&$filters) {
-    self::singleton()->invoke(['filters'], $filters, self::$_nullObject, self::$_nullObject,
+  public static function entityRefFilters(&$filters, &$links = NULL) {
+    self::singleton()->invoke(['filters', 'links'], $filters, $links, self::$_nullObject,
       self::$_nullObject, self::$_nullObject, self::$_nullObject,
       'civicrm_entityRefFilters'
     );
index 718afc457654066932b05e1db3ccfcefa52700bb..5110ac188fea73865faf034a75990dc29749442d 100644 (file)
@@ -147,7 +147,8 @@ class CRM_Utils_JS {
     $last = substr($js, -1);
     if ($last === $first && ($first === "'" || $first === '"')) {
       // Use a temp placeholder for escaped backslashes
-      return str_replace(['\\\\', "\\'", '\\"', '\\&', '\\/', '**backslash**'], ['**backslash**', "'", '"', '&', '/', '\\'], substr($js, 1, -1));
+      $backslash = chr(0) . 'backslash' . chr(0);
+      return str_replace(['\\\\', "\\'", '\\"', '\\&', '\\/', $backslash], [$backslash, "'", '"', '&', '/', '\\'], substr($js, 1, -1));
     }
     if (($first === '{' && $last === '}') || ($first === '[' && $last === ']')) {
       $obj = self::getRawProps($js);
@@ -159,6 +160,35 @@ class CRM_Utils_JS {
     return json_decode($js);
   }
 
+  /**
+   * Encodes a variable to js notation (not strict json) suitable for e.g. an angular attribute.
+   *
+   * Like json_encode() but the output looks more like native javascript,
+   * with single quotes around strings and no unnecessary quotes around object keys.
+   *
+   * Ex input: [
+   *   'a' => 'Apple',
+   *   'b' => 'Banana',
+   *   'c' => [1, 2, 3],
+   * ]
+   * Ex output: {a: 'Apple', b: 'Banana', c: [1, 2, 3]}
+   *
+   * @param mixed $value
+   * @return string
+   */
+  public static function encode($value) {
+    if (is_array($value)) {
+      return self::writeObject($value, TRUE);
+    }
+    $result = json_encode($value, JSON_UNESCAPED_SLASHES);
+    // Convert double-quotes around string to single quotes
+    if (is_string($value) && substr($result, 0, 1) === '"' && substr($result, -1) === '"') {
+      $backslash = chr(0) . 'backslash' . chr(0);
+      return "'" . str_replace(['\\\\', '\\"', "'", $backslash], [$backslash, '"', "\\'", '\\\\'], substr($result, 1, -1)) . "'";
+    }
+    return $result;
+  }
+
   /**
    * Gets the properties of a javascript object/array WITHOUT decoding them.
    *
@@ -258,7 +288,7 @@ class CRM_Utils_JS {
     $brackets = isset($obj[0]) && array_keys($obj) === range(0, count($obj) - 1) ? ['[', ']'] : ['{', '}'];
     foreach ($obj as $key => $val) {
       if ($encodeValues) {
-        $val = json_encode($val, JSON_UNESCAPED_SLASHES);
+        $val = self::encode($val);
       }
       if ($brackets[0] == '{') {
         // Enclose the key in quotes unless it is purely alphanumeric
index 4fd07e84d0c053332909337efa0468e395da7a4f..746ef630ecee9b17217ca3eb084295a5a36d292e 100644 (file)
@@ -265,8 +265,12 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
 
     if ($config->userFrameworkFrontend) {
       $script = 'index.php';
-      if (JRequest::getVar("Itemid") && (strpos($path, 'civicrm/payment/ipn') === FALSE)) {
-        $Itemid = "{$separator}Itemid=" . JRequest::getVar("Itemid");
+
+      // Get Itemid using JInput::get()
+      $input = Joomla\CMS\Factory::getApplication()->input;
+      $itemIdNum = $input->get("Itemid");
+      if ($itemIdNum && (strpos($path, 'civicrm/payment/ipn') === FALSE)) {
+        $Itemid = "{$separator}Itemid=" . $itemIdNum;
       }
     }
 
index 9051f75d2b1dbb3778f77449f73610a6fc6e298c..25907b71c9f942dae1d76492a3219bed6db7e0c6 100644 (file)
@@ -33,8 +33,7 @@ namespace Civi\API;
  * event is dispatched.
  *
  * Event subscribers which are concerned about the order of execution should assign
- * a weight to their subscription (such as W_EARLY, W_MIDDLE, or W_LATE).
- * W_LATE).
+ * a priority to their subscription (such as W_EARLY, W_MIDDLE, or W_LATE).
  */
 class Events {
 
@@ -78,17 +77,17 @@ class Events {
   const EXCEPTION = 'civi.api.exception';
 
   /**
-   * Weight - Early
+   * Priority - Higher numbers execute earlier
    */
   const W_EARLY = 100;
 
   /**
-   * Weight - Middle
+   * Priority - Middle
    */
   const W_MIDDLE = 0;
 
   /**
-   * Weight - Late
+   * Priority - Lower numbers execute later
    */
   const W_LATE = -100;
 
index c44b854aa694dd788ec7da294c21eab260d359ea..cb4c4c86d27fba7d3f8942fb6a938a911c6d2e8a 100644 (file)
@@ -98,6 +98,8 @@ class Manager {
       $angularModules['ui.sortable'] = include "$civicrm_root/ang/ui.sortable.ang.php";
       $angularModules['unsavedChanges'] = include "$civicrm_root/ang/unsavedChanges.ang.php";
       $angularModules['statuspage'] = include "$civicrm_root/ang/crmStatusPage.ang.php";
+      $angularModules['api4Explorer'] = include "$civicrm_root/ang/api4Explorer.ang.php";
+      $angularModules['api4'] = include "$civicrm_root/ang/api4.ang.php";
 
       foreach (\CRM_Core_Component::getEnabledComponents() as $component) {
         $angularModules = array_merge($angularModules, $component->getAngularModules());
diff --git a/Civi/Api4/ACL.php b/Civi/Api4/ACL.php
new file mode 100644 (file)
index 0000000..363823d
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * ACL Entity.
+ *
+ * This entity holds the ACL informatiom. With this entity you add/update/delete an ACL permission which consists of
+ * an Operation (e.g. 'View' or 'Edit'), a set of Data that the operation can be performed on (e.g. a group of contacts),
+ * and a Role that has permission to do this operation. For more info refer to
+ * https://docs.civicrm.org/user/en/latest/initial-set-up/permissions-and-access-control for more info.
+ *
+ * Creating a new ACL requires at minimum a entity table, entity ID and object_table
+ *
+ * @package Civi\Api4
+ */
+class ACL extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Action/Address/AddressSaveTrait.php b/Civi/Api4/Action/Address/AddressSaveTrait.php
new file mode 100644 (file)
index 0000000..6997cfe
--- /dev/null
@@ -0,0 +1,85 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\Address;
+
+/**
+ * @inheritDoc
+ * @method bool getStreetParsing()
+ * @method $this setStreetParsing(bool $streetParsing)
+ * @method bool getSkipGeocode()
+ * @method $this setSkipGeocode(bool $skipGeocode)
+ * @method bool getFixAddress()
+ * @method $this setFixAddress(bool $fixAddress)
+ */
+trait AddressSaveTrait {
+
+  /**
+   * Optional param to indicate you want the street_address field parsed into individual params
+   *
+   * @var bool
+   */
+  protected $streetParsing = FALSE;
+
+  /**
+   * Optional param to indicate you want to skip geocoding (useful when importing a lot of addresses at once, the job Geocode and Parse Addresses can execute this task after the import)
+   *
+   * @var bool
+   */
+  protected $skipGeocode = FALSE;
+
+  /**
+   * When true, apply various fixes to the address before insert.
+   *
+   * @var bool
+   */
+  protected $fixAddress = TRUE;
+
+  /**
+   * @inheritDoc
+   */
+  protected function writeObjects($items) {
+    foreach ($items as &$item) {
+      if ($this->streetParsing && !empty($item['street_address'])) {
+        $item = array_merge($item, \CRM_Core_BAO_Address::parseStreetAddress($item['street_address']));
+      }
+      $item['skip_geocode'] = $this->skipGeocode;
+    }
+    return parent::writeObjects($items);
+  }
+
+}
diff --git a/Civi/Api4/Action/Address/Create.php b/Civi/Api4/Action/Address/Create.php
new file mode 100644 (file)
index 0000000..33fffe4
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\Address;
+
+/**
+ * @inheritDoc
+ */
+class Create extends \Civi\Api4\Generic\DAOCreateAction {
+  use AddressSaveTrait;
+
+}
diff --git a/Civi/Api4/Action/Address/Save.php b/Civi/Api4/Action/Address/Save.php
new file mode 100644 (file)
index 0000000..ae5fe8d
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\Address;
+
+/**
+ * @inheritDoc
+ */
+class Save extends \Civi\Api4\Generic\DAOSaveAction {
+  use AddressSaveTrait;
+
+}
diff --git a/Civi/Api4/Action/Address/Update.php b/Civi/Api4/Action/Address/Update.php
new file mode 100644 (file)
index 0000000..dcb8d99
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\Address;
+
+/**
+ * @inheritDoc
+ */
+class Update extends \Civi\Api4\Generic\DAOUpdateAction {
+  use AddressSaveTrait;
+
+}
diff --git a/Civi/Api4/Action/Campaign/Get.php b/Civi/Api4/Action/Campaign/Get.php
new file mode 100644 (file)
index 0000000..8d4cbe9
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Action\Campaign;
+
+/**
+ * @inheritDoc
+ *
+ * Set current = true to get active, non past campaigns.
+ */
+class Get extends \Civi\Api4\Generic\DAOGetAction {
+  use \Civi\Api4\Generic\Traits\IsCurrentTrait;
+
+}
diff --git a/Civi/Api4/Action/Contact/GetChecksum.php b/Civi/Api4/Action/Contact/GetChecksum.php
new file mode 100644 (file)
index 0000000..e88f048
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\Contact;
+
+use Civi\Api4\Generic\Result;
+
+/**
+ * Generate a security checksum for anonymous access to CiviCRM.
+ *
+ * @method $this setContactId(int $cid) Set contact ID (required)
+ * @method int getContactId() Get contact ID param
+ * @method $this setTtl(int $ttl) Set TTL param
+ * @method int getTtl() Get TTL param
+ */
+class GetChecksum extends \Civi\Api4\Generic\AbstractAction {
+
+  /**
+   * ID of contact
+   *
+   * @var int
+   * @required
+   */
+  protected $contactId;
+
+  /**
+   * Expiration time (hours). Defaults to 168 (24 * [7 or value of checksum_timeout system setting]).
+   *
+   * Set to 0 for infinite.
+   *
+   * @var int
+   */
+  protected $ttl = NULL;
+
+  /**
+   * @param \Civi\Api4\Generic\Result $result
+   */
+  public function _run(Result $result) {
+    $ttl = ($this->ttl === 0 || $this->ttl === '0') ? 'inf' : $this->ttl;
+    $result[] = [
+      'id' => $this->contactId,
+      'checksum' => \CRM_Contact_BAO_Contact_Utils::generateChecksum($this->contactId, NULL, $ttl),
+    ];
+  }
+
+}
diff --git a/Civi/Api4/Action/Contact/GetFields.php b/Civi/Api4/Action/Contact/GetFields.php
new file mode 100644 (file)
index 0000000..4db97e5
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Action\Contact;
+
+use Civi\Api4\Generic\DAOGetFieldsAction;
+
+class GetFields extends DAOGetFieldsAction {
+
+  protected function getRecords() {
+    $fields = parent::getRecords();
+
+    $apiKeyPerms = ['edit api keys', 'administer CiviCRM'];
+    if ($this->checkPermissions && !\CRM_Core_Permission::check([$apiKeyPerms])) {
+      unset($fields['api_key']);
+    }
+
+    return $fields;
+  }
+
+}
diff --git a/Civi/Api4/Action/Contact/ValidateChecksum.php b/Civi/Api4/Action/Contact/ValidateChecksum.php
new file mode 100644 (file)
index 0000000..f8038f8
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\Contact;
+
+use Civi\Api4\Generic\Result;
+
+/**
+ * Generate a security checksum for anonymous access to CiviCRM.
+ *
+ * @method $this setContactId(int $cid) Set contact ID (required)
+ * @method int getContactId() Get contact ID param
+ * @method $this setChecksum(string $checksum) Set checksum param (required)
+ * @method string getChecksum() Get checksum param
+ */
+class ValidateChecksum extends \Civi\Api4\Generic\AbstractAction {
+
+  /**
+   * ID of contact
+   *
+   * @var int
+   * @required
+   */
+  protected $contactId;
+
+  /**
+   * Value of checksum
+   *
+   * @var string
+   * @required
+   */
+  protected $checksum;
+
+  /**
+   * @param \Civi\Api4\Generic\Result $result
+   */
+  public function _run(Result $result) {
+    $result[] = [
+      'valid' => \CRM_Contact_BAO_Contact_Utils::validChecksum($this->contactId, $this->checksum),
+    ];
+  }
+
+}
diff --git a/Civi/Api4/Action/CustomValue/Create.php b/Civi/Api4/Action/CustomValue/Create.php
new file mode 100644 (file)
index 0000000..7f174b7
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\CustomValue;
+
+/**
+ * @inheritDoc
+ */
+class Create extends \Civi\Api4\Generic\DAOCreateAction {
+  use \Civi\Api4\Generic\Traits\CustomValueActionTrait;
+
+}
diff --git a/Civi/Api4/Action/CustomValue/Delete.php b/Civi/Api4/Action/CustomValue/Delete.php
new file mode 100644 (file)
index 0000000..9d01ca9
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\CustomValue;
+
+/**
+ * Delete one or more items, based on criteria specified in Where param.
+ */
+class Delete extends \Civi\Api4\Generic\DAODeleteAction {
+  use \Civi\Api4\Generic\Traits\CustomValueActionTrait;
+
+}
diff --git a/Civi/Api4/Action/CustomValue/Get.php b/Civi/Api4/Action/CustomValue/Get.php
new file mode 100644 (file)
index 0000000..7475172
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\CustomValue;
+
+/**
+ * Get fields for a custom group.
+ */
+class Get extends \Civi\Api4\Generic\DAOGetAction {
+  use \Civi\Api4\Generic\Traits\CustomValueActionTrait;
+
+}
diff --git a/Civi/Api4/Action/CustomValue/GetActions.php b/Civi/Api4/Action/CustomValue/GetActions.php
new file mode 100644 (file)
index 0000000..39861db
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\CustomValue;
+
+/**
+ * @inheritDoc
+ */
+class GetActions extends \Civi\Api4\Action\GetActions {
+  use \Civi\Api4\Generic\Traits\CustomValueActionTrait;
+
+}
diff --git a/Civi/Api4/Action/CustomValue/GetFields.php b/Civi/Api4/Action/CustomValue/GetFields.php
new file mode 100644 (file)
index 0000000..b00e555
--- /dev/null
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Action\CustomValue;
+
+use Civi\Api4\Service\Spec\SpecFormatter;
+
+/**
+ * Get fields for a custom group.
+ */
+class GetFields extends \Civi\Api4\Generic\DAOGetFieldsAction {
+  use \Civi\Api4\Generic\Traits\CustomValueActionTrait;
+
+  protected function getRecords() {
+    $fields = $this->_itemsToGet('name');
+    /** @var \Civi\Api4\Service\Spec\SpecGatherer $gatherer */
+    $gatherer = \Civi::container()->get('spec_gatherer');
+    $spec = $gatherer->getSpec('Custom_' . $this->getCustomGroup(), $this->getAction(), $this->includeCustom);
+    return SpecFormatter::specToArray($spec->getFields($fields), $this->loadOptions);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function getParamInfo($param = NULL) {
+    $info = parent::getParamInfo($param);
+    if (!$param) {
+      // This param is meaningless here.
+      unset($info['includeCustom']);
+    }
+    return $info;
+  }
+
+}
diff --git a/Civi/Api4/Action/CustomValue/Replace.php b/Civi/Api4/Action/CustomValue/Replace.php
new file mode 100644 (file)
index 0000000..347be65
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\CustomValue;
+
+/**
+ * Given a set of records, will appropriately update the database.
+ */
+class Replace extends \Civi\Api4\Generic\BasicReplaceAction {
+  use \Civi\Api4\Generic\Traits\CustomValueActionTrait;
+
+}
diff --git a/Civi/Api4/Action/CustomValue/Save.php b/Civi/Api4/Action/CustomValue/Save.php
new file mode 100644 (file)
index 0000000..6f0a9c7
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\CustomValue;
+
+/**
+ * @inheritDoc
+ */
+class Save extends \Civi\Api4\Generic\DAOSaveAction {
+  use \Civi\Api4\Generic\Traits\CustomValueActionTrait;
+
+}
diff --git a/Civi/Api4/Action/CustomValue/Update.php b/Civi/Api4/Action/CustomValue/Update.php
new file mode 100644 (file)
index 0000000..a37a99e
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\CustomValue;
+
+/**
+ * Update one or more records with new values. Use the where clause to select them.
+ */
+class Update extends \Civi\Api4\Generic\DAOUpdateAction {
+  use \Civi\Api4\Generic\Traits\CustomValueActionTrait;
+
+}
diff --git a/Civi/Api4/Action/Domain/Get.php b/Civi/Api4/Action/Domain/Get.php
new file mode 100644 (file)
index 0000000..16cb5c9
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\Domain;
+
+/**
+ * @inheritDoc
+ */
+class Get extends \Civi\Api4\Generic\DAOGetAction {
+
+  /**
+   * Return only the current domain.
+   *
+   * @var bool
+   */
+  protected $currentDomain = FALSE;
+
+  /**
+   * @inheritDoc
+   */
+  protected function getObjects() {
+    if ($this->currentDomain) {
+      $this->addWhere('id', '=', \CRM_Core_Config::domainID());
+    }
+    return parent::getObjects();
+  }
+
+}
diff --git a/Civi/Api4/Action/Entity/Get.php b/Civi/Api4/Action/Entity/Get.php
new file mode 100644 (file)
index 0000000..a0ca450
--- /dev/null
@@ -0,0 +1,140 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\Entity;
+
+use Civi\Api4\CustomGroup;
+use Civi\Api4\Utils\ReflectionUtils;
+
+/**
+ * Get entities
+ *
+ * @method $this setIncludeCustom(bool $value)
+ * @method bool getIncludeCustom()
+ */
+class Get extends \Civi\Api4\Generic\BasicGetAction {
+
+  /**
+   * Include custom-field-based pseudo-entities?
+   *
+   * @var bool
+   */
+  protected $includeCustom = TRUE;
+
+  /**
+   * Scan all api directories to discover entities
+   */
+  protected function getRecords() {
+    $entities = [];
+    $locations = array_merge([\Civi::paths()->getPath('[civicrm.root]/Civi.php')],
+      array_column(\CRM_Extension_System::singleton()->getMapper()->getActiveModuleFiles(), 'filePath')
+    );
+    foreach ($locations as $location) {
+      $dir = \CRM_Utils_File::addTrailingSlash(dirname($location)) . 'Civi/Api4';
+      if (is_dir($dir)) {
+        foreach (glob("$dir/*.php") as $file) {
+          $matches = [];
+          preg_match('/(\w*).php/', $file, $matches);
+          $entity = ['name' => $matches[1]];
+          if ($this->_isFieldSelected('description') || $this->_isFieldSelected('comment')) {
+            $this->addDocs($entity);
+          }
+          $entities[$matches[1]] = $entity;
+        }
+      }
+    }
+    unset($entities['CustomValue']);
+
+    if ($this->includeCustom) {
+      $this->addCustomEntities($entities);
+    }
+
+    ksort($entities);
+    return $entities;
+  }
+
+  /**
+   * Add custom-field pseudo-entities
+   *
+   * @param $entities
+   * @throws \API_Exception
+   */
+  private function addCustomEntities(&$entities) {
+    $customEntities = CustomGroup::get()
+      ->addWhere('is_multiple', '=', 1)
+      ->addWhere('is_active', '=', 1)
+      ->setSelect(['name', 'title', 'help_pre', 'help_post', 'extends'])
+      ->setCheckPermissions(FALSE)
+      ->execute();
+    foreach ($customEntities as $customEntity) {
+      $fieldName = 'Custom_' . $customEntity['name'];
+      $entities[$fieldName] = [
+        'name' => $fieldName,
+        'description' => $customEntity['title'] . ' custom group - extends ' . $customEntity['extends'],
+      ];
+      if (!empty($customEntity['help_pre'])) {
+        $entities[$fieldName]['comment'] = $this->plainTextify($customEntity['help_pre']);
+      }
+      if (!empty($customEntity['help_post'])) {
+        $pre = empty($entities[$fieldName]['comment']) ? '' : $entities[$fieldName]['comment'] . "\n\n";
+        $entities[$fieldName]['comment'] = $pre . $this->plainTextify($customEntity['help_post']);
+      }
+    }
+  }
+
+  /**
+   * Convert html to plain text.
+   *
+   * @param $input
+   * @return mixed
+   */
+  private function plainTextify($input) {
+    return html_entity_decode(strip_tags($input), ENT_QUOTES | ENT_HTML5, 'UTF-8');
+  }
+
+  /**
+   * Add info from code docblock.
+   *
+   * @param $entity
+   */
+  private function addDocs(&$entity) {
+    $reflection = new \ReflectionClass("\\Civi\\Api4\\" . $entity['name']);
+    $entity += ReflectionUtils::getCodeDocs($reflection);
+    unset($entity['package'], $entity['method']);
+  }
+
+}
diff --git a/Civi/Api4/Action/Entity/GetLinks.php b/Civi/Api4/Action/Entity/GetLinks.php
new file mode 100644 (file)
index 0000000..c57e071
--- /dev/null
@@ -0,0 +1,86 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\Entity;
+
+use Civi\Api4\Utils\CoreUtil;
+
+/**
+ * Get a list of FK links between entities
+ */
+class GetLinks extends \Civi\Api4\Generic\BasicGetAction {
+
+  public function getRecords() {
+    $result = [];
+    /** @var \Civi\Api4\Service\Schema\SchemaMap $schema */
+    $schema = \Civi::container()->get('schema_map');
+    foreach ($schema->getTables() as $table) {
+      $entity = CoreUtil::getApiNameFromTableName($table->getName());
+      // Since this is an api function, exclude tables that don't have an api
+      if (class_exists('\Civi\Api4\\' . $entity)) {
+        $item = [
+          'entity' => $entity,
+          'table' => $table->getName(),
+          'links' => [],
+        ];
+        foreach ($table->getTableLinks() as $link) {
+          $link = $link->toArray();
+          $link['entity'] = CoreUtil::getApiNameFromTableName($link['targetTable']);
+          $item['links'][] = $link;
+        }
+        $result[] = $item;
+      }
+    }
+    return $result;
+  }
+
+  public function fields() {
+    return [
+      [
+        'name' => 'entity',
+      ],
+      [
+        'name' => 'table',
+      ],
+      [
+        'name' => 'links',
+        'data_type' => 'Array',
+      ],
+    ];
+  }
+
+}
diff --git a/Civi/Api4/Action/Event/Get.php b/Civi/Api4/Action/Event/Get.php
new file mode 100644 (file)
index 0000000..0acc27e
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Action\Event;
+
+/**
+ * @inheritDoc
+ *
+ * Set current = true to get active, non past events.
+ */
+class Get extends \Civi\Api4\Generic\DAOGetAction {
+  use \Civi\Api4\Generic\Traits\IsCurrentTrait;
+
+}
diff --git a/Civi/Api4/Action/GetActions.php b/Civi/Api4/Action/GetActions.php
new file mode 100644 (file)
index 0000000..7e82287
--- /dev/null
@@ -0,0 +1,148 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action;
+
+use Civi\API\Exception\NotImplementedException;
+use Civi\Api4\Generic\BasicGetAction;
+use Civi\Api4\Utils\ActionUtil;
+use Civi\Api4\Utils\ReflectionUtils;
+
+/**
+ * Get actions for an entity with a list of accepted params
+ */
+class GetActions extends BasicGetAction {
+
+  private $_actions = [];
+
+  private $_actionsToGet;
+
+  protected function getRecords() {
+    $this->_actionsToGet = $this->_itemsToGet('name');
+
+    $entityReflection = new \ReflectionClass('\Civi\Api4\\' . $this->_entityName);
+    foreach ($entityReflection->getMethods(\ReflectionMethod::IS_STATIC | \ReflectionMethod::IS_PUBLIC) as $method) {
+      $actionName = $method->getName();
+      if ($actionName != 'permissions' && $actionName[0] != '_') {
+        $this->loadAction($actionName);
+      }
+    }
+    if (!$this->_actionsToGet || count($this->_actionsToGet) > count($this->_actions)) {
+      // Search for entity-specific actions in extensions
+      foreach (\CRM_Extension_System::singleton()->getMapper()->getActiveModuleFiles() as $ext) {
+        $dir = \CRM_Utils_File::addTrailingSlash(dirname($ext['filePath']));
+        $this->scanDir($dir . 'Civi/Api4/Action/' . $this->_entityName);
+      }
+      // Search for entity-specific actions in core
+      $this->scanDir(\CRM_Utils_File::addTrailingSlash(__DIR__) . $this->_entityName);
+    }
+    ksort($this->_actions);
+    return $this->_actions;
+  }
+
+  /**
+   * @param $dir
+   */
+  private function scanDir($dir) {
+    if (is_dir($dir)) {
+      foreach (glob("$dir/*.php") as $file) {
+        $matches = [];
+        preg_match('/(\w*).php/', $file, $matches);
+        $actionName = array_pop($matches);
+        $actionClass = new \ReflectionClass('\\Civi\\Api4\\Action\\' . $this->_entityName . '\\' . $actionName);
+        if ($actionClass->isInstantiable() && $actionClass->isSubclassOf('\\Civi\\Api4\\Generic\\AbstractAction')) {
+          $this->loadAction(lcfirst($actionName));
+        }
+      }
+    }
+  }
+
+  /**
+   * @param $actionName
+   */
+  private function loadAction($actionName) {
+    try {
+      if (!isset($this->_actions[$actionName]) && (!$this->_actionsToGet || in_array($actionName, $this->_actionsToGet))) {
+        $action = ActionUtil::getAction($this->getEntityName(), $actionName);
+        if (is_object($action)) {
+          $this->_actions[$actionName] = ['name' => $actionName];
+          if ($this->_isFieldSelected('description') || $this->_isFieldSelected('comment')) {
+            $actionReflection = new \ReflectionClass($action);
+            $actionInfo = ReflectionUtils::getCodeDocs($actionReflection);
+            unset($actionInfo['method']);
+            $this->_actions[$actionName] += $actionInfo;
+          }
+          if ($this->_isFieldSelected('params')) {
+            $this->_actions[$actionName]['params'] = $action->getParamInfo();
+            // Language param is only relevant on multilingual sites
+            $languageLimit = (array) \Civi::settings()->get('languageLimit');
+            if (count($languageLimit) < 2) {
+              unset($this->_actions[$actionName]['params']['language']);
+            }
+            elseif (isset($this->_actions[$actionName]['params']['language'])) {
+              $this->_actions[$actionName]['params']['language']['options'] = array_keys($languageLimit);
+            }
+          }
+        }
+      }
+    }
+    catch (NotImplementedException $e) {
+    }
+  }
+
+  public function fields() {
+    return [
+      [
+        'name' => 'name',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'description',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'comment',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'params',
+        'data_type' => 'Array',
+      ],
+    ];
+  }
+
+}
diff --git a/Civi/Api4/Action/GroupContact/Create.php b/Civi/Api4/Action/GroupContact/Create.php
new file mode 100644 (file)
index 0000000..dda98c5
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\GroupContact;
+
+/**
+ * @inheritDoc
+ */
+class Create extends \Civi\Api4\Generic\DAOCreateAction {
+  use GroupContactSaveTrait;
+
+}
diff --git a/Civi/Api4/Action/GroupContact/GroupContactSaveTrait.php b/Civi/Api4/Action/GroupContact/GroupContactSaveTrait.php
new file mode 100644 (file)
index 0000000..c77208c
--- /dev/null
@@ -0,0 +1,75 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\GroupContact;
+
+/**
+ * @inheritDoc
+ *
+ * @method $this setMethod(string $method) Indicate who added/removed the group.
+ * @method string getMethod()
+ * @method $this setTracking(string $tracking) Specify ip address or other tracking info.
+ * @method string getTracking()
+ */
+trait GroupContactSaveTrait {
+
+  /**
+   * String to indicate who added/removed the group.
+   *
+   * @var string
+   */
+  protected $method = 'API';
+
+  /**
+   * IP address or other tracking info about who performed this group subscription.
+   *
+   * @var string
+   */
+  protected $tracking = '';
+
+  /**
+   * @inheritDoc
+   */
+  protected function writeObjects($items) {
+    foreach ($items as &$item) {
+      $item['method'] = $this->method;
+      $item['tracking'] = $this->tracking;
+    }
+    return parent::writeObjects($items);
+  }
+
+}
diff --git a/Civi/Api4/Action/GroupContact/Save.php b/Civi/Api4/Action/GroupContact/Save.php
new file mode 100644 (file)
index 0000000..1ac443e
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\GroupContact;
+
+/**
+ * @inheritDoc
+ */
+class Save extends \Civi\Api4\Generic\DAOSaveAction {
+  use GroupContactSaveTrait;
+
+}
diff --git a/Civi/Api4/Action/GroupContact/Update.php b/Civi/Api4/Action/GroupContact/Update.php
new file mode 100644 (file)
index 0000000..12abc7d
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\GroupContact;
+
+/**
+ * @inheritDoc
+ */
+class Update extends \Civi\Api4\Generic\DAOUpdateAction {
+  use GroupContactSaveTrait;
+
+}
diff --git a/Civi/Api4/Action/Relationship/Get.php b/Civi/Api4/Action/Relationship/Get.php
new file mode 100644 (file)
index 0000000..c235ad2
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Action\Relationship;
+
+/**
+ * @inheritDoc
+ *
+ * Set current = true to get active, non past relationships.
+ */
+class Get extends \Civi\Api4\Generic\DAOGetAction {
+  use \Civi\Api4\Generic\Traits\IsCurrentTrait;
+
+}
diff --git a/Civi/Api4/Action/Setting/AbstractSettingAction.php b/Civi/Api4/Action/Setting/AbstractSettingAction.php
new file mode 100644 (file)
index 0000000..18a3662
--- /dev/null
@@ -0,0 +1,115 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Action\Setting;
+
+use Civi\Api4\Domain;
+use Civi\Api4\Generic\Result;
+
+/**
+ * Base class for setting actions.
+ *
+ * @method int getDomainId
+ * @method $this setDomainId(int $domainId)
+ */
+abstract class AbstractSettingAction extends \Civi\Api4\Generic\AbstractAction {
+
+  /**
+   * Domain id of setting. Leave NULL for default domain.
+   *
+   * @var int|string|array
+   */
+  protected $domainId;
+
+  /**
+   * Contact - if this is a contact-related setting.
+   *
+   * @var int
+   */
+  protected $contactId;
+
+  public function _run(Result $result) {
+    $this->findDomains();
+    $meta = [];
+    foreach ($this->domainId as $domain) {
+      $meta[$domain] = $this->validateSettings($domain);
+    }
+    foreach ($this->domainId as $domain) {
+      $settingsBag = $this->contactId ? \Civi::contactSettings($this->contactId, $domain) : \Civi::settings($domain);
+      $this->processSettings($result, $settingsBag, $meta[$domain], $domain);
+    }
+  }
+
+  /**
+   * Checks that really ought to be taken care of by Civi::settings
+   *
+   * @param int $domain
+   * @return array
+   * @throws \API_Exception
+   */
+  protected function validateSettings($domain) {
+    $meta = \Civi\Core\SettingsMetadata::getMetadata([], $domain);
+    $names = isset($this->values) ? array_keys($this->values) : $this->select;
+    $invalid = array_diff($names, array_keys($meta));
+    if ($invalid) {
+      throw new \API_Exception("Unknown settings for domain $domain: " . implode(', ', $invalid));
+    }
+    if (isset($this->values)) {
+      foreach ($this->values as $name => &$value) {
+        \CRM_Core_BAO_Setting::validateSetting($value, $meta[$name]);
+      }
+    }
+    return $meta;
+  }
+
+  protected function findDomains() {
+    if ($this->domainId == 'all') {
+      $this->domainId = Domain::get()->setCheckPermissions(FALSE)->addSelect('id')->execute()->column('id');
+    }
+    elseif ($this->domainId) {
+      $this->domainId = (array) $this->domainId;
+      $domains = Domain::get()->setCheckPermissions(FALSE)->addSelect('id')->execute()->column('id');
+      $invalid = array_diff($this->domainId, $domains);
+      if ($invalid) {
+        throw new \API_Exception('Invalid domain id: ' . implode(', ', $invalid));
+      }
+    }
+    else {
+      $this->domainId = [\CRM_Core_Config::domainID()];
+    }
+  }
+
+}
diff --git a/Civi/Api4/Action/Setting/Get.php b/Civi/Api4/Action/Setting/Get.php
new file mode 100644 (file)
index 0000000..a914081
--- /dev/null
@@ -0,0 +1,90 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Action\Setting;
+
+use Civi\Api4\Generic\Result;
+
+/**
+ * Get the value of one or more CiviCRM settings.
+ *
+ * @method array getSelect
+ * @method $this addSelect(string $name)
+ * @method $this setSelect(array $select)
+ */
+class Get extends AbstractSettingAction {
+
+  /**
+   * Names of settings to retrieve
+   *
+   * @var array
+   */
+  protected $select = [];
+
+  /**
+   * @param \Civi\Api4\Generic\Result $result
+   * @param \Civi\Core\SettingsBag $settingsBag
+   * @param array $meta
+   * @param int $domain
+   * @throws \Exception
+   */
+  protected function processSettings(Result $result, $settingsBag, $meta, $domain) {
+    if ($this->select) {
+      foreach ($this->select as $name) {
+        $result[] = [
+          'name' => $name,
+          'value' => $settingsBag->get($name),
+          'domain_id' => $domain,
+        ];
+      }
+    }
+    else {
+      foreach ($settingsBag->all() as $name => $value) {
+        $result[] = [
+          'name' => $name,
+          'value' => $value,
+          'domain_id' => $domain,
+        ];
+      }
+    }
+    foreach ($result as $name => &$setting) {
+      if (isset($setting['value']) && !empty($meta[$name]['serialize'])) {
+        $setting['value'] = \CRM_Core_DAO::unSerializeField($setting['value'], $meta[$name]['serialize']);
+      }
+    }
+  }
+
+}
diff --git a/Civi/Api4/Action/Setting/GetFields.php b/Civi/Api4/Action/Setting/GetFields.php
new file mode 100644 (file)
index 0000000..7cd7cea
--- /dev/null
@@ -0,0 +1,119 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Action\Setting;
+
+/**
+ * Get information about CiviCRM settings.
+ *
+ * @method int getDomainId
+ * @method $this setDomainId(int $domainId)
+ */
+class GetFields extends \Civi\Api4\Generic\BasicGetFieldsAction {
+
+  /**
+   * Domain id of settings. Leave NULL for default domain.
+   *
+   * @var int
+   */
+  protected $domainId;
+
+  protected function getRecords() {
+    // TODO: Waiting for filter handling to get fixed in core
+    // $names = $this->_itemsToGet('name');
+    // $filter = $names ? ['name' => $names] : [];
+    $filter = [];
+    return \Civi\Core\SettingsMetadata::getMetadata($filter, $this->domainId, $this->loadOptions);
+  }
+
+  public function fields() {
+    return [
+      [
+        'name' => 'name',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'title',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'description',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'help_text',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'default',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'pseudoconstant',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'options',
+        'data_type' => 'Array',
+      ],
+      [
+        'name' => 'group_name',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'group',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'html_type',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'add',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'serialize',
+        'data_type' => 'Integer',
+      ],
+      [
+        'name' => 'data_type',
+        'data_type' => 'Integer',
+      ],
+    ];
+  }
+
+}
diff --git a/Civi/Api4/Action/Setting/Revert.php b/Civi/Api4/Action/Setting/Revert.php
new file mode 100644 (file)
index 0000000..d8a3406
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Action\Setting;
+
+use Civi\Api4\Generic\Result;
+
+/**
+ * Revert one or more CiviCRM settings to their default value.
+ *
+ * @method array getSelect
+ * @method $this addSelect(string $name)
+ * @method $this setSelect(array $select)
+ */
+class Revert extends AbstractSettingAction {
+
+  /**
+   * Names of settings to revert
+   *
+   * @var array
+   * @required
+   */
+  protected $select = [];
+
+  /**
+   * @param \Civi\Api4\Generic\Result $result
+   * @param \Civi\Core\SettingsBag $settingsBag
+   * @param array $meta
+   * @param int $domain
+   * @throws \Exception
+   */
+  protected function processSettings(Result $result, $settingsBag, $meta, $domain) {
+    foreach ($this->select as $name) {
+      $settingsBag->revert($name);
+      $result[] = [
+        'name' => $name,
+        'value' => $settingsBag->get($name),
+        'domain_id' => $domain,
+      ];
+    }
+    foreach ($result as $name => &$setting) {
+      if (isset($setting['value']) && !empty($meta[$name]['serialize'])) {
+        $setting['value'] = \CRM_Core_DAO::unSerializeField($setting['value'], $meta[$name]['serialize']);
+      }
+    }
+  }
+
+}
diff --git a/Civi/Api4/Action/Setting/Set.php b/Civi/Api4/Action/Setting/Set.php
new file mode 100644 (file)
index 0000000..d0ea403
--- /dev/null
@@ -0,0 +1,79 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Action\Setting;
+
+use Civi\Api4\Generic\Result;
+
+/**
+ * Set the value of one or more CiviCRM settings.
+ *
+ * @method array getValues
+ * @method $this setValues(array $value)
+ * @method $this addValue(string $name, mixed $value)
+ */
+class Set extends AbstractSettingAction {
+
+  /**
+   * Setting names/values to set.
+   *
+   * @var mixed
+   * @required
+   */
+  protected $values = [];
+
+  /**
+   * @param \Civi\Api4\Generic\Result $result
+   * @param \Civi\Core\SettingsBag $settingsBag
+   * @param array $meta
+   * @param int $domain
+   * @throws \Exception
+   */
+  protected function processSettings(Result $result, $settingsBag, $meta, $domain) {
+    foreach ($this->values as $name => $value) {
+      if (isset($value) && !empty($meta[$name]['serialize'])) {
+        $value = \CRM_Core_DAO::serializeField($value, $meta[$name]['serialize']);
+      }
+      $settingsBag->set($name, $value);
+      $result[] = [
+        'name' => $name,
+        'value' => $this->values[$name],
+        'domain_id' => $domain,
+      ];
+    }
+  }
+
+}
diff --git a/Civi/Api4/Action/System/Check.php b/Civi/Api4/Action/System/Check.php
new file mode 100644 (file)
index 0000000..e07ac0d
--- /dev/null
@@ -0,0 +1,118 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Action\System;
+
+/**
+ * Retrieve system notices, warnings, errors, etc.
+ */
+class Check extends \Civi\Api4\Generic\BasicGetAction {
+
+  protected function getRecords() {
+    $messages = [];
+    foreach (\CRM_Utils_Check::checkAll() as $message) {
+      $messages[] = $message->toArray();
+    }
+    return $messages;
+  }
+
+  public static function fields() {
+    return [
+      [
+        'name' => 'name',
+        'title' => 'Name',
+        'description' => 'Unique identifier',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'title',
+        'title' => 'Title',
+        'description' => 'Short title text',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'message',
+        'title' => 'Message',
+        'description' => 'Long description html',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'help',
+        'title' => 'Help',
+        'description' => 'Optional extra help (html string)',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'icon',
+        'description' => 'crm-i class of icon to display with message',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'severity',
+        'title' => 'Severity',
+        'description' => 'Psr\Log\LogLevel string',
+        'data_type' => 'String',
+        'options' => array_combine(\CRM_Utils_Check::getSeverityList(), \CRM_Utils_Check::getSeverityList()),
+      ],
+      [
+        'name' => 'severity_id',
+        'title' => 'Severity ID',
+        'description' => 'Integer representation of Psr\Log\LogLevel',
+        'data_type' => 'Integer',
+        'options' => \CRM_Utils_Check::getSeverityList(),
+      ],
+      [
+        'name' => 'is_visible',
+        'title' => 'is visible',
+        'description' => '0 if message has been hidden by the user',
+        'data_type' => 'Boolean',
+      ],
+      [
+        'name' => 'hidden_until',
+        'title' => 'Hidden until',
+        'description' => 'When will hidden message be visible again?',
+        'data_type' => 'Date',
+      ],
+      [
+        'name' => 'actions',
+        'title' => 'Actions',
+        'description' => 'List of actions user can perform',
+        'data_type' => 'Array',
+      ],
+    ];
+  }
+
+}
diff --git a/Civi/Api4/Action/System/Flush.php b/Civi/Api4/Action/System/Flush.php
new file mode 100644 (file)
index 0000000..71140ee
--- /dev/null
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Action\System;
+
+/**
+ * Clear CiviCRM caches, and optionally rebuild triggers and reset sessions.
+ *
+ * @method bool getTriggers
+ * @method $this setTriggers(bool $triggers)
+ * @method bool getSession
+ * @method $this setSession(bool $session)
+ */
+class Flush extends \Civi\Api4\Generic\AbstractAction {
+
+  /**
+   * Rebuild db triggers
+   *
+   * @var bool
+   */
+  protected $triggers = FALSE;
+
+  /**
+   * Reset sessions
+   *
+   * @var bool
+   */
+  protected $session = FALSE;
+
+  public function _run(\Civi\Api4\Generic\Result $result) {
+    \CRM_Core_Invoke::rebuildMenuAndCaches($this->triggers, $this->session);
+  }
+
+}
diff --git a/Civi/Api4/ActionSchedule.php b/Civi/Api4/ActionSchedule.php
new file mode 100644 (file)
index 0000000..f3274a4
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * ActionSchedule Entity.
+ *
+ * This entity exposes CiviCRM schedule reminders, which allows us to send messages (through email or SMS)
+ * to contacts when certain criteria are met. Using this API you can create schedule reminder for
+ * supported entities like Contact, Activity, Event, Membership or Contribution.
+ *
+ * Creating a new ActionSchedule requires at minimum a title, mapping_id and entity_value.
+ *
+ * @package Civi\Api4
+ */
+class ActionSchedule extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Activity.php b/Civi/Api4/Activity.php
new file mode 100644 (file)
index 0000000..c53a339
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Activity entity.
+ *
+ * This entity adds record of any scheduled or completed interaction with one or more contacts.
+ * Each activity record is tightly linked to other CiviCRM constituents. With this API you can manually
+ * create an activity of desired type for your organisation or any other contact.
+ *
+ * Creating a new Activity requires at minimum a activity_type_id, entity ID and object_table
+ *
+ * An activity is a record of some type of interaction with one or more contacts.
+ *
+ * @package Civi\Api4
+ */
+class Activity extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/ActivityContact.php b/Civi/Api4/ActivityContact.php
new file mode 100644 (file)
index 0000000..d7a360e
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * ActivityContact Entity.
+ *
+ * This entity adds a record which relate a contact to activity.
+ *
+ * Creating a new ActivityContact requires at minimum a contact_id and activity_id.
+ *
+ * @package Civi\Api4
+ */
+class ActivityContact extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Address.php b/Civi/Api4/Address.php
new file mode 100644 (file)
index 0000000..e3f42c9
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Address Entity.
+ *
+ * This entity holds the address informatiom of a contact. Each contact may hold
+ * one or more addresses but must have different location types respectively.
+ *
+ * Creating a new address requires at minimum a contact's ID and location type ID
+ *  and other attributes (although optional) like street address, city, country etc.
+ *
+ * @package Civi\Api4
+ */
+class Address extends Generic\DAOEntity {
+
+  /**
+   * @return \Civi\Api4\Action\Address\Create
+   */
+  public static function create() {
+    return new \Civi\Api4\Action\Address\Create(__CLASS__, __FUNCTION__);
+  }
+
+  /**
+   * @return \Civi\Api4\Action\Address\Save
+   */
+  public static function save() {
+    return new \Civi\Api4\Action\Address\Save(__CLASS__, __FUNCTION__);
+  }
+
+  /**
+   * @return \Civi\Api4\Action\Address\Update
+   */
+  public static function update() {
+    return new \Civi\Api4\Action\Address\Update(__CLASS__, __FUNCTION__);
+  }
+
+}
diff --git a/Civi/Api4/Campaign.php b/Civi/Api4/Campaign.php
new file mode 100644 (file)
index 0000000..d8ed0dd
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Campaign entity.
+ *
+ * @package Civi\Api4
+ */
+class Campaign extends Generic\DAOEntity {
+
+  /**
+   * @return \Civi\Api4\Action\Campaign\Get
+   */
+  public static function get() {
+    return new \Civi\Api4\Action\Campaign\Get(__CLASS__, __FUNCTION__);
+  }
+
+}
diff --git a/Civi/Api4/Contact.php b/Civi/Api4/Contact.php
new file mode 100644 (file)
index 0000000..5104b2a
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Contacts - Individuals, Organizations, Households.
+ *
+ * This is the central entity in the CiviCRM database, and links to
+ * many other entities (Email, Phone, Participant, etc.).
+ *
+ * Creating a new contact requires at minimum a name or email address.
+ *
+ * @package Civi\Api4
+ */
+class Contact extends Generic\DAOEntity {
+
+  public static function getFields() {
+    return new Action\Contact\GetFields(__CLASS__, __FUNCTION__);
+  }
+
+  public static function getChecksum() {
+    return new Action\Contact\GetChecksum(__CLASS__, __FUNCTION__);
+  }
+
+  public static function validateChecksum() {
+    return new Action\Contact\ValidateChecksum(__CLASS__, __FUNCTION__);
+  }
+
+}
diff --git a/Civi/Api4/ContactType.php b/Civi/Api4/ContactType.php
new file mode 100644 (file)
index 0000000..e792f0c
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * ContactType entity.
+ *
+ * With this entity you can create or update any new or existing Contact type or a sub type
+ * In case of updating existing ContactType, id of that particular ContactType must
+ * be in $params array.
+ *
+ * Creating a new contact type requires at minimum a label and parent_id.
+ *
+ * @package Civi\Api4
+ */
+class ContactType extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Contribution.php b/Civi/Api4/Contribution.php
new file mode 100644 (file)
index 0000000..43c89a9
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Contribution entity.
+ *
+ * @package Civi\Api4
+ */
+class Contribution extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/ContributionPage.php b/Civi/Api4/ContributionPage.php
new file mode 100644 (file)
index 0000000..ea97896
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * ContributionPage entity.
+ *
+ * @package Civi\Api4
+ */
+class ContributionPage extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/CustomField.php b/Civi/Api4/CustomField.php
new file mode 100644 (file)
index 0000000..f9f6fdd
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * CustomField entity.
+ *
+ * @package Civi\Api4
+ */
+class CustomField extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/CustomGroup.php b/Civi/Api4/CustomGroup.php
new file mode 100644 (file)
index 0000000..5051e3f
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * CustomGroup entity.
+ *
+ * @package Civi\Api4
+ */
+class CustomGroup extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/CustomValue.php b/Civi/Api4/CustomValue.php
new file mode 100644 (file)
index 0000000..e39c63e
--- /dev/null
@@ -0,0 +1,122 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * CustomGroup entity.
+ *
+ * @package Civi\Api4
+ */
+class CustomValue extends Generic\AbstractEntity {
+
+  /**
+   * @param string $customGroup
+   * @return Action\CustomValue\Get
+   */
+  public static function get($customGroup) {
+    return new Action\CustomValue\Get($customGroup, __FUNCTION__);
+  }
+
+  /**
+   * @param string $customGroup
+   * @return Action\CustomValue\GetFields
+   */
+  public static function getFields($customGroup = NULL) {
+    return new Action\CustomValue\GetFields($customGroup, __FUNCTION__);
+  }
+
+  /**
+   * @param string $customGroup
+   * @return Action\CustomValue\Save
+   */
+  public static function save($customGroup) {
+    return new Action\CustomValue\Save($customGroup, __FUNCTION__);
+  }
+
+  /**
+   * @param string $customGroup
+   * @return Action\CustomValue\Create
+   */
+  public static function create($customGroup) {
+    return new Action\CustomValue\Create($customGroup, __FUNCTION__);
+  }
+
+  /**
+   * @param string $customGroup
+   * @return Action\CustomValue\Update
+   */
+  public static function update($customGroup) {
+    return new Action\CustomValue\Update($customGroup, __FUNCTION__);
+  }
+
+  /**
+   * @param string $customGroup
+   * @return Action\CustomValue\Delete
+   */
+  public static function delete($customGroup) {
+    return new Action\CustomValue\Delete($customGroup, __FUNCTION__);
+  }
+
+  /**
+   * @param string $customGroup
+   * @return Action\CustomValue\Replace
+   */
+  public static function replace($customGroup) {
+    return new Action\CustomValue\Replace($customGroup, __FUNCTION__);
+  }
+
+  /**
+   * @param string $customGroup
+   * @return Action\CustomValue\GetActions
+   */
+  public static function getActions($customGroup = NULL) {
+    return new Action\CustomValue\GetActions($customGroup, __FUNCTION__);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public static function permissions() {
+    $entity = 'contact';
+    $permissions = \CRM_Core_Permission::getEntityActionPermissions();
+
+    // Merge permissions for this entity with the defaults
+    return \CRM_Utils_Array::value($entity, $permissions, []) + $permissions['default'];
+  }
+
+}
diff --git a/Civi/Api4/Domain.php b/Civi/Api4/Domain.php
new file mode 100644 (file)
index 0000000..2333f28
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Domains - multisite instances of CiviCRM.
+ *
+ * @package Civi\Api4
+ */
+class Domain extends Generic\DAOEntity {
+
+  public static function get() {
+    return new \Civi\Api4\Action\Domain\Get(__CLASS__, __FUNCTION__);
+  }
+
+}
diff --git a/Civi/Api4/Email.php b/Civi/Api4/Email.php
new file mode 100644 (file)
index 0000000..66255fa
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Email entity.
+ *
+ * This entity allows user to add, update, retrieve or delete emails address(es) of a contact.
+ *
+ * Creating a new email address requires at minimum a contact's ID and email
+ *
+ * @package Civi\Api4
+ */
+class Email extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Entity.php b/Civi/Api4/Entity.php
new file mode 100644 (file)
index 0000000..4980140
--- /dev/null
@@ -0,0 +1,83 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Retrieves information about all Api4 entities.
+ *
+ * @package Civi\Api4
+ */
+class Entity extends Generic\AbstractEntity {
+
+  /**
+   * @return Action\Entity\Get
+   */
+  public static function get() {
+    return new Action\Entity\Get('Entity', __FUNCTION__);
+  }
+
+  /**
+   * @return \Civi\Api4\Generic\BasicGetFieldsAction
+   */
+  public static function getFields() {
+    return new \Civi\Api4\Generic\BasicGetFieldsAction('Entity', __FUNCTION__, function() {
+      return [
+        ['name' => 'name'],
+        ['name' => 'description'],
+        ['name' => 'comment'],
+      ];
+    });
+  }
+
+  /**
+   * @return Action\Entity\GetLinks
+   */
+  public static function getLinks() {
+    return new Action\Entity\GetLinks('Entity', __FUNCTION__);
+  }
+
+  /**
+   * @return array
+   */
+  public static function permissions() {
+    return [
+      'default' => ['access CiviCRM'],
+    ];
+  }
+
+}
diff --git a/Civi/Api4/EntityTag.php b/Civi/Api4/EntityTag.php
new file mode 100644 (file)
index 0000000..b58b093
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * EntityTag - links tags to contacts, activities, etc.
+ *
+ * @package Civi\Api4
+ */
+class EntityTag extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Event.php b/Civi/Api4/Event.php
new file mode 100644 (file)
index 0000000..f72ead2
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Event entity.
+ *
+ * @package Civi\Api4
+ */
+class Event extends Generic\DAOEntity {
+
+  /**
+   * @return \Civi\Api4\Action\Event\Get
+   */
+  public static function get() {
+    return new \Civi\Api4\Action\Event\Get(__CLASS__, __FUNCTION__);
+  }
+
+}
diff --git a/Civi/Api4/Event/Events.php b/Civi/Api4/Event/Events.php
new file mode 100644 (file)
index 0000000..de26a7f
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event;
+
+class Events {
+
+  /**
+   * Prepare the specification for a request. Fired from within a request to
+   * get fields.
+   *
+   * @see GetSpecEvent
+   */
+  const GET_SPEC = 'civi.api.get_spec';
+
+  /**
+   * Build the database schema, allow adding of custom joins and tables.
+   */
+  const SCHEMA_MAP_BUILD = 'api.schema_map.build';
+
+  /**
+   * Alter query results of APIv4 select query
+   */
+  const POST_SELECT_QUERY = 'api.select_query.post';
+
+}
diff --git a/Civi/Api4/Event/GetSpecEvent.php b/Civi/Api4/Event/GetSpecEvent.php
new file mode 100644 (file)
index 0000000..df85ea9
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event;
+
+use Civi\Api4\Generic\AbstractAction;
+use Symfony\Component\EventDispatcher\Event as BaseEvent;
+
+class GetSpecEvent extends BaseEvent {
+  /**
+   * @var \Civi\Api4\Generic\AbstractAction
+   */
+  protected $request;
+
+  /**
+   * @param \Civi\Api4\Generic\AbstractAction $request
+   */
+  public function __construct(AbstractAction $request) {
+    $this->request = $request;
+  }
+
+  /**
+   * @return \Civi\Api4\Generic\AbstractAction
+   */
+  public function getRequest() {
+    return $this->request;
+  }
+
+  /**
+   * @param $request
+   */
+  public function setRequest(AbstractAction $request) {
+    $this->request = $request;
+  }
+
+}
diff --git a/Civi/Api4/Event/PostSelectQueryEvent.php b/Civi/Api4/Event/PostSelectQueryEvent.php
new file mode 100644 (file)
index 0000000..30036cc
--- /dev/null
@@ -0,0 +1,99 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event;
+
+use Civi\Api4\Query\Api4SelectQuery;
+use Symfony\Component\EventDispatcher\Event;
+
+class PostSelectQueryEvent extends Event {
+
+  /**
+   * @var array
+   */
+  protected $results;
+
+  /**
+   * @var \Civi\Api4\Query\Api4SelectQuery
+   */
+  protected $query;
+
+  /**
+   * PostSelectQueryEvent constructor.
+   * @param array $results
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   */
+  public function __construct(array $results, Api4SelectQuery $query) {
+    $this->results = $results;
+    $this->query = $query;
+  }
+
+  /**
+   * @return array
+   */
+  public function getResults() {
+    return $this->results;
+  }
+
+  /**
+   * @param array $results
+   * @return $this
+   */
+  public function setResults($results) {
+    $this->results = $results;
+
+    return $this;
+  }
+
+  /**
+   * @return \Civi\Api4\Query\Api4SelectQuery
+   */
+  public function getQuery() {
+    return $this->query;
+  }
+
+  /**
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   * @return $this
+   */
+  public function setQuery($query) {
+    $this->query = $query;
+
+    return $this;
+  }
+
+}
diff --git a/Civi/Api4/Event/SchemaMapBuildEvent.php b/Civi/Api4/Event/SchemaMapBuildEvent.php
new file mode 100644 (file)
index 0000000..2a63022
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event;
+
+use Civi\Api4\Service\Schema\SchemaMap;
+use Symfony\Component\EventDispatcher\Event as BaseEvent;
+
+class SchemaMapBuildEvent extends BaseEvent {
+  /**
+   * @var \Civi\Api4\Service\Schema\SchemaMap
+   */
+  protected $schemaMap;
+
+  /**
+   * @param \Civi\Api4\Service\Schema\SchemaMap $schemaMap
+   */
+  public function __construct(SchemaMap $schemaMap) {
+    $this->schemaMap = $schemaMap;
+  }
+
+  /**
+   * @return \Civi\Api4\Service\Schema\SchemaMap
+   */
+  public function getSchemaMap() {
+    return $this->schemaMap;
+  }
+
+  /**
+   * @param \Civi\Api4\Service\Schema\SchemaMap $schemaMap
+   *
+   * @return $this
+   */
+  public function setSchemaMap($schemaMap) {
+    $this->schemaMap = $schemaMap;
+
+    return $this;
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php b/Civi/Api4/Event/Subscriber/ActivityPreCreationSubscriber.php
new file mode 100644 (file)
index 0000000..d536413
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\Api4\Generic\DAOCreateAction;
+use Civi\Api4\OptionValue;
+
+class ActivityPreCreationSubscriber extends Generic\PreCreationSubscriber {
+
+  /**
+   * @param \Civi\Api4\Generic\DAOCreateAction $request
+   * @throws \API_Exception
+   * @throws \Exception
+   */
+  protected function modify(DAOCreateAction $request) {
+    $activityType = $request->getValue('activity_type');
+    if ($activityType) {
+      $result = OptionValue::get()
+        ->setCheckPermissions(FALSE)
+        ->addWhere('name', '=', $activityType)
+        ->addWhere('option_group.name', '=', 'activity_type')
+        ->execute();
+
+      if ($result->count() !== 1) {
+        throw new \Exception('Activity type must match a *single* type');
+      }
+
+      $request->addValue('activity_type_id', $result->first()['value']);
+    }
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\DAOCreateAction $request
+   *
+   * @return bool
+   */
+  protected function applies(DAOCreateAction $request) {
+    return $request->getEntityName() === 'Activity';
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php b/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php
new file mode 100644 (file)
index 0000000..9dc9688
--- /dev/null
@@ -0,0 +1,75 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\Api4\Event\Events;
+use Civi\Api4\Event\SchemaMapBuildEvent;
+use Civi\Api4\Service\Schema\Joinable\ActivityToActivityContactAssigneesJoinable;
+use Civi\Api4\Service\Schema\Joinable\BridgeJoinable;
+use Civi\Api4\Service\Schema\Joinable\Joinable;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+class ActivitySchemaMapSubscriber implements EventSubscriberInterface {
+
+  /**
+   * @return array
+   */
+  public static function getSubscribedEvents() {
+    return [
+      Events::SCHEMA_MAP_BUILD => 'onSchemaBuild',
+    ];
+  }
+
+  /**
+   * @param \Civi\Api4\Event\SchemaMapBuildEvent $event
+   */
+  public function onSchemaBuild(SchemaMapBuildEvent $event) {
+    $schema = $event->getSchemaMap();
+    $table = $schema->getTableByName('civicrm_activity');
+
+    $middleAlias = \CRM_Utils_String::createRandom(10, implode(range('a', 'z')));
+    $middleLink = new ActivityToActivityContactAssigneesJoinable($middleAlias);
+
+    $bridge = new BridgeJoinable('civicrm_contact', 'id', 'assignees', $middleLink);
+    $bridge->setBaseTable('civicrm_activity_contact');
+    $bridge->setJoinType(Joinable::JOIN_TYPE_ONE_TO_MANY);
+
+    $table->addTableLink('contact_id', $bridge);
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/ContactPreSaveSubscriber.php b/Civi/Api4/Event/Subscriber/ContactPreSaveSubscriber.php
new file mode 100644 (file)
index 0000000..d8bc34d
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\Api4\Generic\AbstractAction;
+
+class ContactPreSaveSubscriber extends Generic\PreSaveSubscriber {
+
+  public $supportedOperation = 'create';
+
+  public function modify(&$contact, AbstractAction $request) {
+    // Guess which type of contact is being created
+    if (empty($contact['contact_type']) && !empty($contact['organization_name'])) {
+      $contact['contact_type'] = 'Organization';
+    }
+    if (empty($contact['contact_type']) && !empty($contact['household_name'])) {
+      $contact['contact_type'] = 'Household';
+    }
+  }
+
+  public function applies(AbstractAction $request) {
+    return $request->getEntityName() === 'Contact';
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/ContactSchemaMapSubscriber.php b/Civi/Api4/Event/Subscriber/ContactSchemaMapSubscriber.php
new file mode 100644 (file)
index 0000000..bcde7fb
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\Api4\Event\Events;
+use Civi\Api4\Event\SchemaMapBuildEvent;
+use Civi\Api4\Service\Schema\Joinable\Joinable;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+class ContactSchemaMapSubscriber implements EventSubscriberInterface {
+
+  /**
+   * @return array
+   */
+  public static function getSubscribedEvents() {
+    return [
+      Events::SCHEMA_MAP_BUILD => 'onSchemaBuild',
+    ];
+  }
+
+  /**
+   * @param \Civi\Api4\Event\SchemaMapBuildEvent $event
+   */
+  public function onSchemaBuild(SchemaMapBuildEvent $event) {
+    $schema = $event->getSchemaMap();
+    $table = $schema->getTableByName('civicrm_contact');
+    $this->addCreatedActivitiesLink($table);
+    $this->fixPreferredLanguageAlias($table);
+  }
+
+  /**
+   * @param \Civi\Api4\Service\Schema\Table $table
+   */
+  private function addCreatedActivitiesLink($table) {
+    $alias = 'created_activities';
+    $joinable = new Joinable('civicrm_activity_contact', 'contact_id', $alias);
+    $joinable->addCondition($alias . '.record_type_id = 1');
+    $joinable->setJoinType($joinable::JOIN_TYPE_ONE_TO_MANY);
+    $table->addTableLink('id', $joinable);
+  }
+
+  /**
+   * @param \Civi\Api4\Service\Schema\Table $table
+   */
+  private function fixPreferredLanguageAlias($table) {
+    foreach ($table->getExternalLinks() as $link) {
+      if ($link->getAlias() === 'languages') {
+        $link->setAlias('preferred_language');
+        return;
+      }
+    }
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/ContributionPreSaveSubscriber.php b/Civi/Api4/Event/Subscriber/ContributionPreSaveSubscriber.php
new file mode 100644 (file)
index 0000000..73ffd46
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\Api4\Generic\AbstractAction;
+
+class ContributionPreSaveSubscriber extends Generic\PreSaveSubscriber {
+
+  public function modify(&$record, AbstractAction $request) {
+    // Required by Contribution BAO
+    $record['skipCleanMoney'] = TRUE;
+  }
+
+  public function applies(AbstractAction $request) {
+    return $request->getEntityName() === 'Contribution';
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/CustomFieldPreSaveSubscriber.php b/Civi/Api4/Event/Subscriber/CustomFieldPreSaveSubscriber.php
new file mode 100644 (file)
index 0000000..d5e4caf
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\Api4\Generic\AbstractAction;
+
+class CustomFieldPreSaveSubscriber extends Generic\PreSaveSubscriber {
+
+  public $supportedOperation = 'create';
+
+  public function modify(&$field, AbstractAction $request) {
+    if (!empty($field['option_values'])) {
+      $weight = 0;
+      foreach ($field['option_values'] as $key => $value) {
+        // Translate simple key/value pairs into full-blown option values
+        if (!is_array($value)) {
+          $value = [
+            'label' => $value,
+            'value' => $key,
+            'is_active' => 1,
+            'weight' => $weight,
+          ];
+          $key = $weight++;
+        }
+        $field['option_label'][$key] = $value['label'];
+        $field['option_value'][$key] = $value['value'];
+        $field['option_status'][$key] = $value['is_active'];
+        $field['option_weight'][$key] = $value['weight'];
+      }
+    }
+    $field['option_type'] = !empty($field['option_values']);
+  }
+
+  public function applies(AbstractAction $request) {
+    return $request->getEntityName() === 'CustomField';
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php b/Civi/Api4/Event/Subscriber/CustomGroupPreCreationSubscriber.php
new file mode 100644 (file)
index 0000000..2c0aec0
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\Api4\Generic\DAOCreateAction;
+
+class CustomGroupPreCreationSubscriber extends Generic\PreCreationSubscriber {
+
+  /**
+   * @param \Civi\Api4\Generic\DAOCreateAction $request
+   */
+  protected function modify(DAOCreateAction $request) {
+    $extends = $request->getValue('extends');
+    $title = $request->getValue('title');
+    $name = $request->getValue('name');
+
+    if (is_string($extends)) {
+      $request->addValue('extends', [$extends]);
+    }
+
+    if (NULL === $title && $name) {
+      $request->addValue('title', $name);
+    }
+  }
+
+  protected function applies(DAOCreateAction $request) {
+    return $request->getEntityName() === 'CustomGroup';
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/Generic/AbstractPrepareSubscriber.php b/Civi/Api4/Event/Subscriber/Generic/AbstractPrepareSubscriber.php
new file mode 100644 (file)
index 0000000..ce96848
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber\Generic;
+
+use Civi\API\Event\PrepareEvent;
+use Civi\API\Events;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+abstract class AbstractPrepareSubscriber implements EventSubscriberInterface {
+
+  /**
+   * @return array
+   */
+  public static function getSubscribedEvents() {
+    return [
+      Events::PREPARE => 'onApiPrepare',
+    ];
+  }
+
+  /**
+   * @param \Civi\API\Event\PrepareEvent $event
+   */
+  abstract public function onApiPrepare(PrepareEvent $event);
+
+}
diff --git a/Civi/Api4/Event/Subscriber/Generic/PreCreationSubscriber.php b/Civi/Api4/Event/Subscriber/Generic/PreCreationSubscriber.php
new file mode 100644 (file)
index 0000000..6ebd9fb
--- /dev/null
@@ -0,0 +1,86 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber\Generic;
+
+use Civi\API\Event\PrepareEvent;
+use Civi\Api4\Generic\DAOCreateAction;
+
+abstract class PreCreationSubscriber extends AbstractPrepareSubscriber {
+
+  /**
+   * @param \Civi\API\Event\PrepareEvent $event
+   */
+  public function onApiPrepare(PrepareEvent $event) {
+    $apiRequest = $event->getApiRequest();
+    if (!$apiRequest instanceof DAOCreateAction) {
+      return;
+    }
+
+    $this->addDefaultCreationValues($apiRequest);
+    if ($this->applies($apiRequest)) {
+      $this->modify($apiRequest);
+    }
+  }
+
+  /**
+   * Modify the request
+   *
+   * @param \Civi\Api4\Generic\DAOCreateAction $request
+   *
+   * @return void
+   */
+  abstract protected function modify(DAOCreateAction $request);
+
+  /**
+   * Check if this subscriber should be applied to the request
+   *
+   * @param \Civi\Api4\Generic\DAOCreateAction $request
+   *
+   * @return bool
+   */
+  abstract protected function applies(DAOCreateAction $request);
+
+  /**
+   * Sets default values common to all creation requests
+   *
+   * @param \Civi\Api4\Generic\DAOCreateAction $request
+   */
+  protected function addDefaultCreationValues(DAOCreateAction $request) {
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/Generic/PreSaveSubscriber.php b/Civi/Api4/Event/Subscriber/Generic/PreSaveSubscriber.php
new file mode 100644 (file)
index 0000000..7c80adf
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber\Generic;
+
+use Civi\API\Event\PrepareEvent;
+use Civi\Api4\Generic\AbstractAction;
+use Civi\Api4\Generic\AbstractCreateAction;
+use Civi\Api4\Generic\AbstractUpdateAction;
+
+abstract class PreSaveSubscriber extends AbstractPrepareSubscriber {
+
+  /**
+   * @var string
+   *   create|update|both
+   */
+  public $supportedOperation = 'both';
+
+  /**
+   * @param \Civi\API\Event\PrepareEvent $event
+   */
+  public function onApiPrepare(PrepareEvent $event) {
+    $apiRequest = $event->getApiRequest();
+
+    if ($apiRequest instanceof AbstractAction && $this->applies($apiRequest)) {
+      if (
+        ($apiRequest instanceof AbstractCreateAction && $this->supportedOperation !== 'update') ||
+        ($apiRequest instanceof AbstractUpdateAction && $this->supportedOperation !== 'create')
+      ) {
+        $values = $apiRequest->getValues();
+        $this->modify($values, $apiRequest);
+        $apiRequest->setValues($values);
+      }
+    }
+  }
+
+  /**
+   * Modify the item about to be saved
+   *
+   * @param array $item
+   * @param \Civi\Api4\Generic\AbstractAction $request
+   *
+   */
+  abstract protected function modify(&$item, AbstractAction $request);
+
+  /**
+   * Check if this subscriber should be applied to the request
+   *
+   * @param \Civi\Api4\Generic\AbstractAction $request
+   *
+   * @return bool
+   */
+  abstract protected function applies(AbstractAction $request);
+
+}
diff --git a/Civi/Api4/Event/Subscriber/IsCurrentSubscriber.php b/Civi/Api4/Event/Subscriber/IsCurrentSubscriber.php
new file mode 100644 (file)
index 0000000..4f9610e
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\API\Event\PrepareEvent;
+use Civi\Api4\Utils\ReflectionUtils;
+
+/**
+ * Process $current api param for Get actions
+ *
+ * @see \Civi\Api4\Generic\Traits\IsCurrentTrait
+ */
+class IsCurrentSubscriber extends Generic\AbstractPrepareSubscriber {
+
+  public function onApiPrepare(PrepareEvent $event) {
+    /** @var \Civi\Api4\Generic\AbstractQueryAction $action */
+    $action = $event->getApiRequest();
+    if ($action['version'] == 4 && method_exists($action, 'getCurrent')
+      && in_array('Civi\Api4\Generic\Traits\IsCurrentTrait', ReflectionUtils::getTraits($action))
+    ) {
+      $fields = $action->entityFields();
+      if ($action->getCurrent()) {
+        if (isset($fields['is_active'])) {
+          $action->addWhere('is_active', '=', '1');
+        }
+        $action->addClause('OR', ['start_date', 'IS NULL'], ['start_date', '<=', 'now']);
+        $action->addClause('OR', ['end_date', 'IS NULL'], ['end_date', '>=', 'now']);
+      }
+      elseif ($action->getCurrent() === FALSE) {
+        $conditions = [['end_date', '<', 'now'], ['start_date', '>', 'now']];
+        if (isset($fields['is_active'])) {
+          $conditions[] = ['is_active', '=', '0'];
+        }
+        $action->addClause('OR', $conditions);
+      }
+    }
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php b/Civi/Api4/Event/Subscriber/OptionValuePreCreationSubscriber.php
new file mode 100644 (file)
index 0000000..5795a8f
--- /dev/null
@@ -0,0 +1,85 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\Api4\Generic\DAOCreateAction;
+use Civi\Api4\OptionGroup;
+
+class OptionValuePreCreationSubscriber extends Generic\PreCreationSubscriber {
+
+  /**
+   * @param \Civi\Api4\Generic\DAOCreateAction $request
+   */
+  protected function modify(DAOCreateAction $request) {
+    $this->setOptionGroupId($request);
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\DAOCreateAction $request
+   *
+   * @return bool
+   */
+  protected function applies(DAOCreateAction $request) {
+    return $request->getEntityName() === 'OptionValue';
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\DAOCreateAction $request
+   * @throws \API_Exception
+   * @throws \Exception
+   */
+  private function setOptionGroupId(DAOCreateAction $request) {
+    $optionGroupName = $request->getValue('option_group');
+    if (!$optionGroupName || $request->getValue('option_group_id')) {
+      return;
+    }
+
+    $optionGroup = OptionGroup::get()
+      ->setCheckPermissions(FALSE)
+      ->addSelect('id')
+      ->addWhere('name', '=', $optionGroupName)
+      ->execute();
+
+    if ($optionGroup->count() !== 1) {
+      throw new \Exception('Option group name must match only a single group');
+    }
+
+    $request->addValue('option_group_id', $optionGroup->first()['id']);
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/PermissionCheckSubscriber.php b/Civi/Api4/Event/Subscriber/PermissionCheckSubscriber.php
new file mode 100644 (file)
index 0000000..b63fdc5
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 4.7                                                |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2017                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\API\Events;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * For any API requests that correspond to a Doctrine entity
+ * ($apiRequest['doctrineClass']), check permissions specified in
+ * Civi\API\Annotation\Permission.
+ */
+class PermissionCheckSubscriber implements EventSubscriberInterface {
+
+  /**
+   * @return array
+   */
+  public static function getSubscribedEvents() {
+    return [
+      Events::AUTHORIZE => [
+        ['onApiAuthorize', Events::W_LATE],
+      ],
+    ];
+  }
+
+  /**
+   * @param \Civi\API\Event\AuthorizeEvent $event
+   *   API authorization event.
+   */
+  public function onApiAuthorize(\Civi\API\Event\AuthorizeEvent $event) {
+    /* @var \Civi\Api4\Generic\AbstractAction $apiRequest */
+    $apiRequest = $event->getApiRequest();
+    if ($apiRequest['version'] == 4) {
+      if (!$apiRequest->getCheckPermissions() || $apiRequest->isAuthorized()) {
+        $event->authorize();
+        $event->stopPropagation();
+      }
+    }
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/PostSelectQuerySubscriber.php b/Civi/Api4/Event/Subscriber/PostSelectQuerySubscriber.php
new file mode 100644 (file)
index 0000000..22da84d
--- /dev/null
@@ -0,0 +1,366 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\Api4\Event\Events;
+use Civi\Api4\Event\PostSelectQueryEvent;
+use Civi\Api4\Query\Api4SelectQuery;
+use Civi\Api4\Utils\ArrayInsertionUtil;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * Changes the results of a select query, doing 1-n joins and unserializing data
+ */
+class PostSelectQuerySubscriber implements EventSubscriberInterface {
+
+  /**
+   * @inheritdoc
+   */
+  public static function getSubscribedEvents() {
+    return [
+      Events::POST_SELECT_QUERY => 'onPostQuery',
+    ];
+  }
+
+  /**
+   * @param \Civi\Api4\Event\PostSelectQueryEvent $event
+   */
+  public function onPostQuery(PostSelectQueryEvent $event) {
+    $results = $event->getResults();
+    $event->setResults($this->postRun($results, $event->getQuery()));
+  }
+
+  /**
+   * @param array $results
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   *
+   * @return array
+   */
+  protected function postRun(array $results, Api4SelectQuery $query) {
+    if (empty($results)) {
+      return $results;
+    }
+
+    $fieldSpec = $query->getApiFieldSpec();
+    $this->unserializeFields($results, $query->getEntity(), $fieldSpec);
+
+    // Group the selects to avoid queries for each field
+    $groupedSelects = $this->getNtoManyJoinSelects($query);
+    foreach ($groupedSelects as $finalAlias => $selects) {
+      $joinPath = $query->getPathJoinTypes($selects[0]);
+      $selects = $this->formatSelects($finalAlias, $selects, $query);
+      $joinResults = $this->getJoinResults($query, $finalAlias, $selects);
+      $this->formatJoinResults($joinResults, $query, $finalAlias);
+
+      // Insert join results into original result
+      foreach ($results as &$primaryResult) {
+        $baseId = $primaryResult['id'];
+        $filtered = array_filter($joinResults, function ($res) use ($baseId) {
+          return ($res['_base_id'] === $baseId);
+        });
+        $filtered = array_values($filtered);
+        ArrayInsertionUtil::insert($primaryResult, $joinPath, $filtered);
+      }
+    }
+
+    return array_values($results);
+  }
+
+  /**
+   * @param array $joinResults
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   * @param string $alias
+   */
+  private function formatJoinResults(&$joinResults, $query, $alias) {
+    $join = $query->getJoinedTable($alias);
+    $fields = [];
+    foreach ($join->getEntityFields() as $field) {
+      $name = explode('.', $field->getName());
+      $fields[array_pop($name)] = $field->toArray();
+    }
+    if ($fields) {
+      $this->unserializeFields($joinResults, NULL, $fields);
+    }
+  }
+
+  /**
+   * Unserialize values
+   *
+   * @param array $results
+   * @param string $entity
+   * @param array $fields
+   */
+  protected function unserializeFields(&$results, $entity, $fields = []) {
+    foreach ($results as &$result) {
+      foreach ($result as $field => &$value) {
+        if (!empty($fields[$field]['serialize']) && is_string($value)) {
+          $serializationType = $fields[$field]['serialize'];
+          $value = \CRM_Core_DAO::unSerializeField($value, $serializationType);
+        }
+      }
+    }
+  }
+
+  /**
+   * Find only those joins that need to be handled by a separate query and weren't done in the main query.
+   *
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   *
+   * @return array
+   */
+  private function getNtoManyJoinSelects(Api4SelectQuery $query) {
+    $fkAliases = $query->getFkSelectAliases();
+    $joinedDotSelects = array_filter(
+      $query->getSelect(),
+      function ($select) use ($fkAliases, $query) {
+        return isset($fkAliases[$select]) && array_filter($query->getPathJoinTypes($select));
+      }
+    );
+
+    $selects = [];
+    // group related selects by alias so they can be executed in one query
+    foreach ($joinedDotSelects as $select) {
+      $parts = explode('.', $select);
+      $finalAlias = $parts[count($parts) - 2];
+      $selects[$finalAlias][] = $select;
+    }
+
+    // sort by depth, e.g. email selects should be done before email.location
+    uasort($selects, function ($a, $b) {
+      $aFirst = $a[0];
+      $bFirst = $b[0];
+      return substr_count($aFirst, '.') > substr_count($bFirst, '.');
+    });
+
+    return $selects;
+  }
+
+  /**
+   * @param array $selects
+   * @param $serializationType
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   *
+   * @return array
+   */
+  private function getResultsForSerializedField(
+    array $selects,
+    $serializationType,
+    Api4SelectQuery $query
+  ) {
+    // Get the alias (Selects are grouped and all target the same table)
+    $sampleField = current($selects);
+    $alias = strstr($sampleField, '.', TRUE);
+
+    // Fetch the results with the serialized field
+    $selects['serialized'] = $query::MAIN_TABLE_ALIAS . '.' . $alias;
+    $serializedResults = $this->runWithNewSelects($selects, $query);
+    $newResults = [];
+
+    // Create a new results array, with a separate entry for each option value
+    foreach ($serializedResults as $result) {
+      $optionValues = \CRM_Core_DAO::unSerializeField(
+        $result['serialized'],
+        $serializationType
+      );
+      unset($result['serialized']);
+      foreach ($optionValues as $value) {
+        $newResults[] = array_merge($result, ['value' => $value]);
+      }
+    }
+
+    $optionValueValues = array_unique(array_column($newResults, 'value'));
+    $optionValues = $this->getOptionValuesFromValues(
+      $selects,
+      $query,
+      $optionValueValues
+    );
+    $valueField = $alias . '.value';
+
+    // Index by value
+    foreach ($optionValues as $key => $subResult) {
+      $optionValues[$subResult['value']] = $subResult;
+      unset($subResult[$key]);
+
+      // Exclude 'value' if not in original selects
+      if (!in_array($valueField, $selects)) {
+        unset($optionValues[$subResult['value']]['value']);
+      }
+    }
+
+    // Replace serialized with the sub-select results
+    foreach ($newResults as &$result) {
+      $result = array_merge($result, $optionValues[$result['value']]);
+      unset($result['value']);
+    }
+
+    return $newResults;
+  }
+
+  /**
+   * Prepares selects for the subquery to fetch join results
+   *
+   * @param string $alias
+   * @param array $selects
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   *
+   * @return array
+   */
+  private function formatSelects($alias, $selects, Api4SelectQuery $query) {
+    $mainAlias = $query::MAIN_TABLE_ALIAS;
+    $selectFields = [];
+
+    foreach ($selects as $select) {
+      $selectAlias = $query->getFkSelectAliases()[$select];
+      $fieldAlias = substr($select, strrpos($select, '.') + 1);
+      $selectFields[$fieldAlias] = $selectAlias;
+    }
+
+    $firstSelect = $selects[0];
+    $pathParts = explode('.', $firstSelect);
+    $numParts = count($pathParts);
+    $parentAlias = $numParts > 2 ? $pathParts[$numParts - 3] : $mainAlias;
+
+    $selectFields['id'] = sprintf('%s.id', $alias);
+    $selectFields['_parent_id'] = $parentAlias . '.id';
+    $selectFields['_base_id'] = $mainAlias . '.id';
+
+    return $selectFields;
+  }
+
+  /**
+   * @param array $selects
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   *
+   * @return array
+   */
+  private function runWithNewSelects(array $selects, Api4SelectQuery $query) {
+    $aliasedSelects = array_map(function ($field, $alias) {
+      return sprintf('%s as "%s"', $field, $alias);
+    }, $selects, array_keys($selects));
+
+    $newSelect = sprintf('SELECT DISTINCT %s', implode(", ", $aliasedSelects));
+    $sql = str_replace("\n", ' ', $query->getQuery()->toSQL());
+    $originalSelect = substr($sql, 0, strpos($sql, ' FROM'));
+    $sql = str_replace($originalSelect, $newSelect, $sql);
+
+    $relatedResults = [];
+    $resultDAO = \CRM_Core_DAO::executeQuery($sql);
+    while ($resultDAO->fetch()) {
+      $relatedResult = [];
+      foreach ($selects as $alias => $column) {
+        $returnName = $alias;
+        $alias = str_replace('.', '_', $alias);
+        if (property_exists($resultDAO, $alias)) {
+          $relatedResult[$returnName] = $resultDAO->$alias;
+        }
+      };
+      $relatedResults[] = $relatedResult;
+    }
+
+    return $relatedResults;
+  }
+
+  /**
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   * @param $alias
+   * @param $selects
+   * @return array
+   */
+  protected function getJoinResults(Api4SelectQuery $query, $alias, $selects) {
+    $apiFieldSpec = $query->getApiFieldSpec();
+    if (!empty($apiFieldSpec[$alias]['serialize'])) {
+      $type = $apiFieldSpec[$alias]['serialize'];
+      $joinResults = $this->getResultsForSerializedField($selects, $type, $query);
+    }
+    else {
+      $joinResults = $this->runWithNewSelects($selects, $query);
+    }
+
+    // Remove results with no matching entries
+    $joinResults = array_filter($joinResults, function ($result) {
+      return !empty($result['id']);
+    });
+
+    return $joinResults;
+  }
+
+  /**
+   * Get all the option_value values required in the query
+   *
+   * @param array $selects
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   * @param array $values
+   *
+   * @return array
+   */
+  private function getOptionValuesFromValues(
+    array $selects,
+    Api4SelectQuery $query,
+    array $values
+  ) {
+    $sampleField = current($selects);
+    $alias = strstr($sampleField, '.', TRUE);
+
+    // Get the option value table that was joined
+    $relatedTable = NULL;
+    foreach ($query->getJoinedTables() as $joinedTable) {
+      if ($joinedTable->getAlias() === $alias) {
+        $relatedTable = $joinedTable;
+      }
+    }
+
+    // We only want subselects related to the joined table
+    $subSelects = array_filter($selects, function ($select) use ($alias) {
+      return strpos($select, $alias) === 0;
+    });
+
+    // Fetch all related option_value entries
+    $valueField = $alias . '.value';
+    $subSelects[] = $valueField;
+    $tableName = $relatedTable->getTargetTable();
+    $conditions = $relatedTable->getExtraJoinConditions();
+    $conditions[] = $valueField . ' IN ("' . implode('", "', $values) . '")';
+    $subQuery = new \CRM_Utils_SQL_Select($tableName . ' ' . $alias);
+    $subQuery->where($conditions);
+    $subQuery->select($subSelects);
+    $subResults = $subQuery->execute()->fetchAll();
+
+    return $subResults;
+  }
+
+}
diff --git a/Civi/Api4/Event/Subscriber/ValidateFieldsSubscriber.php b/Civi/Api4/Event/Subscriber/ValidateFieldsSubscriber.php
new file mode 100644 (file)
index 0000000..2e7faab
--- /dev/null
@@ -0,0 +1,100 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 4.7                                                |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2017                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\API\Event\PrepareEvent;
+
+/**
+ * Validate field inputs based on annotations in the action class
+ */
+class ValidateFieldsSubscriber extends Generic\AbstractPrepareSubscriber {
+
+  /**
+   * @param \Civi\API\Event\PrepareEvent $event
+   * @throws \Exception
+   */
+  public function onApiPrepare(PrepareEvent $event) {
+    /** @var \Civi\Api4\Generic\AbstractAction $apiRequest */
+    $apiRequest = $event->getApiRequest();
+    if (is_a($apiRequest, 'Civi\Api4\Generic\AbstractAction')) {
+      $paramInfo = $apiRequest->getParamInfo();
+      foreach ($paramInfo as $param => $info) {
+        $getParam = 'get' . ucfirst($param);
+        $value = $apiRequest->$getParam();
+        // Required fields
+        if (!empty($info['required']) && (!$value && $value !== 0 && $value !== '0')) {
+          throw new \API_Exception('Parameter "' . $param . '" is required.');
+        }
+        if (!empty($info['type']) && !self::checkType($value, $info['type'])) {
+          throw new \API_Exception('Parameter "' . $param . '" is not of the correct type. Expecting ' . implode(' or ', $info['type']) . '.');
+        }
+      }
+    }
+  }
+
+  /**
+   * Validate variable type on input
+   *
+   * @param $value
+   * @param $types
+   * @return bool
+   * @throws \API_Exception
+   */
+  public static function checkType($value, $types) {
+    if ($value === NULL) {
+      return TRUE;
+    }
+    foreach ($types as $type) {
+      switch ($type) {
+        case 'array':
+        case 'bool':
+        case 'string':
+        case 'object':
+          $tester = 'is_' . $type;
+          if ($tester($value)) {
+            return TRUE;
+          }
+          break;
+
+        case 'int':
+          if (\CRM_Utils_Rule::integer($value)) {
+            return TRUE;
+          }
+          break;
+
+        case 'mixed':
+          return TRUE;
+
+        default:
+          throw new \API_Exception('Unknown parameter type: ' . $type);
+      }
+    }
+    return FALSE;
+  }
+
+}
diff --git a/Civi/Api4/Generic/AbstractAction.php b/Civi/Api4/Generic/AbstractAction.php
new file mode 100644 (file)
index 0000000..1a67e01
--- /dev/null
@@ -0,0 +1,481 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Generic;
+
+use Civi\Api4\Utils\ReflectionUtils;
+use Civi\Api4\Utils\ActionUtil;
+
+/**
+ * Base class for all api actions.
+ *
+ * @method $this setCheckPermissions(bool $value)
+ * @method bool getCheckPermissions()
+ * @method $this setChain(array $chain)
+ * @method array getChain()
+ */
+abstract class AbstractAction implements \ArrayAccess {
+
+  /**
+   * Api version number; cannot be changed.
+   *
+   * @var int
+   */
+  protected $version = 4;
+
+  /**
+   * Additional api requests - will be called once per result.
+   *
+   * Keys can be any string - this will be the name given to the output.
+   *
+   * You can reference other values in the api results in this call by prefixing them with $
+   *
+   * For example, you could create a contact and place them in a group by chaining the
+   * GroupContact api to the Contact api:
+   *
+   * Contact::create()
+   *   ->setValue('first_name', 'Hello')
+   *   ->addChain('add_to_a_group', GroupContact::create()->setValue('contact_id', '$id')->setValue('group_id', 123))
+   *
+   * This will substitute the id of the newly created contact with $id.
+   *
+   * @var array
+   */
+  protected $chain = [];
+
+  /**
+   * Whether to enforce acl permissions based on the current user.
+   *
+   * Setting to FALSE will disable permission checks and override ACLs.
+   * In REST/javascript this cannot be disabled.
+   *
+   * @var bool
+   */
+  protected $checkPermissions = TRUE;
+
+  /**
+   * @var string
+   */
+  protected $_entityName;
+
+  /**
+   * @var string
+   */
+  protected $_actionName;
+
+  /**
+   * @var \ReflectionClass
+   */
+  private $_reflection;
+
+  /**
+   * @var array
+   */
+  private $_paramInfo;
+
+  /**
+   * @var array
+   */
+  private $_entityFields;
+
+  /**
+   * @var array
+   */
+  private $_arrayStorage = [];
+
+  /**
+   * @var int
+   * Used to identify api calls for transactions
+   * @see \Civi\Core\Transaction\Manager
+   */
+  private $_id;
+
+  /**
+   * Action constructor.
+   *
+   * @param string $entityName
+   * @param string $actionName
+   * @throws \API_Exception
+   */
+  public function __construct($entityName, $actionName) {
+    // If a namespaced class name is passed in
+    if (strpos($entityName, '\\') !== FALSE) {
+      $entityName = substr($entityName, strrpos($entityName, '\\') + 1);
+    }
+    $this->_entityName = $entityName;
+    $this->_actionName = $actionName;
+    $this->_id = \Civi\API\Request::getNextId();
+  }
+
+  /**
+   * Strictly enforce api parameters
+   * @param $name
+   * @param $value
+   * @throws \Exception
+   */
+  public function __set($name, $value) {
+    throw new \API_Exception('Unknown api parameter');
+  }
+
+  /**
+   * @param int $val
+   * @return $this
+   * @throws \API_Exception
+   */
+  public function setVersion($val) {
+    if ($val != 4) {
+      throw new \API_Exception('Cannot modify api version');
+    }
+    return $this;
+  }
+
+  /**
+   * @param string $name
+   *   Unique name for this chained request
+   * @param \Civi\Api4\Generic\AbstractAction $apiRequest
+   * @param string|int $index
+   *   Either a string for how the results should be indexed e.g. 'name'
+   *   or the index of a single result to return e.g. 0 for the first result.
+   * @return $this
+   */
+  public function addChain($name, AbstractAction $apiRequest, $index = NULL) {
+    $this->chain[$name] = [$apiRequest->getEntityName(), $apiRequest->getActionName(), $apiRequest->getParams(), $index];
+    return $this;
+  }
+
+  /**
+   * Magic function to provide addFoo, getFoo and setFoo for params.
+   *
+   * @param $name
+   * @param $arguments
+   * @return static|mixed
+   * @throws \API_Exception
+   */
+  public function __call($name, $arguments) {
+    $param = lcfirst(substr($name, 3));
+    if (!$param || $param[0] == '_') {
+      throw new \API_Exception('Unknown api parameter: ' . $name);
+    }
+    $mode = substr($name, 0, 3);
+    // Handle plural when adding to e.g. $values with "addValue" method.
+    if ($mode == 'add' && $this->paramExists($param . 's')) {
+      $param .= 's';
+    }
+    if ($this->paramExists($param)) {
+      switch ($mode) {
+        case 'get':
+          return $this->$param;
+
+        case 'set':
+          $this->$param = $arguments[0];
+          return $this;
+
+        case 'add':
+          if (!is_array($this->$param)) {
+            throw new \API_Exception('Cannot add to non-array param');
+          }
+          if (array_key_exists(1, $arguments)) {
+            $this->{$param}[$arguments[0]] = $arguments[1];
+          }
+          else {
+            $this->{$param}[] = $arguments[0];
+          }
+          return $this;
+      }
+    }
+    throw new \API_Exception('Unknown api parameter: ' . $name);
+  }
+
+  /**
+   * Invoke api call.
+   *
+   * At this point all the params have been sent in and we initiate the api call & return the result.
+   * This is basically the outer wrapper for api v4.
+   *
+   * @return \Civi\Api4\Generic\Result
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  public function execute() {
+    /** @var \Civi\API\Kernel $kernel */
+    $kernel = \Civi::service('civi_api_kernel');
+
+    return $kernel->runRequest($this);
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\Result $result
+   */
+  abstract public function _run(Result $result);
+
+  /**
+   * Serialize this object's params into an array
+   * @return array
+   */
+  public function getParams() {
+    $params = [];
+    foreach ($this->reflect()->getProperties(\ReflectionProperty::IS_PROTECTED) as $property) {
+      $name = $property->getName();
+      // Skip variables starting with an underscore
+      if ($name[0] != '_') {
+        $params[$name] = $this->$name;
+      }
+    }
+    return $params;
+  }
+
+  /**
+   * Get documentation for one or all params
+   *
+   * @param string $param
+   * @return array of arrays [description, type, default, (comment)]
+   */
+  public function getParamInfo($param = NULL) {
+    if (!isset($this->_paramInfo)) {
+      $defaults = $this->getParamDefaults();
+      foreach ($this->reflect()->getProperties(\ReflectionProperty::IS_PROTECTED) as $property) {
+        $name = $property->getName();
+        if ($name != 'version' && $name[0] != '_') {
+          $this->_paramInfo[$name] = ReflectionUtils::getCodeDocs($property, 'Property');
+          $this->_paramInfo[$name]['default'] = $defaults[$name];
+        }
+      }
+    }
+    return $param ? $this->_paramInfo[$param] : $this->_paramInfo;
+  }
+
+  /**
+   * @return string
+   */
+  public function getEntityName() {
+    return $this->_entityName;
+  }
+
+  /**
+   *
+   * @return string
+   */
+  public function getActionName() {
+    return $this->_actionName;
+  }
+
+  /**
+   * @param string $param
+   * @return bool
+   */
+  public function paramExists($param) {
+    return array_key_exists($param, $this->getParams());
+  }
+
+  /**
+   * @return array
+   */
+  protected function getParamDefaults() {
+    return array_intersect_key($this->reflect()->getDefaultProperties(), $this->getParams());
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function offsetExists($offset) {
+    return in_array($offset, ['entity', 'action', 'params', 'version', 'check_permissions', 'id']) || isset($this->_arrayStorage[$offset]);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function &offsetGet($offset) {
+    $val = NULL;
+    if (in_array($offset, ['entity', 'action'])) {
+      $offset .= 'Name';
+    }
+    if (in_array($offset, ['entityName', 'actionName', 'params', 'version'])) {
+      $getter = 'get' . ucfirst($offset);
+      $val = $this->$getter();
+      return $val;
+    }
+    if ($offset == 'check_permissions') {
+      return $this->checkPermissions;
+    }
+    if ($offset == 'id') {
+      return $this->_id;
+    }
+    if (isset($this->_arrayStorage[$offset])) {
+      return $this->_arrayStorage[$offset];
+    }
+    return $val;
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function offsetSet($offset, $value) {
+    if (in_array($offset, ['entity', 'action', 'entityName', 'actionName', 'params', 'version', 'id'])) {
+      throw new \API_Exception('Cannot modify api4 state via array access');
+    }
+    if ($offset == 'check_permissions') {
+      $this->setCheckPermissions($value);
+    }
+    else {
+      $this->_arrayStorage[$offset] = $value;
+    }
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function offsetUnset($offset) {
+    if (in_array($offset, ['entity', 'action', 'entityName', 'actionName', 'params', 'check_permissions', 'version', 'id'])) {
+      throw new \API_Exception('Cannot modify api4 state via array access');
+    }
+    unset($this->_arrayStorage[$offset]);
+  }
+
+  /**
+   * Is this api call permitted?
+   *
+   * This function is called if checkPermissions is set to true.
+   *
+   * @return bool
+   */
+  public function isAuthorized() {
+    $permissions = $this->getPermissions();
+    return \CRM_Core_Permission::check($permissions);
+  }
+
+  /**
+   * @return array
+   */
+  public function getPermissions() {
+    $permissions = call_user_func(["\\Civi\\Api4\\" . $this->_entityName, 'permissions']);
+    $permissions += [
+      // applies to getFields, getActions, etc.
+      'meta' => ['access CiviCRM'],
+      // catch-all, applies to create, get, delete, etc.
+      'default' => ['administer CiviCRM'],
+    ];
+    $action = $this->getActionName();
+    if (isset($permissions[$action])) {
+      return $permissions[$action];
+    }
+    elseif (in_array($action, ['getActions', 'getFields'])) {
+      return $permissions['meta'];
+    }
+    return $permissions['default'];
+  }
+
+  /**
+   * Returns schema fields for this entity & action.
+   *
+   * Here we bypass the api wrapper and execute the getFields action directly.
+   * This is because we DON'T want the wrapper to check permissions as this is an internal op,
+   * but we DO want permissions to be checked inside the getFields request so e.g. the api_key
+   * field can be conditionally included.
+   * @see \Civi\Api4\Action\Contact\GetFields
+   *
+   * @return array
+   */
+  public function entityFields() {
+    if (!$this->_entityFields) {
+      $getFields = ActionUtil::getAction($this->getEntityName(), 'getFields');
+      $result = new Result();
+      if (method_exists($this, 'getBaoName')) {
+        $getFields->setIncludeCustom(FALSE);
+      }
+      $getFields
+        ->setCheckPermissions($this->checkPermissions)
+        ->setAction($this->getActionName())
+        ->_run($result);
+      $this->_entityFields = (array) $result->indexBy('name');
+    }
+    return $this->_entityFields;
+  }
+
+  /**
+   * @return \ReflectionClass
+   */
+  public function reflect() {
+    if (!$this->_reflection) {
+      $this->_reflection = new \ReflectionClass($this);
+    }
+    return $this->_reflection;
+  }
+
+  /**
+   * Validates required fields for actions which create a new object.
+   *
+   * @param $values
+   * @return array
+   * @throws \API_Exception
+   */
+  protected function checkRequiredFields($values) {
+    $unmatched = [];
+    foreach ($this->entityFields() as $fieldName => $fieldInfo) {
+      if (!isset($values[$fieldName]) || $values[$fieldName] === '') {
+        if (!empty($fieldInfo['required']) && !isset($fieldInfo['default_value'])) {
+          $unmatched[] = $fieldName;
+        }
+        elseif (!empty($fieldInfo['required_if'])) {
+          if ($this->evaluateCondition($fieldInfo['required_if'], ['values' => $values])) {
+            $unmatched[] = $fieldName;
+          }
+        }
+      }
+    }
+    return $unmatched;
+  }
+
+  /**
+   * This function is used internally for evaluating field annotations.
+   *
+   * It should never be passed raw user input.
+   *
+   * @param string $expr
+   *   Conditional in php format e.g. $foo > $bar
+   * @param array $vars
+   *   Variable name => value
+   * @return bool
+   * @throws \API_Exception
+   * @throws \Exception
+   */
+  protected function evaluateCondition($expr, $vars) {
+    if (strpos($expr, '}') !== FALSE || strpos($expr, '{') !== FALSE) {
+      throw new \API_Exception('Illegal character in expression');
+    }
+    $tpl = "{if $expr}1{else}0{/if}";
+    return (bool) trim(\CRM_Core_Smarty::singleton()->fetchWith('string:' . $tpl, $vars));
+  }
+
+}
diff --git a/Civi/Api4/Generic/AbstractBatchAction.php b/Civi/Api4/Generic/AbstractBatchAction.php
new file mode 100644 (file)
index 0000000..6250e25
--- /dev/null
@@ -0,0 +1,99 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Base class for all batch actions (Update, Delete, Replace).
+ *
+ * This differs from the AbstractQuery class in that the "Where" clause is required.
+ *
+ * @package Civi\Api4\Generic
+ */
+abstract class AbstractBatchAction extends AbstractQueryAction {
+
+  /**
+   * Criteria for selecting items to process.
+   *
+   * @var array
+   * @required
+   */
+  protected $where = [];
+
+  /**
+   * @var array
+   */
+  private $select;
+
+  /**
+   * BatchAction constructor.
+   * @param string $entityName
+   * @param string $actionName
+   * @param string|array $select
+   *   One or more fields to load for each item.
+   */
+  public function __construct($entityName, $actionName, $select = 'id') {
+    $this->select = (array) $select;
+    parent::__construct($entityName, $actionName);
+  }
+
+  /**
+   * @return array
+   */
+  protected function getBatchRecords() {
+    $params = [
+      'checkPermissions' => $this->checkPermissions,
+      'where' => $this->where,
+      'orderBy' => $this->orderBy,
+      'limit' => $this->limit,
+      'offset' => $this->offset,
+    ];
+    if (empty($this->reload)) {
+      $params['select'] = $this->select;
+    }
+
+    return (array) civicrm_api4($this->getEntityName(), 'get', $params);
+  }
+
+  /**
+   * @return array
+   */
+  protected function getSelect() {
+    return $this->select;
+  }
+
+}
diff --git a/Civi/Api4/Generic/AbstractCreateAction.php b/Civi/Api4/Generic/AbstractCreateAction.php
new file mode 100644 (file)
index 0000000..2b1e3a3
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Base class for all "Create" api actions.
+ *
+ * @method $this setValues(array $values) Set all field values from an array of key => value pairs.
+ * @method $this addValue($field, $value) Set field value.
+ * @method array getValues() Get field values.
+ *
+ * @package Civi\Api4\Generic
+ */
+abstract class AbstractCreateAction extends AbstractAction {
+
+  /**
+   * Field values to set
+   *
+   * @var array
+   */
+  protected $values = [];
+
+  /**
+   * @param string $key
+   *
+   * @return mixed|null
+   */
+  public function getValue($key) {
+    return isset($this->values[$key]) ? $this->values[$key] : NULL;
+  }
+
+  /**
+   * @throws \API_Exception
+   */
+  protected function validateValues() {
+    $unmatched = $this->checkRequiredFields($this->getValues());
+    if ($unmatched) {
+      throw new \API_Exception("Mandatory values missing from Api4 {$this->getEntityName()}::{$this->getActionName()}: " . implode(", ", $unmatched), "mandatory_missing", ["fields" => $unmatched]);
+    }
+  }
+
+}
diff --git a/Civi/Api4/Generic/AbstractEntity.php b/Civi/Api4/Generic/AbstractEntity.php
new file mode 100644 (file)
index 0000000..2101213
--- /dev/null
@@ -0,0 +1,124 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Generic;
+
+use Civi\API\Exception\NotImplementedException;
+
+/**
+ * Base class for all api entities.
+ *
+ * When adding your own api from an extension, extend this class only
+ * if your entity does not have an associated DAO. Otherwise extend DAOEntity.
+ *
+ * The recommended way to create a non-DAO-based api is to extend this class
+ * and then add a getFields function and any other actions you wish, e.g.
+ * - a get() function which returns BasicGetAction using your custom getter callback
+ * - a create() function which returns BasicCreateAction using your custom setter callback
+ * - an update() function which returns BasicUpdateAction using your custom setter callback
+ * - a delete() function which returns BasicBatchAction using your custom delete callback
+ * - a replace() function which returns BasicReplaceAction (no callback needed but
+ *   depends on the existence of get, create, update & delete actions)
+ *
+ * Note that you can use the same setter callback function for update as create -
+ * that function can distinguish between new & existing records by checking if the
+ * unique identifier has been set (identifier field defaults to "id" but you can change
+ * that when constructing BasicUpdateAction)
+ */
+abstract class AbstractEntity {
+
+  /**
+   * @return \Civi\Api4\Action\GetActions
+   */
+  public static function getActions() {
+    return new \Civi\Api4\Action\GetActions(self::getEntityName(), __FUNCTION__);
+  }
+
+  /**
+   * Should return \Civi\Api4\Generic\BasicGetFieldsAction
+   * @todo make this function abstract when we require php 7.
+   * @throws \Civi\API\Exception\NotImplementedException
+   */
+  public static function getFields() {
+    throw new NotImplementedException(self::getEntityName() . ' should implement getFields action.');
+  }
+
+  /**
+   * Returns a list of permissions needed to access the various actions in this api.
+   *
+   * @return array
+   */
+  public static function permissions() {
+    $permissions = \CRM_Core_Permission::getEntityActionPermissions();
+
+    // For legacy reasons the permissions are keyed by lowercase entity name
+    // Note: Convert to camel & back in order to circumvent all the api3 naming oddities
+    $lcentity = _civicrm_api_get_entity_name_from_camel(\CRM_Utils_String::convertStringToCamel(self::getEntityName()));
+    // Merge permissions for this entity with the defaults
+    return \CRM_Utils_Array::value($lcentity, $permissions, []) + $permissions['default'];
+  }
+
+  /**
+   * Get entity name from called class
+   *
+   * @return string
+   */
+  protected static function getEntityName() {
+    return substr(static::class, strrpos(static::class, '\\') + 1);
+  }
+
+  /**
+   * Magic method to return the action object for an api.
+   *
+   * @param string $action
+   * @param null $args
+   * @return AbstractAction
+   * @throws NotImplementedException
+   */
+  public static function __callStatic($action, $args) {
+    $entity = self::getEntityName();
+    // Find class for this action
+    $entityAction = "\\Civi\\Api4\\Action\\$entity\\" . ucfirst($action);
+    if (class_exists($entityAction)) {
+      $actionObject = new $entityAction($entity, $action);
+    }
+    else {
+      throw new NotImplementedException("Api $entity $action version 4 does not exist.");
+    }
+    return $actionObject;
+  }
+
+}
diff --git a/Civi/Api4/Generic/AbstractGetAction.php b/Civi/Api4/Generic/AbstractGetAction.php
new file mode 100644 (file)
index 0000000..d2d5f48
--- /dev/null
@@ -0,0 +1,154 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Base class for all "Get" api actions.
+ *
+ * @package Civi\Api4\Generic
+ *
+ * @method $this addSelect(string $select)
+ * @method $this setSelect(array $selects)
+ * @method array getSelect()
+ */
+abstract class AbstractGetAction extends AbstractQueryAction {
+
+  /**
+   * Fields to return. Defaults to all fields.
+   *
+   * Set to ["row_count"] to return only the number of items found.
+   *
+   * @var array
+   */
+  protected $select = [];
+
+  /**
+   * Only return the number of found items.
+   *
+   * @return $this
+   */
+  public function selectRowCount() {
+    $this->select = ['row_count'];
+    return $this;
+  }
+
+  /**
+   * Adds field defaults to the where clause.
+   *
+   * Note: it will skip adding field defaults when fetching records by id,
+   * or if that field has already been added to the where clause.
+   *
+   * @throws \API_Exception
+   */
+  protected function setDefaultWhereClause() {
+    if (!$this->_itemsToGet('id')) {
+      $fields = $this->entityFields();
+      foreach ($fields as $field) {
+        if (isset($field['default_value']) && !$this->_whereContains($field['name'])) {
+          $this->addWhere($field['name'], '=', $field['default_value']);
+        }
+      }
+    }
+  }
+
+  /**
+   * Helper to parse the WHERE param for getRecords to perform simple pre-filtering.
+   *
+   * This is intended to optimize some common use-cases e.g. calling the api to get
+   * one or more records by name or id.
+   *
+   * Ex: If getRecords fetches a long list of items each with a unique name,
+   * but the user has specified a single record to retrieve, you can optimize the call
+   * by checking $this->_itemsToGet('name') and only fetching the item(s) with that name.
+   *
+   * @param string $field
+   * @return array|null
+   */
+  protected function _itemsToGet($field) {
+    foreach ($this->where as $clause) {
+      // Look for exact-match operators (=, IN, or LIKE with no wildcard)
+      if ($clause[0] == $field && (in_array($clause[1], ['=', 'IN']) || ($clause[1] == 'LIKE' && !(is_string($clause[2]) && strpos($clause[2], '%') !== FALSE)))) {
+        return (array) $clause[2];
+      }
+    }
+    return NULL;
+  }
+
+  /**
+   * Helper to see if a field should be selected by the getRecords function.
+   *
+   * Checks the SELECT, WHERE and ORDER BY params to see what fields are needed.
+   *
+   * Note that if no SELECT clause has been set then all fields should be selected
+   * and this function will always return TRUE.
+   *
+   * @param string $field
+   * @return bool
+   */
+  protected function _isFieldSelected($field) {
+    if (!$this->select || in_array($field, $this->select) || isset($this->orderBy[$field])) {
+      return TRUE;
+    }
+    return $this->_whereContains($field);
+  }
+
+  /**
+   * Walk through the where clause and check if a field is in use.
+   *
+   * @param string $field
+   * @param array $clauses
+   * @return bool
+   */
+  protected function _whereContains($field, $clauses = NULL) {
+    if ($clauses === NULL) {
+      $clauses = $this->where;
+    }
+    foreach ($clauses as $clause) {
+      if (is_array($clause) && is_string($clause[0])) {
+        if ($clause[0] == $field) {
+          return TRUE;
+        }
+        elseif (is_array($clause[1])) {
+          return $this->_whereContains($field, $clause[1]);
+        }
+      }
+    }
+    return FALSE;
+  }
+
+}
diff --git a/Civi/Api4/Generic/AbstractQueryAction.php b/Civi/Api4/Generic/AbstractQueryAction.php
new file mode 100644 (file)
index 0000000..3e3dc22
--- /dev/null
@@ -0,0 +1,179 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Base class for all actions that need to fetch records (Get, Update, Delete, etc)
+ *
+ * @package Civi\Api4\Generic
+ *
+ * @method $this setWhere(array $wheres)
+ * @method array getWhere()
+ * @method $this setOrderBy(array $order)
+ * @method array getOrderBy()
+ * @method $this setLimit(int $limit)
+ * @method int getLimit()
+ * @method $this setOffset(int $offset)
+ * @method int getOffset()
+ */
+abstract class AbstractQueryAction extends AbstractAction {
+
+  /**
+   * Criteria for selecting items.
+   *
+   * $example->addWhere('contact_type', 'IN', array('Individual', 'Household'))
+   *
+   * @var array
+   */
+  protected $where = [];
+
+  /**
+   * Array of field(s) to use in ordering the results
+   *
+   * Defaults to id ASC
+   *
+   * $example->addOrderBy('sort_name', 'ASC')
+   *
+   * @var array
+   */
+  protected $orderBy = [];
+
+  /**
+   * Maximum number of results to return.
+   *
+   * Defaults to unlimited.
+   *
+   * Note: the Api Explorer sets this to 25 by default to avoid timeouts.
+   * Change or remove this default for your application code.
+   *
+   * @var int
+   */
+  protected $limit = 0;
+
+  /**
+   * Zero-based index of first result to return.
+   *
+   * Defaults to "0" - first record.
+   *
+   * @var int
+   */
+  protected $offset = 0;
+
+  /**
+   * @param string $field
+   * @param string $op
+   * @param mixed $value
+   * @return $this
+   * @throws \API_Exception
+   */
+  public function addWhere($field, $op, $value = NULL) {
+    if (!in_array($op, \CRM_Core_DAO::acceptedSQLOperators())) {
+      throw new \API_Exception('Unsupported operator');
+    }
+    $this->where[] = [$field, $op, $value];
+    return $this;
+  }
+
+  /**
+   * Adds one or more AND/OR/NOT clause groups
+   *
+   * @param string $operator
+   * @param mixed $condition1 ... $conditionN
+   *   Either a nested array of arguments, or a variable number of arguments passed to this function.
+   *
+   * @return $this
+   * @throws \API_Exception
+   */
+  public function addClause($operator, $condition1) {
+    if (!is_array($condition1[0])) {
+      $condition1 = array_slice(func_get_args(), 1);
+    }
+    $this->where[] = [$operator, $condition1];
+    return $this;
+  }
+
+  /**
+   * @param string $field
+   * @param string $direction
+   * @return $this
+   */
+  public function addOrderBy($field, $direction = 'ASC') {
+    $this->orderBy[$field] = $direction;
+    return $this;
+  }
+
+  /**
+   * A human-readable where clause, for the reading enjoyment of you humans.
+   *
+   * @param array $whereClause
+   * @param string $op
+   * @return string
+   */
+  protected function whereClauseToString($whereClause = NULL, $op = 'AND') {
+    if ($whereClause === NULL) {
+      $whereClause = $this->where;
+    }
+    $output = '';
+    if (!is_array($whereClause) || !$whereClause) {
+      return $output;
+    }
+    if (in_array($whereClause[0], ['AND', 'OR', 'NOT'])) {
+      $op = array_shift($whereClause);
+      if ($op == 'NOT') {
+        $output = 'NOT ';
+        $op = 'AND';
+      }
+      return $output . '(' . $this->whereClauseToString($whereClause, $op) . ')';
+    }
+    elseif (isset($whereClause[1]) && in_array($whereClause[1], \CRM_Core_DAO::acceptedSQLOperators())) {
+      $output = $whereClause[0] . ' ' . $whereClause[1] . ' ';
+      if (isset($whereClause[2])) {
+        $output .= is_array($whereClause[2]) ? '[' . implode(', ', $whereClause[2]) . ']' : $whereClause[2];
+      }
+    }
+    else {
+      $clauses = [];
+      foreach (array_filter($whereClause) as $clause) {
+        $clauses[] = $this->whereClauseToString($clause, $op);
+      }
+      $output = implode(" $op ", $clauses);
+    }
+    return $output;
+  }
+
+}
diff --git a/Civi/Api4/Generic/AbstractSaveAction.php b/Civi/Api4/Generic/AbstractSaveAction.php
new file mode 100644 (file)
index 0000000..30759ee
--- /dev/null
@@ -0,0 +1,125 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Base class for all "Save" api actions.
+ *
+ * @method $this setRecords(array $records) Array of records.
+ * @method $this addRecord($record) Add a record to update.
+ * @method array getRecords()
+ * @method $this setDefaults(array $defaults) Array of defaults.
+ * @method $this addDefault($name, $value) Add a default value.
+ * @method array getDefaults()
+ * @method $this setReload(bool $reload) Specify whether complete objects will be returned after saving.
+ * @method bool getReload()
+ *
+ * @package Civi\Api4\Generic
+ */
+abstract class AbstractSaveAction extends AbstractAction {
+
+  /**
+   * Array of records.
+   *
+   * Should be in the same format as returned by Get.
+   *
+   * @var array
+   * @required
+   */
+  protected $records = [];
+
+  /**
+   * Array of default values.
+   *
+   * These defaults will be applied to all records unless they specify otherwise.
+   *
+   * @var array
+   */
+  protected $defaults = [];
+
+  /**
+   * Reload records after saving.
+   *
+   * By default this api typically returns partial records containing only the fields
+   * that were updated. Set reload to TRUE to do an additional lookup after saving
+   * to return complete records.
+   *
+   * @var bool
+   */
+  protected $reload = FALSE;
+
+  /**
+   * @var string
+   */
+  private $idField;
+
+  /**
+   * BatchAction constructor.
+   * @param string $entityName
+   * @param string $actionName
+   * @param string $idField
+   */
+  public function __construct($entityName, $actionName, $idField = 'id') {
+    // $idField should be a string but some apis (e.g. CustomValue) give us an array
+    $this->idField = array_values((array) $idField)[0];
+    parent::__construct($entityName, $actionName);
+  }
+
+  /**
+   * @throws \API_Exception
+   */
+  protected function validateValues() {
+    $unmatched = [];
+    foreach ($this->records as $record) {
+      if (empty($record[$this->idField])) {
+        $unmatched = array_unique(array_merge($unmatched, $this->checkRequiredFields($record)));
+      }
+    }
+    if ($unmatched) {
+      throw new \API_Exception("Mandatory values missing from Api4 {$this->getEntityName()}::{$this->getActionName()}: " . implode(", ", $unmatched), "mandatory_missing", ["fields" => $unmatched]);
+    }
+  }
+
+  /**
+   * @return string
+   */
+  protected function getIdField() {
+    return $this->idField;
+  }
+
+}
diff --git a/Civi/Api4/Generic/AbstractUpdateAction.php b/Civi/Api4/Generic/AbstractUpdateAction.php
new file mode 100644 (file)
index 0000000..371b8c7
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Base class for all "Update" api actions
+ *
+ * @method $this setValues(array $values) Set all field values from an array of key => value pairs.
+ * @method $this addValue($field, $value) Set field value.
+ * @method array getValues() Get field values.
+ * @method $this setReload(bool $reload) Specify whether complete objects will be returned after saving.
+ * @method bool getReload()
+ *
+ * @package Civi\Api4\Generic
+ */
+abstract class AbstractUpdateAction extends AbstractBatchAction {
+
+  /**
+   * Field values to update.
+   *
+   * @var array
+   * @required
+   */
+  protected $values = [];
+
+  /**
+   * Reload objects after saving.
+   *
+   * Setting to TRUE will load complete records and return them as the api result.
+   * If FALSE the api usually returns only the fields specified to be updated.
+   *
+   * @var bool
+   */
+  protected $reload = FALSE;
+
+  /**
+   * @param string $key
+   *
+   * @return mixed|null
+   */
+  public function getValue($key) {
+    return isset($this->values[$key]) ? $this->values[$key] : NULL;
+  }
+
+}
diff --git a/Civi/Api4/Generic/BasicBatchAction.php b/Civi/Api4/Generic/BasicBatchAction.php
new file mode 100644 (file)
index 0000000..fb54c76
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+use Civi\API\Exception\NotImplementedException;
+
+/**
+ * Basic action for deleting or performing some other task with a set of records.  Ex:
+ *
+ * $myAction = new BasicBatchAction('Entity', 'action', function($item) {
+ *   // Do something with $item
+ *   $return $item;
+ * });
+ *
+ * @package Civi\Api4\Generic
+ */
+class BasicBatchAction extends AbstractBatchAction {
+
+  /**
+   * @var callable
+   *
+   * Function(array $item, BasicBatchAction $thisAction) => array
+   */
+  private $doer;
+
+  /**
+   * BasicBatchAction constructor.
+   *
+   * @param string $entityName
+   * @param string $actionName
+   * @param string|array $select
+   *   One or more fields to select from each matching item.
+   * @param callable $doer
+   *   Function(array $item, BasicBatchAction $thisAction) => array
+   */
+  public function __construct($entityName, $actionName, $select = 'id', $doer = NULL) {
+    parent::__construct($entityName, $actionName, $select);
+    $this->doer = $doer;
+  }
+
+  /**
+   * We pass the doTask function an array representing one item to update.
+   * We expect to get the same format back.
+   *
+   * @param \Civi\Api4\Generic\Result $result
+   */
+  public function _run(Result $result) {
+    foreach ($this->getBatchRecords() as $item) {
+      $result[] = $this->doTask($item);
+    }
+  }
+
+  /**
+   * This Basic Batch class can be used in one of two ways:
+   *
+   * 1. Use this class directly by passing a callable ($doer) to the constructor.
+   * 2. Extend this class and override this function.
+   *
+   * Either way, this function should return an array with an output record
+   * for the item.
+   *
+   * @param array $item
+   * @return array
+   * @throws \Civi\API\Exception\NotImplementedException
+   */
+  protected function doTask($item) {
+    if (is_callable($this->doer)) {
+      return call_user_func($this->doer, $item, $this);
+    }
+    throw new NotImplementedException('Doer function not found for api4 ' . $this->getEntityName() . '::' . $this->getActionName());
+  }
+
+}
diff --git a/Civi/Api4/Generic/BasicCreateAction.php b/Civi/Api4/Generic/BasicCreateAction.php
new file mode 100644 (file)
index 0000000..43cc8bb
--- /dev/null
@@ -0,0 +1,99 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+use Civi\API\Exception\NotImplementedException;
+
+/**
+ * Create a new object from supplied values.
+ *
+ * This function will create 1 new object. It cannot be used to update existing objects. Use the Update or Replace actions for that.
+ */
+class BasicCreateAction extends AbstractCreateAction {
+
+  /**
+   * @var callable
+   *
+   * Function(array $item, BasicCreateAction $thisAction) => array
+   */
+  private $setter;
+
+  /**
+   * Basic Create constructor.
+   *
+   * @param string $entityName
+   * @param string $actionName
+   * @param callable $setter
+   *   Function(array $item, BasicCreateAction $thisAction) => array
+   */
+  public function __construct($entityName, $actionName, $setter = NULL) {
+    parent::__construct($entityName, $actionName);
+    $this->setter = $setter;
+  }
+
+  /**
+   * We pass the writeRecord function an array representing one item to write.
+   * We expect to get the same format back.
+   *
+   * @param \Civi\Api4\Generic\Result $result
+   */
+  public function _run(Result $result) {
+    $this->validateValues();
+    $result->exchangeArray([$this->writeRecord($this->values)]);
+  }
+
+  /**
+   * This Basic Create class can be used in one of two ways:
+   *
+   * 1. Use this class directly by passing a callable ($setter) to the constructor.
+   * 2. Extend this class and override this function.
+   *
+   * Either way, this function should return an array representing the one new object.
+   *
+   * @param array $item
+   * @return array
+   * @throws \Civi\API\Exception\NotImplementedException
+   */
+  protected function writeRecord($item) {
+    if (is_callable($this->setter)) {
+      return call_user_func($this->setter, $item, $this);
+    }
+    throw new NotImplementedException('Setter function not found for api4 ' . $this->getEntityName() . '::' . $this->getActionName());
+  }
+
+}
diff --git a/Civi/Api4/Generic/BasicGetAction.php b/Civi/Api4/Generic/BasicGetAction.php
new file mode 100644 (file)
index 0000000..5e5dfb1
--- /dev/null
@@ -0,0 +1,119 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+use Civi\API\Exception\NotImplementedException;
+
+/**
+ * Retrieve items based on criteria specified in the 'where' param.
+ *
+ * Use the 'select' param to determine which fields are returned, defaults to *.
+ */
+class BasicGetAction extends AbstractGetAction {
+  use Traits\ArrayQueryActionTrait;
+
+  /**
+   * @var callable
+   *
+   * Function(BasicGetAction $thisAction) => array<array>
+   */
+  private $getter;
+
+  /**
+   * Basic Get constructor.
+   *
+   * @param string $entityName
+   * @param string $actionName
+   * @param callable $getter
+   */
+  public function __construct($entityName, $actionName, $getter = NULL) {
+    parent::__construct($entityName, $actionName);
+    $this->getter = $getter;
+  }
+
+  /**
+   * Fetch results from the getter then apply filter/sort/select/limit.
+   *
+   * @param \Civi\Api4\Generic\Result $result
+   */
+  public function _run(Result $result) {
+    $this->setDefaultWhereClause();
+    $values = $this->getRecords();
+    $result->exchangeArray($this->queryArray($values));
+  }
+
+  /**
+   * This Basic Get class is a general-purpose api for non-DAO-based entities.
+   *
+   * Useful for fetching records from files or other places.
+   * You can specify any php function to retrieve the records, and this class will
+   * automatically filter, sort, select & limit the raw data from your callback.
+   *
+   * You can implement this action in one of two ways:
+   * 1. Use this class directly by passing a callable ($getter) to the constructor.
+   * 2. Extend this class and override this function.
+   *
+   * Either way, this function should return an array of arrays, each representing one retrieved object.
+   *
+   * The simplest thing for your getter function to do is return every full record
+   * and allow this class to automatically do the sorting and filtering.
+   *
+   * Sometimes however that may not be practical for performance reasons.
+   * To optimize your getter, it can use the following helpers from $this:
+   *
+   * Use this->_itemsToGet() to match records to field values in the WHERE clause.
+   * Note the WHERE clause can potentially be very complex and it is not recommended
+   * to parse $this->where yourself.
+   *
+   * Use $this->_isFieldSelected() to check if a field value is called for - useful
+   * if loading the field involves expensive calculations.
+   *
+   * Be careful not to make assumptions, e.g. if LIMIT 100 is specified and your getter "helpfully" truncates the list
+   * at 100 without accounting for WHERE, ORDER BY and LIMIT clauses, the final filtered result may be very incorrect.
+   *
+   * @return array
+   * @throws \Civi\API\Exception\NotImplementedException
+   */
+  protected function getRecords() {
+    if (is_callable($this->getter)) {
+      return call_user_func($this->getter, $this);
+    }
+    throw new NotImplementedException('Getter function not found for api4 ' . $this->getEntityName() . '::' . $this->getActionName());
+  }
+
+}
diff --git a/Civi/Api4/Generic/BasicGetFieldsAction.php b/Civi/Api4/Generic/BasicGetFieldsAction.php
new file mode 100644 (file)
index 0000000..511c063
--- /dev/null
@@ -0,0 +1,191 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+use Civi\API\Exception\NotImplementedException;
+use Civi\Api4\Utils\ActionUtil;
+
+/**
+ * Get fields for an entity.
+ *
+ * @method $this setLoadOptions(bool $value)
+ * @method bool getLoadOptions()
+ * @method $this setAction(string $value)
+ */
+class BasicGetFieldsAction extends BasicGetAction {
+
+  /**
+   * Fetch option lists for fields?
+   *
+   * @var bool
+   */
+  protected $loadOptions = FALSE;
+
+  /**
+   * @var string
+   */
+  protected $action = 'get';
+
+  /**
+   * To implement getFields for your own entity:
+   *
+   * 1. From your entity class add a static getFields method.
+   * 2. That method should construct and return this class.
+   * 3. The 3rd argument passed to this constructor should be a function that returns an
+   *    array of fields for your entity's CRUD actions.
+   * 4. For non-crud actions that need a different set of fields, you can override the
+   *    list from step 3 on a per-action basis by defining a fields() method in that action.
+   *    See for example BasicGetFieldsAction::fields() or GetActions::fields().
+   *
+   * @param Result $result
+   * @throws \Civi\API\Exception\NotImplementedException
+   */
+  public function _run(Result $result) {
+    try {
+      $actionClass = ActionUtil::getAction($this->getEntityName(), $this->getAction());
+    }
+    catch (NotImplementedException $e) {
+    }
+    if (isset($actionClass) && method_exists($actionClass, 'fields')) {
+      $values = $actionClass->fields();
+    }
+    else {
+      $values = $this->getRecords();
+    }
+    $this->padResults($values);
+    $result->exchangeArray($this->queryArray($values));
+  }
+
+  /**
+   * Ensure every result contains, at minimum, the array keys as defined in $this->fields.
+   *
+   * Attempt to set some sensible defaults for some fields.
+   *
+   * In most cases it's not necessary to override this function, even if your entity is really weird.
+   * Instead just override $this->fields and thes function will respect that.
+   *
+   * @param array $values
+   */
+  protected function padResults(&$values) {
+    $fields = array_column($this->fields(), 'name');
+    foreach ($values as &$field) {
+      $defaults = array_intersect_key([
+        'title' => empty($field['name']) ? NULL : ucwords(str_replace('_', ' ', $field['name'])),
+        'entity' => $this->getEntityName(),
+        'required' => FALSE,
+        'options' => !empty($field['pseudoconstant']),
+        'data_type' => \CRM_Utils_Array::value('type', $field, 'String'),
+      ], array_flip($fields));
+      $field += $defaults;
+      if (!$this->loadOptions && isset($defaults['options'])) {
+        $field['options'] = (bool) $field['options'];
+      }
+      $field += array_fill_keys($fields, NULL);
+    }
+  }
+
+  /**
+   * @return string
+   */
+  public function getAction() {
+    // For actions that build on top of other actions, return fields for the simpler action
+    $sub = [
+      'save' => 'create',
+      'replace' => 'create',
+    ];
+    return $sub[$this->action] ?? $this->action;
+  }
+
+  public function fields() {
+    return [
+      [
+        'name' => 'name',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'title',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'description',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'default_value',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'required',
+        'data_type' => 'Boolean',
+      ],
+      [
+        'name' => 'required_if',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'options',
+        'data_type' => 'Array',
+      ],
+      [
+        'name' => 'data_type',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'input_type',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'input_attrs',
+        'data_type' => 'Array',
+      ],
+      [
+        'name' => 'fk_entity',
+        'data_type' => 'String',
+      ],
+      [
+        'name' => 'serialize',
+        'data_type' => 'Integer',
+      ],
+      [
+        'name' => 'entity',
+        'data_type' => 'String',
+      ],
+    ];
+  }
+
+}
diff --git a/Civi/Api4/Generic/BasicReplaceAction.php b/Civi/Api4/Generic/BasicReplaceAction.php
new file mode 100644 (file)
index 0000000..0d85c6a
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+use Civi\API\Exception\NotImplementedException;
+use Civi\Api4\Utils\ActionUtil;
+
+/**
+ * Given a set of records, will appropriately update the database.
+ *
+ * @method $this setRecords(array $records) Array of records.
+ * @method $this addRecord($record) Add a record to update.
+ * @method array getRecords()
+ * @method $this setDefaults(array $defaults) Array of defaults.
+ * @method $this addDefault($name, $value) Add a default value.
+ * @method array getDefaults()
+ * @method $this setReload(bool $reload) Specify whether complete objects will be returned after saving.
+ * @method bool getReload()
+ */
+class BasicReplaceAction extends AbstractBatchAction {
+
+  /**
+   * Array of records.
+   *
+   * Should be in the same format as returned by Get.
+   *
+   * @var array
+   * @required
+   */
+  protected $records = [];
+
+  /**
+   * Array of default values.
+   *
+   * Will be merged into $records before saving.
+   *
+   * @var array
+   */
+  protected $defaults = [];
+
+  /**
+   * Reload records after saving.
+   *
+   * By default this api typically returns partial records containing only the fields
+   * that were updated. Set reload to TRUE to do an additional lookup after saving
+   * to return complete records.
+   *
+   * @var bool
+   */
+  protected $reload = FALSE;
+
+  /**
+   * @return \Civi\Api4\Result\ReplaceResult
+   */
+  public function execute() {
+    return parent::execute();
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function _run(Result $result) {
+    $items = $this->getBatchRecords();
+
+    // Copy defaults from where clause if the operator is =
+    foreach ($this->where as $clause) {
+      if (is_array($clause) && $clause[1] === '=') {
+        $this->defaults[$clause[0]] = $clause[2];
+      }
+    }
+
+    $idField = $this->getSelect()[0];
+    $toDelete = array_diff_key(array_column($items, NULL, $idField), array_flip(array_filter(\CRM_Utils_Array::collect($idField, $this->records))));
+
+    // Try to delegate to the Save action
+    try {
+      $saveAction = ActionUtil::getAction($this->getEntityName(), 'save');
+      $saveAction
+        ->setCheckPermissions($this->getCheckPermissions())
+        ->setReload($this->reload)
+        ->setRecords($this->records)
+        ->setDefaults($this->defaults);
+      $result->exchangeArray((array) $saveAction->execute());
+    }
+    // Fall back on Create/Update if Save doesn't exist
+    catch (NotImplementedException $e) {
+      foreach ($this->records as $record) {
+        $record += $this->defaults;
+        if (!empty($record[$idField])) {
+          $result[] = civicrm_api4($this->getEntityName(), 'update', [
+            'reload' => $this->reload,
+            'where' => [[$idField, '=', $record[$idField]]],
+            'values' => $record,
+            'checkPermissions' => $this->getCheckPermissions(),
+          ])->first();
+        }
+        else {
+          $result[] = civicrm_api4($this->getEntityName(), 'create', [
+            'values' => $record,
+            'checkPermissions' => $this->getCheckPermissions(),
+          ])->first();
+        }
+      }
+    }
+
+    if ($toDelete) {
+      $result->deleted = (array) civicrm_api4($this->getEntityName(), 'delete', [
+        'where' => [[$idField, 'IN', array_keys($toDelete)]],
+        'checkPermissions' => $this->getCheckPermissions(),
+      ]);
+    }
+  }
+
+}
diff --git a/Civi/Api4/Generic/BasicSaveAction.php b/Civi/Api4/Generic/BasicSaveAction.php
new file mode 100644 (file)
index 0000000..cd63ca2
--- /dev/null
@@ -0,0 +1,114 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+use Civi\API\Exception\NotImplementedException;
+use Civi\Api4\Utils\ActionUtil;
+
+/**
+ * Create or update one or more records.
+ *
+ * If creating more than one record with similar values, use the "defaults" param.
+ *
+ * Set "reload" if you need the api to return complete records.
+ */
+class BasicSaveAction extends AbstractSaveAction {
+
+  /**
+   * @var callable
+   *
+   * Function(array $item, BasicCreateAction $thisAction) => array
+   */
+  private $setter;
+
+  /**
+   * Basic Create constructor.
+   *
+   * @param string $entityName
+   * @param string $actionName
+   * @param string $idField
+   * @param callable $setter
+   *   Function(array $item, BasicCreateAction $thisAction) => array
+   */
+  public function __construct($entityName, $actionName, $idField = 'id', $setter = NULL) {
+    parent::__construct($entityName, $actionName, $idField);
+    $this->setter = $setter;
+  }
+
+  /**
+   * We pass the writeRecord function an array representing one item to write.
+   * We expect to get the same format back.
+   *
+   * @param \Civi\Api4\Generic\Result $result
+   */
+  public function _run(Result $result) {
+    $this->validateValues();
+    foreach ($this->records as $record) {
+      $record += $this->defaults;
+      $result[] = $this->writeRecord($record);
+    }
+    if ($this->reload) {
+      /** @var BasicGetAction $get */
+      $get = ActionUtil::getAction($this->getEntityName(), 'get');
+      $get
+        ->setCheckPermissions($this->getCheckPermissions())
+        ->addWhere($this->getIdField(), 'IN', (array) $result->column($this->getIdField()));
+      $result->exchangeArray((array) $get->execute());
+    }
+  }
+
+  /**
+   * This Basic Save class can be used in one of two ways:
+   *
+   * 1. Use this class directly by passing a callable ($setter) to the constructor.
+   * 2. Extend this class and override this function.
+   *
+   * Either way, this function should return an array representing the one new object.
+   *
+   * @param array $item
+   * @return array
+   * @throws \Civi\API\Exception\NotImplementedException
+   */
+  protected function writeRecord($item) {
+    if (is_callable($this->setter)) {
+      return call_user_func($this->setter, $item, $this);
+    }
+    throw new NotImplementedException('Setter function not found for api4 ' . $this->getEntityName() . '::' . $this->getActionName());
+  }
+
+}
diff --git a/Civi/Api4/Generic/BasicUpdateAction.php b/Civi/Api4/Generic/BasicUpdateAction.php
new file mode 100644 (file)
index 0000000..c3aa0c1
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+use Civi\API\Exception\NotImplementedException;
+
+/**
+ * Update one or more records with new values.
+ *
+ * Use the where clause (required) to select them.
+ */
+class BasicUpdateAction extends AbstractUpdateAction {
+
+  /**
+   * @var callable
+   *
+   * Function(array $item, BasicUpdateAction $thisAction) => array
+   */
+  private $setter;
+
+  /**
+   * BasicUpdateAction constructor.
+   *
+   * @param string $entityName
+   * @param string $actionName
+   * @param string|array $select
+   *   One or more fields to select from each matching item.
+   * @param callable $setter
+   *   Function(array $item, BasicUpdateAction $thisAction) => array
+   */
+  public function __construct($entityName, $actionName, $select = 'id', $setter = NULL) {
+    parent::__construct($entityName, $actionName, $select);
+    $this->setter = $setter;
+  }
+
+  /**
+   * We pass the writeRecord function an array representing one item to update.
+   * We expect to get the same format back.
+   *
+   * @param \Civi\Api4\Generic\Result $result
+   * @throws \API_Exception
+   * @throws \Civi\API\Exception\NotImplementedException
+   */
+  public function _run(Result $result) {
+    foreach ($this->getBatchRecords() as $item) {
+      $result[] = $this->writeRecord($this->values + $item);
+    }
+
+    if (!$result->count()) {
+      throw new \API_Exception('Cannot ' . $this->getActionName() . ' ' . $this->getEntityName() . ', no records found with ' . $this->whereClauseToString());
+    }
+  }
+
+  /**
+   * This Basic Update class can be used in one of two ways:
+   *
+   * 1. Use this class directly by passing a callable ($setter) to the constructor.
+   * 2. Extend this class and override this function.
+   *
+   * Either way, this function should return an array representing the one modified object.
+   *
+   * @param array $item
+   * @return array
+   * @throws \Civi\API\Exception\NotImplementedException
+   */
+  protected function writeRecord($item) {
+    if (is_callable($this->setter)) {
+      return call_user_func($this->setter, $item, $this);
+    }
+    throw new NotImplementedException('Setter function not found for api4 ' . $this->getEntityName() . '::' . $this->getActionName());
+  }
+
+}
diff --git a/Civi/Api4/Generic/DAOCreateAction.php b/Civi/Api4/Generic/DAOCreateAction.php
new file mode 100644 (file)
index 0000000..e3d63c2
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Create a new object from supplied values.
+ *
+ * This function will create 1 new object. It cannot be used to update existing objects. Use the Update or Replace actions for that.
+ */
+class DAOCreateAction extends AbstractCreateAction {
+  use Traits\DAOActionTrait;
+
+  /**
+   * @inheritDoc
+   */
+  public function _run(Result $result) {
+    $this->validateValues();
+    $params = $this->values;
+    $this->fillDefaults($params);
+
+    $resultArray = $this->writeObjects([$params]);
+
+    $result->exchangeArray($resultArray);
+  }
+
+  /**
+   * @throws \API_Exception
+   */
+  protected function validateValues() {
+    if (!empty($this->values['id'])) {
+      throw new \API_Exception('Cannot pass id to Create action. Use Update action instead.');
+    }
+    parent::validateValues();
+  }
+
+}
diff --git a/Civi/Api4/Generic/DAODeleteAction.php b/Civi/Api4/Generic/DAODeleteAction.php
new file mode 100644 (file)
index 0000000..8001b7e
--- /dev/null
@@ -0,0 +1,110 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Delete one or more items, based on criteria specified in Where param (required).
+ */
+class DAODeleteAction extends AbstractBatchAction {
+  use Traits\DAOActionTrait;
+
+  /**
+   * Batch delete function
+   */
+  public function _run(Result $result) {
+    $defaults = $this->getParamDefaults();
+    if ($defaults['where'] && !array_diff_key($this->where, $defaults['where'])) {
+      throw new \API_Exception('Cannot delete ' . $this->getEntityName() . ' with no "where" parameter specified');
+    }
+
+    $items = $this->getObjects();
+
+    if (!$items) {
+      throw new \API_Exception('Cannot delete ' . $this->getEntityName() . ', no records found with ' . $this->whereClauseToString());
+    }
+
+    $ids = $this->deleteObjects($items);
+
+    $result->exchangeArray($ids);
+  }
+
+  /**
+   * @param $items
+   * @return array
+   * @throws \API_Exception
+   */
+  protected function deleteObjects($items) {
+    $ids = [];
+    $baoName = $this->getBaoName();
+
+    if ($this->getCheckPermissions()) {
+      foreach ($items as $item) {
+        $this->checkContactPermissions($baoName, $item);
+      }
+    }
+
+    if ($this->getEntityName() !== 'EntityTag' && method_exists($baoName, 'del')) {
+      foreach ($items as $item) {
+        $args = [$item['id']];
+        $bao = call_user_func_array([$baoName, 'del'], $args);
+        if ($bao !== FALSE) {
+          $ids[] = ['id' => $item['id']];
+        }
+        else {
+          throw new \API_Exception("Could not delete {$this->getEntityName()} id {$item['id']}");
+        }
+      }
+    }
+    else {
+      foreach ($items as $item) {
+        $bao = new $baoName();
+        $bao->id = $item['id'];
+        // delete it
+        $action_result = $bao->delete();
+        if ($action_result) {
+          $ids[] = ['id' => $item['id']];
+        }
+        else {
+          throw new \API_Exception("Could not delete {$this->getEntityName()} id {$item['id']}");
+        }
+      }
+    }
+    return $ids;
+  }
+
+}
diff --git a/Civi/Api4/Generic/DAOEntity.php b/Civi/Api4/Generic/DAOEntity.php
new file mode 100644 (file)
index 0000000..9842cd5
--- /dev/null
@@ -0,0 +1,94 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Base class for DAO-based entities.
+ */
+abstract class DAOEntity extends AbstractEntity {
+
+  /**
+   * @return DAOGetAction
+   */
+  public static function get() {
+    return new DAOGetAction(static::class, __FUNCTION__);
+  }
+
+  /**
+   * @return DAOGetAction
+   */
+  public static function save() {
+    return new DAOSaveAction(static::class, __FUNCTION__);
+  }
+
+  /**
+   * @return DAOGetFieldsAction
+   */
+  public static function getFields() {
+    return new DAOGetFieldsAction(static::class, __FUNCTION__);
+  }
+
+  /**
+   * @return DAOCreateAction
+   */
+  public static function create() {
+    return new DAOCreateAction(static::class, __FUNCTION__);
+  }
+
+  /**
+   * @return DAOUpdateAction
+   */
+  public static function update() {
+    return new DAOUpdateAction(static::class, __FUNCTION__);
+  }
+
+  /**
+   * @return DAODeleteAction
+   */
+  public static function delete() {
+    return new DAODeleteAction(static::class, __FUNCTION__);
+  }
+
+  /**
+   * @return BasicReplaceAction
+   */
+  public static function replace() {
+    return new BasicReplaceAction(static::class, __FUNCTION__);
+  }
+
+}
diff --git a/Civi/Api4/Generic/DAOGetAction.php b/Civi/Api4/Generic/DAOGetAction.php
new file mode 100644 (file)
index 0000000..54d3c34
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Retrieve items based on criteria specified in the 'where' param.
+ *
+ * Use the 'select' param to determine which fields are returned, defaults to *.
+ *
+ * Perform joins on other related entities using a dot notation.
+ */
+class DAOGetAction extends AbstractGetAction {
+  use Traits\DAOActionTrait;
+
+  public function _run(Result $result) {
+    $this->setDefaultWhereClause();
+    $result->exchangeArray($this->getObjects());
+  }
+
+}
diff --git a/Civi/Api4/Generic/DAOGetFieldsAction.php b/Civi/Api4/Generic/DAOGetFieldsAction.php
new file mode 100644 (file)
index 0000000..2565f8f
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+use Civi\Api4\Service\Spec\SpecFormatter;
+
+/**
+ * Get fields for a DAO-based entity.
+ *
+ * @method $this setIncludeCustom(bool $value)
+ * @method bool getIncludeCustom()
+ */
+class DAOGetFieldsAction extends BasicGetFieldsAction {
+
+  /**
+   * Include custom fields for this entity, or only core fields?
+   *
+   * @var bool
+   */
+  protected $includeCustom = TRUE;
+
+  /**
+   * Get fields for a DAO-based entity
+   *
+   * @return array
+   */
+  protected function getRecords() {
+    $fields = $this->_itemsToGet('name');
+    /** @var \Civi\Api4\Service\Spec\SpecGatherer $gatherer */
+    $gatherer = \Civi::container()->get('spec_gatherer');
+    // Any fields name with a dot in it is custom
+    if ($fields) {
+      $this->includeCustom = strpos(implode('', $fields), '.') !== FALSE;
+    }
+    $spec = $gatherer->getSpec($this->getEntityName(), $this->getAction(), $this->includeCustom);
+    return SpecFormatter::specToArray($spec->getFields($fields), $this->loadOptions);
+  }
+
+  public function fields() {
+    $fields = parent::fields();
+    $fields[] = [
+      'name' => 'custom_field_id',
+      'data_type' => 'Integer',
+    ];
+    $fields[] = [
+      'name' => 'custom_group_id',
+      'data_type' => 'Integer',
+    ];
+    return $fields;
+  }
+
+}
diff --git a/Civi/Api4/Generic/DAOSaveAction.php b/Civi/Api4/Generic/DAOSaveAction.php
new file mode 100644 (file)
index 0000000..634cd8e
--- /dev/null
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Create or update one or more records.
+ *
+ * If creating more than one record with similar values, use the "defaults" param.
+ *
+ * Set "reload" if you need the api to return complete records.
+ */
+class DAOSaveAction extends AbstractSaveAction {
+  use Traits\DAOActionTrait;
+
+  /**
+   * @inheritDoc
+   */
+  public function _run(Result $result) {
+    foreach ($this->records as &$record) {
+      $record += $this->defaults;
+      if (empty($record['id'])) {
+        $this->fillDefaults($record);
+      }
+    }
+    $this->validateValues();
+
+    $resultArray = $this->writeObjects($this->records);
+
+    $result->exchangeArray($resultArray);
+  }
+
+}
diff --git a/Civi/Api4/Generic/DAOUpdateAction.php b/Civi/Api4/Generic/DAOUpdateAction.php
new file mode 100644 (file)
index 0000000..7c8c047
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Update one or more records with new values.
+ *
+ * Use the where clause (required) to select them.
+ */
+class DAOUpdateAction extends AbstractUpdateAction {
+  use Traits\DAOActionTrait;
+
+  /**
+   * Criteria for selecting items to update.
+   *
+   * Required if no id is supplied in values.
+   *
+   * @var array
+   */
+  protected $where = [];
+
+  /**
+   * @inheritDoc
+   */
+  public function _run(Result $result) {
+    // Add ID from values to WHERE clause and check for mismatch
+    if (!empty($this->values['id'])) {
+      $wheres = array_column($this->where, NULL, 0);
+      if (!isset($wheres['id'])) {
+        $this->addWhere('id', '=', $this->values['id']);
+      }
+      elseif (!($wheres['id'][1] === '=' && $wheres['id'][2] == $this->values['id'])) {
+        throw new \Exception("Cannot update the id of an existing " . $this->getEntityName() . '.');
+      }
+    }
+
+    // Require WHERE if we didn't get an ID from values
+    if (!$this->where) {
+      throw new \API_Exception('Parameter "where" is required unless an id is supplied in values.');
+    }
+
+    // Update a single record by ID unless select requires more than id
+    if ($this->getSelect() === ['id'] && count($this->where) === 1 && $this->where[0][0] === 'id' && $this->where[0][1] === '=' && !empty($this->where[0][2])) {
+      $this->values['id'] = $this->where[0][2];
+      $result->exchangeArray($this->writeObjects([$this->values]));
+      return;
+    }
+
+    // Batch update 1 or more records based on WHERE clause
+    $items = $this->getObjects();
+    foreach ($items as &$item) {
+      $item = $this->values + $item;
+    }
+
+    if (!$items) {
+      throw new \API_Exception('Cannot ' . $this->getActionName() . ' ' . $this->getEntityName() . ', no records found with ' . $this->whereClauseToString());
+    }
+
+    $result->exchangeArray($this->writeObjects($items));
+  }
+
+}
diff --git a/Civi/Api4/Generic/Result.php b/Civi/Api4/Generic/Result.php
new file mode 100644 (file)
index 0000000..9930ce8
--- /dev/null
@@ -0,0 +1,131 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 4.7                                                |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2015                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Generic;
+
+/**
+ * Container for api results.
+ */
+class Result extends \ArrayObject {
+  /**
+   * @var string
+   */
+  public $entity;
+  /**
+   * @var string
+   */
+  public $action;
+  /**
+   * Api version
+   * @var int
+   */
+  public $version = 4;
+
+  private $indexedBy;
+
+  /**
+   * Return first result.
+   * @return array|null
+   */
+  public function first() {
+    foreach ($this as $values) {
+      return $values;
+    }
+    return NULL;
+  }
+
+  /**
+   * Return last result.
+   * @return array|null
+   */
+  public function last() {
+    $items = $this->getArrayCopy();
+    return array_pop($items);
+  }
+
+  /**
+   * @param int $index
+   * @return array|null
+   */
+  public function itemAt($index) {
+    $length = $index < 0 ? 0 - $index : $index + 1;
+    if ($length > count($this)) {
+      return NULL;
+    }
+    return array_slice(array_values($this->getArrayCopy()), $index, 1)[0];
+  }
+
+  /**
+   * Re-index the results array (which by default is non-associative)
+   *
+   * Drops any item from the results that does not contain the specified key
+   *
+   * @param string $key
+   * @return $this
+   * @throws \API_Exception
+   */
+  public function indexBy($key) {
+    $this->indexedBy = $key;
+    if (count($this)) {
+      $newResults = [];
+      foreach ($this as $values) {
+        if (isset($values[$key])) {
+          $newResults[$values[$key]] = $values;
+        }
+      }
+      if (!$newResults) {
+        throw new \API_Exception("Key $key not found in api results");
+      }
+      $this->exchangeArray($newResults);
+    }
+    return $this;
+  }
+
+  /**
+   * Returns the number of results
+   *
+   * @return int
+   */
+  public function count() {
+    $count = parent::count();
+    if ($count == 1 && is_array($this->first()) && array_keys($this->first()) == ['row_count']) {
+      return $this->first()['row_count'];
+    }
+    return $count;
+  }
+
+  /**
+   * Reduce each result to one field
+   *
+   * @param $name
+   * @return array
+   */
+  public function column($name) {
+    return array_column($this->getArrayCopy(), $name, $this->indexedBy);
+  }
+
+}
diff --git a/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php b/Civi/Api4/Generic/Traits/ArrayQueryActionTrait.php
new file mode 100644 (file)
index 0000000..36ae762
--- /dev/null
@@ -0,0 +1,236 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic\Traits;
+
+use Civi\API\Exception\NotImplementedException;
+
+/**
+ * Helper functions for performing api queries on arrays of data.
+ *
+ * @package Civi\Api4\Generic
+ */
+trait ArrayQueryActionTrait {
+
+  /**
+   * @param array $values
+   *   List of all rows
+   * @return array
+   *   Filtered list of rows
+   */
+  protected function queryArray($values) {
+    $values = $this->filterArray($values);
+    $values = $this->sortArray($values);
+    $values = $this->limitArray($values);
+    $values = $this->selectArray($values);
+    return $values;
+  }
+
+  /**
+   * @param array $values
+   * @return array
+   */
+  protected function filterArray($values) {
+    if ($this->getWhere()) {
+      $values = array_filter($values, [$this, 'evaluateFilters']);
+    }
+    return array_values($values);
+  }
+
+  /**
+   * @param array $row
+   * @return bool
+   */
+  private function evaluateFilters($row) {
+    $where = $this->getWhere();
+    $allConditions = in_array($where[0], ['AND', 'OR', 'NOT']) ? $where : ['AND', $where];
+    return $this->walkFilters($row, $allConditions);
+  }
+
+  /**
+   * @param array $row
+   * @param array $filters
+   * @return bool
+   * @throws \Civi\API\Exception\NotImplementedException
+   */
+  private function walkFilters($row, $filters) {
+    switch ($filters[0]) {
+      case 'AND':
+      case 'NOT':
+        $result = TRUE;
+        foreach ($filters[1] as $filter) {
+          if (!$this->walkFilters($row, $filter)) {
+            $result = FALSE;
+            break;
+          }
+        }
+        return $result == ($filters[0] == 'AND');
+
+      case 'OR':
+        $result = !count($filters[1]);
+        foreach ($filters[1] as $filter) {
+          if ($this->walkFilters($row, $filter)) {
+            return TRUE;
+          }
+        }
+        return $result;
+
+      default:
+        return $this->filterCompare($row, $filters);
+    }
+  }
+
+  /**
+   * @param array $row
+   * @param array $condition
+   * @return bool
+   * @throws \Civi\API\Exception\NotImplementedException
+   */
+  private function filterCompare($row, $condition) {
+    if (!is_array($condition)) {
+      throw new NotImplementedException('Unexpected where syntax; expecting array.');
+    }
+    $value = isset($row[$condition[0]]) ? $row[$condition[0]] : NULL;
+    $operator = $condition[1];
+    $expected = isset($condition[2]) ? $condition[2] : NULL;
+    switch ($operator) {
+      case '=':
+      case '!=':
+      case '<>':
+        $equal = $value == $expected;
+        // PHP is too imprecise about comparing the number 0
+        if ($expected === 0 || $expected === '0') {
+          $equal = ($value === 0 || $value === '0');
+        }
+        // PHP is too imprecise about comparing empty strings
+        if ($expected === '') {
+          $equal = ($value === '');
+        }
+        return $equal == ($operator == '=');
+
+      case 'IS NULL':
+      case 'IS NOT NULL':
+        return is_null($value) == ($operator == 'IS NULL');
+
+      case '>':
+        return $value > $expected;
+
+      case '>=':
+        return $value >= $expected;
+
+      case '<':
+        return $value < $expected;
+
+      case '<=':
+        return $value <= $expected;
+
+      case 'BETWEEN':
+      case 'NOT BETWEEN':
+        $between = ($value >= $expected[0] && $value <= $expected[1]);
+        return $between == ($operator == 'BETWEEN');
+
+      case 'LIKE':
+      case 'NOT LIKE':
+        $pattern = '/^' . str_replace('%', '.*', preg_quote($expected, '/')) . '$/i';
+        return !preg_match($pattern, $value) == ($operator != 'LIKE');
+
+      case 'IN':
+        return in_array($value, $expected);
+
+      case 'NOT IN':
+        return !in_array($value, $expected);
+
+      default:
+        throw new NotImplementedException("Unsupported operator: '$operator' cannot be used with array data");
+    }
+  }
+
+  /**
+   * @param $values
+   * @return array
+   */
+  protected function sortArray($values) {
+    if ($this->getOrderBy()) {
+      usort($values, [$this, 'sortCompare']);
+    }
+    return $values;
+  }
+
+  private function sortCompare($a, $b) {
+    foreach ($this->getOrderBy() as $field => $dir) {
+      $modifier = $dir == 'ASC' ? 1 : -1;
+      if (isset($a[$field]) && isset($b[$field])) {
+        if ($a[$field] == $b[$field]) {
+          continue;
+        }
+        return (strnatcasecmp($a[$field], $b[$field]) * $modifier);
+      }
+      elseif (isset($a[$field]) || isset($b[$field])) {
+        return ((isset($a[$field]) ? 1 : -1) * $modifier);
+      }
+    }
+    return 0;
+  }
+
+  /**
+   * @param $values
+   * @return array
+   */
+  protected function selectArray($values) {
+    if ($this->getSelect() === ['row_count']) {
+      $values = [['row_count' => count($values)]];
+    }
+    elseif ($this->getSelect()) {
+      foreach ($values as &$value) {
+        $value = array_intersect_key($value, array_flip($this->getSelect()));
+      }
+    }
+    return $values;
+  }
+
+  /**
+   * @param $values
+   * @return array
+   */
+  protected function limitArray($values) {
+    if ($this->getOffset() || $this->getLimit()) {
+      $values = array_slice($values, $this->getOffset() ?: 0, $this->getLimit() ?: NULL);
+    }
+    return $values;
+  }
+
+}
diff --git a/Civi/Api4/Generic/Traits/CustomValueActionTrait.php b/Civi/Api4/Generic/Traits/CustomValueActionTrait.php
new file mode 100644 (file)
index 0000000..ba064a4
--- /dev/null
@@ -0,0 +1,127 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Generic\Traits;
+
+use Civi\Api4\Utils\FormattingUtil;
+use Civi\Api4\Utils\CoreUtil;
+
+/**
+ * Helper functions for working with custom values
+ *
+ * @package Civi\Api4\Generic
+ */
+trait CustomValueActionTrait {
+
+  public function __construct($customGroup, $actionName) {
+    $this->customGroup = $customGroup;
+    parent::__construct('CustomValue', $actionName, ['id', 'entity_id']);
+  }
+
+  /**
+   * Custom Group name if this is a CustomValue pseudo-entity.
+   *
+   * @var string
+   */
+  private $customGroup;
+
+  /**
+   * @inheritDoc
+   */
+  public function getEntityName() {
+    return 'Custom_' . $this->getCustomGroup();
+  }
+
+  /**
+   * @inheritDoc
+   */
+  protected function writeObjects($items) {
+    $result = [];
+    $fields = $this->entityFields();
+    foreach ($items as $item) {
+      FormattingUtil::formatWriteParams($item, $this->getEntityName(), $fields);
+
+      // Convert field names to custom_xx format
+      foreach ($fields as $name => $field) {
+        if (!empty($field['custom_field_id']) && isset($item[$name])) {
+          $item['custom_' . $field['custom_field_id']] = $item[$name];
+          unset($item[$name]);
+        }
+      }
+
+      $result[] = \CRM_Core_BAO_CustomValueTable::setValues($item);
+    }
+    return $result;
+  }
+
+  /**
+   * @inheritDoc
+   */
+  protected function deleteObjects($items) {
+    $customTable = CoreUtil::getCustomTableByName($this->getCustomGroup());
+    $ids = [];
+    foreach ($items as $item) {
+      \CRM_Utils_Hook::pre('delete', $this->getEntityName(), $item['id'], \CRM_Core_DAO::$_nullArray);
+      \CRM_Utils_SQL_Delete::from($customTable)
+        ->where('id = #value')
+        ->param('#value', $item['id'])
+        ->execute();
+      \CRM_Utils_Hook::post('delete', $this->getEntityName(), $item['id'], \CRM_Core_DAO::$_nullArray);
+      $ids[] = $item['id'];
+    }
+    return $ids;
+  }
+
+  /**
+   * @inheritDoc
+   */
+  protected function fillDefaults(&$params) {
+    foreach ($this->entityFields() as $name => $field) {
+      if (!isset($params[$name]) && isset($field['default_value'])) {
+        $params[$name] = $field['default_value'];
+      }
+    }
+  }
+
+  /**
+   * @return string
+   */
+  public function getCustomGroup() {
+    return $this->customGroup;
+  }
+
+}
diff --git a/Civi/Api4/Generic/Traits/DAOActionTrait.php b/Civi/Api4/Generic/Traits/DAOActionTrait.php
new file mode 100644 (file)
index 0000000..29e30f8
--- /dev/null
@@ -0,0 +1,290 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Generic\Traits;
+
+use CRM_Utils_Array as UtilsArray;
+use Civi\Api4\Utils\FormattingUtil;
+use Civi\Api4\Query\Api4SelectQuery;
+
+/**
+ * @method string getLanguage()
+ * @method setLanguage(string $language)
+ */
+trait DAOActionTrait {
+
+  /**
+   * Specify the language to use if this is a multi-lingual environment.
+   *
+   * E.g. "en_US" or "fr_CA"
+   *
+   * @var string
+   */
+  protected $language;
+
+  /**
+   * @return \CRM_Core_DAO|string
+   */
+  protected function getBaoName() {
+    require_once 'api/v3/utils.php';
+    return \_civicrm_api3_get_BAO($this->getEntityName());
+  }
+
+  /**
+   * Extract the true fields from a BAO
+   *
+   * (Used by create and update actions)
+   * @param object $bao
+   * @return array
+   */
+  public static function baoToArray($bao) {
+    $fields = $bao->fields();
+    $values = [];
+    foreach ($fields as $key => $field) {
+      $name = $field['name'];
+      if (property_exists($bao, $name)) {
+        $values[$name] = isset($bao->$name) ? $bao->$name : NULL;
+      }
+    }
+    return $values;
+  }
+
+  /**
+   * @return array|int
+   */
+  protected function getObjects() {
+    $query = new Api4SelectQuery($this->getEntityName(), $this->getCheckPermissions(), $this->entityFields());
+    $query->select = $this->getSelect();
+    $query->where = $this->getWhere();
+    $query->orderBy = $this->getOrderBy();
+    $query->limit = $this->getLimit();
+    $query->offset = $this->getOffset();
+    return $query->run();
+  }
+
+  /**
+   * Fill field defaults which were declared by the api.
+   *
+   * Note: default values from core are ignored because the BAO or database layer will supply them.
+   *
+   * @param array $params
+   */
+  protected function fillDefaults(&$params) {
+    $fields = $this->entityFields();
+    $bao = $this->getBaoName();
+    $coreFields = array_column($bao::fields(), NULL, 'name');
+
+    foreach ($fields as $name => $field) {
+      // If a default value in the api field is different than in core, the api should override it.
+      if (!isset($params[$name]) && !empty($field['default_value']) && $field['default_value'] != \CRM_Utils_Array::pathGet($coreFields, [$name, 'default'])) {
+        $params[$name] = $field['default_value'];
+      }
+    }
+  }
+
+  /**
+   * Write bao objects as part of a create/update action.
+   *
+   * @param array $items
+   *   The records to write to the DB.
+   * @return array
+   *   The records after being written to the DB (e.g. including newly assigned "id").
+   * @throws \API_Exception
+   */
+  protected function writeObjects($items) {
+    $baoName = $this->getBaoName();
+
+    // Some BAOs are weird and don't support a straightforward "create" method.
+    $oddballs = [
+      'EntityTag' => 'add',
+      'GroupContact' => 'add',
+      'Website' => 'add',
+    ];
+    $method = $oddballs[$this->getEntityName()] ?? 'create';
+    if (!method_exists($baoName, $method)) {
+      $method = 'add';
+    }
+
+    $result = [];
+
+    foreach ($items as $item) {
+      $entityId = UtilsArray::value('id', $item);
+      FormattingUtil::formatWriteParams($item, $this->getEntityName(), $this->entityFields());
+      $this->formatCustomParams($item, $entityId);
+      $item['check_permissions'] = $this->getCheckPermissions();
+
+      // For some reason the contact bao requires this
+      if ($entityId && $this->getEntityName() == 'Contact') {
+        $item['contact_id'] = $entityId;
+      }
+
+      if ($this->getCheckPermissions()) {
+        $this->checkContactPermissions($baoName, $item);
+      }
+
+      if ($this->getEntityName() == 'Address') {
+        $createResult = $baoName::add($item, $this->fixAddress);
+      }
+      elseif (method_exists($baoName, $method)) {
+        $createResult = $baoName::$method($item);
+      }
+      else {
+        $createResult = $this->genericCreateMethod($item);
+      }
+
+      if (!$createResult) {
+        $errMessage = sprintf('%s write operation failed', $this->getEntityName());
+        throw new \API_Exception($errMessage);
+      }
+
+      if (!empty($this->reload) && is_a($createResult, 'CRM_Core_DAO')) {
+        $createResult->find(TRUE);
+      }
+
+      // trim back the junk and just get the array:
+      $resultArray = $this->baoToArray($createResult);
+
+      $result[] = $resultArray;
+    }
+    return $result;
+  }
+
+  /**
+   * Fallback when a BAO does not contain create or add functions
+   *
+   * @param $params
+   * @return mixed
+   */
+  private function genericCreateMethod($params) {
+    $baoName = $this->getBaoName();
+    $hook = empty($params['id']) ? 'create' : 'edit';
+
+    \CRM_Utils_Hook::pre($hook, $this->getEntityName(), UtilsArray::value('id', $params), $params);
+    /** @var \CRM_Core_DAO $instance */
+    $instance = new $baoName();
+    $instance->copyValues($params, TRUE);
+    $instance->save();
+    \CRM_Utils_Hook::post($hook, $this->getEntityName(), $instance->id, $instance);
+
+    return $instance;
+  }
+
+  /**
+   * @param array $params
+   * @param int $entityId
+   * @return mixed
+   */
+  protected function formatCustomParams(&$params, $entityId) {
+    $customParams = [];
+
+    // $customValueID is the ID of the custom value in the custom table for this
+    // entity (i guess this assumes it's not a multi value entity)
+    foreach ($params as $name => $value) {
+      if (strpos($name, '.') === FALSE) {
+        continue;
+      }
+
+      list($customGroup, $customField) = explode('.', $name);
+
+      $customFieldId = \CRM_Core_BAO_CustomField::getFieldValue(
+        \CRM_Core_DAO_CustomField::class,
+        $customField,
+        'id',
+        'name'
+      );
+      $customFieldType = \CRM_Core_BAO_CustomField::getFieldValue(
+        \CRM_Core_DAO_CustomField::class,
+        $customField,
+        'html_type',
+        'name'
+      );
+      $customFieldExtends = \CRM_Core_BAO_CustomGroup::getFieldValue(
+        \CRM_Core_DAO_CustomGroup::class,
+        $customGroup,
+        'extends',
+        'name'
+      );
+
+      // todo are we sure we don't want to allow setting to NULL? need to test
+      if ($customFieldId && NULL !== $value) {
+
+        if ($customFieldType == 'CheckBox') {
+          // this function should be part of a class
+          formatCheckBoxField($value, 'custom_' . $customFieldId, $this->getEntityName());
+        }
+
+        \CRM_Core_BAO_CustomField::formatCustomField(
+          $customFieldId,
+          $customParams,
+          $value,
+          $customFieldExtends,
+          // todo check when this is needed
+          NULL,
+          $entityId,
+          FALSE,
+          FALSE,
+          TRUE
+        );
+      }
+    }
+
+    if ($customParams) {
+      $params['custom'] = $customParams;
+    }
+  }
+
+  /**
+   * Check edit/delete permissions for contacts and related entities.
+   *
+   * @param $baoName
+   * @param $item
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  protected function checkContactPermissions($baoName, $item) {
+    if ($baoName == 'CRM_Contact_BAO_Contact' && !empty($item['id'])) {
+      $permission = $this->getActionName() == 'delete' ? \CRM_Core_Permission::DELETE : \CRM_Core_Permission::EDIT;
+      if (!\CRM_Contact_BAO_Contact_Permission::allow($item['id'], $permission)) {
+        throw new \Civi\API\Exception\UnauthorizedException('Permission denied to modify contact record');
+      }
+    }
+    else {
+      // Fixme: decouple from v3
+      require_once 'api/v3/utils.php';
+      _civicrm_api3_check_edit_permissions($baoName, ['check_permissions' => 1] + $item);
+    }
+  }
+
+}
diff --git a/Civi/Api4/Generic/Traits/IsCurrentTrait.php b/Civi/Api4/Generic/Traits/IsCurrentTrait.php
new file mode 100644 (file)
index 0000000..edd02d8
--- /dev/null
@@ -0,0 +1,75 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Generic\Traits;
+
+/**
+ * This trait adds the $current param to a Get action.
+ *
+ * @see \Civi\Api4\Event\Subscriber\IsCurrentSubscriber
+ */
+trait IsCurrentTrait {
+
+  /**
+   * Convenience filter for selecting items that are enabled and are currently within their start/end dates.
+   *
+   * Adding current = TRUE is a shortcut for
+   *   WHERE is_active = 1 AND (end_date IS NULL OR end_date >= now) AND (start_date IS NULL OR start_DATE <= now)
+   *
+   * Adding current = FALSE is a shortcut for
+   *   WHERE is_active = 0 OR start_date > now OR end_date < now
+   *
+   * @var bool
+   */
+  protected $current;
+
+  /**
+   * @return bool
+   */
+  public function getCurrent() {
+    return $this->current;
+  }
+
+  /**
+   * @param bool $current
+   * @return $this
+   */
+  public function setCurrent($current) {
+    $this->current = $current;
+    return $this;
+  }
+
+}
diff --git a/Civi/Api4/Group.php b/Civi/Api4/Group.php
new file mode 100644 (file)
index 0000000..b217546
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Group entity.
+ *
+ * @package Civi\Api4
+ */
+class Group extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/GroupContact.php b/Civi/Api4/GroupContact.php
new file mode 100644 (file)
index 0000000..5911e23
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * GroupContact entity - link between groups and contacts.
+ *
+ * A contact can either be "Added" "Removed" or "Pending" in a group.
+ * CiviCRM only considers them to be "in" a group if their status is "Added".
+ *
+ * @package Civi\Api4
+ */
+class GroupContact extends Generic\DAOEntity {
+
+  /**
+   * @return Action\GroupContact\Create
+   */
+  public static function create() {
+    return new Action\GroupContact\Create(__CLASS__, __FUNCTION__);
+  }
+
+  /**
+   * @return Action\GroupContact\Save
+   */
+  public static function save() {
+    return new Action\GroupContact\Save(__CLASS__, __FUNCTION__);
+  }
+
+  /**
+   * @return Action\GroupContact\Update
+   */
+  public static function update() {
+    return new Action\GroupContact\Update(__CLASS__, __FUNCTION__);
+  }
+
+}
diff --git a/Civi/Api4/GroupNesting.php b/Civi/Api4/GroupNesting.php
new file mode 100644 (file)
index 0000000..10c6496
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4;
+
+/**
+ * GroupNesting entity.
+ *
+ * @package Civi\Api4
+ */
+class GroupNesting extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/GroupOrganization.php b/Civi/Api4/GroupOrganization.php
new file mode 100644 (file)
index 0000000..3dd455f
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4;
+
+/**
+ * GroupOrganization entity.
+ *
+ * @package Civi\Api4
+ */
+class GroupOrganization extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/IM.php b/Civi/Api4/IM.php
new file mode 100644 (file)
index 0000000..880c050
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * IM entity.
+ *
+ * @package Civi\Api4
+ */
+class IM extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/LocationType.php b/Civi/Api4/LocationType.php
new file mode 100644 (file)
index 0000000..0c194ab
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * LocationType entity.
+ *
+ * @package Civi\Api4
+ */
+class LocationType extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/MailSettings.php b/Civi/Api4/MailSettings.php
new file mode 100644 (file)
index 0000000..19b2553
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * MailSettings entity.
+ *
+ * @package Civi\Api4
+ */
+class MailSettings extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Mapping.php b/Civi/Api4/Mapping.php
new file mode 100644 (file)
index 0000000..d5912a5
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Mapping entity.
+ *
+ * This is a collection of MappingFields, for reuse in import, export, etc.
+ *
+ * @package Civi\Api4
+ */
+class Mapping extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/MappingField.php b/Civi/Api4/MappingField.php
new file mode 100644 (file)
index 0000000..4457b8a
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * MappingField entity.
+ *
+ * This represents one field in a Mapping collection.
+ *
+ * @package Civi\Api4
+ */
+class MappingField extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Navigation.php b/Civi/Api4/Navigation.php
new file mode 100644 (file)
index 0000000..e55f5a7
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Navigation entity.
+ *
+ * @package Civi\Api4
+ */
+class Navigation extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Note.php b/Civi/Api4/Note.php
new file mode 100644 (file)
index 0000000..6750f90
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Note entity.
+ *
+ * @package Civi\Api4
+ */
+class Note extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/OpenID.php b/Civi/Api4/OpenID.php
new file mode 100644 (file)
index 0000000..2a67c2a
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * OpenID entity.
+ *
+ * @package Civi\Api4
+ */
+class OpenID extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/OptionGroup.php b/Civi/Api4/OptionGroup.php
new file mode 100644 (file)
index 0000000..fd8b970
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * OptionGroup entity.
+ *
+ * @package Civi\Api4
+ */
+class OptionGroup extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/OptionValue.php b/Civi/Api4/OptionValue.php
new file mode 100644 (file)
index 0000000..95becd4
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * OptionValue entity.
+ *
+ * @package Civi\Api4
+ */
+class OptionValue extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Participant.php b/Civi/Api4/Participant.php
new file mode 100644 (file)
index 0000000..93fa61c
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Participant entity, stores the participation record of a contact in an event.
+ *
+ * @package Civi\Api4
+ */
+class Participant extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Phone.php b/Civi/Api4/Phone.php
new file mode 100644 (file)
index 0000000..5a54069
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Phone entity.
+ *
+ * This entity allows user to add, update, retrieve or delete phone number(s) of a contact.
+ *
+ * Creating a new phone of a contact, requires at minimum a contact's ID and phone number
+ *
+ * @package Civi\Api4
+ */
+class Phone extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Provider/ActionObjectProvider.php b/Civi/Api4/Provider/ActionObjectProvider.php
new file mode 100644 (file)
index 0000000..0169800
--- /dev/null
@@ -0,0 +1,160 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 4.7                                                |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2015                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Provider;
+
+use Civi\API\Event\ResolveEvent;
+use Civi\API\Provider\ProviderInterface;
+use Civi\Api4\Generic\AbstractAction;
+use Civi\API\Events;
+use Civi\Api4\Utils\ReflectionUtils;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * Accept $apiRequests based on \Civi\API\Action
+ */
+class ActionObjectProvider implements EventSubscriberInterface, ProviderInterface {
+
+  /**
+   * @return array
+   */
+  public static function getSubscribedEvents() {
+    // Using a high priority allows adhoc implementations
+    // to override standard implementations -- which is
+    // handy for testing/mocking.
+    return [
+      Events::RESOLVE => [
+        ['onApiResolve', Events::W_EARLY],
+      ],
+    ];
+  }
+
+  /**
+   * @param \Civi\API\Event\ResolveEvent $event
+   *   API resolution event.
+   */
+  public function onApiResolve(ResolveEvent $event) {
+    $apiRequest = $event->getApiRequest();
+    if ($apiRequest instanceof AbstractAction) {
+      $event->setApiRequest($apiRequest);
+      $event->setApiProvider($this);
+      $event->stopPropagation();
+    }
+  }
+
+  /**
+   * @inheritDoc
+   *
+   * @param \Civi\Api4\Generic\AbstractAction $action
+   *
+   * @return \Civi\Api4\Generic\Result
+   */
+  public function invoke($action) {
+    // Load result class based on @return annotation in the execute() method.
+    $reflection = new \ReflectionClass($action);
+    $doc = ReflectionUtils::getCodeDocs($reflection->getMethod('execute'), 'Method');
+    $resultClass = \CRM_Utils_Array::value('return', $doc, '\\Civi\\Api4\\Generic\\Result');
+    $result = new $resultClass();
+    $result->action = $action->getActionName();
+    $result->entity = $action->getEntityName();
+    $action->_run($result);
+    $this->handleChains($action, $result);
+    return $result;
+  }
+
+  /**
+   * Run each chained action once per row
+   *
+   * @param \Civi\Api4\Generic\AbstractAction $action
+   * @param \Civi\Api4\Generic\Result $result
+   */
+  protected function handleChains($action, $result) {
+    foreach ($action->getChain() as $name => $request) {
+      $request += [NULL, NULL, [], NULL];
+      $request[2]['checkPermissions'] = $action->getCheckPermissions();
+      foreach ($result as &$row) {
+        $row[$name] = $this->runChain($request, $row);
+      }
+    }
+  }
+
+  /**
+   * Run a chained action
+   *
+   * @param $request
+   * @param $row
+   * @return array|\Civi\Api4\Generic\Result|null
+   * @throws \API_Exception
+   */
+  protected function runChain($request, $row) {
+    list($entity, $action, $params, $index) = $request;
+    // Swap out variables in $entity, $action & $params
+    $this->resolveChainLinks($entity, $row);
+    $this->resolveChainLinks($action, $row);
+    $this->resolveChainLinks($params, $row);
+    return (array) civicrm_api4($entity, $action, $params, $index);
+  }
+
+  /**
+   * Swap out variable names
+   *
+   * @param mixed $val
+   * @param array $result
+   */
+  protected function resolveChainLinks(&$val, $result) {
+    if (is_array($val)) {
+      foreach ($val as &$v) {
+        $this->resolveChainLinks($v, $result);
+      }
+    }
+    elseif (is_string($val) && strlen($val) > 1 && substr($val, 0, 1) === '$') {
+      $val = \CRM_Utils_Array::pathGet($result, explode('.', substr($val, 1)));
+    }
+  }
+
+  /**
+   * @inheritDoc
+   * @param int $version
+   * @return array
+   */
+  public function getEntityNames($version) {
+    /** FIXME */
+    return [];
+  }
+
+  /**
+   * @inheritDoc
+   * @param int $version
+   * @param string $entity
+   * @return array
+   */
+  public function getActionNames($version, $entity) {
+    /** FIXME Civi\API\V4\Action\GetActions */
+    return [];
+  }
+
+}
diff --git a/Civi/Api4/Query/Api4SelectQuery.php b/Civi/Api4/Query/Api4SelectQuery.php
new file mode 100644 (file)
index 0000000..f7026ba
--- /dev/null
@@ -0,0 +1,580 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 4.7                                                |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2015                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Query;
+
+use Civi\API\SelectQuery;
+use Civi\Api4\Event\Events;
+use Civi\Api4\Event\PostSelectQueryEvent;
+use Civi\Api4\Service\Schema\Joinable\CustomGroupJoinable;
+use Civi\Api4\Service\Schema\Joinable\Joinable;
+use Civi\Api4\Utils\FormattingUtil;
+use Civi\Api4\Utils\CoreUtil;
+use CRM_Core_DAO_AllCoreTables as AllCoreTables;
+use CRM_Utils_Array as UtilsArray;
+
+/**
+ * A query `node` may be in one of three formats:
+ *
+ * * leaf: [$fieldName, $operator, $criteria]
+ * * negated: ['NOT', $node]
+ * * branch: ['OR|NOT', [$node, $node, ...]]
+ *
+ * Leaf operators are one of:
+ *
+ * * '=', '<=', '>=', '>', '<', 'LIKE', "<>", "!=",
+ * * "NOT LIKE", 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN',
+ * * 'IS NOT NULL', or 'IS NULL'.
+ */
+class Api4SelectQuery extends SelectQuery {
+
+  /**
+   * @var int
+   */
+  protected $apiVersion = 4;
+
+  /**
+   * @var array
+   *   Maps select fields to [<table_alias>, <column_alias>]
+   */
+  protected $fkSelectAliases = [];
+
+  /**
+   * @var \Civi\Api4\Service\Schema\Joinable\Joinable[]
+   *   The joinable tables that have been joined so far
+   */
+  protected $joinedTables = [];
+
+  /**
+   * @param string $entity
+   * @param bool $checkPermissions
+   * @param array $fields
+   */
+  public function __construct($entity, $checkPermissions, $fields) {
+    require_once 'api/v3/utils.php';
+    $this->entity = $entity;
+    $this->checkPermissions = $checkPermissions;
+
+    $baoName = CoreUtil::getBAOFromApiName($entity);
+    $bao = new $baoName();
+
+    $this->entityFieldNames = _civicrm_api3_field_names(_civicrm_api3_build_fields_array($bao));
+    $this->apiFieldSpec = (array) $fields;
+
+    \CRM_Utils_SQL_Select::from($this->getTableName($baoName) . ' ' . self::MAIN_TABLE_ALIAS);
+
+    // Add ACLs first to avoid redundant subclauses
+    $this->query->where($this->getAclClause(self::MAIN_TABLE_ALIAS, $baoName));
+  }
+
+  /**
+   * Why walk when you can
+   *
+   * @return array|int
+   */
+  public function run() {
+    $this->addJoins();
+    $this->buildSelectFields();
+    $this->buildWhereClause();
+
+    // Select
+    if (in_array('row_count', $this->select)) {
+      $this->query->select("count(*) as c");
+    }
+    else {
+      foreach ($this->selectFields as $column => $alias) {
+        $this->query->select("$column as `$alias`");
+      }
+      // Order by
+      $this->buildOrderBy();
+    }
+
+    // Limit
+    if (!empty($this->limit) || !empty($this->offset)) {
+      $this->query->limit($this->limit, $this->offset);
+    }
+
+    $results = [];
+    $sql = $this->query->toSQL();
+    $query = \CRM_Core_DAO::executeQuery($sql);
+
+    while ($query->fetch()) {
+      if (in_array('row_count', $this->select)) {
+        $results[]['row_count'] = (int) $query->c;
+        break;
+      }
+      $results[$query->id] = [];
+      foreach ($this->selectFields as $column => $alias) {
+        $returnName = $alias;
+        $alias = str_replace('.', '_', $alias);
+        $results[$query->id][$returnName] = property_exists($query, $alias) ? $query->$alias : NULL;
+      };
+    }
+    $event = new PostSelectQueryEvent($results, $this);
+    \Civi::dispatcher()->dispatch(Events::POST_SELECT_QUERY, $event);
+
+    return $event->getResults();
+  }
+
+  /**
+   * Gets all FK fields and does the required joins
+   */
+  protected function addJoins() {
+    $allFields = array_merge($this->select, array_keys($this->orderBy));
+    $recurse = function($clauses) use (&$allFields, &$recurse) {
+      foreach ($clauses as $clause) {
+        if ($clause[0] === 'NOT' && is_string($clause[1][0])) {
+          $recurse($clause[1][1]);
+        }
+        elseif (in_array($clause[0], ['AND', 'OR', 'NOT'])) {
+          $recurse($clause[1]);
+        }
+        elseif (is_array($clause[0])) {
+          array_walk($clause, $recurse);
+        }
+        else {
+          $allFields[] = $clause[0];
+        }
+      }
+    };
+    $recurse($this->where);
+    $dotFields = array_unique(array_filter($allFields, function ($field) {
+      return strpos($field, '.') !== FALSE;
+    }));
+
+    foreach ($dotFields as $dotField) {
+      $this->joinFK($dotField);
+    }
+  }
+
+  /**
+   * Populate $this->selectFields
+   *
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  protected function buildSelectFields() {
+    $return_all_fields = (empty($this->select) || !is_array($this->select));
+    $return = $return_all_fields ? $this->entityFieldNames : $this->select;
+    if ($return_all_fields || in_array('custom', $this->select)) {
+      foreach (array_keys($this->apiFieldSpec) as $fieldName) {
+        if (strpos($fieldName, 'custom_') === 0) {
+          $return[] = $fieldName;
+        }
+      }
+    }
+
+    // Always select the ID if the table has one.
+    if (array_key_exists('id', $this->apiFieldSpec) || strstr($this->entity, 'Custom_')) {
+      $this->selectFields[self::MAIN_TABLE_ALIAS . ".id"] = "id";
+    }
+
+    // core return fields
+    foreach ($return as $fieldName) {
+      $field = $this->getField($fieldName);
+      if (strpos($fieldName, '.') && !empty($this->fkSelectAliases[$fieldName]) && !array_filter($this->getPathJoinTypes($fieldName))) {
+        $this->selectFields[$this->fkSelectAliases[$fieldName]] = $fieldName;
+      }
+      elseif ($field && in_array($field['name'], $this->entityFieldNames)) {
+        $this->selectFields[self::MAIN_TABLE_ALIAS . "." . UtilsArray::value('column_name', $field, $field['name'])] = $field['name'];
+      }
+    }
+  }
+
+  /**
+   * @inheritDoc
+   */
+  protected function buildWhereClause() {
+    foreach ($this->where as $clause) {
+      $sql_clause = $this->treeWalkWhereClause($clause);
+      $this->query->where($sql_clause);
+    }
+  }
+
+  /**
+   * @inheritDoc
+   */
+  protected function buildOrderBy() {
+    foreach ($this->orderBy as $field => $dir) {
+      if ($dir !== 'ASC' && $dir !== 'DESC') {
+        throw new \API_Exception("Invalid sort direction. Cannot order by $field $dir");
+      }
+      if ($this->getField($field)) {
+        $this->query->orderBy(self::MAIN_TABLE_ALIAS . '.' . $field . " $dir");
+      }
+      else {
+        throw new \API_Exception("Invalid sort field. Cannot order by $field $dir");
+      }
+    }
+  }
+
+  /**
+   * Recursively validate and transform a branch or leaf clause array to SQL.
+   *
+   * @param array $clause
+   * @return string SQL where clause
+   *
+   * @uses validateClauseAndComposeSql() to generate the SQL etc.
+   * @todo if an 'and' is nested within and 'and' (or or-in-or) then should
+   * flatten that to be a single list of clauses.
+   */
+  protected function treeWalkWhereClause($clause) {
+    switch ($clause[0]) {
+      case 'OR':
+      case 'AND':
+        // handle branches
+        if (count($clause[1]) === 1) {
+          // a single set so AND|OR is immaterial
+          return $this->treeWalkWhereClause($clause[1][0]);
+        }
+        else {
+          $sql_subclauses = [];
+          foreach ($clause[1] as $subclause) {
+            $sql_subclauses[] = $this->treeWalkWhereClause($subclause);
+          }
+          return '(' . implode("\n" . $clause[0], $sql_subclauses) . ')';
+        }
+
+      case 'NOT':
+        // If we get a group of clauses with no operator, assume AND
+        if (!is_string($clause[1][0])) {
+          $clause[1] = ['AND', $clause[1]];
+        }
+        return 'NOT (' . $this->treeWalkWhereClause($clause[1]) . ')';
+
+      default:
+        return $this->validateClauseAndComposeSql($clause);
+    }
+  }
+
+  /**
+   * Validate and transform a leaf clause array to SQL.
+   * @param array $clause [$fieldName, $operator, $criteria]
+   * @return string SQL
+   * @throws \API_Exception
+   * @throws \Exception
+   */
+  protected function validateClauseAndComposeSql($clause) {
+    // Pad array for unary operators
+    list($key, $operator, $value) = array_pad($clause, 3, NULL);
+    $fieldSpec = $this->getField($key);
+    // derive table and column:
+    $table_name = NULL;
+    $column_name = NULL;
+    if (in_array($key, $this->entityFieldNames)) {
+      $table_name = self::MAIN_TABLE_ALIAS;
+      $column_name = $key;
+    }
+    elseif (strpos($key, '.') && isset($this->fkSelectAliases[$key])) {
+      list($table_name, $column_name) = explode('.', $this->fkSelectAliases[$key]);
+    }
+
+    if (!$table_name || !$column_name) {
+      throw new \API_Exception("Invalid field '$key' in where clause.");
+    }
+
+    FormattingUtil::formatValue($value, $fieldSpec, $this->getEntity());
+
+    $sql_clause = \CRM_Core_DAO::createSQLFilter("`$table_name`.`$column_name`", [$operator => $value]);
+    if ($sql_clause === NULL) {
+      throw new \API_Exception("Invalid value in where clause for field '$key'");
+    }
+    return $sql_clause;
+  }
+
+  /**
+   * @inheritDoc
+   */
+  protected function getFields() {
+    return $this->apiFieldSpec;
+  }
+
+  /**
+   * Fetch a field from the getFields list
+   *
+   * @param string $fieldName
+   *
+   * @return string|null
+   */
+  protected function getField($fieldName) {
+    if ($fieldName) {
+      $fieldPath = explode('.', $fieldName);
+      if (count($fieldPath) > 1) {
+        $fieldName = implode('.', array_slice($fieldPath, -2));
+      }
+      return UtilsArray::value($fieldName, $this->apiFieldSpec);
+    }
+    return NULL;
+  }
+
+  /**
+   * @param $key
+   * @throws \API_Exception
+   */
+  protected function joinFK($key) {
+    $pathArray = explode('.', $key);
+
+    if (count($pathArray) < 2) {
+      return;
+    }
+
+    /** @var \Civi\Api4\Service\Schema\Joiner $joiner */
+    $joiner = \Civi::container()->get('joiner');
+    $field = array_pop($pathArray);
+    $pathString = implode('.', $pathArray);
+
+    if (!$joiner->canJoin($this, $pathString)) {
+      return;
+    }
+
+    $joinPath = $joiner->join($this, $pathString);
+    /** @var \Civi\Api4\Service\Schema\Joinable\Joinable $lastLink */
+    $lastLink = array_pop($joinPath);
+
+    // Cache field info for retrieval by $this->getField()
+    $prefix = array_pop($pathArray) . '.';
+    if (!isset($this->apiFieldSpec[$prefix . $field])) {
+      $joinEntity = $lastLink->getEntity();
+      // Custom fields are already prefixed
+      if ($lastLink instanceof CustomGroupJoinable) {
+        $prefix = '';
+      }
+      foreach ($lastLink->getEntityFields() as $fieldObject) {
+        $this->apiFieldSpec[$prefix . $fieldObject->getName()] = $fieldObject->toArray() + ['entity' => $joinEntity];
+      }
+    }
+
+    if (!$lastLink->getField($field)) {
+      throw new \API_Exception('Invalid join');
+    }
+
+    // custom groups use aliases for field names
+    if ($lastLink instanceof CustomGroupJoinable) {
+      $field = $lastLink->getSqlColumn($field);
+    }
+
+    $this->fkSelectAliases[$key] = sprintf('%s.%s', $lastLink->getAlias(), $field);
+  }
+
+  /**
+   * @param \Civi\Api4\Service\Schema\Joinable\Joinable $joinable
+   *
+   * @return $this
+   */
+  public function addJoinedTable(Joinable $joinable) {
+    $this->joinedTables[] = $joinable;
+
+    return $this;
+  }
+
+  /**
+   * @return FALSE|string
+   */
+  public function getFrom() {
+    return AllCoreTables::getTableForClass(AllCoreTables::getFullName($this->entity));
+  }
+
+  /**
+   * @return string
+   */
+  public function getEntity() {
+    return $this->entity;
+  }
+
+  /**
+   * @return array
+   */
+  public function getSelect() {
+    return $this->select;
+  }
+
+  /**
+   * @return array
+   */
+  public function getWhere() {
+    return $this->where;
+  }
+
+  /**
+   * @return array
+   */
+  public function getOrderBy() {
+    return $this->orderBy;
+  }
+
+  /**
+   * @return mixed
+   */
+  public function getLimit() {
+    return $this->limit;
+  }
+
+  /**
+   * @return mixed
+   */
+  public function getOffset() {
+    return $this->offset;
+  }
+
+  /**
+   * @return array
+   */
+  public function getSelectFields() {
+    return $this->selectFields;
+  }
+
+  /**
+   * @return bool
+   */
+  public function isFillUniqueFields() {
+    return $this->isFillUniqueFields;
+  }
+
+  /**
+   * @return \CRM_Utils_SQL_Select
+   */
+  public function getQuery() {
+    return $this->query;
+  }
+
+  /**
+   * @return array
+   */
+  public function getJoins() {
+    return $this->joins;
+  }
+
+  /**
+   * @return array
+   */
+  public function getApiFieldSpec() {
+    return $this->apiFieldSpec;
+  }
+
+  /**
+   * @return array
+   */
+  public function getEntityFieldNames() {
+    return $this->entityFieldNames;
+  }
+
+  /**
+   * @return array
+   */
+  public function getAclFields() {
+    return $this->aclFields;
+  }
+
+  /**
+   * @return bool|string
+   */
+  public function getCheckPermissions() {
+    return $this->checkPermissions;
+  }
+
+  /**
+   * @return int
+   */
+  public function getApiVersion() {
+    return $this->apiVersion;
+  }
+
+  /**
+   * @return array
+   */
+  public function getFkSelectAliases() {
+    return $this->fkSelectAliases;
+  }
+
+  /**
+   * @return \Civi\Api4\Service\Schema\Joinable\Joinable[]
+   */
+  public function getJoinedTables() {
+    return $this->joinedTables;
+  }
+
+  /**
+   * @return \Civi\Api4\Service\Schema\Joinable\Joinable
+   */
+  public function getJoinedTable($alias) {
+    foreach ($this->joinedTables as $join) {
+      if ($join->getAlias() == $alias) {
+        return $join;
+      }
+    }
+  }
+
+  /**
+   * Get table name on basis of entity
+   *
+   * @param string $baoName
+   *
+   * @return void
+   */
+  public function getTableName($baoName) {
+    if (strstr($this->entity, 'Custom_')) {
+      $this->query = \CRM_Utils_SQL_Select::from(CoreUtil::getCustomTableByName(str_replace('Custom_', '', $this->entity)) . ' ' . self::MAIN_TABLE_ALIAS);
+      $this->entityFieldNames = array_keys($this->apiFieldSpec);
+    }
+    else {
+      $bao = new $baoName();
+      $this->query = \CRM_Utils_SQL_Select::from($bao->tableName() . ' ' . self::MAIN_TABLE_ALIAS);
+    }
+  }
+
+  /**
+   * Separates a string like 'emails.location_type.label' into an array, where
+   * each value in the array tells whether it is 1-1 or 1-n join type
+   *
+   * @param string $pathString
+   *   Dot separated path to the field
+   *
+   * @return array
+   *   Index is table alias and value is boolean whether is 1-to-many join
+   */
+  public function getPathJoinTypes($pathString) {
+    $pathParts = explode('.', $pathString);
+    // remove field
+    array_pop($pathParts);
+    $path = [];
+    $query = $this;
+    $isMultipleChecker = function($alias) use ($query) {
+      foreach ($query->getJoinedTables() as $table) {
+        if ($table->getAlias() === $alias) {
+          return $table->getJoinType() === Joinable::JOIN_TYPE_ONE_TO_MANY;
+        }
+      }
+      return FALSE;
+    };
+
+    foreach ($pathParts as $part) {
+      $path[$part] = $isMultipleChecker($part);
+    }
+
+    return $path;
+  }
+
+}
diff --git a/Civi/Api4/Relationship.php b/Civi/Api4/Relationship.php
new file mode 100644 (file)
index 0000000..888e98d
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Relationship entity.
+ *
+ * @package Civi\Api4
+ */
+class Relationship extends Generic\DAOEntity {
+
+  /**
+   * @return \Civi\Api4\Action\Relationship\Get
+   */
+  public static function get() {
+    return new \Civi\Api4\Action\Relationship\Get(static::class, __FUNCTION__);
+  }
+
+}
diff --git a/Civi/Api4/RelationshipType.php b/Civi/Api4/RelationshipType.php
new file mode 100644 (file)
index 0000000..24a29a2
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * RelationshipType entity.
+ *
+ * @package Civi\Api4
+ */
+class RelationshipType extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Result/ReplaceResult.php b/Civi/Api4/Result/ReplaceResult.php
new file mode 100644 (file)
index 0000000..06e9ef8
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4\Result;
+
+class ReplaceResult extends \Civi\Api4\Generic\Result {
+  /**
+   * @var array
+   */
+  public $deleted = [];
+
+}
diff --git a/Civi/Api4/Route.php b/Civi/Api4/Route.php
new file mode 100644 (file)
index 0000000..9ce29b7
--- /dev/null
@@ -0,0 +1,111 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace Civi\Api4;
+
+use Civi\Api4\Generic\BasicGetFieldsAction;
+
+class Route extends \Civi\Api4\Generic\AbstractEntity {
+
+  /**
+   * @return \Civi\Api4\Generic\BasicGetAction
+   */
+  public static function get() {
+    return new \Civi\Api4\Generic\BasicGetAction(__CLASS__, __FUNCTION__, function ($get) {
+      // Pulling from ::items() rather than DB -- because it provides the final/live/altered data.
+      $items = \CRM_Core_Menu::items();
+      $result = [];
+      foreach ($items as $path => $item) {
+        $result[] = ['path' => $path] + $item;
+      }
+      return $result;
+    });
+  }
+
+  public static function getFields() {
+    return new BasicGetFieldsAction(__CLASS__, __FUNCTION__, function() {
+      return [
+        [
+          'name' => 'path',
+          'title' => 'Relative Path',
+          'required' => TRUE,
+          'data_type' => 'String',
+        ],
+        [
+          'name' => 'title',
+          'title' => 'Page Title',
+          'required' => TRUE,
+          'data_type' => 'String',
+        ],
+        [
+          'name' => 'page_callback',
+          'title' => 'Page Callback',
+          'required' => TRUE,
+          'data_type' => 'String',
+        ],
+        [
+          'name' => 'page_arguments',
+          'title' => 'Page Arguments',
+          'required' => FALSE,
+          'data_type' => 'String',
+        ],
+        [
+          'name' => 'path_arguments',
+          'title' => 'Path Arguments',
+          'required' => FALSE,
+          'data_type' => 'String',
+        ],
+        [
+          'name' => 'access_arguments',
+          'title' => 'Access Arguments',
+          'required' => FALSE,
+          'data_type' => 'Array',
+        ],
+      ];
+    });
+  }
+
+  /**
+   * @return array
+   */
+  public static function permissions() {
+    return [
+      "meta" => ["access CiviCRM"],
+      "default" => ["administer CiviCRM"],
+    ];
+  }
+
+}
diff --git a/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php b/Civi/Api4/Service/Schema/Joinable/ActivityToActivityContactAssigneesJoinable.php
new file mode 100644 (file)
index 0000000..18fa632
--- /dev/null
@@ -0,0 +1,75 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Schema\Joinable;
+
+class ActivityToActivityContactAssigneesJoinable extends Joinable {
+  /**
+   * @var string
+   */
+  protected $baseTable = 'civicrm_activity';
+
+  /**
+   * @var string
+   */
+  protected $baseColumn = 'id';
+
+  /**
+   * @param $alias
+   */
+  public function __construct($alias) {
+    $optionValueTable = 'civicrm_option_value';
+    $optionGroupTable = 'civicrm_option_group';
+
+    $subSubSelect = sprintf(
+      'SELECT id FROM %s WHERE name = "%s"',
+      $optionGroupTable,
+      'activity_contacts'
+    );
+
+    $subSelect = sprintf(
+      'SELECT value FROM %s WHERE name = "%s" AND option_group_id = (%s)',
+      $optionValueTable,
+      'Activity Assignees',
+      $subSubSelect
+    );
+
+    $this->addCondition(sprintf('%s.record_type_id = (%s)', $alias, $subSelect));
+    parent::__construct('civicrm_activity_contact', 'activity_id', $alias);
+  }
+
+}
diff --git a/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php b/Civi/Api4/Service/Schema/Joinable/BridgeJoinable.php
new file mode 100644 (file)
index 0000000..f294be8
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Schema\Joinable;
+
+class BridgeJoinable extends Joinable {
+  /**
+   * @var Joinable
+   */
+  protected $middleLink;
+
+  public function __construct($targetTable, $targetColumn, $alias, Joinable $middleLink) {
+    parent::__construct($targetTable, $targetColumn, $alias);
+    $this->middleLink = $middleLink;
+  }
+
+  /**
+   * @return Joinable
+   */
+  public function getMiddleLink() {
+    return $this->middleLink;
+  }
+
+}
diff --git a/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php b/Civi/Api4/Service/Schema/Joinable/CustomGroupJoinable.php
new file mode 100644 (file)
index 0000000..c74b861
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Schema\Joinable;
+
+use Civi\Api4\CustomField;
+
+class CustomGroupJoinable extends Joinable {
+
+  /**
+   * @var string
+   */
+  protected $joinSide = self::JOIN_SIDE_LEFT;
+
+  /**
+   * @var string
+   *
+   * Name of the custom field column.
+   */
+  protected $columns;
+
+  /**
+   * @param $targetTable
+   * @param $alias
+   * @param bool $isMultiRecord
+   * @param string $entity
+   * @param string $columns
+   */
+  public function __construct($targetTable, $alias, $isMultiRecord, $entity, $columns) {
+    $this->entity = $entity;
+    $this->columns = $columns;
+    parent::__construct($targetTable, 'entity_id', $alias);
+    $this->joinType = $isMultiRecord ?
+      self::JOIN_TYPE_ONE_TO_MANY : self::JOIN_TYPE_ONE_TO_ONE;
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function getEntityFields() {
+    if (!$this->entityFields) {
+      $fields = CustomField::get()
+        ->setCheckPermissions(FALSE)
+        ->setSelect(['custom_group.name', 'custom_group_id', 'name', 'label', 'data_type', 'html_type', 'is_required', 'is_searchable', 'is_search_range', 'weight', 'is_active', 'is_view', 'option_group_id', 'default_value', 'date_format', 'time_format', 'start_date_years', 'end_date_years'])
+        ->addWhere('custom_group.table_name', '=', $this->getTargetTable())
+        ->execute();
+      foreach ($fields as $field) {
+        $this->entityFields[] = \Civi\Api4\Service\Spec\SpecFormatter::arrayToField($field, $this->getEntity());
+      }
+    }
+    return $this->entityFields;
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function getField($fieldName) {
+    foreach ($this->getEntityFields() as $field) {
+      $name = $field->getName();
+      if ($name === $fieldName || strrpos($name, '.' . $fieldName) === strlen($name) - strlen($fieldName) - 1) {
+        return $field;
+      }
+    }
+    return NULL;
+  }
+
+  /**
+   * @return string
+   */
+  public function getSqlColumn($fieldName) {
+    return $this->columns[$fieldName];
+  }
+
+}
diff --git a/Civi/Api4/Service/Schema/Joinable/Joinable.php b/Civi/Api4/Service/Schema/Joinable/Joinable.php
new file mode 100644 (file)
index 0000000..18478c8
--- /dev/null
@@ -0,0 +1,312 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Schema\Joinable;
+
+use Civi\Api4\Utils\CoreUtil;
+use CRM_Core_DAO_AllCoreTables as AllCoreTables;
+
+class Joinable {
+
+  const JOIN_SIDE_LEFT = 'LEFT';
+  const JOIN_SIDE_INNER = 'INNER';
+
+  const JOIN_TYPE_ONE_TO_ONE = '1_to_1';
+  const JOIN_TYPE_MANY_TO_ONE = 'n_to_1';
+  const JOIN_TYPE_ONE_TO_MANY = '1_to_n';
+
+  /**
+   * @var string
+   */
+  protected $baseTable;
+
+  /**
+   * @var string
+   */
+  protected $baseColumn;
+
+  /**
+   * @var string
+   */
+  protected $targetTable;
+
+  /**
+   * @var string
+   *
+   * Name (or alias) of the target column)
+   */
+  protected $targetColumn;
+
+  /**
+   * @var string
+   */
+  protected $alias;
+
+  /**
+   * @var array
+   */
+  protected $conditions = [];
+
+  /**
+   * @var string
+   */
+  protected $joinSide = self::JOIN_SIDE_LEFT;
+
+  /**
+   * @var int
+   */
+  protected $joinType = self::JOIN_TYPE_ONE_TO_ONE;
+
+  /**
+   * @var string
+   */
+  protected $entity;
+
+  /**
+   * @var array
+   */
+  protected $entityFields;
+
+  /**
+   * @param $targetTable
+   * @param $targetColumn
+   * @param string|null $alias
+   */
+  public function __construct($targetTable, $targetColumn, $alias = NULL) {
+    $this->targetTable = $targetTable;
+    $this->targetColumn = $targetColumn;
+    if (!$this->entity) {
+      $this->entity = CoreUtil::getApiNameFromTableName($targetTable);
+    }
+    $this->alias = $alias ?: str_replace('civicrm_', '', $targetTable);
+  }
+
+  /**
+   * Gets conditions required when joining to a base table
+   *
+   * @param string|null $baseTableAlias
+   *   Name of the base table, if aliased.
+   *
+   * @return array
+   */
+  public function getConditionsForJoin($baseTableAlias = NULL) {
+    $baseCondition = sprintf(
+      '%s.%s =  %s.%s',
+      $baseTableAlias ?: $this->baseTable,
+      $this->baseColumn,
+      $this->getAlias(),
+      $this->targetColumn
+    );
+
+    return array_merge([$baseCondition], $this->conditions);
+  }
+
+  /**
+   * @return string
+   */
+  public function getBaseTable() {
+    return $this->baseTable;
+  }
+
+  /**
+   * @param string $baseTable
+   *
+   * @return $this
+   */
+  public function setBaseTable($baseTable) {
+    $this->baseTable = $baseTable;
+
+    return $this;
+  }
+
+  /**
+   * @return string
+   */
+  public function getBaseColumn() {
+    return $this->baseColumn;
+  }
+
+  /**
+   * @param string $baseColumn
+   *
+   * @return $this
+   */
+  public function setBaseColumn($baseColumn) {
+    $this->baseColumn = $baseColumn;
+
+    return $this;
+  }
+
+  /**
+   * @return string
+   */
+  public function getAlias() {
+    return $this->alias;
+  }
+
+  /**
+   * @param string $alias
+   *
+   * @return $this
+   */
+  public function setAlias($alias) {
+    $this->alias = $alias;
+
+    return $this;
+  }
+
+  /**
+   * @return string
+   */
+  public function getTargetTable() {
+    return $this->targetTable;
+  }
+
+  /**
+   * @return string
+   */
+  public function getTargetColumn() {
+    return $this->targetColumn;
+  }
+
+  /**
+   * @return string
+   */
+  public function getEntity() {
+    return $this->entity;
+  }
+
+  /**
+   * @param $condition
+   *
+   * @return $this
+   */
+  public function addCondition($condition) {
+    $this->conditions[] = $condition;
+
+    return $this;
+  }
+
+  /**
+   * @return array
+   */
+  public function getExtraJoinConditions() {
+    return $this->conditions;
+  }
+
+  /**
+   * @param array $conditions
+   *
+   * @return $this
+   */
+  public function setConditions($conditions) {
+    $this->conditions = $conditions;
+
+    return $this;
+  }
+
+  /**
+   * @return string
+   */
+  public function getJoinSide() {
+    return $this->joinSide;
+  }
+
+  /**
+   * @param string $joinSide
+   *
+   * @return $this
+   */
+  public function setJoinSide($joinSide) {
+    $this->joinSide = $joinSide;
+
+    return $this;
+  }
+
+  /**
+   * @return int
+   */
+  public function getJoinType() {
+    return $this->joinType;
+  }
+
+  /**
+   * @param int $joinType
+   *
+   * @return $this
+   */
+  public function setJoinType($joinType) {
+    $this->joinType = $joinType;
+
+    return $this;
+  }
+
+  /**
+   * @return array
+   */
+  public function toArray() {
+    return get_object_vars($this);
+  }
+
+  /**
+   * @return \Civi\Api4\Service\Spec\FieldSpec[]
+   */
+  public function getEntityFields() {
+    if (!$this->entityFields) {
+      $bao = AllCoreTables::getClassForTable($this->getTargetTable());
+      if ($bao) {
+        foreach ($bao::fields() as $field) {
+          $this->entityFields[] = \Civi\Api4\Service\Spec\SpecFormatter::arrayToField($field, $this->getEntity());
+        }
+      }
+    }
+    return $this->entityFields;
+  }
+
+  /**
+   * @return \Civi\Api4\Service\Spec\FieldSpec|NULL
+   */
+  public function getField($fieldName) {
+    foreach ($this->getEntityFields() as $field) {
+      if ($field->getName() === $fieldName) {
+        return $field;
+      }
+    }
+    return NULL;
+  }
+
+}
diff --git a/Civi/Api4/Service/Schema/Joinable/OptionValueJoinable.php b/Civi/Api4/Service/Schema/Joinable/OptionValueJoinable.php
new file mode 100644 (file)
index 0000000..b5ba1f0
--- /dev/null
@@ -0,0 +1,96 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Schema\Joinable;
+
+class OptionValueJoinable extends Joinable {
+  /**
+   * @var string
+   */
+  protected $optionGroupName;
+
+  /**
+   * @param string $optionGroup
+   *   Can be either the option group name or ID
+   * @param string|null $alias
+   *   The join alias
+   * @param string $keyColumn
+   *   Which column to use to join, defaults to "value"
+   */
+  public function __construct($optionGroup, $alias = NULL, $keyColumn = 'value') {
+    $this->optionGroupName = $optionGroup;
+    $optionValueTable = 'civicrm_option_value';
+
+    // default join alias to option group name, e.g. activity_type
+    if (!$alias && !is_numeric($optionGroup)) {
+      $alias = $optionGroup;
+    }
+
+    parent::__construct($optionValueTable, $keyColumn, $alias);
+
+    if (!is_numeric($optionGroup)) {
+      $subSelect = 'SELECT id FROM civicrm_option_group WHERE name = "%s"';
+      $subQuery = sprintf($subSelect, $optionGroup);
+      $condition = sprintf('%s.option_group_id = (%s)', $alias, $subQuery);
+    }
+    else {
+      $condition = sprintf('%s.option_group_id = %d', $alias, $optionGroup);
+    }
+
+    $this->addCondition($condition);
+  }
+
+  /**
+   * The existing condition must also be re-aliased
+   *
+   * @param string $alias
+   *
+   * @return $this
+   */
+  public function setAlias($alias) {
+    foreach ($this->conditions as $index => $condition) {
+      $search = $this->alias . '.';
+      $replace = $alias . '.';
+      $this->conditions[$index] = str_replace($search, $replace, $condition);
+    }
+
+    parent::setAlias($alias);
+
+    return $this;
+  }
+
+}
diff --git a/Civi/Api4/Service/Schema/Joiner.php b/Civi/Api4/Service/Schema/Joiner.php
new file mode 100644 (file)
index 0000000..99f3b5b
--- /dev/null
@@ -0,0 +1,132 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Schema;
+
+use Civi\Api4\Query\Api4SelectQuery;
+
+class Joiner {
+  /**
+   * @var SchemaMap
+   */
+  protected $schemaMap;
+
+  /**
+   * @var \Civi\Api4\Service\Schema\Joinable\Joinable[][]
+   */
+  protected $cache = [];
+
+  /**
+   * @param SchemaMap $schemaMap
+   */
+  public function __construct(SchemaMap $schemaMap) {
+    $this->schemaMap = $schemaMap;
+  }
+
+  /**
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   *   The query object to do the joins on
+   * @param string $joinPath
+   *   A path of aliases in dot notation, e.g. contact.phone
+   * @param string $side
+   *   Can be LEFT or INNER
+   *
+   * @throws \Exception
+   * @return \Civi\Api4\Service\Schema\Joinable\Joinable[]
+   *   The path used to make the join
+   */
+  public function join(Api4SelectQuery $query, $joinPath, $side = 'LEFT') {
+    $fullPath = $this->getPath($query->getFrom(), $joinPath);
+    $baseTable = $query::MAIN_TABLE_ALIAS;
+
+    foreach ($fullPath as $link) {
+      $target = $link->getTargetTable();
+      $alias = $link->getAlias();
+      $conditions = $link->getConditionsForJoin($baseTable);
+
+      $query->join($side, $target, $alias, $conditions);
+      $query->addJoinedTable($link);
+
+      $baseTable = $link->getAlias();
+    }
+
+    return $fullPath;
+  }
+
+  /**
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   * @param $joinPath
+   *
+   * @return bool
+   */
+  public function canJoin(Api4SelectQuery $query, $joinPath) {
+    return !empty($this->getPath($query->getFrom(), $joinPath));
+  }
+
+  /**
+   * @param string $baseTable
+   * @param string $joinPath
+   *
+   * @return array
+   * @throws \Exception
+   */
+  protected function getPath($baseTable, $joinPath) {
+    $cacheKey = sprintf('%s.%s', $baseTable, $joinPath);
+    if (!isset($this->cache[$cacheKey])) {
+      $stack = explode('.', $joinPath);
+      $fullPath = [];
+
+      foreach ($stack as $key => $targetAlias) {
+        $links = $this->schemaMap->getPath($baseTable, $targetAlias);
+
+        if (empty($links)) {
+          throw new \Exception(sprintf('Cannot join %s to %s', $baseTable, $targetAlias));
+        }
+        else {
+          $fullPath = array_merge($fullPath, $links);
+          $lastLink = end($links);
+          $baseTable = $lastLink->getTargetTable();
+        }
+      }
+
+      $this->cache[$cacheKey] = $fullPath;
+    }
+
+    return $this->cache[$cacheKey];
+  }
+
+}
diff --git a/Civi/Api4/Service/Schema/SchemaMap.php b/Civi/Api4/Service/Schema/SchemaMap.php
new file mode 100644 (file)
index 0000000..0ca1679
--- /dev/null
@@ -0,0 +1,174 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Schema;
+
+use Civi\Api4\Service\Schema\Joinable\BridgeJoinable;
+
+class SchemaMap {
+
+  const MAX_JOIN_DEPTH = 3;
+
+  /**
+   * @var Table[]
+   */
+  protected $tables = [];
+
+  /**
+   * @param $baseTableName
+   * @param $targetTableAlias
+   *
+   * @return \Civi\Api4\Service\Schema\Joinable\Joinable[]
+   *   Array of links to the target table, empty if no path found
+   */
+  public function getPath($baseTableName, $targetTableAlias) {
+    $table = $this->getTableByName($baseTableName);
+    $path = [];
+
+    if (!$table) {
+      return $path;
+    }
+
+    $this->findPaths($table, $targetTableAlias, 1, $path);
+
+    foreach ($path as $index => $pathLink) {
+      if ($pathLink instanceof BridgeJoinable) {
+        $start = array_slice($path, 0, $index);
+        $middle = [$pathLink->getMiddleLink()];
+        $end = array_slice($path, $index, count($path) - $index);
+        $path = array_merge($start, $middle, $end);
+      }
+    }
+
+    return $path;
+  }
+
+  /**
+   * @return Table[]
+   */
+  public function getTables() {
+    return $this->tables;
+  }
+
+  /**
+   * @param $name
+   *
+   * @return Table|null
+   */
+  public function getTableByName($name) {
+    foreach ($this->tables as $table) {
+      if ($table->getName() === $name) {
+        return $table;
+      }
+    }
+
+    return NULL;
+  }
+
+  /**
+   * Adds a table to the schema map if it has not already been added
+   *
+   * @param Table $table
+   *
+   * @return $this
+   */
+  public function addTable(Table $table) {
+    if (!$this->getTableByName($table->getName())) {
+      $this->tables[] = $table;
+    }
+
+    return $this;
+  }
+
+  /**
+   * @param array $tables
+   */
+  public function addTables(array $tables) {
+    foreach ($tables as $table) {
+      $this->addTable($table);
+    }
+  }
+
+  /**
+   * Recursive function to traverse the schema looking for a path
+   *
+   * @param Table $table
+   *   The current table to base fromm
+   * @param string $target
+   *   The target joinable table alias
+   * @param int $depth
+   *   The current level of recursion which reflects the number of joins needed
+   * @param \Civi\Api4\Service\Schema\Joinable\Joinable[] $path
+   *   (By-reference) The possible paths to the target table
+   * @param \Civi\Api4\Service\Schema\Joinable\Joinable[] $currentPath
+   *   For internal use only to track the path to reach the target table
+   */
+  private function findPaths(Table $table, $target, $depth, &$path, $currentPath = []
+  ) {
+    static $visited = [];
+
+    // reset if new call
+    if ($depth === 1) {
+      $visited = [];
+    }
+
+    $canBeShorter = empty($path) || count($currentPath) + 1 < count($path);
+    $tooFar = $depth > self::MAX_JOIN_DEPTH;
+    $beenHere = in_array($table->getName(), $visited);
+
+    if ($tooFar || $beenHere || !$canBeShorter) {
+      return;
+    }
+
+    // prevent circular reference
+    $visited[] = $table->getName();
+
+    foreach ($table->getExternalLinks() as $link) {
+      if ($link->getAlias() === $target) {
+        $path = array_merge($currentPath, [$link]);
+      }
+      else {
+        $linkTable = $this->getTableByName($link->getTargetTable());
+        if ($linkTable) {
+          $nextStep = array_merge($currentPath, [$link]);
+          $this->findPaths($linkTable, $target, $depth + 1, $path, $nextStep);
+        }
+      }
+    }
+  }
+
+}
diff --git a/Civi/Api4/Service/Schema/SchemaMapBuilder.php b/Civi/Api4/Service/Schema/SchemaMapBuilder.php
new file mode 100644 (file)
index 0000000..76d11bc
--- /dev/null
@@ -0,0 +1,252 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Schema;
+
+use Civi\Api4\Entity;
+use Civi\Api4\Event\Events;
+use Civi\Api4\Event\SchemaMapBuildEvent;
+use Civi\Api4\Service\Schema\Joinable\CustomGroupJoinable;
+use Civi\Api4\Service\Schema\Joinable\Joinable;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+use Civi\Api4\Service\Schema\Joinable\OptionValueJoinable;
+use CRM_Core_DAO_AllCoreTables as AllCoreTables;
+use CRM_Utils_Array as UtilsArray;
+
+class SchemaMapBuilder {
+  /**
+   * @var \Symfony\Component\EventDispatcher\EventDispatcherInterface
+   */
+  protected $dispatcher;
+  /**
+   * @var array
+   */
+  protected $apiEntities;
+
+  /**
+   * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $dispatcher
+   */
+  public function __construct(EventDispatcherInterface $dispatcher) {
+    $this->dispatcher = $dispatcher;
+    $this->apiEntities = array_keys((array) Entity::get()->setCheckPermissions(FALSE)->addSelect('name')->execute()->indexBy('name'));
+  }
+
+  /**
+   * @return SchemaMap
+   */
+  public function build() {
+    $map = new SchemaMap();
+    $this->loadTables($map);
+
+    $event = new SchemaMapBuildEvent($map);
+    $this->dispatcher->dispatch(Events::SCHEMA_MAP_BUILD, $event);
+
+    return $map;
+  }
+
+  /**
+   * Add all tables and joins
+   *
+   * @param SchemaMap $map
+   */
+  private function loadTables(SchemaMap $map) {
+    /** @var \CRM_Core_DAO $daoName */
+    foreach (AllCoreTables::get() as $daoName => $data) {
+      $table = new Table($data['table']);
+      foreach ($daoName::fields() as $field => $fieldData) {
+        $this->addJoins($table, $field, $fieldData);
+      }
+      $map->addTable($table);
+      if (in_array($data['name'], $this->apiEntities)) {
+        $this->addCustomFields($map, $table, $data['name']);
+      }
+    }
+
+    $this->addBackReferences($map);
+  }
+
+  /**
+   * @param Table $table
+   * @param string $field
+   * @param array $data
+   */
+  private function addJoins(Table $table, $field, array $data) {
+    $fkClass = UtilsArray::value('FKClassName', $data);
+
+    // can there be multiple methods e.g. pseudoconstant and fkclass
+    if ($fkClass) {
+      $tableName = AllCoreTables::getTableForClass($fkClass);
+      $fkKey = UtilsArray::value('FKKeyColumn', $data, 'id');
+      $alias = str_replace('_id', '', $field);
+      $joinable = new Joinable($tableName, $fkKey, $alias);
+      $joinable->setJoinType($joinable::JOIN_TYPE_MANY_TO_ONE);
+      $table->addTableLink($field, $joinable);
+    }
+    elseif (UtilsArray::value('pseudoconstant', $data)) {
+      $this->addPseudoConstantJoin($table, $field, $data);
+    }
+  }
+
+  /**
+   * @param Table $table
+   * @param string $field
+   * @param array $data
+   */
+  private function addPseudoConstantJoin(Table $table, $field, array $data) {
+    $pseudoConstant = UtilsArray::value('pseudoconstant', $data);
+    $tableName = UtilsArray::value('table', $pseudoConstant);
+    $optionGroupName = UtilsArray::value('optionGroupName', $pseudoConstant);
+    $keyColumn = UtilsArray::value('keyColumn', $pseudoConstant, 'id');
+
+    if ($tableName) {
+      $alias = str_replace('civicrm_', '', $tableName);
+      $joinable = new Joinable($tableName, $keyColumn, $alias);
+      $condition = UtilsArray::value('condition', $pseudoConstant);
+      if ($condition) {
+        $joinable->addCondition($condition);
+      }
+      $table->addTableLink($field, $joinable);
+    }
+    elseif ($optionGroupName) {
+      $keyColumn = UtilsArray::value('keyColumn', $pseudoConstant, 'value');
+      $joinable = new OptionValueJoinable($optionGroupName, NULL, $keyColumn);
+
+      if (!empty($data['serialize'])) {
+        $joinable->setJoinType($joinable::JOIN_TYPE_ONE_TO_MANY);
+      }
+
+      $table->addTableLink($field, $joinable);
+    }
+  }
+
+  /**
+   * Loop through existing links and provide link from the other side
+   *
+   * @param SchemaMap $map
+   */
+  private function addBackReferences(SchemaMap $map) {
+    foreach ($map->getTables() as $table) {
+      foreach ($table->getTableLinks() as $link) {
+        // there are too many possible joins from option value so skip
+        if ($link instanceof OptionValueJoinable) {
+          continue;
+        }
+
+        $target = $map->getTableByName($link->getTargetTable());
+        $tableName = $link->getBaseTable();
+        $plural = str_replace('civicrm_', '', $this->getPlural($tableName));
+        $joinable = new Joinable($tableName, $link->getBaseColumn(), $plural);
+        $joinable->setJoinType($joinable::JOIN_TYPE_ONE_TO_MANY);
+        $target->addTableLink($link->getTargetColumn(), $joinable);
+      }
+    }
+  }
+
+  /**
+   * Simple implementation of pluralization.
+   * Could be replaced with symfony/inflector
+   *
+   * @param string $singular
+   *
+   * @return string
+   */
+  private function getPlural($singular) {
+    $last_letter = substr($singular, -1);
+    switch ($last_letter) {
+      case 'y':
+        return substr($singular, 0, -1) . 'ies';
+
+      case 's':
+        return $singular . 'es';
+
+      default:
+        return $singular . 's';
+    }
+  }
+
+  /**
+   * @param \Civi\Api4\Service\Schema\SchemaMap $map
+   * @param \Civi\Api4\Service\Schema\Table $baseTable
+   * @param string $entity
+   */
+  private function addCustomFields(SchemaMap $map, Table $baseTable, $entity) {
+    // Don't be silly
+    if (!array_key_exists($entity, \CRM_Core_SelectValues::customGroupExtends())) {
+      return;
+    }
+    $queryEntity = (array) $entity;
+    if ($entity == 'Contact') {
+      $queryEntity = ['Contact', 'Individual', 'Organization', 'Household'];
+    }
+    $fieldData = \CRM_Utils_SQL_Select::from('civicrm_custom_field f')
+      ->join('custom_group', 'INNER JOIN civicrm_custom_group g ON g.id = f.custom_group_id')
+      ->select(['g.name as custom_group_name', 'g.table_name', 'g.is_multiple', 'f.name', 'label', 'column_name', 'option_group_id'])
+      ->where('g.extends IN (@entity)', ['@entity' => $queryEntity])
+      ->where('g.is_active')
+      ->where('f.is_active')
+      ->execute();
+
+    $links = [];
+
+    while ($fieldData->fetch()) {
+      $tableName = $fieldData->table_name;
+
+      $customTable = $map->getTableByName($tableName);
+      if (!$customTable) {
+        $customTable = new Table($tableName);
+      }
+
+      if (!empty($fieldData->option_group_id)) {
+        $optionValueJoinable = new OptionValueJoinable($fieldData->option_group_id, $fieldData->label);
+        $customTable->addTableLink($fieldData->column_name, $optionValueJoinable);
+      }
+
+      $map->addTable($customTable);
+
+      $alias = $fieldData->custom_group_name;
+      $links[$alias]['tableName'] = $tableName;
+      $links[$alias]['isMultiple'] = !empty($fieldData->is_multiple);
+      $links[$alias]['columns'][$fieldData->name] = $fieldData->column_name;
+    }
+
+    foreach ($links as $alias => $link) {
+      $joinable = new CustomGroupJoinable($link['tableName'], $alias, $link['isMultiple'], $entity, $link['columns']);
+      $baseTable->addTableLink('id', $joinable);
+    }
+  }
+
+}
diff --git a/Civi/Api4/Service/Schema/Table.php b/Civi/Api4/Service/Schema/Table.php
new file mode 100644 (file)
index 0000000..a5a8182
--- /dev/null
@@ -0,0 +1,163 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Schema;
+
+use Civi\Api4\Service\Schema\Joinable\Joinable;
+
+class Table {
+
+  /**
+   * @var string
+   */
+  protected $name;
+
+  /**
+   * @var \Civi\Api4\Service\Schema\Joinable\Joinable[]
+   *   Array of links to other tables
+   */
+  protected $tableLinks = [];
+
+  /**
+   * @param $name
+   */
+  public function __construct($name) {
+    $this->name = $name;
+  }
+
+  /**
+   * @return string
+   */
+  public function getName() {
+    return $this->name;
+  }
+
+  /**
+   * @param string $name
+   *
+   * @return $this
+   */
+  public function setName($name) {
+    $this->name = $name;
+
+    return $this;
+  }
+
+  /**
+   * @return \Civi\Api4\Service\Schema\Joinable\Joinable[]
+   */
+  public function getTableLinks() {
+    return $this->tableLinks;
+  }
+
+  /**
+   * @return \Civi\Api4\Service\Schema\Joinable\Joinable[]
+   *   Only those links that are not joining the table to itself
+   */
+  public function getExternalLinks() {
+    return array_filter($this->tableLinks, function (Joinable $joinable) {
+      return $joinable->getTargetTable() !== $this->getName();
+    });
+  }
+
+  /**
+   * @param \Civi\Api4\Service\Schema\Joinable\Joinable $linkToRemove
+   */
+  public function removeLink(Joinable $linkToRemove) {
+    foreach ($this->tableLinks as $index => $link) {
+      if ($link === $linkToRemove) {
+        unset($this->tableLinks[$index]);
+      }
+    }
+  }
+
+  /**
+   * @param string $baseColumn
+   * @param \Civi\Api4\Service\Schema\Joinable\Joinable $joinable
+   *
+   * @return $this
+   */
+  public function addTableLink($baseColumn, Joinable $joinable) {
+    $target = $joinable->getTargetTable();
+    $targetCol = $joinable->getTargetColumn();
+    $alias = $joinable->getAlias();
+
+    if (!$this->hasLink($target, $targetCol, $alias)) {
+      if (!$joinable->getBaseTable()) {
+        $joinable->setBaseTable($this->getName());
+      }
+      if (!$joinable->getBaseColumn()) {
+        $joinable->setBaseColumn($baseColumn);
+      }
+      $this->tableLinks[] = $joinable;
+    }
+
+    return $this;
+  }
+
+  /**
+   * @param mixed $tableLinks
+   *
+   * @return $this
+   */
+  public function setTableLinks($tableLinks) {
+    $this->tableLinks = $tableLinks;
+
+    return $this;
+  }
+
+  /**
+   * @param $target
+   * @param $targetCol
+   * @param $alias
+   *
+   * @return bool
+   */
+  private function hasLink($target, $targetCol, $alias) {
+    foreach ($this->tableLinks as $link) {
+      if ($link->getTargetTable() === $target
+        && $link->getTargetColumn() === $targetCol
+        && $link->getAlias() === $alias
+      ) {
+        return TRUE;
+      }
+    }
+
+    return FALSE;
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/CustomFieldSpec.php b/Civi/Api4/Service/Spec/CustomFieldSpec.php
new file mode 100644 (file)
index 0000000..d3f9423
--- /dev/null
@@ -0,0 +1,153 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec;
+
+class CustomFieldSpec extends FieldSpec {
+  /**
+   * @var int
+   */
+  protected $customFieldId;
+
+  /**
+   * @var int
+   */
+  protected $customGroup;
+
+  /**
+   * @var string
+   */
+  protected $tableName;
+
+  /**
+   * @var string
+   */
+  protected $columnName;
+
+  /**
+   * @inheritDoc
+   */
+  public function setDataType($dataType) {
+    switch ($dataType) {
+      case 'ContactReference':
+        $this->setFkEntity('Contact');
+        $dataType = 'Integer';
+        break;
+
+      case 'File':
+      case 'StateProvince':
+      case 'Country':
+        $this->setFkEntity($dataType);
+        $dataType = 'Integer';
+        break;
+    }
+    return parent::setDataType($dataType);
+  }
+
+  /**
+   * @return int
+   */
+  public function getCustomFieldId() {
+    return $this->customFieldId;
+  }
+
+  /**
+   * @param int $customFieldId
+   *
+   * @return $this
+   */
+  public function setCustomFieldId($customFieldId) {
+    $this->customFieldId = $customFieldId;
+
+    return $this;
+  }
+
+  /**
+   * @return int
+   */
+  public function getCustomGroupName() {
+    return $this->customGroup;
+  }
+
+  /**
+   * @param string $customGroupName
+   *
+   * @return $this
+   */
+  public function setCustomGroupName($customGroupName) {
+    $this->customGroup = $customGroupName;
+
+    return $this;
+  }
+
+  /**
+   * @return string
+   */
+  public function getCustomTableName() {
+    return $this->tableName;
+  }
+
+  /**
+   * @param string $customFieldColumnName
+   *
+   * @return $this
+   */
+  public function setCustomTableName($customFieldColumnName) {
+    $this->tableName = $customFieldColumnName;
+
+    return $this;
+  }
+
+  /**
+   * @return string
+   */
+  public function getCustomFieldColumnName() {
+    return $this->columnName;
+  }
+
+  /**
+   * @param string $customFieldColumnName
+   *
+   * @return $this
+   */
+  public function setCustomFieldColumnName($customFieldColumnName) {
+    $this->columnName = $customFieldColumnName;
+
+    return $this;
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/FieldSpec.php b/Civi/Api4/Service/Spec/FieldSpec.php
new file mode 100644 (file)
index 0000000..7a44a1d
--- /dev/null
@@ -0,0 +1,402 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec;
+
+use Civi\Api4\Utils\CoreUtil;
+
+class FieldSpec {
+  /**
+   * @var mixed
+   */
+  protected $defaultValue;
+
+  /**
+   * @var string
+   */
+  protected $name;
+
+  /**
+   * @var string
+   */
+  protected $title;
+
+  /**
+   * @var string
+   */
+  protected $entity;
+
+  /**
+   * @var string
+   */
+  protected $description;
+
+  /**
+   * @var bool
+   */
+  protected $required = FALSE;
+
+  /**
+   * @var bool
+   */
+  protected $requiredIf;
+
+  /**
+   * @var array|boolean
+   */
+  protected $options;
+
+  /**
+   * @var string
+   */
+  protected $dataType;
+
+  /**
+   * @var string
+   */
+  protected $inputType;
+
+  /**
+   * @var array
+   */
+  protected $inputAttrs = [];
+
+  /**
+   * @var string
+   */
+  protected $fkEntity;
+
+  /**
+   * @var int
+   */
+  protected $serialize;
+
+  /**
+   * Aliases for the valid data types
+   *
+   * @var array
+   */
+  public static $typeAliases = [
+    'Int' => 'Integer',
+    'Link' => 'Url',
+    'Memo' => 'Text',
+  ];
+
+  /**
+   * @param string $name
+   * @param string $entity
+   * @param string $dataType
+   */
+  public function __construct($name, $entity, $dataType = 'String') {
+    $this->entity = $entity;
+    $this->setName($name);
+    $this->setDataType($dataType);
+  }
+
+  /**
+   * @return mixed
+   */
+  public function getDefaultValue() {
+    return $this->defaultValue;
+  }
+
+  /**
+   * @param mixed $defaultValue
+   *
+   * @return $this
+   */
+  public function setDefaultValue($defaultValue) {
+    $this->defaultValue = $defaultValue;
+
+    return $this;
+  }
+
+  /**
+   * @return string
+   */
+  public function getName() {
+    return $this->name;
+  }
+
+  /**
+   * @param string $name
+   *
+   * @return $this
+   */
+  public function setName($name) {
+    $this->name = $name;
+
+    return $this;
+  }
+
+  /**
+   * @return string
+   */
+  public function getTitle() {
+    return $this->title;
+  }
+
+  /**
+   * @param string $title
+   *
+   * @return $this
+   */
+  public function setTitle($title) {
+    $this->title = $title;
+
+    return $this;
+  }
+
+  /**
+   * @return string
+   */
+  public function getEntity() {
+    return $this->entity;
+  }
+
+  /**
+   * @return string
+   */
+  public function getDescription() {
+    return $this->description;
+  }
+
+  /**
+   * @param string $description
+   *
+   * @return $this
+   */
+  public function setDescription($description) {
+    $this->description = $description;
+
+    return $this;
+  }
+
+  /**
+   * @return bool
+   */
+  public function isRequired() {
+    return $this->required;
+  }
+
+  /**
+   * @param bool $required
+   *
+   * @return $this
+   */
+  public function setRequired($required) {
+    $this->required = $required;
+
+    return $this;
+  }
+
+  /**
+   * @return bool
+   */
+  public function getRequiredIf() {
+    return $this->requiredIf;
+  }
+
+  /**
+   * @param bool $requiredIf
+   *
+   * @return $this
+   */
+  public function setRequiredIf($requiredIf) {
+    $this->requiredIf = $requiredIf;
+
+    return $this;
+  }
+
+  /**
+   * @return string
+   */
+  public function getDataType() {
+    return $this->dataType;
+  }
+
+  /**
+   * @param $dataType
+   *
+   * @return $this
+   * @throws \Exception
+   */
+  public function setDataType($dataType) {
+    if (array_key_exists($dataType, self::$typeAliases)) {
+      $dataType = self::$typeAliases[$dataType];
+    }
+
+    if (!in_array($dataType, $this->getValidDataTypes())) {
+      throw new \Exception(sprintf('Invalid data type "%s', $dataType));
+    }
+
+    $this->dataType = $dataType;
+
+    return $this;
+  }
+
+  /**
+   * @return int
+   */
+  public function getSerialize() {
+    return $this->serialize;
+  }
+
+  /**
+   * @param int|null $serialize
+   * @return $this
+   */
+  public function setSerialize($serialize) {
+    $this->serialize = $serialize;
+
+    return $this;
+  }
+
+  /**
+   * @return string
+   */
+  public function getInputType() {
+    return $this->inputType;
+  }
+
+  /**
+   * @param string $inputType
+   * @return $this
+   */
+  public function setInputType($inputType) {
+    $this->inputType = $inputType;
+
+    return $this;
+  }
+
+  /**
+   * @return array
+   */
+  public function getInputAttrs() {
+    return $this->inputAttrs;
+  }
+
+  /**
+   * @param array $inputAttrs
+   * @return $this
+   */
+  public function setInputAttrs($inputAttrs) {
+    $this->inputAttrs = $inputAttrs;
+
+    return $this;
+  }
+
+  /**
+   * Add valid types that are not not part of \CRM_Utils_Type::dataTypes
+   *
+   * @return array
+   */
+  private function getValidDataTypes() {
+    $extraTypes = ['Boolean', 'Text', 'Float', 'Url', 'Array'];
+    $extraTypes = array_combine($extraTypes, $extraTypes);
+
+    return array_merge(\CRM_Utils_Type::dataTypes(), $extraTypes);
+  }
+
+  /**
+   * @return array
+   */
+  public function getOptions() {
+    if (!isset($this->options) || $this->options === TRUE) {
+      $fieldName = $this->getName();
+
+      if ($this instanceof CustomFieldSpec) {
+        // buildOptions relies on the custom_* type of field names
+        $fieldName = sprintf('custom_%d', $this->getCustomFieldId());
+      }
+
+      $bao = CoreUtil::getBAOFromApiName($this->getEntity());
+      $options = $bao::buildOptions($fieldName);
+
+      if (!is_array($options) || !$options) {
+        $options = FALSE;
+      }
+
+      $this->setOptions($options);
+    }
+    return $this->options;
+  }
+
+  /**
+   * @param array|bool $options
+   *
+   * @return $this
+   */
+  public function setOptions($options) {
+    $this->options = $options;
+    return $this;
+  }
+
+  /**
+   * @return string
+   */
+  public function getFkEntity() {
+    return $this->fkEntity;
+  }
+
+  /**
+   * @param string $fkEntity
+   *
+   * @return $this
+   */
+  public function setFkEntity($fkEntity) {
+    $this->fkEntity = $fkEntity;
+
+    return $this;
+  }
+
+  /**
+   * @param array $values
+   * @return array
+   */
+  public function toArray($values = []) {
+    $ret = [];
+    foreach (get_object_vars($this) as $key => $val) {
+      $key = strtolower(preg_replace('/(?=[A-Z])/', '_$0', $key));
+      if (!$values || in_array($key, $values)) {
+        $ret[$key] = $val;
+      }
+    }
+    return $ret;
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/ACLCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/ACLCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..856b6cf
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class ACLCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('entity_table')->setDefaultValue('civicrm_acl_role');
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'ACL' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..833d96a
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class ActionScheduleCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('title')->setRequired(TRUE);
+    $spec->getFieldByName('mapping_id')->setRequired(TRUE);
+    $spec->getFieldByName('entity_value')->setRequired(TRUE);
+    $spec->getFieldByName('start_action_date')->setRequiredIf('empty($values.absolute_date)');
+    $spec->getFieldByName('absolute_date')->setRequiredIf('empty($values.start_action_date)');
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'ActionSchedule' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/ActivityCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..4e59727
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\FieldSpec;
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class ActivityCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $sourceContactField = new FieldSpec('source_contact_id', 'Activity', 'Integer');
+    $sourceContactField->setRequired(TRUE);
+    $sourceContactField->setFkEntity('Contact');
+
+    $spec->addFieldSpec($sourceContactField);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Activity' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/AddressCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..3febce6
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class AddressCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @param \Civi\Api4\Service\Spec\RequestSpec $spec
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('contact_id')->setRequired(TRUE);
+    $spec->getFieldByName('location_type_id')->setRequired(TRUE);
+  }
+
+  /**
+   * @param string $entity
+   * @param string $action
+   *
+   * @return bool
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Address' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..9e39553
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class CampaignCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('title')->setRequired(TRUE);
+    $spec->getFieldByName('name')->setRequired(FALSE);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Campaign' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/ContactCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..d57817d
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class ContactCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @param \Civi\Api4\Service\Spec\RequestSpec $spec
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('contact_type')
+      ->setDefaultValue('Individual');
+
+    $spec->getFieldByName('is_opt_out')->setRequired(FALSE);
+    $spec->getFieldByName('is_deleted')->setRequired(FALSE);
+
+  }
+
+  /**
+   * @param string $entity
+   * @param string $action
+   *
+   * @return bool
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Contact' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/ContactTypeCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/ContactTypeCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..d211c02
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class ContactTypeCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @param \Civi\Api4\Service\Spec\RequestSpec $spec
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('label')->setRequired(TRUE);
+    $spec->getFieldByName('name')->setRequired(TRUE);
+    $spec->getFieldByName('parent_id')->setRequired(TRUE);
+
+  }
+
+  /**
+   * @param string $entity
+   * @param string $action
+   *
+   * @return bool
+   */
+  public function applies($entity, $action) {
+    return $entity === 'ContactType' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..4ad937b
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class ContributionCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('financial_type_id')->setRequired(TRUE);
+    $spec->getFieldByName('receive_date')->setDefaultValue('now');
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Contribution' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/CustomFieldCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/CustomFieldCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..a0921ef
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\FieldSpec;
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class CustomFieldCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $optionField = new FieldSpec('option_values', $spec->getEntity(), 'Array');
+    $optionField->setTitle(ts('Option Values'));
+    $optionField->setDescription('Pass an array of options (value => label) to create this field\'s option values');
+    $spec->addFieldSpec($optionField);
+    $spec->getFieldByName('data_type')->setDefaultValue('String')->setRequired(FALSE);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'CustomField' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/CustomGroupCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..2a2555a
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class CustomGroupCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('extends')->setRequired(TRUE);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'CustomGroup' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php b/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php
new file mode 100644 (file)
index 0000000..3d082b6
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\FieldSpec;
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class CustomValueSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $action = $spec->getAction();
+    if ($action !== 'create') {
+      $idField = new FieldSpec('id', $spec->getEntity(), 'Integer');
+      $idField->setTitle(ts('Custom Value ID'));
+      $spec->addFieldSpec($idField);
+    }
+    $entityField = new FieldSpec('entity_id', $spec->getEntity(), 'Integer');
+    $entityField->setTitle(ts('Entity ID'));
+    $entityField->setRequired($action === 'create');
+    $entityField->setFkEntity('Contact');
+    $spec->addFieldSpec($entityField);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return strstr($entity, 'Custom_');
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/DefaultLocationTypeProvider.php b/Civi/Api4/Service/Spec/Provider/DefaultLocationTypeProvider.php
new file mode 100644 (file)
index 0000000..908450d
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class DefaultLocationTypeProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $locationField = $spec->getFieldByName('location_type_id')->setRequired(TRUE);
+    $defaultType = \CRM_Core_BAO_LocationType::getDefault();
+    if ($defaultType) {
+      $locationField->setDefaultValue($defaultType->id);
+    }
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $action === 'create' && in_array($entity, ['Address', 'Email', 'IM', 'OpenID', 'Phone']);
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/DomainCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/DomainCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..22bc5d4
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class DomainCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('name')->setRequired(TRUE);
+    $spec->getFieldByName('version')->setRequired(TRUE);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Domain' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..fde8e08
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class EmailCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('contact_id')->setRequired(TRUE);
+    $spec->getFieldByName('email')->setRequired(TRUE);
+    $spec->getFieldByName('on_hold')->setRequired(FALSE);
+    $spec->getFieldByName('is_bulkmail')->setRequired(FALSE);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Email' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/EntityTagCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/EntityTagCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..cc0f5b6
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class EntityTagCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @param \Civi\Api4\Service\Spec\RequestSpec $spec
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('entity_table')->setRequired(FALSE)->setDefaultValue('civicrm_contact');
+  }
+
+  /**
+   * @param string $entity
+   * @param string $action
+   *
+   * @return bool
+   */
+  public function applies($entity, $action) {
+    return $entity === 'EntityTag' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..301a8d8
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\FieldSpec;
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class EventCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('event_type_id')->setRequiredIf('empty($values.template_id)');
+    $spec->getFieldByName('title')->setRequiredIf('empty($values.is_template)');
+    $spec->getFieldByName('start_date')->setRequiredIf('empty($values.is_template)');
+    $spec->getFieldByName('template_title')->setRequiredIf('!empty($values.is_template)');
+
+    $template_id = new FieldSpec('template_id', 'Event', 'Integer');
+    $template_id
+      ->setTitle('Template Id')
+      ->setDescription('Template on which to base this new event');
+    $spec->addFieldSpec($template_id);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Event' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php b/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php
new file mode 100644 (file)
index 0000000..35dc09b
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider\Generic;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+interface SpecProviderInterface {
+
+  /**
+   * @param \Civi\Api4\Service\Spec\RequestSpec $spec
+   *
+   * @return void
+   */
+  public function modifySpec(RequestSpec $spec);
+
+  /**
+   * @param string $entity
+   * @param string $action
+   *
+   * @return bool
+   */
+  public function applies($entity, $action);
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php b/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php
new file mode 100644 (file)
index 0000000..f532e35
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class GetActionDefaultsProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    // Exclude deleted records from api Get by default
+    $isDeletedField = $spec->getFieldByName('is_deleted');
+    if ($isDeletedField) {
+      $isDeletedField->setDefaultValue('0');
+    }
+
+    // Exclude test records from api Get by default
+    $isTestField = $spec->getFieldByName('is_test');
+    if ($isTestField) {
+      $isTestField->setDefaultValue('0');
+    }
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $action === 'get';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/GroupCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/GroupCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..975296f
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class GroupCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('title')->setRequired(TRUE);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Group' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/MappingCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/MappingCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..7058659
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class MappingCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * This function runs for both Mapping and MappingField entities
+   *
+   * @param \Civi\Api4\Service\Spec\RequestSpec $spec
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('name')->setRequired(TRUE);
+  }
+
+  /**
+   * @param string $entity
+   * @param string $action
+   *
+   * @return bool
+   */
+  public function applies($entity, $action) {
+    return strpos($entity, 'Mapping') === 0 && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/NavigationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/NavigationSpecProvider.php
new file mode 100644 (file)
index 0000000..2af06eb
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class NavigationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * This runs for both create and get actions
+   *
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('domain_id')->setRequired(FALSE)->setDefaultValue('current_domain');
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Navigation' && in_array($action, ['create', 'get']);
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/NoteCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/NoteCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..1b04539
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class NoteCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @param \Civi\Api4\Service\Spec\RequestSpec $spec
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('note')->setRequired(TRUE);
+    $spec->getFieldByName('entity_table')->setDefaultValue('civicrm_contact');
+  }
+
+  /**
+   * @param string $entity
+   * @param string $action
+   *
+   * @return bool
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Note' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/OptionValueCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/OptionValueCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..f46859f
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class OptionValueCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('weight')->setRequired(FALSE);
+    $spec->getFieldByName('value')->setRequired(FALSE);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'OptionValue' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/PhoneCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/PhoneCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..1e259ce
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class PhoneCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('contact_id')->setRequired(TRUE);
+    $spec->getFieldByName('phone')->setRequired(TRUE);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Phone' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/RelationshipTypeCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/RelationshipTypeCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..ca390bd
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class RelationshipTypeCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('name_a_b')->setRequired(TRUE);
+    $spec->getFieldByName('name_b_a')->setRequired(TRUE);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'RelationshipType' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/StatusPreferenceCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/StatusPreferenceCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..369137d
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class StatusPreferenceCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('domain_id')->setRequired(FALSE);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'StatusPreference' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/TagCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..c876787
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class TagCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @param \Civi\Api4\Service\Spec\RequestSpec $spec
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('used_for')->setDefaultValue('civicrm_contact');
+  }
+
+  /**
+   * @param string $entity
+   * @param string $action
+   *
+   * @return bool
+   */
+  public function applies($entity, $action) {
+    return $entity === 'Tag' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/UFFieldCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/UFFieldCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..f0ae2b1
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class UFFieldCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('label')->setRequired(FALSE);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'UFField' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/Provider/UFMatchCreationSpecProvider.php b/Civi/Api4/Service/Spec/Provider/UFMatchCreationSpecProvider.php
new file mode 100644 (file)
index 0000000..450aa3c
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\RequestSpec;
+
+class UFMatchCreationSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   */
+  public function modifySpec(RequestSpec $spec) {
+    $spec->getFieldByName('domain_id')->setRequired(FALSE);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action) {
+    return $entity === 'UFMatch' && $action === 'create';
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/RequestSpec.php b/Civi/Api4/Service/Spec/RequestSpec.php
new file mode 100644 (file)
index 0000000..22bc46d
--- /dev/null
@@ -0,0 +1,145 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec;
+
+class RequestSpec {
+
+  /**
+   * @var string
+   */
+  protected $entity;
+
+  /**
+   * @var string
+   */
+  protected $action;
+
+  /**
+   * @var FieldSpec[]
+   */
+  protected $fields = [];
+
+  /**
+   * @param string $entity
+   * @param string $action
+   */
+  public function __construct($entity, $action) {
+    $this->entity = $entity;
+    $this->action = $action;
+  }
+
+  public function addFieldSpec(FieldSpec $field) {
+    $this->fields[] = $field;
+  }
+
+  /**
+   * @param $name
+   *
+   * @return FieldSpec|null
+   */
+  public function getFieldByName($name) {
+    foreach ($this->fields as $field) {
+      if ($field->getName() === $name) {
+        return $field;
+      }
+    }
+
+    return NULL;
+  }
+
+  /**
+   * @return array
+   *   Gets all the field names currently part of the specification
+   */
+  public function getFieldNames() {
+    return array_map(function(FieldSpec $field) {
+      return $field->getName();
+    }, $this->fields);
+  }
+
+  /**
+   * @return array|FieldSpec[]
+   */
+  public function getRequiredFields() {
+    return array_filter($this->fields, function (FieldSpec $field) {
+      return $field->isRequired();
+    });
+  }
+
+  /**
+   * @return array|FieldSpec[]
+   */
+  public function getConditionalRequiredFields() {
+    return array_filter($this->fields, function (FieldSpec $field) {
+      return $field->getRequiredIf();
+    });
+  }
+
+  /**
+   * @param array $fieldNames
+   *   Optional array of fields to return
+   * @return FieldSpec[]
+   */
+  public function getFields($fieldNames = NULL) {
+    if (!$fieldNames) {
+      return $this->fields;
+    }
+    $fields = [];
+    foreach ($this->fields as $field) {
+      if (in_array($field->getName(), $fieldNames)) {
+        $fields[] = $field;
+      }
+    }
+    return $fields;
+  }
+
+  /**
+   * @return string
+   */
+  public function getEntity() {
+    return $this->entity;
+  }
+
+  /**
+   * @return string
+   */
+  public function getAction() {
+    return $this->action;
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/SpecFormatter.php b/Civi/Api4/Service/Spec/SpecFormatter.php
new file mode 100644 (file)
index 0000000..b1c1c80
--- /dev/null
@@ -0,0 +1,251 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec;
+
+use CRM_Utils_Array as ArrayHelper;
+use CRM_Core_DAO_AllCoreTables as AllCoreTables;
+
+class SpecFormatter {
+
+  /**
+   * @param FieldSpec[] $fields
+   * @param bool $includeFieldOptions
+   *
+   * @return array
+   */
+  public static function specToArray($fields, $includeFieldOptions = FALSE) {
+    $fieldArray = [];
+
+    foreach ($fields as $field) {
+      if ($includeFieldOptions) {
+        $field->getOptions();
+      }
+      $fieldArray[$field->getName()] = $field->toArray();
+    }
+
+    return $fieldArray;
+  }
+
+  /**
+   * @param array $data
+   * @param string $entity
+   *
+   * @return FieldSpec
+   */
+  public static function arrayToField(array $data, $entity) {
+    $dataTypeName = self::getDataType($data);
+
+    if (!empty($data['custom_group_id'])) {
+      $field = new CustomFieldSpec($data['name'], $entity, $dataTypeName);
+      if (strpos($entity, 'Custom_') !== 0) {
+        $field->setName($data['custom_group.name'] . '.' . $data['name']);
+      }
+      else {
+        $field->setCustomTableName($data['custom_group.table_name']);
+        $field->setCustomFieldColumnName($data['column_name']);
+      }
+      $field->setCustomFieldId(ArrayHelper::value('id', $data));
+      $field->setCustomGroupName($data['custom_group.name']);
+      $field->setTitle(ArrayHelper::value('label', $data));
+      $field->setOptions(self::customFieldHasOptions($data));
+      if (\CRM_Core_BAO_CustomField::isSerialized($data)) {
+        $field->setSerialize(\CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND);
+      }
+    }
+    else {
+      $name = ArrayHelper::value('name', $data);
+      $field = new FieldSpec($name, $entity, $dataTypeName);
+      $field->setRequired((bool) ArrayHelper::value('required', $data, FALSE));
+      $field->setTitle(ArrayHelper::value('title', $data));
+      $field->setOptions(!empty($data['pseudoconstant']));
+      $field->setSerialize(ArrayHelper::value('serialize', $data));
+    }
+
+    $field->setDefaultValue(ArrayHelper::value('default', $data));
+    $field->setDescription(ArrayHelper::value('description', $data));
+    self::setInputTypeAndAttrs($field, $data, $dataTypeName);
+
+    $fkAPIName = ArrayHelper::value('FKApiName', $data);
+    $fkClassName = ArrayHelper::value('FKClassName', $data);
+    if ($fkAPIName || $fkClassName) {
+      $field->setFkEntity($fkAPIName ?: AllCoreTables::getBriefName($fkClassName));
+    }
+
+    return $field;
+  }
+
+  /**
+   * Does this custom field have options
+   *
+   * @param array $field
+   * @return bool
+   */
+  private static function customFieldHasOptions($field) {
+    // This will include boolean fields with Yes/No options.
+    if (in_array($field['html_type'], ['Radio', 'CheckBox'])) {
+      return TRUE;
+    }
+    // Do this before the "Select" string search because date fields have a "Select Date" html_type
+    // and contactRef fields have an "Autocomplete-Select" html_type - contacts are an FK not an option list.
+    if (in_array($field['data_type'], ['ContactReference', 'Date'])) {
+      return FALSE;
+    }
+    if (strpos($field['html_type'], 'Select') !== FALSE) {
+      return TRUE;
+    }
+    return !empty($field['option_group_id']);
+  }
+
+  /**
+   * Get the data type from an array. Defaults to 'data_type' with fallback to
+   * mapping for the integer value 'type'
+   *
+   * @param array $data
+   *
+   * @return string
+   */
+  private static function getDataType(array $data) {
+    if (isset($data['data_type'])) {
+      return !empty($data['time_format']) ? 'Timestamp' : $data['data_type'];
+    }
+
+    $dataTypeInt = ArrayHelper::value('type', $data);
+    $dataTypeName = \CRM_Utils_Type::typeToString($dataTypeInt);
+
+    return $dataTypeName;
+  }
+
+  /**
+   * @param \Civi\Api4\Service\Spec\FieldSpec $fieldSpec
+   * @param array $data
+   * @param string $dataTypeName
+   */
+  public static function setInputTypeAndAttrs(FieldSpec &$fieldSpec, $data, $dataTypeName) {
+    $inputType = isset($data['html']['type']) ? $data['html']['type'] : ArrayHelper::value('html_type', $data);
+    $inputAttrs = ArrayHelper::value('html', $data, []);
+    unset($inputAttrs['type']);
+
+    if (!$inputType) {
+      // If no html type is set, guess
+      switch ($dataTypeName) {
+        case 'Int':
+          $inputType = 'Number';
+          $inputAttrs['min'] = 0;
+          break;
+
+        case 'Text':
+          $inputType = ArrayHelper::value('type', $data) === \CRM_Utils_Type::T_LONGTEXT ? 'TextArea' : 'Text';
+          break;
+
+        case 'Timestamp':
+          $inputType = 'Date';
+          $inputAttrs['time'] = TRUE;
+          break;
+
+        case 'Date':
+          $inputAttrs['time'] = FALSE;
+          break;
+
+        case 'Time':
+          $inputType = 'Date';
+          $inputAttrs['time'] = TRUE;
+          $inputAttrs['date'] = FALSE;
+          break;
+
+        default:
+          $map = [
+            'Email' => 'Email',
+            'Boolean' => 'Checkbox',
+          ];
+          $inputType = ArrayHelper::value($dataTypeName, $map, 'Text');
+      }
+    }
+    if (strstr($inputType, 'Multi-Select') || ($inputType == 'Select' && !empty($data['serialize']))) {
+      $inputAttrs['multiple'] = TRUE;
+      $inputType = 'Select';
+    }
+    $map = [
+      'Select State/Province' => 'Select',
+      'Select Country' => 'Select',
+      'Select Date' => 'Date',
+      'Link' => 'Url',
+    ];
+    $inputType = ArrayHelper::value($inputType, $map, $inputType);
+    if ($inputType == 'Date' && !empty($inputAttrs['formatType'])) {
+      self::setLegacyDateFormat($inputAttrs);
+    }
+    // Date/time settings from custom fields
+    if ($inputType == 'Date' && !empty($data['custom_group_id'])) {
+      $inputAttrs['time'] = empty($data['time_format']) ? FALSE : ($data['time_format'] == 1 ? 12 : 24);
+      $inputAttrs['date'] = $data['date_format'];
+      $inputAttrs['start_date_years'] = (int) $data['start_date_years'];
+      $inputAttrs['end_date_years'] = (int) $data['end_date_years'];
+    }
+    if ($inputType == 'Text' && !empty($data['maxlength'])) {
+      $inputAttrs['maxlength'] = (int) $data['maxlength'];
+    }
+    if ($inputType == 'TextArea') {
+      foreach (['rows', 'cols', 'note_rows', 'note_cols'] as $prop) {
+        if (!empty($data[$prop])) {
+          $inputAttrs[str_replace('note_', '', $prop)] = (int) $data[$prop];
+        }
+      }
+    }
+    $fieldSpec
+      ->setInputType($inputType)
+      ->setInputAttrs($inputAttrs);
+  }
+
+  /**
+   * @param array $inputAttrs
+   */
+  private static function setLegacyDateFormat(&$inputAttrs) {
+    if (empty(\Civi::$statics['legacyDatePrefs'][$inputAttrs['formatType']])) {
+      \Civi::$statics['legacyDatePrefs'][$inputAttrs['formatType']] = [];
+      $params = ['name' => $inputAttrs['formatType']];
+      \CRM_Core_DAO::commonRetrieve('CRM_Core_DAO_PreferencesDate', $params, \Civi::$statics['legacyDatePrefs'][$inputAttrs['formatType']]);
+    }
+    $dateFormat = \Civi::$statics['legacyDatePrefs'][$inputAttrs['formatType']];
+    unset($inputAttrs['formatType']);
+    $inputAttrs['time'] = !empty($dateFormat['time_format']);
+    $inputAttrs['date'] = TRUE;
+    $inputAttrs['start_date_years'] = (int) $dateFormat['start'];
+    $inputAttrs['end_date_years'] = (int) $dateFormat['end'];
+  }
+
+}
diff --git a/Civi/Api4/Service/Spec/SpecGatherer.php b/Civi/Api4/Service/Spec/SpecGatherer.php
new file mode 100644 (file)
index 0000000..d9b6e0e
--- /dev/null
@@ -0,0 +1,175 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Service\Spec;
+
+use Civi\Api4\CustomField;
+use Civi\Api4\Service\Spec\Provider\Generic\SpecProviderInterface;
+use Civi\Api4\Utils\CoreUtil;
+
+class SpecGatherer {
+
+  /**
+   * @var \Civi\Api4\Service\Spec\Provider\Generic\SpecProviderInterface[]
+   */
+  protected $specProviders = [];
+
+  /**
+   * A cache of DAOs based on entity
+   *
+   * @var \CRM_Core_DAO[]
+   */
+  protected $DAONames;
+
+  /**
+   * Returns a RequestSpec with all the fields available. Uses spec providers
+   * to add or modify field specifications.
+   * For an example @see CustomFieldSpecProvider.
+   *
+   * @param string $entity
+   * @param string $action
+   * @param $includeCustom
+   *
+   * @return \Civi\Api4\Service\Spec\RequestSpec
+   */
+  public function getSpec($entity, $action, $includeCustom) {
+    $specification = new RequestSpec($entity, $action);
+
+    // Real entities
+    if (strpos($entity, 'Custom_') !== 0) {
+      $this->addDAOFields($entity, $action, $specification);
+      if ($includeCustom && array_key_exists($entity, \CRM_Core_SelectValues::customGroupExtends())) {
+        $this->addCustomFields($entity, $specification);
+      }
+    }
+    // Custom pseudo-entities
+    else {
+      $this->getCustomGroupFields(substr($entity, 7), $specification);
+    }
+
+    // Default value only makes sense for create actions
+    if ($action != 'create') {
+      foreach ($specification->getFields() as $field) {
+        $field->setDefaultValue(NULL);
+      }
+    }
+
+    foreach ($this->specProviders as $provider) {
+      if ($provider->applies($entity, $action)) {
+        $provider->modifySpec($specification);
+      }
+    }
+
+    return $specification;
+  }
+
+  /**
+   * @param \Civi\Api4\Service\Spec\Provider\Generic\SpecProviderInterface $provider
+   */
+  public function addSpecProvider(SpecProviderInterface $provider) {
+    $this->specProviders[] = $provider;
+  }
+
+  /**
+   * @param string $entity
+   * @param string $action
+   * @param \Civi\Api4\Service\Spec\RequestSpec $specification
+   */
+  private function addDAOFields($entity, $action, RequestSpec $specification) {
+    $DAOFields = $this->getDAOFields($entity);
+
+    foreach ($DAOFields as $DAOField) {
+      if ($DAOField['name'] == 'id' && $action == 'create') {
+        continue;
+      }
+      if ($action !== 'create' || isset($DAOField['default'])) {
+        $DAOField['required'] = FALSE;
+      }
+      if ($DAOField['name'] == 'is_active' && empty($DAOField['default'])) {
+        $DAOField['default'] = '1';
+      }
+      $field = SpecFormatter::arrayToField($DAOField, $entity);
+      $specification->addFieldSpec($field);
+    }
+  }
+
+  /**
+   * @param string $entity
+   * @param \Civi\Api4\Service\Spec\RequestSpec $specification
+   */
+  private function addCustomFields($entity, RequestSpec $specification) {
+    $extends = ($entity == 'Contact') ? ['Contact', 'Individual', 'Organization', 'Household'] : [$entity];
+    $customFields = CustomField::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('custom_group.extends', 'IN', $extends)
+      ->setSelect(['custom_group.name', 'custom_group_id', 'name', 'label', 'data_type', 'html_type', 'is_searchable', 'is_search_range', 'weight', 'is_active', 'is_view', 'option_group_id', 'default_value', 'date_format', 'time_format', 'start_date_years', 'end_date_years'])
+      ->execute();
+
+    foreach ($customFields as $fieldArray) {
+      $field = SpecFormatter::arrayToField($fieldArray, $entity);
+      $specification->addFieldSpec($field);
+    }
+  }
+
+  /**
+   * @param string $customGroup
+   * @param \Civi\Api4\Service\Spec\RequestSpec $specification
+   */
+  private function getCustomGroupFields($customGroup, RequestSpec $specification) {
+    $customFields = CustomField::get()
+      ->addWhere('custom_group.name', '=', $customGroup)
+      ->setSelect(['custom_group.name', 'custom_group_id', 'name', 'label', 'data_type', 'html_type', 'is_searchable', 'is_search_range', 'weight', 'is_active', 'is_view', 'option_group_id', 'default_value', 'custom_group.table_name', 'column_name', 'date_format', 'time_format', 'start_date_years', 'end_date_years'])
+      ->execute();
+
+    foreach ($customFields as $fieldArray) {
+      $field = SpecFormatter::arrayToField($fieldArray, 'Custom_' . $customGroup);
+      $specification->addFieldSpec($field);
+    }
+  }
+
+  /**
+   * @param string $entityName
+   *
+   * @return array
+   */
+  private function getDAOFields($entityName) {
+    $bao = CoreUtil::getBAOFromApiName($entityName);
+
+    return $bao::fields();
+  }
+
+}
diff --git a/Civi/Api4/Setting.php b/Civi/Api4/Setting.php
new file mode 100644 (file)
index 0000000..47e7a56
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * CiviCRM settings api.
+ *
+ * Used to read/write persistent setting data from CiviCRM.
+ *
+ * @package Civi\Api4
+ */
+class Setting extends Generic\AbstractEntity {
+
+  public static function get() {
+    return new Action\Setting\Get(__CLASS__, __FUNCTION__);
+  }
+
+  public static function set() {
+    return new Action\Setting\Set(__CLASS__, __FUNCTION__);
+  }
+
+  public static function revert() {
+    return new Action\Setting\Revert(__CLASS__, __FUNCTION__);
+  }
+
+  public static function getFields() {
+    return new Action\Setting\GetFields(__CLASS__, __FUNCTION__);
+  }
+
+}
diff --git a/Civi/Api4/StatusPreference.php b/Civi/Api4/StatusPreference.php
new file mode 100644 (file)
index 0000000..df05c2c
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * For setting "hush" preferences for system check alerts.
+ *
+ * @package Civi\Api4
+ */
+class StatusPreference extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/System.php b/Civi/Api4/System.php
new file mode 100644 (file)
index 0000000..76b1485
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+use Civi\Api4\Generic\BasicGetFieldsAction;
+
+/**
+ * A collection of system maintenance/diagnostic utilities.
+ *
+ * @package Civi\Api4
+ */
+class System extends Generic\AbstractEntity {
+
+  public static function flush() {
+    return new Action\System\Flush(__CLASS__, __FUNCTION__);
+  }
+
+  public static function check() {
+    return new Action\System\Check(__CLASS__, __FUNCTION__);
+  }
+
+  public static function getFields() {
+    return new BasicGetFieldsAction(__CLASS__, __FUNCTION__, function() {
+      return [];
+    });
+  }
+
+}
diff --git a/Civi/Api4/Tag.php b/Civi/Api4/Tag.php
new file mode 100644 (file)
index 0000000..ec10463
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Tag entity.
+ *
+ * Tags in CiviCRM are used for Contacts, Activities, Cases & Attachments.
+ * They are connected to those entities via the EntityTag table.
+ *
+ * @package Civi\Api4
+ */
+class Tag extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/UFField.php b/Civi/Api4/UFField.php
new file mode 100644 (file)
index 0000000..91b557a
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * UFField entity - aka profile fields.
+ *
+ * @package Civi\Api4
+ */
+class UFField extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/UFGroup.php b/Civi/Api4/UFGroup.php
new file mode 100644 (file)
index 0000000..ee63189
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * UFGroup entity - AKA profiles.
+ *
+ * @package Civi\Api4
+ */
+class UFGroup extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/UFJoin.php b/Civi/Api4/UFJoin.php
new file mode 100644 (file)
index 0000000..661d55b
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * UFJoin entity - links profiles to the components/extensions they are used for.
+ *
+ * @package Civi\Api4
+ */
+class UFJoin extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/UFMatch.php b/Civi/Api4/UFMatch.php
new file mode 100644 (file)
index 0000000..7271fde
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * UFMatch entity - links civicrm contacts with users created externally
+ *
+ * @package Civi\Api4
+ */
+class UFMatch extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/Utils/ActionUtil.php b/Civi/Api4/Utils/ActionUtil.php
new file mode 100644 (file)
index 0000000..c00a399
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Utils;
+
+class ActionUtil {
+
+  /**
+   * @param $entityName
+   * @param $actionName
+   * @return \Civi\Api4\Generic\AbstractAction
+   * @throws \Civi\API\Exception\NotImplementedException
+   */
+  public static function getAction($entityName, $actionName) {
+    // For custom pseudo-entities
+    if (strpos($entityName, 'Custom_') === 0) {
+      return \Civi\Api4\CustomValue::$actionName(substr($entityName, 7));
+    }
+    else {
+      $callable = ["\\Civi\\Api4\\$entityName", $actionName];
+      if (!is_callable($callable)) {
+        throw new \Civi\API\Exception\NotImplementedException("API ($entityName, $actionName) does not exist (join the API team and implement it!)");
+      }
+      return call_user_func($callable);
+    }
+  }
+
+}
diff --git a/Civi/Api4/Utils/ArrayInsertionUtil.php b/Civi/Api4/Utils/ArrayInsertionUtil.php
new file mode 100644 (file)
index 0000000..2b4324f
--- /dev/null
@@ -0,0 +1,109 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Utils;
+
+use CRM_Utils_Array as UtilsArray;
+
+class ArrayInsertionUtil {
+
+  /**
+   * If the values to be inserted contain a key _parent_id they will only be
+   * inserted if the parent node ID matches their ID
+   *
+   * @param $array
+   *   The array to insert the value in
+   * @param array $parts
+   *   Path to insertion point with structure:
+   *   [[ name => is_multiple ], ..]
+   * @param mixed $values
+   *   The value to be inserted
+   */
+  public static function insert(&$array, $parts, $values) {
+    $key = key($parts);
+    $isMulti = array_shift($parts);
+    if (!isset($array[$key])) {
+      $array[$key] = $isMulti ? [] : NULL;
+    }
+    if (empty($parts)) {
+      $values = self::filterValues($array, $isMulti, $values);
+      $array[$key] = $values;
+    }
+    else {
+      if ($isMulti) {
+        foreach ($array[$key] as &$subArray) {
+          self::insert($subArray, $parts, $values);
+        }
+      }
+      else {
+        self::insert($array[$key], $parts, $values);
+      }
+    }
+  }
+
+  /**
+   * @param $parentArray
+   * @param $isMulti
+   * @param $values
+   *
+   * @return array|mixed
+   */
+  private static function filterValues($parentArray, $isMulti, $values) {
+    $parentID = UtilsArray::value('id', $parentArray);
+
+    if ($parentID) {
+      $values = array_filter($values, function ($value) use ($parentID) {
+        return UtilsArray::value('_parent_id', $value) == $parentID;
+      });
+    }
+
+    $unsets = ['_parent_id', '_base_id'];
+    array_walk($values, function (&$value) use ($unsets) {
+      foreach ($unsets as $unset) {
+        if (isset($value[$unset])) {
+          unset($value[$unset]);
+        }
+      }
+    });
+
+    if (!$isMulti) {
+      $values = array_shift($values);
+    }
+    return $values;
+  }
+
+}
diff --git a/Civi/Api4/Utils/CoreUtil.php b/Civi/Api4/Utils/CoreUtil.php
new file mode 100644 (file)
index 0000000..56eee46
--- /dev/null
@@ -0,0 +1,88 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Utils;
+
+use Civi\Api4\CustomGroup;
+use CRM_Core_DAO_AllCoreTables as AllCoreTables;
+
+require_once 'api/v3/utils.php';
+
+class CoreUtil {
+
+  /**
+   * todo this class should not rely on api3 code
+   *
+   * @param $entityName
+   *
+   * @return \CRM_Core_DAO|string
+   *   The BAO name for use in static calls. Return doc block is hacked to allow
+   *   auto-completion of static methods
+   */
+  public static function getBAOFromApiName($entityName) {
+    if ($entityName === 'CustomValue' || strpos($entityName, 'Custom_') === 0) {
+      return 'CRM_Contact_BAO_Contact';
+    }
+    return \_civicrm_api3_get_BAO($entityName);
+  }
+
+  /**
+   * Get table name of given Custom group
+   *
+   * @param string $customGroupName
+   *
+   * @return string
+   */
+  public static function getCustomTableByName($customGroupName) {
+    return CustomGroup::get()
+      ->addSelect('table_name')
+      ->addWhere('name', '=', $customGroupName)
+      ->execute()
+      ->first()['table_name'];
+  }
+
+  /**
+   * Given a sql table name, return the name of the api entity.
+   *
+   * @param $tableName
+   * @return string
+   */
+  public static function getApiNameFromTableName($tableName) {
+    return AllCoreTables::getBriefName(AllCoreTables::getClassForTable($tableName));
+  }
+
+}
diff --git a/Civi/Api4/Utils/FormattingUtil.php b/Civi/Api4/Utils/FormattingUtil.php
new file mode 100644 (file)
index 0000000..b845ea6
--- /dev/null
@@ -0,0 +1,132 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Utils;
+
+use CRM_Utils_Array as UtilsArray;
+
+require_once 'api/v3/utils.php';
+
+class FormattingUtil {
+
+  /**
+   * Massage values into the format the BAO expects for a write operation
+   *
+   * @param $params
+   * @param $entity
+   * @param $fields
+   * @throws \API_Exception
+   */
+  public static function formatWriteParams(&$params, $entity, $fields) {
+    foreach ($fields as $name => $field) {
+      if (!empty($params[$name])) {
+        $value =& $params[$name];
+        // Hack for null values -- see comment below
+        if ($value === 'null') {
+          $value = 'Null';
+        }
+        FormattingUtil::formatValue($value, $field, $entity);
+        // Ensure we have an array for serialized fields
+        if (!empty($field['serialize'] && !is_array($value))) {
+          $value = (array) $value;
+        }
+      }
+      /*
+       * Because of the wacky way that database values are saved we need to format
+       * some of the values here. In this strange world the string 'null' is used to
+       * unset values. Hence if we encounter true null we change it to string 'null'.
+       *
+       * If we encounter the string 'null' then we assume the user actually wants to
+       * set the value to string null. However since the string null is reserved for
+       * unsetting values we must change it. Another quirk of the DB_DataObject is
+       * that it allows 'Null' to be set, but any other variation of string 'null'
+       * will be converted to true null, e.g. 'nuLL', 'NUlL' etc. so we change it to
+       * 'Null'.
+       */
+      elseif (array_key_exists($name, $params) && $params[$name] === NULL) {
+        $params[$name] = 'null';
+      }
+    }
+  }
+
+  /**
+   * Transform raw api input to appropriate format for use in a SQL query.
+   *
+   * This is used by read AND write actions (Get, Create, Update, Replace)
+   *
+   * @param $value
+   * @param $fieldSpec
+   * @param string $entity
+   *   Ex: 'Contact', 'Domain'
+   * @throws \API_Exception
+   */
+  public static function formatValue(&$value, $fieldSpec, $entity) {
+    if (is_array($value)) {
+      foreach ($value as &$val) {
+        self::formatValue($val, $fieldSpec, $entity);
+      }
+      return;
+    }
+    $fk = UtilsArray::value('fk_entity', $fieldSpec);
+    if ($fieldSpec['name'] == 'id') {
+      $fk = $entity;
+    }
+    $dataType = UtilsArray::value('data_type', $fieldSpec);
+
+    if ($fk === 'Domain' && $value === 'current_domain') {
+      $value = \CRM_Core_Config::domainID();
+    }
+
+    if ($fk === 'Contact' && !is_numeric($value)) {
+      $value = \_civicrm_api3_resolve_contactID($value);
+      if ('unknown-user' === $value) {
+        throw new \API_Exception("\"{$fieldSpec['name']}\" \"{$value}\" cannot be resolved to a contact ID", 2002, ['error_field' => $fieldSpec['name'], "type" => "integer"]);
+      }
+    }
+
+    switch ($dataType) {
+      case 'Timestamp':
+        $value = date('Y-m-d H:i:s', strtotime($value));
+        break;
+
+      case 'Date':
+        $value = date('Ymd', strtotime($value));
+        break;
+    }
+  }
+
+}
diff --git a/Civi/Api4/Utils/ReflectionUtils.php b/Civi/Api4/Utils/ReflectionUtils.php
new file mode 100644 (file)
index 0000000..535f952
--- /dev/null
@@ -0,0 +1,140 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 4.7                                                |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2015                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Utils;
+
+/**
+ * Just another place to put static functions...
+ */
+class ReflectionUtils {
+
+  /**
+   * @param \Reflector|\ReflectionClass $reflection
+   * @param string $type
+   *   If we are not reflecting the class itself, specify "Method", "Property", etc.
+   *
+   * @return array
+   */
+  public static function getCodeDocs($reflection, $type = NULL) {
+    $docs = self::parseDocBlock($reflection->getDocComment());
+
+    // Recurse into parent functions
+    if (isset($docs['inheritDoc']) || isset($docs['inheritdoc'])) {
+      unset($docs['inheritDoc'], $docs['inheritdoc']);
+      $newReflection = NULL;
+      try {
+        if ($type) {
+          $name = $reflection->getName();
+          $reflectionClass = $reflection->getDeclaringClass()->getParentClass();
+          if ($reflectionClass) {
+            $getItem = "get$type";
+            $newReflection = $reflectionClass->$getItem($name);
+          }
+        }
+        else {
+          $newReflection = $reflection->getParentClass();
+        }
+      }
+      catch (\ReflectionException $e) {
+      }
+      if ($newReflection) {
+        // Mix in
+        $additionalDocs = self::getCodeDocs($newReflection, $type);
+        if (!empty($docs['comment']) && !empty($additionalDocs['comment'])) {
+          $docs['comment'] .= "\n\n" . $additionalDocs['comment'];
+        }
+        $docs += $additionalDocs;
+      }
+    }
+    return $docs;
+  }
+
+  /**
+   * @param string $comment
+   * @return array
+   */
+  public static function parseDocBlock($comment) {
+    $info = [];
+    foreach (preg_split("/((\r?\n)|(\r\n?))/", $comment) as $num => $line) {
+      if (!$num || strpos($line, '*/') !== FALSE) {
+        continue;
+      }
+      $line = ltrim(trim($line), '* ');
+      if (strpos($line, '@') === 0) {
+        $words = explode(' ', $line);
+        $key = substr($words[0], 1);
+        if ($key == 'var') {
+          $info['type'] = explode('|', $words[1]);
+        }
+        elseif ($key == 'options') {
+          $val = str_replace(', ', ',', implode(' ', array_slice($words, 1)));
+          $info['options'] = explode(',', $val);
+        }
+        else {
+          // Unrecognized annotation, but we'll duly add it to the info array
+          $val = implode(' ', array_slice($words, 1));
+          $info[$key] = strlen($val) ? $val : TRUE;
+        }
+      }
+      elseif ($num == 1) {
+        $info['description'] = $line;
+      }
+      elseif (!$line) {
+        if (isset($info['comment'])) {
+          $info['comment'] .= "\n";
+        }
+      }
+      else {
+        $info['comment'] = isset($info['comment']) ? "{$info['comment']}\n$line" : $line;
+      }
+    }
+    if (isset($info['comment'])) {
+      $info['comment'] = trim($info['comment']);
+    }
+    return $info;
+  }
+
+  /**
+   * List all traits used by a class and its parents.
+   *
+   * @param object|string $class
+   * @return array
+   */
+  public static function getTraits($class) {
+    $traits = [];
+    // Get traits of this class + parent classes
+    do {
+      $traits = array_merge(class_uses($class), $traits);
+    } while ($class = get_parent_class($class));
+    // Get traits of traits
+    foreach ($traits as $trait => $same) {
+      $traits = array_merge(class_uses($trait), $traits);
+    }
+    return $traits;
+  }
+
+}
diff --git a/Civi/Api4/Website.php b/Civi/Api4/Website.php
new file mode 100644 (file)
index 0000000..280c71d
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+/**
+ * Website entity.
+ *
+ * @package Civi\Api4
+ */
+class Website extends Generic\DAOEntity {
+
+}
diff --git a/Civi/Api4/services.xml b/Civi/Api4/services.xml
new file mode 100644 (file)
index 0000000..3d8a2fc
--- /dev/null
@@ -0,0 +1,26 @@
+<container xmlns="http://symfony.com/schema/dic/services"
+           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
+
+    <services>
+
+        <service id="spec_gatherer" class="Civi\Api4\Service\Spec\SpecGatherer"/>
+
+        <service id="schema_map_builder" class="Civi\Api4\Service\Schema\SchemaMapBuilder" public="false">
+            <argument type="service" id="dispatcher" />
+        </service>
+
+        <service id="schema_map" class="Civi\Api4\Service\Schema\SchemaMap">
+          <factory service="schema_map_builder" method="build"/>
+        </service>
+
+        <service id="joiner" class="Civi\Api4\Service\Schema\Joiner">
+            <argument type="service" id="schema_map"/>
+        </service>
+
+        <service id="action_object_provider" class="Civi\Api4\Provider\ActionObjectProvider">
+            <tag name="event_subscriber"/>
+        </service>
+
+    </services>
+</container>
index 0dfebb73ed9564e5496eacb80361c903e08a4475..805056456188bff234a10211371f26eb5bbb0244 100644 (file)
@@ -313,6 +313,7 @@ class Container {
     if (\CRM_Utils_Constant::value('CIVICRM_FLEXMAILER_HACK_SERVICES')) {
       \Civi\Core\Resolver::singleton()->call(CIVICRM_FLEXMAILER_HACK_SERVICES, [$container]);
     }
+    \CRM_Api4_Services::hook_container($container);
 
     \CRM_Utils_Hook::container($container);
 
index cde946250155997974dca4e202589ef65703f46b..27440f70fa799ffda93ff0363053f0b1773d546e 100644 (file)
@@ -123,7 +123,7 @@ trait Api3DocTrait {
       if (!is_dir($civicrm_root . "/api/v3/examples/$entity")) {
         mkdir($civicrm_root . "/api/v3/examples/$entity");
       }
-      $f = fopen($civicrm_root . "/api/v3/examples/$entity/$exampleName.php", "w+b");
+      $f = fopen($civicrm_root . "/api/v3/examples/$entity/$exampleName.ex.php", "w+b");
       $contents = $smarty->fetch($civicrm_root . '/tests/templates/documentFunction.tpl');
       $contents = \CRM_Core_CodeGen_Util_ArraySyntaxConverter::convert($contents);
       fwrite($f, $contents);
index 1c99c0490b42d3e61f84014020a4704a7d43216e..e853f5249b14fdb62e776ecc4aaf8b375d0f3fd6 100644 (file)
@@ -22,7 +22,12 @@ trait Api3TestTrait {
    * @return array
    */
   public function versionThreeAndFour() {
-    return [[3], [4]];
+    $r = [[3]];
+    global $civicrm_root;
+    if (file_exists("$civicrm_root/Civi/Api4") || file_exists("$civicrm_root/ext/api4")) {
+      $r[] = [4];
+    }
+    return $r;
   }
 
   /**
@@ -572,13 +577,11 @@ trait Api3TestTrait {
       }
       // Resolve custom field names
       foreach ($custom as $group => $fields) {
-        if (isset($row[$group])) {
-          foreach ($fields as $field => $v3FieldName) {
-            if (isset($row[$group][$field])) {
-              $result[$index][$v3FieldName] = $row[$group][$field];
-            }
+        foreach ($fields as $field => $v3FieldName) {
+          if (isset($row["$group.$field"])) {
+            $result[$index][$v3FieldName] = $row["$group.$field"];
+            unset($result[$index]["$group.$field"]);
           }
-          unset($result[$index][$group]);
         }
       }
     }
diff --git a/ang/api4.ang.php b/ang/api4.ang.php
new file mode 100644 (file)
index 0000000..2c8a85b
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+// Autoloader data for Api4 angular module.
+return [
+  'ext' => 'civicrm',
+  'js' => [
+    'ang/api4.js',
+    'ang/api4/*.js',
+    'ang/api4/*/*.js',
+  ],
+  'css' => [],
+  'partials' => [],
+  'requires' => [],
+];
diff --git a/ang/api4.js b/ang/api4.js
new file mode 100644 (file)
index 0000000..d1116fc
--- /dev/null
@@ -0,0 +1,4 @@
+(function(angular, $, _) {
+  // Declare a list of dependencies.
+  angular.module('api4', CRM.angRequires('api4'));
+})(angular, CRM.$, CRM._);
diff --git a/ang/api4/crmApi4.js b/ang/api4/crmApi4.js
new file mode 100644 (file)
index 0000000..743b359
--- /dev/null
@@ -0,0 +1,37 @@
+(function(angular, $, _) {
+
+  angular.module('api4').factory('crmApi4', function($q) {
+    var crmApi4 = function(entity, action, params, index) {
+      // JSON serialization in CRM.api4 is not aware of Angular metadata like $$hash, so use angular.toJson()
+      var deferred = $q.defer();
+      var p;
+      var backend = crmApi4.backend || CRM.api4;
+      if (_.isObject(entity)) {
+        // eval content is locally generated.
+        /*jshint -W061 */
+        p = backend(eval('('+angular.toJson(entity)+')'), action);
+      } else {
+        // eval content is locally generated.
+        /*jshint -W061 */
+        p = backend(entity, action, eval('('+angular.toJson(params)+')'), index);
+      }
+      p.then(
+        function(result) {
+          deferred.resolve(result);
+        },
+        function(error) {
+          deferred.reject(error);
+        }
+      );
+      return deferred.promise;
+    };
+    crmApi4.backend = null;
+    crmApi4.val = function(value) {
+      var d = $.Deferred();
+      d.resolve(value);
+      return d.promise();
+    };
+    return crmApi4;
+  });
+
+})(angular, CRM.$, CRM._);
diff --git a/ang/api4Explorer.ang.php b/ang/api4Explorer.ang.php
new file mode 100644 (file)
index 0000000..9b974d5
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+// Autoloader data for Api4 explorer.
+return [
+  'ext' => 'civicrm',
+  'js' => [
+    'ang/api4Explorer.js',
+    'ang/api4Explorer/Explorer.js',
+  ],
+  'css' => [
+    'css/api4-explorer.css',
+  ],
+  'partials' => [
+    'ang/api4Explorer',
+  ],
+  'basePages' => [],
+  'requires' => ['crmUi', 'crmUtil', 'ngRoute', 'crmRouteBinder', 'ui.sortable', 'api4', 'ngSanitize'],
+];
diff --git a/ang/api4Explorer.js b/ang/api4Explorer.js
new file mode 100644 (file)
index 0000000..85e10c4
--- /dev/null
@@ -0,0 +1,4 @@
+(function(angular, $, _) {
+  // Declare a list of dependencies.
+  angular.module('api4Explorer', CRM.angRequires('api4Explorer'));
+})(angular, CRM.$, CRM._);
diff --git a/ang/api4Explorer/Chain.html b/ang/api4Explorer/Chain.html
new file mode 100644 (file)
index 0000000..257efde
--- /dev/null
@@ -0,0 +1,4 @@
+<input class="form-control" ng-model="chain[1][0]" crm-ui-select="{data: entities, allowClear: true, placeholder: 'None'}" />
+<select class="form-control api4-chain-action" ng-model="chain[1][1]" ng-options="a for a in actions" ></select>
+<input class="form-control api4-chain-params" ng-model="chain[1][2]" placeholder="{{ ts('Params') }}" />
+<input class="form-control api4-chain-index" ng-model="chain[1][3]" placeholder="{{ ts('Index') }}" />
diff --git a/ang/api4Explorer/Explorer.html b/ang/api4Explorer/Explorer.html
new file mode 100644 (file)
index 0000000..bbfd35b
--- /dev/null
@@ -0,0 +1,152 @@
+<div id="bootstrap-theme" class="api4-explorer-page">
+  <div crm-ui-debug="availableParams"></div>
+
+  <h1 crm-page-title>
+    {{ ts('CiviCRM API v4') }}{{ entity ? (' (' + entity + '::' + action + ')') : '' }}
+  </h1>
+
+  <!--This warning will show if bootstrap is unavailable. Normally it will be hidden by the bootstrap .collapse class.-->
+  <div class="messages warning no-popup collapse">
+    <p>
+      <i class="crm-i fa-exclamation-triangle"></i>
+      <strong>{{ ts('Bootstrap theme not found.') }}</strong>
+    </p>
+    <p>{{ ts('This screen may not work correctly without a bootstrap-based theme such as Shoreditch installed.') }}</p>
+  </div>
+
+  <div class="api4-explorer-row">
+      <form name="api4-explorer" class="panel panel-default explorer-params-panel">
+        <div class="panel-heading">
+          <div class="form-inline">
+            <input class="collapsible-optgroups form-control" ng-model="entity" ng-disabled="!entities.length" ng-class="{loading: !entities.length}" crm-ui-select="{placeholder: ts('Entity'), data: entities}" />
+            <input class="collapsible-optgroups form-control" ng-model="action" ng-disabled="!entity || !actions.length" ng-class="{loading: entity && !actions.length}" crm-ui-select="{placeholder: ts('Action'), data: actions}" />
+            <input class="form-control api4-index" ng-model="index" ng-mouseenter="help('index', indexHelp)" ng-mouseleave="help()" placeholder="{{ ts('Index') }}" />
+            <button class="btn btn-success pull-right" crm-icon="fa-bolt" ng-disabled="!entity || !action || loading" ng-click="execute()">{{ ts('Execute') }}</button>
+          </div>
+        </div>
+        <div class="panel-body">
+          <div class="api4-input form-inline">
+            <div class="form-control" ng-mouseenter="help(name, param)" ng-mouseleave="help()" ng-class="{'api4-option-selected': params[name]}" ng-repeat="(name, param) in availableParams" ng-if="!isSpecial(name) && param.type[0] === 'bool' && param.default !== null">
+              <input type="checkbox" id="api4-param-{{ name }}" ng-model="params[name]"/>
+              <label for="api4-param-{{ name }}">{{ name }}<span class="crm-marker" ng-if="param.required"> *</span></label>
+            </div>
+            <div class="form-control" ng-mouseenter="help('selectRowCount', availableParams.select)" ng-mouseleave="help()" ng-class="{'api4-option-selected': isSelectRowCount()}" ng-if="availableParams.select">
+              <input type="checkbox" id="api4-param-selectRowCount" ng-checked="isSelectRowCount()" ng-click="selectRowCount()" />
+              <label for="api4-param-selectRowCount">SelectRowCount</label>
+            </div>
+          </div>
+          <div class="api4-input form-inline" ng-mouseenter="help(name, param)" ng-mouseleave="help()" ng-repeat="(name, param) in availableParams" ng-if="!isSpecial(name) && param.type[0] === 'bool' && param.default === null">
+            <label>{{ name }}<span class="crm-marker" ng-if="param.required"> *</span></label>
+            <label class="radio-inline">
+              <input type="radio" ng-model="params[name]" ng-value="true" />true
+            </label>
+            <label class="radio-inline">
+              <input type="radio" ng-model="params[name]" ng-value="false" />false
+            </label>
+            <a href class="crm-hover-button" title="Clear" ng-click="clearParam(name)" ng-show="params[name] !== null"><i class="crm-i fa-times"></i></a>
+          </div>
+          <div class="api4-input form-inline" ng-mouseenter="help('select', availableParams.select)" ng-mouseleave="help()" ng-if="availableParams.select && !isSelectRowCount()">
+            <label for="api4-param-select">select<span class="crm-marker" ng-if="availableParams.select.required"> *</span></label>
+            <input class="collapsible-optgroups form-control" ng-list crm-ui-select="{data: fieldsAndJoins, multiple: true}" id="api4-param-select" ng-model="params.select" style="width: 85%;"/>
+          </div>
+          <div class="api4-input form-inline" ng-mouseenter="help('fields', availableParams.fields)" ng-mouseleave="help()"ng-if="availableParams.fields">
+            <label for="api4-param-fields">fields<span class="crm-marker" ng-if="availableParams.fields.required"> *</span></label>
+            <input class="form-control" ng-list crm-ui-select="{data: fields, multiple: true}" id="api4-param-fields" ng-model="params.fields" style="width: 85%;"/>
+          </div>
+          <div class="api4-input form-inline" ng-mouseenter="help('action', availableParams.action)" ng-mouseleave="help()"ng-if="availableParams.action">
+            <label for="api4-param-action">action<span class="crm-marker" ng-if="availableParams.action.required"> *</span></label>
+            <input class="form-control" crm-ui-select="{data: actions, allowClear: true, placeholder: 'None'}" id="api4-param-action" ng-model="params.action"/>
+          </div>
+          <div class="api4-input form-inline" ng-mouseenter="help(name, param)" ng-mouseleave="help()" ng-repeat="(name, param) in availableParams" ng-if="!isSpecial(name) && (param.type[0] === 'string' || param.type[0] === 'int')">
+            <label for="api4-param-{{ name }}">{{ name }}<span class="crm-marker" ng-if="param.required"> *</span></label>
+            <input class="form-control" ng-if="!param.options" type="{{ param.type[0] === 'int' && param.type.length === 1 ? 'number' : 'text' }}" id="api4-param-{{ name }}" ng-model="params[name]"/>
+            <select class="form-control" ng-if="param.options" ng-options="o for o in param.options" id="api4-param-{{ name }}" ng-model="params[name]"></select>
+            <a href class="crm-hover-button" title="Clear" ng-click="clearParam(name)" ng-show="!!params[name]"><i class="crm-i fa-times"></i></a>
+          </div>
+          <div class="api4-input" ng-mouseenter="help(name, param)" ng-mouseleave="help()" ng-repeat="(name, param) in availableParams" ng-if="!isSpecial(name) && (param.type[0] === 'array' || param.type[0] === 'mixed')">
+            <label for="api4-param-{{ name }}">{{ name }}<span class="crm-marker" ng-if="param.required"> *</span></label>
+            <textarea class="form-control" type="{{ param.type[0] === 'int' && param.type.length === 1 ? 'number' : 'text' }}" id="api4-param-{{ name }}" ng-model="params[name]">
+            </textarea>
+          </div>
+          <fieldset ng-if="availableParams.where" class="api4-where-fieldset" ng-mouseenter="help('where', availableParams.where)" ng-mouseleave="help()" crm-api4-where-clause="{where: params.where, required: availableParams.where.required, op: 'AND', label: 'where', fields: fieldsAndJoins}">
+          </fieldset>
+          <fieldset ng-if="availableParams.values" ng-mouseenter="help('values', availableParams.values)" ng-mouseleave="help()">
+            <legend>values<span class="crm-marker" ng-if="availableParams.values.required"> *</span></legend>
+            <div class="api4-input form-inline" ng-repeat="clause in params.values" ng-mouseenter="help('value: ' + clause[0], fieldHelp(clause[0]))" ng-mouseleave="help('values', availableParams.values)">
+              <input class="collapsible-optgroups form-control" ng-model="clause[0]" crm-ui-select="{formatResult: formatSelect2Item, formatSelection: formatSelect2Item, data: valuesFields, allowClear: true, placeholder: 'Field'}" />
+              <input class="form-control" ng-model="clause[1]" api4-exp-value="{field: clause[0]}" />
+            </div>
+            <div class="api4-input form-inline">
+              <input class="collapsible-optgroups form-control" ng-model="controls.values" crm-ui-select="{formatResult: formatSelect2Item, formatSelection: formatSelect2Item, data: valuesFields}" placeholder="Add value" />
+            </div>
+          </fieldset>
+          <fieldset ng-if="availableParams.orderBy" ng-mouseenter="help('orderBy', availableParams.orderBy)" ng-mouseleave="help()">
+            <legend>orderBy<span class="crm-marker" ng-if="availableParams.orderBy.required"> *</span></legend>
+            <div class="api4-input form-inline" ng-repeat="clause in params.orderBy">
+              <input class="collapsible-optgroups form-control" ng-model="clause[0]" crm-ui-select="{data: fieldsAndJoins, allowClear: true, placeholder: 'Field'}" />
+              <select class="form-control" ng-model="clause[1]">
+                <option value="ASC">ASC</option>
+                <option value="DESC">DESC</option>
+              </select>
+            </div>
+            <div class="api4-input form-inline">
+              <input class="collapsible-optgroups form-control" ng-model="controls.orderBy" crm-ui-select="{data: fieldsAndJoins}" placeholder="Add orderBy" />
+            </div>
+          </fieldset>
+          <fieldset ng-if="availableParams.chain" ng-mouseenter="help('chain', availableParams.chain)" ng-mouseleave="help()">
+            <legend>chain</legend>
+            <div class="api4-input form-inline" ng-repeat="clause in params.chain" api4-exp-chain="clause" entities="entities" main-entity="entity" >
+            </div>
+            <div class="api4-input form-inline">
+              <input class="form-control" ng-model="controls.chain" crm-ui-select="{data: entities}" placeholder="Add chain" />
+            </div>
+          </fieldset>
+        </div>
+      </form>
+      <div class="panel panel-info explorer-help-panel">
+        <div class="panel-heading">
+          <h3 class="panel-title" crm-icon="fa-info-circle">{{ helpTitle }}</h3>
+        </div>
+        <div class="panel-body">
+          <h4>{{ helpContent.description }}</h4>
+          <div ng-if="helpContent.comment">
+            <p ng-repeat='text in helpContent.comment.split("\n\n")'>{{ text }}</p>
+          </div>
+          <p ng-repeat="(key, item) in helpContent" ng-if="key !== 'description' && key !== 'comment'">
+            <strong>{{ key }}:</strong> {{ item }}
+          </p>
+        </div>
+      </div>
+  </div>
+  <div class="api4-explorer-row">
+      <div class="panel panel-warning explorer-code-panel">
+        <div class="panel-heading">
+          <h3 class="panel-title" crm-icon="fa-code">{{ ts('Code') }}</h3>
+        </div>
+        <div class="panel-body">
+          <table>
+            <tr ng-repeat="(type, item) in code">
+              <td>{{ codeLabel[type] }}</td>
+              <td><pre class="prettyprint" ng-bind-html="item"></pre></td>
+            </tr>
+          </table>
+        </div>
+      </div>
+      <div class="panel explorer-result-panel panel-{{ status }}" >
+        <div class="panel-heading">
+          <h3 class="panel-title">
+            <i class="fa fa-circle-o" ng-if="status === 'default'"></i>
+            <i class="fa fa-check-circle" ng-if="status === 'success'"></i>
+            <i class="fa fa-minus-circle" ng-if="status === 'danger'"></i>
+            <i class="fa fa-spinner fa-pulse" ng-if="status === 'warning'"></i>
+            {{ ts('Result') }}
+          </h3>
+        </div>
+        <div class="panel-body">
+          <pre class="prettyprint" ng-repeat="code in result" ng-bind-html="code"></pre>
+        </div>
+      </div>
+  </div>
+
+
+</div>
diff --git a/ang/api4Explorer/Explorer.js b/ang/api4Explorer/Explorer.js
new file mode 100644 (file)
index 0000000..3d596a2
--- /dev/null
@@ -0,0 +1,882 @@
+(function(angular, $, _, undefined) {
+
+  // Schema metadata
+  var schema = CRM.vars.api4.schema;
+  // FK schema data
+  var links = CRM.vars.api4.links;
+  // Cache list of entities
+  var entities = [];
+  // Cache list of actions
+  var actions = [];
+  // Field options
+  var fieldOptions = {};
+
+
+  angular.module('api4Explorer').config(function($routeProvider) {
+    $routeProvider.when('/explorer/:api4entity?/:api4action?', {
+      controller: 'Api4Explorer',
+      templateUrl: '~/api4Explorer/Explorer.html',
+      reloadOnSearch: false
+    });
+  });
+
+  angular.module('api4Explorer').controller('Api4Explorer', function($scope, $routeParams, $location, $timeout, $http, crmUiHelp, crmApi4) {
+    var ts = $scope.ts = CRM.ts();
+    $scope.entities = entities;
+    $scope.actions = actions;
+    $scope.fields = [];
+    $scope.fieldsAndJoins = [];
+    $scope.availableParams = {};
+    $scope.params = {};
+    $scope.index = '';
+    var getMetaParams = {},
+      objectParams = {orderBy: 'ASC', values: '', chain: ['Entity', '', '{}']},
+      helpTitle = '',
+      helpContent = {};
+    $scope.helpTitle = '';
+    $scope.helpContent = {};
+    $scope.entity = $routeParams.api4entity;
+    $scope.result = [];
+    $scope.status = 'default';
+    $scope.loading = false;
+    $scope.controls = {};
+    $scope.codeLabel = {
+      oop: ts('PHP (oop style)'),
+      php: ts('PHP (traditional)'),
+      js: ts('Javascript'),
+      cli: ts('Command Line')
+    };
+    $scope.code = codeDefaults();
+
+    function codeDefaults() {
+      return _.mapValues($scope.codeLabel, function(val, key) {
+        return key === 'oop' ? ts('Select an entity and action') : '';
+      });
+    }
+
+    if (!entities.length) {
+      formatForSelect2(schema, entities, 'name', ['description']);
+    }
+
+    $scope.$bindToRoute({
+      expr: 'index',
+      param: 'index',
+      default: ''
+    });
+
+    function ucfirst(str) {
+      return str[0].toUpperCase() + str.slice(1);
+    }
+
+    function lcfirst(str) {
+      return str[0].toLowerCase() + str.slice(1);
+    }
+
+    function pluralize(str) {
+      switch (str[str.length-1]) {
+        case 's':
+          return str + 'es';
+        case 'y':
+          return str.slice(0, -1) + 'ies';
+        default:
+          return str + 's';
+      }
+    }
+
+    // Turn a flat array into a select2 array
+    function arrayToSelect2(array) {
+      var out = [];
+      _.each(array, function(item) {
+        out.push({id: item, text: item});
+      });
+      return out;
+    }
+
+    // Reformat an existing array of objects for compatibility with select2
+    function formatForSelect2(input, container, key, extra, prefix) {
+      _.each(input, function(item) {
+        var id = (prefix || '') + item[key];
+        var formatted = {id: id, text: id};
+        if (extra) {
+          _.merge(formatted, _.pick(item, extra));
+        }
+        container.push(formatted);
+      });
+      return container;
+    }
+
+    function getFieldList(source) {
+      var fields = [],
+        fieldInfo = _.findWhere(getEntity().actions, {name: $scope.action}).fields;
+      formatForSelect2(fieldInfo, fields, 'name', ['description', 'required', 'default_value']);
+      return fields;
+    }
+
+    function addJoins(fieldList) {
+      var fields = _.cloneDeep(fieldList),
+        fks = _.findWhere(links, {entity: $scope.entity}) || {};
+      _.each(fks.links, function(link) {
+        var linkFields = entityFields(link.entity);
+        if (linkFields) {
+          fields.push({
+            text: link.alias,
+            description: 'Join to ' + link.entity,
+            children: formatForSelect2(linkFields, [], 'name', ['description'], link.alias + '.')
+          });
+        }
+      });
+      return fields;
+    }
+
+    $scope.help = function(title, param) {
+      if (!param) {
+        $scope.helpTitle = helpTitle;
+        $scope.helpContent = helpContent;
+      } else {
+        $scope.helpTitle = title;
+        $scope.helpContent = param;
+      }
+    };
+
+    $scope.fieldHelp = function(fieldName) {
+      var field = getField(fieldName, $scope.entity, $scope.action);
+      if (!field) {
+        return;
+      }
+      var info = {
+          description: field.description,
+          type: field.data_type
+        };
+      if (field.default_value) {
+        info.default = field.default_value;
+      }
+      if (field.required_if) {
+        info.required_if = field.required_if;
+      } else if (field.required) {
+        info.required = 'true';
+      }
+      return info;
+    };
+
+    $scope.valuesFields = function() {
+      var fields = _.cloneDeep($scope.fields);
+      // Disable fields that are already in use
+      _.each($scope.params.values || [], function(val) {
+        (_.findWhere(fields, {id: val[0]}) || {}).disabled = true;
+      });
+      return {results: fields};
+    };
+
+    $scope.formatSelect2Item = function(row) {
+      return _.escape(row.text) +
+        (row.required ? '<span class="crm-marker"> *</span>' : '') +
+        (row.description ? '<div class="crm-select2-row-description"><p>' + _.escape(row.description) + '</p></div>' : '');
+    };
+
+    $scope.clearParam = function(name) {
+      $scope.params[name] = $scope.availableParams[name].default;
+    };
+
+    $scope.isSpecial = function(name) {
+      var specialParams = ['select', 'fields', 'action', 'where', 'values', 'orderBy', 'chain'];
+      return _.contains(specialParams, name);
+    };
+
+    $scope.selectRowCount = function() {
+      if ($scope.isSelectRowCount()) {
+        $scope.params.select = [];
+      } else {
+        $scope.params.select = ['row_count'];
+        if ($scope.params.limit == 25) {
+          $scope.params.limit = 0;
+        }
+      }
+    };
+
+    $scope.isSelectRowCount = function() {
+      return $scope.params && $scope.params.select && $scope.params.select.length === 1 && $scope.params.select[0] === 'row_count';
+    };
+
+    function getEntity(entityName) {
+      return _.findWhere(schema, {name: entityName || $scope.entity});
+    }
+
+    // Get all params that have been set
+    function getParams() {
+      var params = {};
+      _.each($scope.params, function(param, key) {
+        if (param != $scope.availableParams[key].default && !(typeof param === 'object' && _.isEmpty(param))) {
+          if (_.contains($scope.availableParams[key].type, 'array') && (typeof objectParams[key] === 'undefined')) {
+            params[key] = parseYaml(_.cloneDeep(param));
+          } else {
+            params[key] = param;
+          }
+        }
+      });
+      _.each(objectParams, function(defaultVal, key) {
+        if (params[key]) {
+          var newParam = {};
+          _.each(params[key], function(item) {
+            var val = _.cloneDeep(item[1]);
+            // Remove blank items from "chain" array
+            if (_.isArray(val)) {
+              _.eachRight(item[1], function(v, k) {
+                if (v) {
+                  return false;
+                }
+                val.length--;
+              });
+            }
+            newParam[item[0]] = parseYaml(val);
+          });
+          params[key] = newParam;
+        }
+      });
+      return params;
+    }
+
+    function parseYaml(input) {
+      if (typeof input === 'undefined') {
+        return undefined;
+      }
+      if (_.isObject(input) || _.isArray(input)) {
+        _.each(input, function(item, index) {
+          input[index] = parseYaml(item);
+        });
+        return input;
+      }
+      try {
+        var output = (input === '>') ? '>' : jsyaml.safeLoad(input);
+        // We don't want dates parsed to js objects
+        return _.isDate(output) ? input : output;
+      } catch (e) {
+        return input;
+      }
+    }
+
+    function selectAction() {
+      $scope.action = $routeParams.api4action;
+      $scope.fieldsAndJoins = [];
+      if (!actions.length) {
+        formatForSelect2(getEntity().actions, actions, 'name', ['description', 'params']);
+      }
+      if ($scope.action) {
+        var actionInfo = _.findWhere(actions, {id: $scope.action});
+        $scope.fields = getFieldList();
+        if (_.contains(['get', 'update', 'delete', 'replace'], $scope.action)) {
+          $scope.fieldsAndJoins = addJoins($scope.fields);
+        } else {
+          $scope.fieldsAndJoins = $scope.fields;
+        }
+        _.each(actionInfo.params, function (param, name) {
+          var format,
+            defaultVal = _.cloneDeep(param.default);
+          if (param.type) {
+            switch (param.type[0]) {
+              case 'int':
+              case 'bool':
+                format = param.type[0];
+                break;
+
+              case 'array':
+              case 'object':
+                format = 'json';
+                break;
+
+              default:
+                format = 'raw';
+            }
+            if (name == 'limit') {
+              defaultVal = 25;
+            }
+            if (name === 'values') {
+              defaultVal = defaultValues(defaultVal);
+            }
+            $scope.$bindToRoute({
+              expr: 'params["' + name + '"]',
+              param: name,
+              format: format,
+              default: defaultVal,
+              deep: format === 'json'
+            });
+          }
+          if (typeof objectParams[name] !== 'undefined') {
+            $scope.$watch('params.' + name, function(values) {
+              // Remove empty values
+              _.each(values, function(clause, index) {
+                if (!clause || !clause[0]) {
+                  $scope.params[name].splice(index, 1);
+                }
+              });
+            }, true);
+            $scope.$watch('controls.' + name, function(value) {
+              var field = value;
+              $timeout(function() {
+                if (field) {
+                  var defaultOp = _.cloneDeep(objectParams[name]);
+                  if (name === 'chain') {
+                    var num = $scope.params.chain.length;
+                    defaultOp[0] = field;
+                    field = 'name_me_' + num;
+                  }
+                  $scope.params[name].push([field, defaultOp]);
+                  $scope.controls[name] = null;
+                }
+              });
+            });
+          }
+        });
+        $scope.availableParams = actionInfo.params;
+      }
+      writeCode();
+    }
+
+    function defaultValues(defaultVal) {
+      _.each($scope.fields, function(field) {
+        if (field.required) {
+          defaultVal.push([field.id, '']);
+        }
+      });
+      return defaultVal;
+    }
+
+    function stringify(value, trim) {
+      if (typeof value === 'undefined') {
+        return '';
+      }
+      var str = JSON.stringify(value).replace(/,/g, ', ');
+      if (trim) {
+        str = str.slice(1, -1);
+      }
+      return str.trim();
+    }
+
+    function writeCode() {
+      var code = codeDefaults(),
+        entity = $scope.entity,
+        action = $scope.action,
+        params = getParams(),
+        index = isInt($scope.index) ? +$scope.index : $scope.index,
+        result = 'result';
+      if ($scope.entity && $scope.action) {
+        if (action.slice(0, 3) === 'get') {
+          result = entity.substr(0, 7) === 'Custom_' ? _.camelCase(entity.substr(7)) : entity;
+          result = lcfirst(action.replace(/s$/, '').slice(3) || result);
+        }
+        var results = lcfirst(_.isNumber(index) ? result : pluralize(result)),
+          paramCount = _.size(params),
+          isSelectRowCount = params.select && params.select.length === 1 && params.select[0] === 'row_count',
+          i = 0;
+
+        if (isSelectRowCount) {
+          results = result + 'Count';
+        }
+
+        // Write javascript
+        code.js = "CRM.api4('" + entity + "', '" + action + "', {";
+        _.each(params, function(param, key) {
+          code.js += "\n  " + key + ': ' + stringify(param) +
+            (++i < paramCount ? ',' : '');
+          if (key === 'checkPermissions') {
+            code.js += ' // IGNORED: permissions are always enforced from client-side requests';
+          }
+        });
+        code.js += "\n}";
+        if (index || index === 0) {
+          code.js += ', ' + JSON.stringify(index);
+        }
+        code.js += ").then(function(" + results + ") {\n  // do something with " + results + " array\n}, function(failure) {\n  // handle failure\n});";
+
+        // Write php code
+        code.php = '$' + results + " = civicrm_api4('" + entity + "', '" + action + "', [";
+        _.each(params, function(param, key) {
+          code.php += "\n  '" + key + "' => " + phpFormat(param, 4) + ',';
+        });
+        code.php += "\n]";
+        if (index || index === 0) {
+          code.php += ', ' + phpFormat(index);
+        }
+        code.php += ");";
+        
+        // Write oop code
+        if (entity.substr(0, 7) !== 'Custom_') {
+          code.oop = '$' + results + " = \\Civi\\Api4\\" + entity + '::' + action + '()';
+        } else {
+          code.oop = '$' + results + " = \\Civi\\Api4\\CustomValue::" + action + "('" + entity.substr(7) + "')";
+        }
+        _.each(params, function(param, key) {
+          var val = '';
+          if (typeof objectParams[key] !== 'undefined' && key !== 'chain') {
+            _.each(param, function(item, index) {
+              val = phpFormat(index) + ', ' + phpFormat(item, 4);
+              code.oop += "\n  ->add" + ucfirst(key).replace(/s$/, '') + '(' + val + ')';
+            });
+          } else if (key === 'where') {
+            _.each(param, function (clause) {
+              if (clause[0] === 'AND' || clause[0] === 'OR' || clause[0] === 'NOT') {
+                code.oop += "\n  ->addClause(" + phpFormat(clause[0]) + ", " + phpFormat(clause[1]).slice(1, -1) + ')';
+              } else {
+                code.oop += "\n  ->addWhere(" + phpFormat(clause).slice(1, -1) + ")";
+              }
+            });
+          } else if (key === 'select' && isSelectRowCount) {
+            code.oop += "\n  ->selectRowCount()";
+          } else {
+            code.oop += "\n  ->set" + ucfirst(key) + '(' + phpFormat(param, 4) + ')';
+          }
+        });
+        code.oop += "\n  ->execute()";
+        if (_.isNumber(index)) {
+          code.oop += !index ? '\n  ->first()' : (index === -1 ? '\n  ->last()' : '\n  ->itemAt(' + index + ')');
+        } else if (index) {
+          code.oop += "\n  ->indexBy('" + index + "')";
+        } else if (isSelectRowCount) {
+          code.oop += "\n  ->count()";
+        }
+        code.oop += ";\n";
+        if (!_.isNumber(index) && !isSelectRowCount) {
+          code.oop += "foreach ($" + results + ' as $' + ((_.isString(index) && index) ? index + ' => $' : '') + result + ') {\n  // do something\n}';
+        }
+
+        // Write cli code
+        code.cli = 'cv api4 ' + entity + '.' + action + " '" + stringify(params) + "'";
+      }
+      _.each(code, function(val, type) {
+        $scope.code[type] = prettyPrintOne(val);
+      });
+    }
+
+    function isInt(value) {
+      if (_.isFinite(value)) {
+        return true;
+      }
+      if (!_.isString(value)) {
+        return false;
+      }
+      return /^-{0,1}\d+$/.test(value);
+    }
+
+    function formatMeta(resp) {
+      var ret = '';
+      _.each(resp, function(val, key) {
+        if (key !== 'values' && !_.isPlainObject(val) && !_.isFunction(val)) {
+          ret += (ret.length ? ', ' : '') + key + ': ' + (_.isArray(val) ? '[' + val + ']' : val);
+        }
+      });
+      return prettyPrintOne(ret);
+    }
+
+    $scope.execute = function() {
+      $scope.status = 'warning';
+      $scope.loading = true;
+      $http.get(CRM.url('civicrm/ajax/api4/' + $scope.entity + '/' + $scope.action, {
+        params: angular.toJson(getParams()),
+        index: $scope.index
+      })).then(function(resp) {
+          $scope.loading = false;
+          $scope.status = 'success';
+          $scope.result = [formatMeta(resp.data), prettyPrintOne(JSON.stringify(resp.data.values, null, 2), 'js', 1)];
+        }, function(resp) {
+          $scope.loading = false;
+          $scope.status = 'danger';
+          $scope.result = [formatMeta(resp), prettyPrintOne(JSON.stringify(resp.data, null, 2))];
+        });
+    };
+
+    /**
+     * Format value to look like php code
+     */
+    function phpFormat(val, indent) {
+      if (typeof val === 'undefined') {
+        return '';
+      }
+      indent = (typeof indent === 'number') ? _.repeat(' ', indent) : (indent || '');
+      var ret = '',
+        baseLine = indent ? indent.slice(0, -2) : '',
+        newLine = indent ? '\n' : '',
+        trailingComma = indent ? ',' : '';
+      if ($.isPlainObject(val)) {
+        $.each(val, function(k, v) {
+          ret += (ret ? ', ' : '') + newLine + indent + "'" + k + "' => " + phpFormat(v);
+        });
+        return '[' + ret + trailingComma + newLine + baseLine + ']';
+      }
+      if ($.isArray(val)) {
+        $.each(val, function(k, v) {
+          ret += (ret ? ', ' : '') + newLine + indent + phpFormat(v);
+        });
+        return '[' + ret + trailingComma + newLine + baseLine + ']';
+      }
+      if (_.isString(val) && !_.contains(val, "'")) {
+        return "'" + val + "'";
+      }
+      return JSON.stringify(val).replace(/\$/g, '\\$');
+    }
+
+    function fetchMeta() {
+      crmApi4(getMetaParams)
+        .then(function(data) {
+          if (data.actions) {
+            getEntity().actions = data.actions;
+            selectAction();
+          }
+        });
+    }
+
+    // Help for an entity with no action selected
+    function showEntityHelp(entityName) {
+      var entityInfo = getEntity(entityName);
+      $scope.helpTitle = helpTitle = $scope.entity;
+      $scope.helpContent = helpContent = {
+        description: entityInfo.description,
+        comment: entityInfo.comment
+      };
+    }
+
+    if (!$scope.entity) {
+      $scope.helpTitle = helpTitle = ts('Help');
+      $scope.helpContent = helpContent = {description: ts('Welcome to the api explorer.'), comment: ts('Select an entity to begin.')};
+    } else if (!actions.length && !getEntity().actions) {
+      getMetaParams.actions = [$scope.entity, 'getActions', {chain: {fields: [$scope.entity, 'getFields', {action: '$name'}]}}];
+      fetchMeta();
+    } else {
+      selectAction();
+    }
+
+    if ($scope.entity) {
+      showEntityHelp($scope.entity);
+    }
+
+    // Update route when changing entity
+    $scope.$watch('entity', function(newVal, oldVal) {
+      if (oldVal !== newVal) {
+        // Flush actions cache to re-fetch for new entity
+        actions = [];
+        $location.url('/explorer/' + newVal);
+      }
+    });
+
+    // Update route when changing actions
+    $scope.$watch('action', function(newVal, oldVal) {
+      if ($scope.entity && $routeParams.api4action !== newVal && !_.isUndefined(newVal)) {
+        $location.url('/explorer/' + $scope.entity + '/' + newVal);
+      } else if (newVal) {
+        $scope.helpTitle = helpTitle = $scope.entity + '::' + newVal;
+        $scope.helpContent = helpContent = _.pick(_.findWhere(getEntity().actions, {name: newVal}), ['description', 'comment']);
+      }
+    });
+
+    $scope.indexHelp = {
+      description: ts('(string|int) Index results or select by index.'),
+      comment: ts('Pass a string to index the results by a field value. E.g. index: "name" will return an associative array with names as keys.') + '\n\n' +
+        ts('Pass an integer to return a single result; e.g. index: 0 will return the first result, 1 will return the second, and -1 will return the last.')
+    };
+
+    $scope.$watch('params', writeCode, true);
+    $scope.$watch('index', writeCode);
+    writeCode();
+
+  });
+
+  angular.module('api4Explorer').directive('crmApi4WhereClause', function($timeout) {
+    return {
+      scope: {
+        data: '=crmApi4WhereClause'
+      },
+      templateUrl: '~/api4Explorer/WhereClause.html',
+      link: function (scope, element, attrs) {
+        var ts = scope.ts = CRM.ts();
+        scope.newClause = '';
+        scope.conjunctions = ['AND', 'OR', 'NOT'];
+        scope.operators = CRM.vars.api4.operators;
+
+        scope.addGroup = function(op) {
+          scope.data.where.push([op, []]);
+        };
+
+        scope.removeGroup = function() {
+          scope.data.groupParent.splice(scope.data.groupIndex, 1);
+        };
+
+        scope.onSort = function(event, ui) {
+          $('.api4-where-fieldset').toggleClass('api4-sorting', event.type === 'sortstart');
+          $('.api4-input.form-inline').css('margin-left', '');
+        };
+
+        // Indent clause while dragging between nested groups
+        scope.onSortOver = function(event, ui) {
+          var offset = 0;
+          if (ui.sender) {
+            offset = $(ui.placeholder).offset().left - $(ui.sender).offset().left;
+          }
+          $('.api4-input.form-inline.ui-sortable-helper').css('margin-left', '' + offset + 'px');
+        };
+
+        scope.$watch('newClause', function(value) {
+          var field = value;
+          $timeout(function() {
+            if (field) {
+              scope.data.where.push([field, '=', '']);
+              scope.newClause = null;
+            }
+          });
+        });
+        scope.$watch('data.where', function(values) {
+          // Remove empty values
+          _.each(values, function(clause, index) {
+            if (typeof clause !== 'undefined' && !clause[0]) {
+              values.splice(index, 1);
+            }
+          });
+        }, true);
+      }
+    };
+  });
+
+  angular.module('api4Explorer').directive('api4ExpValue', function($routeParams, crmApi4) {
+    return {
+      scope: {
+        data: '=api4ExpValue'
+      },
+      require: 'ngModel',
+      link: function (scope, element, attrs, ctrl) {
+        var ts = scope.ts = CRM.ts(),
+          multi = _.includes(['IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'], scope.data.op),
+          entity = $routeParams.api4entity,
+          action = $routeParams.api4action;
+
+        function destroyWidget() {
+          var $el = $(element);
+          if ($el.is('.crm-form-date-wrapper .crm-hidden-date')) {
+            $el.crmDatepicker('destroy');
+          }
+          if ($el.is('.select2-container + input')) {
+            $el.crmEntityRef('destroy');
+          }
+          $(element).removeData().removeAttr('type').removeAttr('placeholder').show();
+        }
+
+        function makeWidget(field, op) {
+          var $el = $(element),
+            inputType = field.input_type;
+            dataType = field.data_type;
+          if (!op) {
+            op = field.serialize || dataType === 'Array' ? 'IN' : '=';
+          }
+          multi = _.includes(['IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN'], op);
+          if (op === 'IS NULL' || op === 'IS NOT NULL') {
+            $el.hide();
+            return;
+          }
+          if (inputType === 'Date') {
+            if (_.includes(['=', '!=', '<>', '<', '>=', '<', '<='], op)) {
+              $el.crmDatepicker({time: (field.input_attrs && field.input_attrs.time) || false});
+            }
+          } else if (_.includes(['=', '!=', '<>', 'IN', 'NOT IN'], op) && (field.fk_entity || field.options || dataType === 'Boolean')) {
+            if (field.fk_entity) {
+              $el.crmEntityRef({entity: field.fk_entity, select:{multiple: multi}});
+            } else if (field.options) {
+              $el.addClass('loading').attr('placeholder', ts('- select -')).crmSelect2({multiple: multi, data: [{id: '', text: ''}]});
+              loadFieldOptions(field.entity || entity).then(function(data) {
+                var options = [];
+                _.each(_.findWhere(data, {name: field.name}).options, function(val, key) {
+                  options.push({id: key, text: val});
+                });
+                $el.removeClass('loading').select2({data: options, multiple: multi});
+              });
+            } else if (dataType === 'Boolean') {
+              $el.attr('placeholder', ts('- select -')).crmSelect2({allowClear: false, multiple: multi, placeholder: ts('- select -'), data: [
+                {id: '1', text: ts('Yes')},
+                {id: '0', text: ts('No')}
+              ]});
+            }
+          } else if (dataType === 'Integer' && !multi) {
+            $el.attr('type', 'number');
+          }
+        }
+
+        function loadFieldOptions(entity) {
+          if (!fieldOptions[entity + action]) {
+            fieldOptions[entity + action] = crmApi4(entity, 'getFields', {
+              loadOptions: true,
+              action: action,
+              where: [["options", "!=", false]],
+              select: ["name", "options"]
+            });
+          }
+          return fieldOptions[entity + action];
+        }
+
+        // Copied from ng-list but applied conditionally if field is multi-valued
+        var parseList = function(viewValue) {
+          // If the viewValue is invalid (say required but empty) it will be `undefined`
+          if (_.isUndefined(viewValue)) return;
+
+          if (!multi) {
+            return viewValue;
+          }
+
+          var list = [];
+
+          if (viewValue) {
+            _.each(viewValue.split(','), function(value) {
+              if (value) list.push(_.trim(value));
+            });
+          }
+
+          return list;
+        };
+
+        // Copied from ng-list
+        ctrl.$parsers.push(parseList);
+        ctrl.$formatters.push(function(value) {
+          return _.isArray(value) ? value.join(', ') : value;
+        });
+
+        // Copied from ng-list
+        ctrl.$isEmpty = function(value) {
+          return !value || !value.length;
+        };
+
+        scope.$watchCollection('data', function(data) {
+          destroyWidget();
+          var field = getField(data.field, entity, action);
+          if (field) {
+            makeWidget(field, data.op);
+          }
+        });
+      }
+    };
+  });
+
+
+  angular.module('api4Explorer').directive('api4ExpChain', function(crmApi4) {
+    return {
+      scope: {
+        chain: '=api4ExpChain',
+        mainEntity: '=',
+        entities: '='
+      },
+      templateUrl: '~/api4Explorer/Chain.html',
+      link: function (scope, element, attrs) {
+        var ts = scope.ts = CRM.ts();
+
+        function changeEntity(newEntity, oldEntity) {
+          // When clearing entity remove this chain
+          if (!newEntity) {
+            scope.chain[0] = '';
+            return;
+          }
+          // Reset action && index
+          if (newEntity !== oldEntity) {
+            scope.chain[1][1] = scope.chain[1][2] = '';
+          }
+          if (getEntity(newEntity).actions) {
+            setActions();
+          } else {
+            crmApi4(newEntity, 'getActions', {chain: {fields: [newEntity, 'getFields', {action: '$name'}]}})
+              .then(function(data) {
+                getEntity(data.entity).actions = data;
+                if (data.entity === scope.chain[1][0]) {
+                  setActions();
+                }
+              });
+          }
+        }
+
+        function setActions() {
+          scope.actions = [''].concat(_.pluck(getEntity(scope.chain[1][0]).actions, 'name'));
+        }
+
+        // Set default params when choosing action
+        function changeAction(newAction, oldAction) {
+          var link;
+          // Prepopulate links
+          if (newAction && newAction !== oldAction) {
+            // Clear index
+            scope.chain[1][3] = '';
+            // Look for links back to main entity
+            _.each(entityFields(scope.chain[1][0]), function(field) {
+              if (field.fk_entity === scope.mainEntity) {
+                link = [field.name, '$id'];
+              }
+            });
+            // Look for links from main entity
+            if (!link && newAction !== 'create') {
+              _.each(entityFields(scope.mainEntity), function(field) {
+                if (field.fk_entity === scope.chain[1][0]) {
+                  link = ['id', '$' + field.name];
+                  // Since we're specifying the id, set index to getsingle
+                  scope.chain[1][3] = '0';
+                }
+              });
+            }
+            if (link && _.contains(['get', 'update', 'replace', 'delete'], newAction)) {
+              scope.chain[1][2] = '{where: [[' + link[0] + ', =, ' + link[1] + ']]}';
+            }
+            else if (link && _.contains(['create'], newAction)) {
+              scope.chain[1][2] = '{values: {' + link[0] + ': ' + link[1] + '}}';
+            }
+            else if (link && _.contains(['save'], newAction)) {
+              scope.chain[1][2] = '{records: [{' + link[0] + ': ' + link[1] + '}]}';
+            } else {
+              scope.chain[1][2] = '{}';
+            }
+          }
+        }
+
+        scope.$watch("chain[1][0]", changeEntity);
+        scope.$watch("chain[1][1]", changeAction);
+      }
+    };
+  });
+
+  function getEntity(entityName) {
+    return _.findWhere(schema, {name: entityName});
+  }
+
+  function entityFields(entityName, action) {
+    var entity = getEntity(entityName);
+    if (entity && action && entity.actions) {
+      return _.findWhere(entity.actions, {name: action}).fields;
+    }
+    return _.result(entity, 'fields');
+  }
+
+  function getField(fieldName, entity, action) {
+    var fieldNames = fieldName.split('.');
+    return get(entity, fieldNames);
+
+    function get(entity, fieldNames) {
+      if (fieldNames.length === 1) {
+        return _.findWhere(entityFields(entity, action), {name: fieldNames[0]});
+      }
+      var comboName = _.findWhere(entityFields(entity, action), {name: fieldNames[0] + '.' + fieldNames[1]});
+      if (comboName) {
+        return comboName;
+      }
+      var linkName = fieldNames.shift(),
+        entityLinks = _.findWhere(links, {entity: entity}).links,
+        newEntity = _.findWhere(entityLinks, {alias: linkName}).entity;
+      return get(newEntity, fieldNames);
+    }
+  }
+
+  // Collapsible optgroups for select2
+  $(function() {
+    $('body')
+      .on('select2-open', function(e) {
+        if ($(e.target).hasClass('collapsible-optgroups')) {
+          $('#select2-drop')
+            .off('.collapseOptionGroup')
+            .addClass('collapsible-optgroups-enabled')
+            .on('click.collapseOptionGroup', '.select2-result-with-children > .select2-result-label', function() {
+              $(this).parent().toggleClass('optgroup-expanded');
+            });
+        }
+      })
+     .on('select2-close', function() {
+        $('#select2-drop').off('.collapseOptionGroup').removeClass('collapsible-optgroups-enabled');
+      });
+  });
+})(angular, CRM.$, CRM._);
diff --git a/ang/api4Explorer/WhereClause.html b/ang/api4Explorer/WhereClause.html
new file mode 100644 (file)
index 0000000..d36480f
--- /dev/null
@@ -0,0 +1,39 @@
+<legend>{{ data.label || data.op + ' group' }}<span class="crm-marker" ng-if="data.required"> *</span></legend>
+<div class="btn-group btn-group-xs" ng-if="data.groupParent">
+  <button class="btn btn-danger-outline" ng-click="removeGroup()" title="{{ ts('Remove group') }}">
+    <i class="crm-i fa-trash"></i>
+  </button>
+</div>
+<div class="api4-where-group-sortable" ng-model="data.where" ui-sortable="{axis: 'y', connectWith: '.api4-where-group-sortable', containment: '.api4-where-fieldset', over: onSortOver, start: onSort, stop: onSort}">
+  <div class="api4-input form-inline clearfix" ng-repeat="(index, clause) in data.where">
+    <div class="api4-clause-badge" title="{{ ts('Drag to reposition') }}">
+      <span class="badge badge-info">
+        <span ng-if="!index && !data.groupParent">Where</span>
+        <span ng-if="index || data.groupParent">{{ data.op }}</span>
+        <i class="crm-i fa-arrows"></i>
+      </span>
+    </div>
+    <div ng-if="clause[0] !== 'AND' && clause[0] !== 'OR' && clause[0] !== 'NOT'" class="api4-input-group">
+      <input class="collapsible-optgroups form-control" ng-model="clause[0]" crm-ui-select="{data: data.fields, allowClear: true, placeholder: 'Field'}" />
+      <select class="form-control api4-operator" ng-model="clause[1]" ng-options="o for o in operators" ></select>
+      <input class="form-control" ng-model="clause[2]" api4-exp-value="{field: clause[0], op: clause[1]}" />
+    </div>
+    <fieldset class="clearfix" ng-if="clause[0] === 'AND' || clause[0] === 'OR' || clause[0] === 'NOT'" crm-api4-where-clause="{where: clause[1], op: clause[0], fields: data.fields, operators: data.operators, groupParent: data.where, groupIndex: index}">
+    </fieldset>
+  </div>
+</div>
+<div class="api4-input form-inline">
+  <div class="api4-clause-badge">
+    <div class="btn-group btn-group-xs" title="{{ data.groupParent ? ts('Add a subgroup of clauses') : ts('Add a group of clauses') }}">
+      <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+        {{ data.op }} <span class="caret"></span>
+      </button>
+      <ul class="dropdown-menu api4-add-where-group-menu">
+        <li ng-repeat="con in conjunctions" ng-if="data.op !== con">
+          <a href ng-click="addGroup(con)">{{ con }}</a>
+        </li>
+      </ul>
+    </div>
+  </div>
+  <input class="collapsible-optgroups form-control" ng-model="newClause" title="Add a single clause" crm-ui-select="{data: data.fields, placeholder: 'Add clause'}" />
+</div>
\ No newline at end of file
index a1ff51ae5749074c93fd2d019b1e93a5950f9815..f140712ea46b234aa7c92fde868be7ee842f3b74 100644 (file)
             reqs.caseStatuses = ['OptionValue', 'get', {
               option_group_id: 'case_status',
               sequential: 1,
-              options: {limit: 0}
+              options: {
+                sort: 'weight',
+                limit: 0
+              }
             }];
             reqs.actTypes = ['OptionValue', 'get', {
               option_group_id: 'activity_type',
index 5d67281e45816399b48ec2b34ebaedeeeea2ef85..43f2d735c7a133bbae0c5803907501427dbca410 100644 (file)
@@ -23,6 +23,48 @@ function civicrm_api($entity, $action, $params, $extra = NULL) {
   return \Civi::service('civi_api_kernel')->runSafe($entity, $action, $params, $extra);
 }
 
+/**
+ * Procedural wrapper for the OO api version 4.
+ *
+ * @param string $entity
+ * @param string $action
+ * @param array $params
+ * @param string|int $index
+ *   If $index is a string, the results array will be indexed by that key.
+ *   If $index is an integer, only the result at that index will be returned.
+ *
+ * @return \Civi\Api4\Generic\Result
+ * @throws \API_Exception
+ * @throws \Civi\API\Exception\NotImplementedException
+ */
+function civicrm_api4($entity, $action, $params = [], $index = NULL) {
+  $apiCall = \Civi\Api4\Utils\ActionUtil::getAction($entity, $action);
+  foreach ($params as $name => $param) {
+    $setter = 'set' . ucfirst($name);
+    $apiCall->$setter($param);
+  }
+  $result = $apiCall->execute();
+
+  // Index results by key
+  if ($index && is_string($index) && !CRM_Utils_Rule::integer($index)) {
+    $result->indexBy($index);
+  }
+  // Return result at index
+  if (CRM_Utils_Rule::integer($index)) {
+    $item = $result->itemAt($index);
+    if (is_null($item)) {
+      throw new \API_Exception("Index $index not found in api results");
+    }
+    // Attempt to return a Result object if item is array, otherwise just return the item
+    if (!is_array($item)) {
+      return $item;
+    }
+    $result->exchangeArray($item);
+
+  }
+  return $result;
+}
+
 /**
  * Version 3 wrapper for civicrm_api.
  *
index 8cdcc9e8e7c101e1b0fe151881a0b3e7ebaf2f01..dff79069f40ae90664f266ecd761f7a2231985cf 100644 (file)
@@ -294,8 +294,7 @@ class civicrm_cli {
    * @return bool
    */
   private function _validateOptions() {
-    $required = $this->_required_arguments;
-    while (list(, $var) = each($required)) {
+    foreach ($this->_required_arguments as $var) {
       $index = '_' . $var;
       if (empty($this->$index)) {
         $missing_arg = '--' . $var;
index b298a5c9baebd2f2c26493abea016c50179dc766..42578e4e90e2a86db080108c85aff30edfe90763 100644 (file)
       "select2": {
         "url": "https://github.com/colemanw/select2/archive/v3.5-civicrm-1.0.zip"
       },
+      "js-yaml": {
+        "url": "https://github.com/nodeca/js-yaml/archive/3.13.1.zip",
+        "ignore": ["benchmark", "bin", "demo", "examples", "lib", "support", "test"]
+      },
       "smartmenus": {
         "url": "https://github.com/vadikom/smartmenus/archive/1.1.0.zip",
         "ignore": [".gitignore", "Gruntfile.js"]
index ab0f88ec85c2107011c5f89251960cf47f8d1db6..9f5328a8ba4e478db6ef096b0dec09f507aeee55 100644 (file)
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "195f60bb40e72b390be3211fcc870a38",
+    "content-hash": "f0b735ec69179cc1b69b87e335db9c7b",
     "packages": [
         {
             "name": "civicrm/civicrm-cxn-rpc",
index 22eee0a62b4819c365f4e9955de5388834a58022..c0c8223f508a9c606e6ffdd23fa9a0887637b2a4 100644 (file)
   organization: Agileware
   jira        : agileware
 
-- github      : agilewarealok
-  name        : Alok Patel
-  organization: Agileware
-  jira        : agilewarealok
-
 - github      : agileware-dev
   name        : Agileware Team
   organization: Agileware
diff --git a/css/api4-explorer.css b/css/api4-explorer.css
new file mode 100644 (file)
index 0000000..a5be9c8
--- /dev/null
@@ -0,0 +1,195 @@
+/* Style rules for Api4 Explorer */
+
+#bootstrap-theme.api4-explorer-page .panel-heading {
+  height: 50px;
+}
+#bootstrap-theme.api4-explorer-page .panel-body {
+  min-height: calc( 100% - 50px);
+}
+#bootstrap-theme.api4-explorer-page .explorer-params-panel .panel-heading {
+  padding-top: 12px;
+}
+#bootstrap-theme.api4-explorer-page .explorer-params-panel .panel-heading button {
+  position: relative;
+  top: -5px;
+}
+#bootstrap-theme .explorer-params-panel .panel-heading .form-inline > .select2-container {
+  max-width: 25% !important;
+}
+#bootstrap-theme.api4-explorer-page .api4-explorer-row {
+  display: flex;
+}
+#bootstrap-theme.api4-explorer-page > div > .panel {
+  flex: 1;
+  margin: 10px;
+  min-height: 400px;
+}
+#bootstrap-theme.api4-explorer-page > div > form.panel {
+  flex: 2;
+}
+/* Fix weird shorditch style */
+#bootstrap-theme.api4-explorer-page .api4-explorer-row .panel .panel-heading {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
+  margin-bottom: 0;
+}
+#bootstrap-theme.api4-explorer-page .explorer-code-panel table td:first-child {
+  width: 5em;
+}
+
+#bootstrap-theme.api4-explorer-page .explorer-params-panel > .panel-body > div.api4-input {
+  margin-bottom: 10px;
+}
+
+#bootstrap-theme.api4-explorer-page .api4-input.form-inline > label {
+  margin-right: 12px;
+}
+
+#bootstrap-theme.api4-explorer-page .explorer-help-panel .panel-body {
+  word-break: break-word;
+}
+
+#bootstrap-theme.api4-explorer-page form label {
+  text-transform: capitalize;
+}
+
+#bootstrap-theme.api4-explorer-page fieldset {
+  padding: 6px;
+  border: 1px solid lightgrey;
+  margin-bottom: 10px;
+  position: relative;
+}
+
+#bootstrap-theme.api4-explorer-page fieldset legend {
+  background-color: white;
+  font-size: 13px;
+  margin: 0;
+  width: auto;
+  border: 0 none;
+  padding: 2px 5px;
+  text-transform: capitalize;
+}
+#bootstrap-theme.api4-explorer-page fieldset > .btn-group {
+  position: absolute;
+  right: 0;
+  top: 11px;
+}
+#bootstrap-theme.api4-explorer-page fieldset > .btn-group .btn {
+  border: 0 none;
+}
+
+#bootstrap-theme.api4-explorer-page fieldset div.api4-input {
+  margin-bottom: 10px;
+}
+
+#bootstrap-theme.api4-explorer-page fieldset div.api4-input.ui-sortable-helper {
+  background-color: rgba(255, 255, 255, .9);
+}
+
+#bootstrap-theme.api4-explorer-page fieldset div.api4-input.ui-sortable-helper {
+  background-color: rgba(255, 255, 255, .9);
+}
+
+#bootstrap-theme.api4-explorer-page div.api4-input.form-inline .form-control {
+  margin-right: 6px;
+}
+
+#bootstrap-theme.api4-explorer-page div.api4-input.form-inline .form-control:not(.api4-option-selected) {
+  transition: none;
+  box-shadow: none;
+  -webkit-box-shadow: none;
+  -moz-box-shadow: none;
+}
+
+#bootstrap-theme.api4-explorer-page div.api4-input.form-inline .form-control label {
+  font-weight: normal;
+  position: relative;
+  top: -2px;
+}
+
+#bootstrap-theme.api4-explorer-page .api4-where-fieldset fieldset {
+  float: right;
+  width: calc(100% - 58px);
+  margin-top: -8px;
+}
+
+#bootstrap-theme.api4-explorer-page .api4-where-fieldset.api4-sorting fieldset .api4-where-group-sortable {
+  min-height: 3.5em;
+}
+
+#bootstrap-theme.api4-explorer-page .api4-input-group {
+  display: inline-block;
+}
+
+#bootstrap-theme.api4-explorer-page .api4-clause-badge {
+  width: 55px;
+  display: inline-block;
+  cursor: move;
+}
+#bootstrap-theme.api4-explorer-page .api4-clause-badge .badge {
+  opacity: .5;
+  position: relative;
+}
+#bootstrap-theme.api4-explorer-page .api4-clause-badge .caret {
+  margin: 0;
+}
+#bootstrap-theme.api4-explorer-page .api4-clause-badge .crm-i {
+  display: none;
+  padding: 0 6px;
+}
+#bootstrap-theme.api4-explorer-page .ui-sortable-helper .api4-clause-badge .badge span {
+  display: none;
+}
+#bootstrap-theme.api4-explorer-page .ui-sortable-helper .api4-clause-badge .crm-i {
+  display: inline-block;
+}
+
+#bootstrap-theme.api4-explorer-page .api4-operator,
+#bootstrap-theme.api4-explorer-page .api4-chain-index,
+#bootstrap-theme.api4-explorer-page .api4-index,
+#bootstrap-theme.api4-explorer-page .api4-chain-action {
+  width: 70px;
+}
+#bootstrap-theme.api4-explorer-page .api4-chain-params {
+  width: calc( 100% - 346px);
+}
+
+#bootstrap-theme.api4-explorer-page .api4-add-where-group-menu {
+  min-width: 80px;
+  background-color: rgba(186, 225, 251, 0.94);
+}
+#bootstrap-theme.api4-explorer-page .api4-add-where-group-menu a {
+  padding: 5px 10px;
+}
+
+/* Collapsible optgroups for select2 */
+div.select2-drop.collapsible-optgroups-enabled .select2-result-with-children:not(.optgroup-expanded) > .select2-result-sub > li.select2-result {
+  display: none;
+}
+div.select2-drop.collapsible-optgroups-enabled .select2-result-with-children > .select2-result-label:before {
+  font-family: FontAwesome;
+  content: "\f0da";
+  display: inline-block;
+  padding-right: 3px;
+  vertical-align: middle;
+  font-weight: normal;
+}
+div.select2-drop.collapsible-optgroups-enabled .select2-result-with-children.optgroup-expanded > .select2-result-label:before {
+  content: "\f0d7";
+}
+
+/**
+ * Shims so the UI isn't completely broken when a Bootstrap theme is not installed
+ */
+#bootstrap-theme.api4-explorer-page * {
+  box-sizing: border-box;
+}
+.api4-explorer-page.panel {
+  border: 1px solid grey;
+  background-color: white;
+}
+.api4-explorer-page.panel-heading {
+  padding: 10px 20px;
+  color: #464354;
+  background-color: #f3f6f7;
+}
index 2987c9d27dafbe5c9dfccc4f003c8c4c0dcc27bd..4288253c8f4ce3a72e17d6deb00efc6fb20bf182 100644 (file)
@@ -23,7 +23,6 @@ dm_install_packages "$SRC/packages" "$TRG/packages"
 dm_install_vendor "$SRC/vendor" "$TRG/vendor"
 dm_install_bower "$SRC/bower_components" "$TRG/bower_components"
 dm_install_drupal "$SRC/backdrop" "$TRG/backdrop"
-dm_install_cvext org.civicrm.api4 "$TRG/ext/api4"
 dm_install_cvext com.iatspayments.civicrm "$TRG/ext/iatspayments"
 
 # gen tarball
index 7616d3f6658b143d1b9a8d7842f32a54e598280d..f3d4ba33a5440b1748138ff5560ab5f5a0c4ed6b 100755 (executable)
@@ -23,7 +23,6 @@ dm_install_packages "$SRC/packages" "$TRG/packages"
 dm_install_vendor "$SRC/vendor" "$TRG/vendor"
 dm_install_bower "$SRC/bower_components" "$TRG/bower_components"
 dm_install_drupal "$SRC/drupal" "$TRG/drupal"
-dm_install_cvext org.civicrm.api4 "$TRG/ext/api4"
 dm_install_cvext com.iatspayments.civicrm "$TRG/ext/iatspayments"
 
 # gen tarball
index b753330028acef278e18f4c0f18ac609de1a2e23..8d50524a320b7704462a8a039523de4c1e345deb 100644 (file)
@@ -30,7 +30,6 @@ dm_install_packages $DM_PACKAGESDIR "$TRG/packages"
 dm_install_vendor "$SRC/vendor" "$TRG/vendor"
 dm_install_bower "$SRC/bower_components" "$TRG/bower_components"
 dm_install_drupal "$DM_DRUPALDIR" "$TRG/drupal"
-dm_install_cvext org.civicrm.api4 "$TRG/ext/api4"
 dm_install_cvext com.iatspayments.civicrm "$TRG/ext/iatspayments"
 
 # gen tarball
index 62433e5485d41d70c4bd6720dd525498f1f77f29..f34db2803a6232c99dbbfb5490c86712df368eed 100755 (executable)
@@ -23,7 +23,6 @@ dm_install_packages "$SRC/packages" "$TRG/packages"
 dm_install_vendor "$SRC/vendor" "$TRG/vendor"
 dm_install_bower "$SRC/bower_components" "$TRG/bower_components"
 dm_install_drupal "$SRC/drupal" "$TRG/drupal"
-dm_install_cvext org.civicrm.api4 "$TRG/ext/api4"
 dm_install_cvext com.iatspayments.civicrm "$TRG/ext/iatspayments"
 
 # gen tarball
index 0056b00a6cfeacba2114bb2ff77433069c74636c..3fb36905fd0096a083dc3f95f843c6b7921cf287 100755 (executable)
@@ -23,7 +23,6 @@ dm_install_packages "$SRC/packages" "$TRG/packages"
 dm_install_vendor "$SRC/vendor" "$TRG/vendor"
 dm_install_bower "$SRC/bower_components" "$TRG/bower_components"
 dm_install_drupal "$SRC/drupal" "$TRG/drupal"
-dm_install_cvext org.civicrm.api4 "$TRG/ext/api4"
 dm_install_cvext com.iatspayments.civicrm "$TRG/ext/iatspayments"
 
 # delete packages that distributions on Drupal.org repalce if present
index cfab0232876c27a2de0f21a4a9e7dd2d40e22e67..65b342cefa03b5bded0b476c6b8115f8b452f80e 100755 (executable)
@@ -22,7 +22,6 @@ dm_install_core "$SRC" "$TRG"
 dm_install_packages "$SRC/packages" "$TRG/packages"
 dm_install_vendor "$SRC/vendor" "$TRG/vendor"
 dm_install_bower "$SRC/bower_components" "$TRG/bower_components"
-dm_install_cvext org.civicrm.api4 "$TRG/ext/api4"
 dm_install_cvext com.iatspayments.civicrm "$TRG/ext/iatspayments"
 
 ## WTF: It's so good we'll install it twice!
index c588745bd9b164d3375998b38020c569ffe9c7ac..ee0628e376f8f7a209f0133a2b31b9746428bcf0 100644 (file)
@@ -23,7 +23,6 @@ dm_install_packages "$SRC/packages" "$TRG/civicrm/civicrm/packages"
 dm_install_vendor "$SRC/vendor" "$TRG/civicrm/civicrm/vendor"
 dm_install_bower "$SRC/bower_components" "$TRG/civicrm/civicrm/bower_components"
 dm_install_wordpress "$SRC/WordPress" "$TRG/civicrm"
-dm_install_cvext org.civicrm.api4 "$TRG/civicrm/civicrm/ext/api4"
 dm_install_cvext com.iatspayments.civicrm "$TRG/civicrm/civicrm/ext/iatspayments"
 
 # gen tarball
index 4192e68e5acd2fdb7706e5062a16a904313e21bf..1633610fa25415ceed6cd27b646c67bac12bebc8 100644 (file)
@@ -1,4 +1,7 @@
 {
+  "org.civicrm.api4": {
+    "obsolete": "5.19"
+  },
   "uk.squiffle.kam": {
     "obsolete": "5.12"
   },
index b64f33eec2c2e34beff9ac375974c9b74016de59..bfff407843dc2e02e4723c866e431ecc48d8854d 100644 (file)
@@ -3,7 +3,7 @@
  * @see https://wiki.civicrm.org/confluence/display/CRMDOC/AJAX+Interface
  * @see https://wiki.civicrm.org/confluence/display/CRMDOC/Ajax+Pages+and+Forms
  */
-(function($, CRM, undefined) {
+(function($, CRM, _, undefined) {
   /**
    * @param string path
    * @param string|object query
     });
   };
 
+  // result is an array, but in js, an array is also an object
+  // Assign all the metadata properties to it, mirroring the results arrayObject in php
+  function arrayObject(data) {
+    var result = data.values || [];
+    if (_.isArray(result)) {
+      delete(data.values);
+      _.assign(result, data);
+    }
+    return result;
+  }
+
+  CRM.api4 = function(entity, action, params, index) {
+    return new Promise(function(resolve, reject) {
+      if (typeof entity === 'string') {
+        $.post(CRM.url('civicrm/ajax/api4/' + entity + '/' + action), {
+          params: JSON.stringify(params),
+          index: index
+        })
+          .done(function (data) {
+            resolve(arrayObject(data));
+          })
+          .fail(function (data) {
+            reject(data.responseJSON);
+          });
+      } else {
+        $.post(CRM.url('civicrm/ajax/api4'), {
+          calls: JSON.stringify(entity)
+        })
+          .done(function(data) {
+            _.each(data, function(item, key) {
+              data[key] = arrayObject(item);
+            });
+            resolve(data);
+          })
+          .fail(function (data) {
+            reject(data.responseJSON);
+          });
+      }
+    });
+  };
+
   /**
    * AJAX api
    * @link http://wiki.civicrm.org/confluence/display/CRMDOC/AJAX+Interface#AJAXInterface-CRM.api3
       });
   });
 
-}(jQuery, CRM));
+}(jQuery, CRM, _));
diff --git a/js/load-bootstrap.js b/js/load-bootstrap.js
new file mode 100644 (file)
index 0000000..e528805
--- /dev/null
@@ -0,0 +1,7 @@
+// Loads a copy of shoreditch's bootstrap if bootstrap is missing
+CRM.$(function($) {
+  if (!$.isFunction($.fn.dropdown)) {
+    //CRM.loadScript(CRM.vars.api4.basePath + 'lib/shoreditch/dropdown.js');
+    //$('head').append('<link type="text/css" rel="stylesheet" href="' + CRM.vars.api4.basePath + 'lib/shoreditch/bootstrap.css" />');
+  }
+});
index 2915dc7814fe5020a03f613abe5ce5eaf923edc5..1710c33fdc590a2ebc269766c99e930cde51ba5f 100644 (file)
@@ -21,6 +21,7 @@ module.exports = function(config) {
     autoWatch: true,
     browsers: ['PhantomJS'],
     exclude: [
+      'ang/api4Explorer/Explorer.js'
     ],
     files: [
       'bower_components/phantomjs-polyfill/bind-polyfill.js',
index 2771b7c7578b59f870d16811f44b1a707d03f192..394c05b8b1273560c2a633d3146b9e7ca77c5129 100644 (file)
@@ -1,8 +1,8 @@
--- MySQL dump 10.13  Distrib 5.7.25, for osx10.9 (x86_64)
+-- MySQL dump 10.13  Distrib 5.5.58, for osx10.12 (x86_64)
 --
--- Host: 127.0.0.1    Database: dmasterciv_tdjht
+-- Host: 127.0.0.1    Database: dmastercivi_m0po6
 -- ------------------------------------------------------
--- Server version      5.7.25
+-- Server version      5.7.23
 
 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -87,7 +87,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_activity` WRITE;
 /*!40000 ALTER TABLE `civicrm_activity` DISABLE KEYS */;
-INSERT INTO `civicrm_activity` (`id`, `source_record_id`, `activity_type_id`, `subject`, `activity_date_time`, `duration`, `location`, `phone_id`, `phone_number`, `details`, `status_id`, `priority_id`, `parent_id`, `is_test`, `medium_id`, `is_auto`, `relationship_id`, `is_current_revision`, `original_id`, `result`, `is_deleted`, `campaign_id`, `engagement_level`, `weight`, `is_star`, `created_date`, `modified_date`) VALUES (1,NULL,10,'Subject for Pledge Acknowledgment','2019-04-23 23:22:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(2,NULL,9,'Subject for Tell a Friend','2018-10-16 16:57:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(3,NULL,9,'Subject for Tell a Friend','2018-09-26 08:55:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(4,NULL,9,'Subject for Tell a Friend','2019-02-14 17:35:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(5,NULL,10,'Subject for Pledge Acknowledgment','2019-03-07 08:59:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(6,NULL,10,'Subject for Pledge Acknowledgment','2019-02-02 17:26:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(7,NULL,9,'Subject for Tell a Friend','2019-01-21 07:08:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(8,NULL,9,'Subject for Tell a Friend','2019-03-15 04:50:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(9,NULL,10,'Subject for Pledge Acknowledgment','2019-05-05 16:07:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(10,NULL,9,'Subject for Tell a Friend','2019-04-14 16:51:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(11,NULL,10,'Subject for Pledge Acknowledgment','2018-09-19 08:12:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(12,NULL,10,'Subject for Pledge Acknowledgment','2018-10-14 13:25:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(13,NULL,10,'Subject for Pledge Acknowledgment','2019-01-27 16:50:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(14,NULL,9,'Subject for Tell a Friend','2019-07-15 09:05:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(15,NULL,10,'Subject for Pledge Acknowledgment','2019-05-29 05:19:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(16,NULL,9,'Subject for Tell a Friend','2019-07-24 06:12:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(17,NULL,9,'Subject for Tell a Friend','2019-06-12 12:57:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(18,NULL,10,'Subject for Pledge Acknowledgment','2018-11-29 11:27:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(19,NULL,9,'Subject for Tell a Friend','2019-04-21 13:47:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(20,NULL,9,'Subject for Tell a Friend','2019-04-27 19:50:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(21,NULL,10,'Subject for Pledge Acknowledgment','2018-09-30 21:46:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(22,NULL,10,'Subject for Pledge Acknowledgment','2019-04-18 19:52:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(23,NULL,9,'Subject for Tell a Friend','2018-12-20 09:50:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(24,NULL,9,'Subject for Tell a Friend','2019-07-17 07:02:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(25,NULL,9,'Subject for Tell a Friend','2019-05-04 22:46:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(26,NULL,9,'Subject for Tell a Friend','2019-06-24 14:48:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(27,NULL,10,'Subject for Pledge Acknowledgment','2019-07-23 09:30:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(28,NULL,9,'Subject for Tell a Friend','2019-07-02 03:28:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(29,NULL,10,'Subject for Pledge Acknowledgment','2019-03-30 17:24:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(30,NULL,10,'Subject for Pledge Acknowledgment','2019-01-31 23:28:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(31,NULL,10,'Subject for Pledge Acknowledgment','2019-04-15 15:11:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(32,NULL,10,'Subject for Pledge Acknowledgment','2019-05-04 23:27:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(33,NULL,10,'Subject for Pledge Acknowledgment','2019-05-11 10:26:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(34,NULL,9,'Subject for Tell a Friend','2019-04-02 03:16:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(35,NULL,9,'Subject for Tell a Friend','2019-08-07 18:28:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(36,NULL,10,'Subject for Pledge Acknowledgment','2019-01-07 04:35:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(37,NULL,9,'Subject for Tell a Friend','2019-06-20 01:03:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(38,NULL,10,'Subject for Pledge Acknowledgment','2018-10-26 23:57:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(39,NULL,9,'Subject for Tell a Friend','2019-01-19 16:23:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(40,NULL,9,'Subject for Tell a Friend','2018-11-03 17:45:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(41,NULL,10,'Subject for Pledge Acknowledgment','2018-08-23 16:39:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(42,NULL,9,'Subject for Tell a Friend','2019-04-13 02:08:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(43,NULL,10,'Subject for Pledge Acknowledgment','2018-11-01 05:28:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(44,NULL,9,'Subject for Tell a Friend','2019-04-19 11:08:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(45,NULL,9,'Subject for Tell a Friend','2018-11-04 18:37:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(46,NULL,9,'Subject for Tell a Friend','2018-09-24 16:17:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(47,NULL,9,'Subject for Tell a Friend','2019-06-10 08:35:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(48,NULL,9,'Subject for Tell a Friend','2018-08-29 01:13:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(49,NULL,10,'Subject for Pledge Acknowledgment','2018-11-19 03:48:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(50,NULL,10,'Subject for Pledge Acknowledgment','2018-10-06 15:43:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(51,NULL,10,'Subject for Pledge Acknowledgment','2019-02-18 18:39:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(52,NULL,10,'Subject for Pledge Acknowledgment','2018-11-15 03:43:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:29','2019-08-15 21:31:29'),(53,NULL,9,'Subject for Tell a Friend','2018-10-09 17:44:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(54,NULL,10,'Subject for Pledge Acknowledgment','2019-02-24 04:16:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(55,NULL,9,'Subject for Tell a Friend','2019-06-11 23:34:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(56,NULL,10,'Subject for Pledge Acknowledgment','2019-03-14 01:21:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(57,NULL,9,'Subject for Tell a Friend','2018-09-03 17:19:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(58,NULL,10,'Subject for Pledge Acknowledgment','2018-09-19 23:17:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(59,NULL,9,'Subject for Tell a Friend','2019-07-12 03:22:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(60,NULL,10,'Subject for Pledge Acknowledgment','2018-10-10 23:56:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(61,NULL,10,'Subject for Pledge Acknowledgment','2019-07-18 18:19:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(62,NULL,9,'Subject for Tell a Friend','2019-01-27 19:04:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(63,NULL,9,'Subject for Tell a Friend','2019-01-12 04:16:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(64,NULL,9,'Subject for Tell a Friend','2019-03-08 03:20:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(65,NULL,10,'Subject for Pledge Acknowledgment','2018-10-23 12:20:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(66,NULL,9,'Subject for Tell a Friend','2019-07-05 14:30:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(67,NULL,10,'Subject for Pledge Acknowledgment','2018-08-30 09:27:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(68,NULL,9,'Subject for Tell a Friend','2018-10-10 03:02:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(69,NULL,9,'Subject for Tell a Friend','2018-12-02 22:31:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(70,NULL,9,'Subject for Tell a Friend','2018-08-20 15:12:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(71,NULL,10,'Subject for Pledge Acknowledgment','2018-08-23 07:14:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(72,NULL,9,'Subject for Tell a Friend','2018-12-04 12:48:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(73,NULL,9,'Subject for Tell a Friend','2019-08-15 20:46:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(74,NULL,10,'Subject for Pledge Acknowledgment','2019-06-04 13:17:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(75,NULL,9,'Subject for Tell a Friend','2019-06-09 14:24:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(76,NULL,10,'Subject for Pledge Acknowledgment','2019-01-23 23:13:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(77,NULL,9,'Subject for Tell a Friend','2018-12-09 16:31:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(78,NULL,10,'Subject for Pledge Acknowledgment','2019-08-10 16:14:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(79,NULL,10,'Subject for Pledge Acknowledgment','2018-11-07 20:53:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(80,NULL,10,'Subject for Pledge Acknowledgment','2018-12-12 19:34:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(81,NULL,10,'Subject for Pledge Acknowledgment','2018-11-30 10:17:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(82,NULL,9,'Subject for Tell a Friend','2018-09-21 11:27:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(83,NULL,10,'Subject for Pledge Acknowledgment','2019-06-17 12:36:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(84,NULL,9,'Subject for Tell a Friend','2018-08-23 06:09:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(85,NULL,10,'Subject for Pledge Acknowledgment','2019-01-27 21:14:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(86,NULL,10,'Subject for Pledge Acknowledgment','2018-12-24 03:59:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(87,NULL,9,'Subject for Tell a Friend','2018-11-16 03:21:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(88,NULL,9,'Subject for Tell a Friend','2019-04-08 16:23:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(89,NULL,10,'Subject for Pledge Acknowledgment','2018-10-28 12:28:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(90,NULL,9,'Subject for Tell a Friend','2019-08-01 01:05:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(91,NULL,9,'Subject for Tell a Friend','2019-04-03 19:10:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(92,NULL,10,'Subject for Pledge Acknowledgment','2019-07-14 13:40:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(93,NULL,9,'Subject for Tell a Friend','2018-08-23 01:06:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(94,NULL,9,'Subject for Tell a Friend','2019-01-14 13:08:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(95,NULL,9,'Subject for Tell a Friend','2019-03-28 09:13:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(96,NULL,10,'Subject for Pledge Acknowledgment','2019-08-06 12:45:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(97,NULL,9,'Subject for Tell a Friend','2018-11-04 23:22:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(98,NULL,9,'Subject for Tell a Friend','2018-09-07 18:33:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(99,NULL,10,'Subject for Pledge Acknowledgment','2019-05-25 17:55:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(100,NULL,9,'Subject for Tell a Friend','2018-11-28 04:12:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(101,NULL,10,'Subject for Pledge Acknowledgment','2019-02-11 08:22:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(102,NULL,10,'Subject for Pledge Acknowledgment','2018-11-28 16:31:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(103,NULL,10,'Subject for Pledge Acknowledgment','2019-07-26 04:25:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(104,NULL,9,'Subject for Tell a Friend','2019-03-26 16:45:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(105,NULL,9,'Subject for Tell a Friend','2018-11-13 14:46:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(106,NULL,9,'Subject for Tell a Friend','2019-04-25 01:45:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(107,NULL,9,'Subject for Tell a Friend','2019-01-09 18:11:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(108,NULL,9,'Subject for Tell a Friend','2018-11-24 15:32:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(109,NULL,10,'Subject for Pledge Acknowledgment','2019-03-06 16:10:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(110,NULL,9,'Subject for Tell a Friend','2019-06-04 10:20:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(111,NULL,10,'Subject for Pledge Acknowledgment','2019-07-26 14:13:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(112,NULL,10,'Subject for Pledge Acknowledgment','2019-01-30 14:36:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(113,NULL,9,'Subject for Tell a Friend','2019-07-12 12:36:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(114,NULL,10,'Subject for Pledge Acknowledgment','2018-10-31 07:30:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(115,NULL,9,'Subject for Tell a Friend','2018-11-09 03:27:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(116,NULL,10,'Subject for Pledge Acknowledgment','2019-03-19 19:04:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(117,NULL,10,'Subject for Pledge Acknowledgment','2018-10-11 08:25:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(118,NULL,10,'Subject for Pledge Acknowledgment','2018-09-19 18:24:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(119,NULL,10,'Subject for Pledge Acknowledgment','2019-06-11 19:32:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(120,NULL,10,'Subject for Pledge Acknowledgment','2018-12-01 10:40:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(121,NULL,10,'Subject for Pledge Acknowledgment','2019-01-02 12:01:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(122,NULL,9,'Subject for Tell a Friend','2019-04-08 07:44:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(123,NULL,9,'Subject for Tell a Friend','2019-06-26 09:38:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(124,NULL,10,'Subject for Pledge Acknowledgment','2018-11-27 04:02:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(125,NULL,10,'Subject for Pledge Acknowledgment','2018-11-27 06:02:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(126,NULL,10,'Subject for Pledge Acknowledgment','2018-12-20 23:34:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(127,NULL,10,'Subject for Pledge Acknowledgment','2019-02-26 06:27:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(128,NULL,10,'Subject for Pledge Acknowledgment','2019-02-23 13:42:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(129,NULL,9,'Subject for Tell a Friend','2018-09-13 10:21:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(130,NULL,9,'Subject for Tell a Friend','2018-11-28 12:14:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(131,NULL,10,'Subject for Pledge Acknowledgment','2019-01-03 01:09:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(132,NULL,10,'Subject for Pledge Acknowledgment','2019-05-04 12:05:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(133,NULL,9,'Subject for Tell a Friend','2018-08-24 12:19:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(134,NULL,10,'Subject for Pledge Acknowledgment','2018-10-07 17:42:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(135,NULL,9,'Subject for Tell a Friend','2019-08-11 04:48:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(136,NULL,10,'Subject for Pledge Acknowledgment','2019-02-11 07:58:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(137,NULL,10,'Subject for Pledge Acknowledgment','2019-07-10 03:33:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(138,NULL,9,'Subject for Tell a Friend','2019-08-04 18:03:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(139,NULL,9,'Subject for Tell a Friend','2019-06-21 20:58:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(140,NULL,9,'Subject for Tell a Friend','2018-10-25 10:29:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(141,NULL,10,'Subject for Pledge Acknowledgment','2018-09-24 13:06:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(142,NULL,9,'Subject for Tell a Friend','2019-07-27 10:24:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(143,NULL,9,'Subject for Tell a Friend','2018-08-30 16:40:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(144,NULL,9,'Subject for Tell a Friend','2019-07-11 16:17:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(145,NULL,9,'Subject for Tell a Friend','2019-05-18 02:25:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(146,NULL,10,'Subject for Pledge Acknowledgment','2018-12-08 22:58:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(147,NULL,10,'Subject for Pledge Acknowledgment','2018-11-15 11:34:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(148,NULL,9,'Subject for Tell a Friend','2019-06-26 05:55:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(149,NULL,10,'Subject for Pledge Acknowledgment','2018-10-14 11:48:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(150,NULL,9,'Subject for Tell a Friend','2019-05-20 09:25:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(151,NULL,10,'Subject for Pledge Acknowledgment','2019-01-14 18:41:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(152,NULL,9,'Subject for Tell a Friend','2019-03-26 05:10:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(153,NULL,9,'Subject for Tell a Friend','2018-12-19 22:45:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(154,NULL,10,'Subject for Pledge Acknowledgment','2018-11-24 08:09:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(155,NULL,10,'Subject for Pledge Acknowledgment','2018-08-19 21:48:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(156,NULL,10,'Subject for Pledge Acknowledgment','2018-10-05 05:35:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(157,NULL,10,'Subject for Pledge Acknowledgment','2018-11-15 08:27:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(158,NULL,10,'Subject for Pledge Acknowledgment','2018-12-23 18:47:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(159,NULL,9,'Subject for Tell a Friend','2018-11-22 04:32:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(160,NULL,9,'Subject for Tell a Friend','2018-11-09 04:50:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(161,NULL,10,'Subject for Pledge Acknowledgment','2019-03-14 18:34:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(162,NULL,10,'Subject for Pledge Acknowledgment','2019-02-19 14:00:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(163,NULL,10,'Subject for Pledge Acknowledgment','2018-12-16 21:49:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(164,NULL,10,'Subject for Pledge Acknowledgment','2018-09-06 23:03:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(165,NULL,9,'Subject for Tell a Friend','2018-09-26 19:01:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(166,NULL,9,'Subject for Tell a Friend','2018-11-28 17:04:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(167,NULL,9,'Subject for Tell a Friend','2019-03-24 12:33:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(168,NULL,9,'Subject for Tell a Friend','2019-07-30 01:03:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(169,NULL,10,'Subject for Pledge Acknowledgment','2019-07-09 11:39:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(170,NULL,10,'Subject for Pledge Acknowledgment','2019-02-19 14:27:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(171,NULL,10,'Subject for Pledge Acknowledgment','2019-07-03 09:07:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(172,NULL,9,'Subject for Tell a Friend','2019-06-18 18:48:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(173,NULL,10,'Subject for Pledge Acknowledgment','2019-02-18 19:24:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(174,NULL,9,'Subject for Tell a Friend','2019-03-13 18:09:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(175,NULL,10,'Subject for Pledge Acknowledgment','2019-04-24 23:36:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(176,NULL,10,'Subject for Pledge Acknowledgment','2019-05-18 11:32:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(177,NULL,10,'Subject for Pledge Acknowledgment','2019-05-17 01:43:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(178,NULL,10,'Subject for Pledge Acknowledgment','2019-05-28 06:35:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(179,NULL,10,'Subject for Pledge Acknowledgment','2019-04-03 23:50:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(180,NULL,10,'Subject for Pledge Acknowledgment','2019-02-16 22:24:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(181,NULL,9,'Subject for Tell a Friend','2019-06-03 06:32:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(182,NULL,9,'Subject for Tell a Friend','2018-09-30 03:01:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(183,NULL,10,'Subject for Pledge Acknowledgment','2019-07-24 09:33:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(184,NULL,9,'Subject for Tell a Friend','2018-10-08 16:43:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(185,NULL,9,'Subject for Tell a Friend','2019-07-28 02:26:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(186,NULL,10,'Subject for Pledge Acknowledgment','2018-11-19 12:08:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(187,NULL,9,'Subject for Tell a Friend','2019-03-23 13:11:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(188,NULL,10,'Subject for Pledge Acknowledgment','2018-12-20 21:23:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(189,NULL,9,'Subject for Tell a Friend','2019-08-15 18:59:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(190,NULL,10,'Subject for Pledge Acknowledgment','2018-10-15 06:20:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(191,NULL,10,'Subject for Pledge Acknowledgment','2018-11-21 11:27:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(192,NULL,10,'Subject for Pledge Acknowledgment','2018-12-27 04:50:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(193,NULL,10,'Subject for Pledge Acknowledgment','2018-11-10 07:47:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(194,NULL,10,'Subject for Pledge Acknowledgment','2018-12-26 16:29:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(195,NULL,9,'Subject for Tell a Friend','2019-05-21 10:45:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(196,NULL,10,'Subject for Pledge Acknowledgment','2019-05-02 14:09:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(197,NULL,10,'Subject for Pledge Acknowledgment','2019-01-16 13:48:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(198,NULL,10,'Subject for Pledge Acknowledgment','2019-05-20 12:13:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(199,NULL,10,'Subject for Pledge Acknowledgment','2018-11-28 12:33:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(200,NULL,9,'Subject for Tell a Friend','2018-08-27 19:14:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(201,NULL,10,'Subject for Pledge Acknowledgment','2018-11-26 01:31:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(202,NULL,9,'Subject for Tell a Friend','2019-08-06 10:08:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(203,NULL,10,'Subject for Pledge Acknowledgment','2018-10-26 12:47:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(204,NULL,9,'Subject for Tell a Friend','2019-03-18 04:23:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(205,NULL,10,'Subject for Pledge Acknowledgment','2019-03-17 16:03:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(206,NULL,9,'Subject for Tell a Friend','2019-08-03 20:50:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(207,NULL,10,'Subject for Pledge Acknowledgment','2019-02-03 01:21:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(208,NULL,10,'Subject for Pledge Acknowledgment','2018-10-21 15:07:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(209,NULL,9,'Subject for Tell a Friend','2019-02-24 21:07:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(210,NULL,9,'Subject for Tell a Friend','2018-11-25 02:43:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(211,NULL,9,'Subject for Tell a Friend','2019-01-18 05:00:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(212,NULL,9,'Subject for Tell a Friend','2019-06-09 22:11:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(213,NULL,9,'Subject for Tell a Friend','2019-01-05 00:55:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(214,NULL,10,'Subject for Pledge Acknowledgment','2018-10-23 17:39:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(215,NULL,10,'Subject for Pledge Acknowledgment','2018-12-20 13:20:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(216,NULL,9,'Subject for Tell a Friend','2018-11-27 19:20:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(217,NULL,10,'Subject for Pledge Acknowledgment','2019-08-02 06:38:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(218,NULL,10,'Subject for Pledge Acknowledgment','2018-12-16 19:23:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(219,NULL,9,'Subject for Tell a Friend','2019-03-31 16:04:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(220,NULL,9,'Subject for Tell a Friend','2019-01-24 12:46:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(221,NULL,10,'Subject for Pledge Acknowledgment','2019-06-22 19:15:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(222,NULL,10,'Subject for Pledge Acknowledgment','2019-05-10 09:08:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(223,NULL,10,'Subject for Pledge Acknowledgment','2019-07-03 03:32:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(224,NULL,10,'Subject for Pledge Acknowledgment','2019-08-06 03:11:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(225,NULL,10,'Subject for Pledge Acknowledgment','2019-07-14 07:39:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(226,NULL,10,'Subject for Pledge Acknowledgment','2019-05-19 10:43:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(227,NULL,10,'Subject for Pledge Acknowledgment','2018-11-01 16:02:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(228,NULL,9,'Subject for Tell a Friend','2019-05-22 14:46:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(229,NULL,9,'Subject for Tell a Friend','2019-02-14 21:54:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(230,NULL,10,'Subject for Pledge Acknowledgment','2018-09-23 03:00:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(231,NULL,9,'Subject for Tell a Friend','2019-01-08 09:25:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(232,NULL,9,'Subject for Tell a Friend','2019-02-24 00:22:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(233,NULL,9,'Subject for Tell a Friend','2018-11-05 10:43:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(234,NULL,9,'Subject for Tell a Friend','2019-07-27 13:46:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(235,NULL,10,'Subject for Pledge Acknowledgment','2018-12-26 23:01:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(236,NULL,10,'Subject for Pledge Acknowledgment','2019-05-16 15:24:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(237,NULL,10,'Subject for Pledge Acknowledgment','2018-10-06 04:40:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(238,NULL,10,'Subject for Pledge Acknowledgment','2019-06-13 04:38:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(239,NULL,9,'Subject for Tell a Friend','2018-11-05 01:55:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(240,NULL,9,'Subject for Tell a Friend','2019-06-12 11:08:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(241,NULL,9,'Subject for Tell a Friend','2018-12-18 18:13:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(242,NULL,10,'Subject for Pledge Acknowledgment','2018-08-20 06:15:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(243,NULL,10,'Subject for Pledge Acknowledgment','2019-05-05 06:10:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(244,NULL,9,'Subject for Tell a Friend','2019-08-05 11:40:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(245,NULL,10,'Subject for Pledge Acknowledgment','2019-06-27 11:17:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(246,NULL,10,'Subject for Pledge Acknowledgment','2018-08-28 01:18:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(247,NULL,10,'Subject for Pledge Acknowledgment','2018-09-04 08:16:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(248,NULL,9,'Subject for Tell a Friend','2019-01-17 10:25:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(249,NULL,10,'Subject for Pledge Acknowledgment','2019-07-31 01:34:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(250,NULL,10,'Subject for Pledge Acknowledgment','2018-11-25 10:09:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(251,NULL,9,'Subject for Tell a Friend','2018-09-19 09:54:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(252,NULL,9,'Subject for Tell a Friend','2019-02-26 05:24:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(253,NULL,10,'Subject for Pledge Acknowledgment','2018-10-06 08:06:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(254,NULL,10,'Subject for Pledge Acknowledgment','2019-05-16 10:13:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(255,NULL,9,'Subject for Tell a Friend','2019-07-16 00:50:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(256,NULL,10,'Subject for Pledge Acknowledgment','2019-05-07 19:28:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(257,NULL,10,'Subject for Pledge Acknowledgment','2018-08-20 21:58:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(258,NULL,9,'Subject for Tell a Friend','2018-11-12 04:45:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(259,NULL,10,'Subject for Pledge Acknowledgment','2018-10-09 22:43:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(260,NULL,9,'Subject for Tell a Friend','2019-01-19 05:38:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(261,NULL,9,'Subject for Tell a Friend','2018-08-17 19:03:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(262,NULL,10,'Subject for Pledge Acknowledgment','2018-12-03 06:47:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(263,NULL,9,'Subject for Tell a Friend','2019-03-30 18:01:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(264,NULL,10,'Subject for Pledge Acknowledgment','2019-08-05 13:31:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(265,NULL,9,'Subject for Tell a Friend','2019-02-23 17:26:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(266,NULL,10,'Subject for Pledge Acknowledgment','2018-11-20 16:03:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(267,NULL,9,'Subject for Tell a Friend','2019-02-28 13:13:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(268,NULL,9,'Subject for Tell a Friend','2019-06-12 22:44:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(269,NULL,10,'Subject for Pledge Acknowledgment','2019-03-08 04:04:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(270,NULL,10,'Subject for Pledge Acknowledgment','2018-10-05 04:35:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(271,NULL,9,'Subject for Tell a Friend','2019-07-21 13:19:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(272,NULL,9,'Subject for Tell a Friend','2018-11-03 01:52:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(273,NULL,10,'Subject for Pledge Acknowledgment','2018-12-21 12:35:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(274,NULL,9,'Subject for Tell a Friend','2018-10-29 13:30:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(275,NULL,10,'Subject for Pledge Acknowledgment','2018-12-17 22:19:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(276,NULL,9,'Subject for Tell a Friend','2018-10-26 05:30:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(277,NULL,9,'Subject for Tell a Friend','2019-02-05 06:01:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(278,NULL,9,'Subject for Tell a Friend','2018-08-19 07:07:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(279,NULL,10,'Subject for Pledge Acknowledgment','2018-08-30 01:24:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(280,NULL,9,'Subject for Tell a Friend','2019-05-25 06:58:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(281,NULL,10,'Subject for Pledge Acknowledgment','2018-09-30 21:43:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(282,NULL,10,'Subject for Pledge Acknowledgment','2019-08-14 13:46:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(283,NULL,9,'Subject for Tell a Friend','2018-10-06 05:31:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(284,NULL,10,'Subject for Pledge Acknowledgment','2019-02-16 10:22:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(285,NULL,10,'Subject for Pledge Acknowledgment','2019-05-08 12:35:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(286,NULL,10,'Subject for Pledge Acknowledgment','2019-02-04 23:32:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(287,NULL,10,'Subject for Pledge Acknowledgment','2018-11-21 06:42:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(288,NULL,9,'Subject for Tell a Friend','2019-06-08 18:53:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(289,NULL,9,'Subject for Tell a Friend','2019-08-05 19:40:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(290,NULL,9,'Subject for Tell a Friend','2019-03-08 23:18:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(291,NULL,9,'Subject for Tell a Friend','2018-09-15 07:31:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(292,NULL,9,'Subject for Tell a Friend','2019-03-20 03:39:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(293,NULL,10,'Subject for Pledge Acknowledgment','2019-04-08 20:50:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(294,NULL,9,'Subject for Tell a Friend','2018-09-06 23:52:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(295,NULL,10,'Subject for Pledge Acknowledgment','2018-11-13 15:00:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(296,NULL,9,'Subject for Tell a Friend','2019-01-17 12:27:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(297,NULL,9,'Subject for Tell a Friend','2018-11-02 06:23:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(298,NULL,9,'Subject for Tell a Friend','2018-12-17 19:03:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(299,NULL,10,'Subject for Pledge Acknowledgment','2019-05-04 04:59:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(300,NULL,10,'Subject for Pledge Acknowledgment','2019-03-10 17:15:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(301,NULL,9,'Subject for Tell a Friend','2018-08-22 04:15:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(302,NULL,9,'Subject for Tell a Friend','2019-06-19 08:13:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(303,NULL,9,'Subject for Tell a Friend','2018-11-09 08:06:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(304,NULL,10,'Subject for Pledge Acknowledgment','2019-08-15 00:21:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(305,NULL,9,'Subject for Tell a Friend','2018-10-15 12:25:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(306,NULL,9,'Subject for Tell a Friend','2019-07-09 15:45:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(307,NULL,10,'Subject for Pledge Acknowledgment','2019-04-05 19:26:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(308,NULL,9,'Subject for Tell a Friend','2019-07-06 07:06:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(309,NULL,9,'Subject for Tell a Friend','2018-08-24 03:10:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(310,NULL,9,'Subject for Tell a Friend','2019-02-03 03:58:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(311,NULL,10,'Subject for Pledge Acknowledgment','2018-10-30 19:09:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(312,NULL,10,'Subject for Pledge Acknowledgment','2019-06-21 03:23:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(313,NULL,9,'Subject for Tell a Friend','2018-11-15 07:32:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(314,NULL,9,'Subject for Tell a Friend','2018-09-08 07:13:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(315,NULL,10,'Subject for Pledge Acknowledgment','2019-04-01 21:33:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(316,NULL,9,'Subject for Tell a Friend','2018-09-29 04:36:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(317,NULL,10,'Subject for Pledge Acknowledgment','2019-01-16 08:15:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(318,NULL,10,'Subject for Pledge Acknowledgment','2019-07-23 07:43:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(319,NULL,9,'Subject for Tell a Friend','2019-04-12 08:12:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(320,NULL,9,'Subject for Tell a Friend','2019-08-15 14:17:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(321,NULL,9,'Subject for Tell a Friend','2019-01-18 07:02:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(322,NULL,9,'Subject for Tell a Friend','2018-11-14 04:47:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(323,NULL,9,'Subject for Tell a Friend','2019-01-26 03:11:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(324,NULL,9,'Subject for Tell a Friend','2018-08-23 15:54:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(325,NULL,9,'Subject for Tell a Friend','2019-06-26 03:51:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(326,NULL,9,'Subject for Tell a Friend','2019-06-29 22:04:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(327,NULL,10,'Subject for Pledge Acknowledgment','2019-03-03 15:26:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(328,NULL,9,'Subject for Tell a Friend','2019-01-03 14:31:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(329,NULL,9,'Subject for Tell a Friend','2019-06-26 20:05:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(330,NULL,9,'Subject for Tell a Friend','2018-08-16 04:55:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(331,NULL,9,'Subject for Tell a Friend','2018-08-21 01:36:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(332,NULL,10,'Subject for Pledge Acknowledgment','2018-11-05 10:31:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(333,NULL,9,'Subject for Tell a Friend','2019-01-07 22:54:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(334,NULL,10,'Subject for Pledge Acknowledgment','2019-05-19 16:39:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(335,NULL,9,'Subject for Tell a Friend','2019-04-27 10:36:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(336,NULL,9,'Subject for Tell a Friend','2019-04-08 03:41:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(337,NULL,9,'Subject for Tell a Friend','2018-08-19 14:53:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(338,NULL,10,'Subject for Pledge Acknowledgment','2019-04-04 17:06:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(339,NULL,9,'Subject for Tell a Friend','2019-01-15 12:24:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(340,NULL,9,'Subject for Tell a Friend','2019-07-26 13:29:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(341,NULL,9,'Subject for Tell a Friend','2018-09-25 14:02:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(342,NULL,10,'Subject for Pledge Acknowledgment','2019-04-20 11:52:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(343,NULL,9,'Subject for Tell a Friend','2019-06-30 12:13:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(344,NULL,9,'Subject for Tell a Friend','2019-03-06 15:34:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(345,NULL,10,'Subject for Pledge Acknowledgment','2019-01-22 08:41:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(346,NULL,9,'Subject for Tell a Friend','2019-07-26 04:00:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(347,NULL,10,'Subject for Pledge Acknowledgment','2018-11-28 17:07:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(348,NULL,9,'Subject for Tell a Friend','2019-05-11 02:11:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(349,NULL,9,'Subject for Tell a Friend','2019-03-11 05:23:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(350,NULL,9,'Subject for Tell a Friend','2019-01-29 17:20:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(351,NULL,10,'Subject for Pledge Acknowledgment','2019-07-07 20:35:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(352,NULL,9,'Subject for Tell a Friend','2019-04-10 17:37:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(353,NULL,10,'Subject for Pledge Acknowledgment','2019-04-18 15:48:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(354,NULL,9,'Subject for Tell a Friend','2019-03-15 17:55:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(355,NULL,10,'Subject for Pledge Acknowledgment','2019-03-07 10:25:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(356,NULL,9,'Subject for Tell a Friend','2019-07-03 17:39:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(357,NULL,10,'Subject for Pledge Acknowledgment','2019-03-01 04:54:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(358,NULL,9,'Subject for Tell a Friend','2019-01-02 15:38:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(359,NULL,10,'Subject for Pledge Acknowledgment','2019-07-02 15:41:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(360,NULL,9,'Subject for Tell a Friend','2019-01-30 06:04:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(361,NULL,10,'Subject for Pledge Acknowledgment','2019-07-03 06:20:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(362,NULL,10,'Subject for Pledge Acknowledgment','2019-07-29 19:00:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(363,NULL,9,'Subject for Tell a Friend','2018-10-28 01:46:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(364,NULL,9,'Subject for Tell a Friend','2019-01-14 18:57:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(365,NULL,9,'Subject for Tell a Friend','2019-07-11 00:25:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(366,NULL,10,'Subject for Pledge Acknowledgment','2018-10-26 15:42:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(367,NULL,10,'Subject for Pledge Acknowledgment','2018-09-19 17:02:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(368,NULL,10,'Subject for Pledge Acknowledgment','2018-09-27 12:01:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(369,NULL,9,'Subject for Tell a Friend','2019-06-25 19:09:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(370,NULL,9,'Subject for Tell a Friend','2018-10-04 14:15:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(371,NULL,10,'Subject for Pledge Acknowledgment','2019-01-14 22:28:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(372,NULL,9,'Subject for Tell a Friend','2018-11-12 18:24:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(373,NULL,9,'Subject for Tell a Friend','2018-09-15 12:26:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(374,NULL,9,'Subject for Tell a Friend','2019-04-23 12:57:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(375,NULL,9,'Subject for Tell a Friend','2018-09-01 02:39:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(376,NULL,10,'Subject for Pledge Acknowledgment','2019-03-26 09:50:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(377,NULL,9,'Subject for Tell a Friend','2018-12-05 01:39:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(378,NULL,9,'Subject for Tell a Friend','2019-01-13 14:37:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(379,NULL,10,'Subject for Pledge Acknowledgment','2019-01-16 13:07:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(380,NULL,10,'Subject for Pledge Acknowledgment','2019-04-12 07:03:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(381,NULL,10,'Subject for Pledge Acknowledgment','2019-03-27 04:27:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(382,NULL,10,'Subject for Pledge Acknowledgment','2019-01-06 18:15:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(383,NULL,10,'Subject for Pledge Acknowledgment','2019-05-07 09:01:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(384,NULL,10,'Subject for Pledge Acknowledgment','2019-08-14 04:10:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(385,NULL,10,'Subject for Pledge Acknowledgment','2019-02-15 18:08:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(386,NULL,9,'Subject for Tell a Friend','2018-08-24 09:52:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(387,NULL,9,'Subject for Tell a Friend','2019-06-15 02:06:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(388,NULL,10,'Subject for Pledge Acknowledgment','2019-02-12 09:42:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(389,NULL,10,'Subject for Pledge Acknowledgment','2019-08-05 06:03:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(390,NULL,10,'Subject for Pledge Acknowledgment','2019-02-21 04:33:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(391,NULL,9,'Subject for Tell a Friend','2019-07-08 07:43:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(392,NULL,10,'Subject for Pledge Acknowledgment','2019-01-25 17:01:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(393,NULL,10,'Subject for Pledge Acknowledgment','2018-08-28 13:58:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(394,NULL,10,'Subject for Pledge Acknowledgment','2018-11-09 09:01:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(395,NULL,9,'Subject for Tell a Friend','2019-01-18 00:18:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(396,NULL,9,'Subject for Tell a Friend','2018-08-29 14:54:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(397,NULL,9,'Subject for Tell a Friend','2019-07-24 09:04:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(398,NULL,10,'Subject for Pledge Acknowledgment','2019-07-01 12:42:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(399,NULL,10,'Subject for Pledge Acknowledgment','2019-04-09 10:29:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(400,NULL,10,'Subject for Pledge Acknowledgment','2019-04-08 03:48:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(401,NULL,10,'Subject for Pledge Acknowledgment','2018-10-25 23:36:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(402,NULL,9,'Subject for Tell a Friend','2018-11-03 06:47:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(403,NULL,10,'Subject for Pledge Acknowledgment','2019-03-02 00:13:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(404,NULL,9,'Subject for Tell a Friend','2018-12-09 09:37:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(405,NULL,9,'Subject for Tell a Friend','2019-06-15 05:49:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(406,NULL,9,'Subject for Tell a Friend','2019-06-17 09:19:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(407,NULL,10,'Subject for Pledge Acknowledgment','2019-07-14 14:59:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(408,NULL,10,'Subject for Pledge Acknowledgment','2019-03-25 13:51:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(409,NULL,9,'Subject for Tell a Friend','2018-09-12 12:33:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(410,NULL,10,'Subject for Pledge Acknowledgment','2018-09-03 07:21:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(411,NULL,9,'Subject for Tell a Friend','2018-08-26 20:32:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(412,NULL,10,'Subject for Pledge Acknowledgment','2019-07-21 18:39:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(413,NULL,9,'Subject for Tell a Friend','2019-03-05 11:57:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(414,NULL,10,'Subject for Pledge Acknowledgment','2019-05-30 04:57:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(415,NULL,9,'Subject for Tell a Friend','2019-06-14 10:05:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(416,NULL,10,'Subject for Pledge Acknowledgment','2019-07-29 10:14:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(417,NULL,9,'Subject for Tell a Friend','2018-10-04 23:35:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(418,NULL,10,'Subject for Pledge Acknowledgment','2019-08-01 01:19:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(419,NULL,10,'Subject for Pledge Acknowledgment','2018-11-11 23:35:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(420,NULL,10,'Subject for Pledge Acknowledgment','2019-04-30 13:06:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(421,NULL,9,'Subject for Tell a Friend','2019-07-20 22:49:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(422,NULL,10,'Subject for Pledge Acknowledgment','2019-04-04 17:20:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(423,NULL,9,'Subject for Tell a Friend','2019-04-22 19:48:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(424,NULL,10,'Subject for Pledge Acknowledgment','2019-01-18 12:53:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(425,NULL,9,'Subject for Tell a Friend','2018-10-08 00:48:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(426,NULL,9,'Subject for Tell a Friend','2019-05-17 23:08:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(427,NULL,9,'Subject for Tell a Friend','2019-02-20 23:26:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(428,NULL,10,'Subject for Pledge Acknowledgment','2019-07-10 23:44:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(429,NULL,9,'Subject for Tell a Friend','2019-03-28 23:38:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(430,NULL,9,'Subject for Tell a Friend','2019-03-05 23:27:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(431,NULL,9,'Subject for Tell a Friend','2019-01-04 09:58:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:30','2019-08-15 21:31:30'),(432,NULL,9,'Subject for Tell a Friend','2019-04-07 09:58:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(433,NULL,9,'Subject for Tell a Friend','2018-11-03 20:33:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(434,NULL,9,'Subject for Tell a Friend','2018-09-08 18:29:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(435,NULL,9,'Subject for Tell a Friend','2019-04-20 19:22:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(436,NULL,9,'Subject for Tell a Friend','2018-11-23 03:56:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(437,NULL,10,'Subject for Pledge Acknowledgment','2018-11-25 04:08:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(438,NULL,10,'Subject for Pledge Acknowledgment','2019-04-09 07:43:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(439,NULL,10,'Subject for Pledge Acknowledgment','2019-04-01 19:21:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(440,NULL,10,'Subject for Pledge Acknowledgment','2019-07-08 17:34:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(441,NULL,10,'Subject for Pledge Acknowledgment','2019-05-05 12:42:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(442,NULL,9,'Subject for Tell a Friend','2019-07-31 15:28:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(443,NULL,9,'Subject for Tell a Friend','2019-06-08 02:05:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(444,NULL,9,'Subject for Tell a Friend','2019-06-23 19:21:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(445,NULL,10,'Subject for Pledge Acknowledgment','2018-08-26 16:55:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(446,NULL,10,'Subject for Pledge Acknowledgment','2018-12-09 09:39:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(447,NULL,10,'Subject for Pledge Acknowledgment','2018-12-09 20:00:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(448,NULL,10,'Subject for Pledge Acknowledgment','2018-10-11 09:46:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(449,NULL,10,'Subject for Pledge Acknowledgment','2019-06-14 12:01:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(450,NULL,9,'Subject for Tell a Friend','2019-02-09 11:40:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(451,1,6,'$ 125.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(452,2,6,'$ 50.00-Online: Save the Penguins','2010-03-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(453,3,6,'$ 25.00-Apr 2007 Mailer 1','2010-04-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(454,4,6,'$ 50.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(455,5,6,'$ 500.00-Apr 2007 Mailer 1','2010-04-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(456,6,6,'$ 175.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(457,7,6,'$ 50.00-Online: Save the Penguins','2010-03-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(458,8,6,'$ 10.00-Online: Save the Penguins','2010-03-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(459,9,6,'$ 250.00-Online: Save the Penguins','2010-04-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(460,10,6,NULL,'2009-07-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(461,11,6,NULL,'2009-07-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(462,12,6,NULL,'2009-10-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(463,13,6,NULL,'2009-12-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(464,1,7,'General','2019-08-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(465,2,7,'Student','2019-08-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(466,3,7,'General','2019-08-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(467,4,7,'Student','2019-08-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(468,5,7,'General','2017-07-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(469,6,7,'Student','2019-08-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(470,7,7,'General','2019-08-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(471,8,7,'Student','2019-08-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(472,9,7,'General','2019-08-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(473,10,7,'Student','2018-08-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(474,11,7,'Lifetime','2019-08-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(475,12,7,'Student','2019-08-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(476,13,7,'General','2019-08-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(477,14,7,'Student','2019-08-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(478,15,7,'General','2017-04-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(479,16,7,'Student','2019-07-31 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(480,17,7,'General','2019-07-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(481,18,7,'Student','2019-07-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(482,19,7,'General','2019-07-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(483,20,7,'Student','2018-07-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(484,21,7,'General','2019-07-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(485,22,7,'Lifetime','2019-07-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(486,23,7,'General','2019-07-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(487,24,7,'Student','2019-07-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(488,25,7,'General','2017-02-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(489,26,7,'Student','2019-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(490,27,7,'General','2019-07-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(491,28,7,'Student','2019-07-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(492,29,7,'General','2019-07-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(493,30,7,'Student','2018-07-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(494,14,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(495,15,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(496,16,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(497,17,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(498,18,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(499,19,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(500,20,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(501,21,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(502,22,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(503,23,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(504,24,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(505,25,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(506,26,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(507,27,6,'$ 100.00 - General Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(508,28,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(509,29,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(510,30,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(511,31,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(512,32,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(513,33,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(514,34,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(515,35,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(516,36,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(517,37,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(518,38,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(519,39,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(520,40,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(521,41,6,'$ 50.00 - Student Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(523,43,6,'$ 1200.00 - Lifetime Membership: Offline signup','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(525,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(526,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(527,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(528,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(529,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(530,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(531,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(532,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(533,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(534,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(535,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(536,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(537,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(538,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(539,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(540,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(541,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(542,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(543,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(544,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(545,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(546,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(547,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(548,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(549,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(550,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(551,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(552,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(553,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(554,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(555,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(556,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(557,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(558,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(559,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(560,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(561,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(562,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(563,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(564,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(565,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(566,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(567,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(568,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(569,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(570,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(571,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(572,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(573,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(574,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(575,45,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(576,46,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(577,47,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(578,48,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(579,49,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(580,50,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(581,51,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(582,52,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(583,53,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(584,54,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(585,55,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(586,56,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(587,57,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(588,58,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(589,59,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(590,60,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(591,61,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(592,62,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(593,63,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(594,64,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(595,65,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(596,66,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(597,67,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(598,68,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(599,69,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(600,70,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(603,73,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(605,75,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(606,76,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(608,78,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(611,81,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(612,82,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(613,83,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(614,84,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(615,85,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(616,86,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(617,87,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(618,88,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(619,89,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(620,90,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(623,93,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31'),(624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-08-16 09:31:31',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-08-15 21:31:31','2019-08-15 21:31:31');
+INSERT INTO `civicrm_activity` (`id`, `source_record_id`, `activity_type_id`, `subject`, `activity_date_time`, `duration`, `location`, `phone_id`, `phone_number`, `details`, `status_id`, `priority_id`, `parent_id`, `is_test`, `medium_id`, `is_auto`, `relationship_id`, `is_current_revision`, `original_id`, `result`, `is_deleted`, `campaign_id`, `engagement_level`, `weight`, `is_star`, `created_date`, `modified_date`) VALUES (1,NULL,10,'Subject for Pledge Acknowledgment','2019-08-25 00:56:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(2,NULL,10,'Subject for Pledge Acknowledgment','2019-02-21 20:07:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(3,NULL,9,'Subject for Tell a Friend','2019-09-10 00:53:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(4,NULL,10,'Subject for Pledge Acknowledgment','2019-01-17 03:10:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(5,NULL,9,'Subject for Tell a Friend','2019-01-04 09:05:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(6,NULL,10,'Subject for Pledge Acknowledgment','2019-07-28 08:38:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(7,NULL,10,'Subject for Pledge Acknowledgment','2019-01-02 17:17:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(8,NULL,10,'Subject for Pledge Acknowledgment','2019-06-09 15:10:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(9,NULL,9,'Subject for Tell a Friend','2019-03-31 21:28:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(10,NULL,9,'Subject for Tell a Friend','2019-05-30 20:20:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(11,NULL,9,'Subject for Tell a Friend','2019-07-03 10:06:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(12,NULL,10,'Subject for Pledge Acknowledgment','2019-04-25 02:31:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(13,NULL,9,'Subject for Tell a Friend','2019-07-27 07:22:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(14,NULL,10,'Subject for Pledge Acknowledgment','2019-04-26 20:34:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(15,NULL,9,'Subject for Tell a Friend','2018-12-16 13:39:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(16,NULL,10,'Subject for Pledge Acknowledgment','2019-05-15 12:48:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(17,NULL,9,'Subject for Tell a Friend','2019-05-05 09:53:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(18,NULL,10,'Subject for Pledge Acknowledgment','2019-09-16 07:45:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(19,NULL,10,'Subject for Pledge Acknowledgment','2018-11-25 04:25:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(20,NULL,9,'Subject for Tell a Friend','2019-08-02 09:13:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(21,NULL,9,'Subject for Tell a Friend','2019-02-01 17:03:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(22,NULL,10,'Subject for Pledge Acknowledgment','2018-09-21 13:46:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(23,NULL,9,'Subject for Tell a Friend','2019-04-13 11:22:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(24,NULL,9,'Subject for Tell a Friend','2018-09-25 17:52:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(25,NULL,9,'Subject for Tell a Friend','2019-06-15 15:41:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(26,NULL,9,'Subject for Tell a Friend','2019-09-19 15:55:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(27,NULL,9,'Subject for Tell a Friend','2019-04-08 14:36:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(28,NULL,9,'Subject for Tell a Friend','2019-08-10 06:13:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(29,NULL,9,'Subject for Tell a Friend','2018-11-21 10:45:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(30,NULL,9,'Subject for Tell a Friend','2018-10-16 01:52:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(31,NULL,10,'Subject for Pledge Acknowledgment','2019-06-23 00:34:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(32,NULL,10,'Subject for Pledge Acknowledgment','2019-08-05 07:39:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(33,NULL,9,'Subject for Tell a Friend','2019-04-02 22:15:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(34,NULL,10,'Subject for Pledge Acknowledgment','2019-01-21 19:55:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(35,NULL,10,'Subject for Pledge Acknowledgment','2019-08-30 01:23:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(36,NULL,9,'Subject for Tell a Friend','2019-03-20 12:02:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(37,NULL,9,'Subject for Tell a Friend','2018-11-07 05:43:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(38,NULL,9,'Subject for Tell a Friend','2019-09-11 17:29:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(39,NULL,9,'Subject for Tell a Friend','2019-07-28 04:10:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(40,NULL,10,'Subject for Pledge Acknowledgment','2019-04-18 01:35:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(41,NULL,10,'Subject for Pledge Acknowledgment','2018-12-26 19:24:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(42,NULL,10,'Subject for Pledge Acknowledgment','2018-12-07 20:48:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(43,NULL,9,'Subject for Tell a Friend','2019-08-14 15:34:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:28','2019-09-20 19:57:28'),(44,NULL,9,'Subject for Tell a Friend','2018-12-23 18:17:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(45,NULL,9,'Subject for Tell a Friend','2019-02-16 04:04:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(46,NULL,9,'Subject for Tell a Friend','2019-03-15 21:16:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(47,NULL,10,'Subject for Pledge Acknowledgment','2019-03-06 20:31:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(48,NULL,10,'Subject for Pledge Acknowledgment','2019-05-31 21:43:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(49,NULL,10,'Subject for Pledge Acknowledgment','2018-12-02 21:32:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(50,NULL,9,'Subject for Tell a Friend','2018-10-27 15:38:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(51,NULL,10,'Subject for Pledge Acknowledgment','2019-04-04 16:19:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(52,NULL,9,'Subject for Tell a Friend','2019-06-07 03:57:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(53,NULL,9,'Subject for Tell a Friend','2019-06-27 00:48:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(54,NULL,10,'Subject for Pledge Acknowledgment','2019-05-23 10:35:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(55,NULL,10,'Subject for Pledge Acknowledgment','2018-11-04 02:36:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(56,NULL,9,'Subject for Tell a Friend','2018-11-23 07:18:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(57,NULL,10,'Subject for Pledge Acknowledgment','2019-08-22 07:04:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(58,NULL,10,'Subject for Pledge Acknowledgment','2019-06-29 09:28:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(59,NULL,10,'Subject for Pledge Acknowledgment','2019-04-08 09:53:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(60,NULL,9,'Subject for Tell a Friend','2019-06-13 17:58:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(61,NULL,10,'Subject for Pledge Acknowledgment','2019-03-26 13:53:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(62,NULL,9,'Subject for Tell a Friend','2019-08-18 07:37:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(63,NULL,9,'Subject for Tell a Friend','2018-12-26 23:43:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(64,NULL,9,'Subject for Tell a Friend','2019-09-10 05:55:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(65,NULL,9,'Subject for Tell a Friend','2018-11-13 21:58:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(66,NULL,9,'Subject for Tell a Friend','2018-10-30 18:55:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(67,NULL,10,'Subject for Pledge Acknowledgment','2019-04-10 17:04:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(68,NULL,10,'Subject for Pledge Acknowledgment','2019-09-17 06:14:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(69,NULL,9,'Subject for Tell a Friend','2019-09-05 18:53:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(70,NULL,9,'Subject for Tell a Friend','2019-02-19 06:10:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(71,NULL,10,'Subject for Pledge Acknowledgment','2019-03-06 06:15:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(72,NULL,10,'Subject for Pledge Acknowledgment','2019-05-27 16:39:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(73,NULL,9,'Subject for Tell a Friend','2018-10-30 23:27:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(74,NULL,10,'Subject for Pledge Acknowledgment','2018-12-21 10:17:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(75,NULL,10,'Subject for Pledge Acknowledgment','2018-10-08 18:34:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(76,NULL,10,'Subject for Pledge Acknowledgment','2019-01-17 14:37:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(77,NULL,10,'Subject for Pledge Acknowledgment','2018-11-19 07:25:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(78,NULL,10,'Subject for Pledge Acknowledgment','2019-06-17 12:56:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(79,NULL,9,'Subject for Tell a Friend','2019-03-08 02:54:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(80,NULL,10,'Subject for Pledge Acknowledgment','2019-07-25 00:15:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(81,NULL,9,'Subject for Tell a Friend','2019-02-13 12:23:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(82,NULL,10,'Subject for Pledge Acknowledgment','2019-03-01 22:51:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(83,NULL,9,'Subject for Tell a Friend','2019-06-11 22:03:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(84,NULL,9,'Subject for Tell a Friend','2019-04-05 21:51:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(85,NULL,10,'Subject for Pledge Acknowledgment','2019-03-23 14:42:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(86,NULL,9,'Subject for Tell a Friend','2019-05-23 02:03:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(87,NULL,10,'Subject for Pledge Acknowledgment','2019-08-08 19:00:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(88,NULL,10,'Subject for Pledge Acknowledgment','2018-12-23 10:10:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(89,NULL,10,'Subject for Pledge Acknowledgment','2019-08-30 03:28:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(90,NULL,10,'Subject for Pledge Acknowledgment','2019-06-20 21:35:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(91,NULL,10,'Subject for Pledge Acknowledgment','2018-09-24 15:18:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(92,NULL,9,'Subject for Tell a Friend','2018-12-26 14:33:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(93,NULL,9,'Subject for Tell a Friend','2018-11-21 23:37:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(94,NULL,10,'Subject for Pledge Acknowledgment','2018-11-06 17:04:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(95,NULL,10,'Subject for Pledge Acknowledgment','2018-10-08 22:18:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(96,NULL,9,'Subject for Tell a Friend','2019-04-02 22:16:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(97,NULL,9,'Subject for Tell a Friend','2018-10-25 11:11:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(98,NULL,9,'Subject for Tell a Friend','2019-06-17 18:46:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(99,NULL,9,'Subject for Tell a Friend','2019-08-06 10:02:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(100,NULL,9,'Subject for Tell a Friend','2019-04-26 21:27:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(101,NULL,10,'Subject for Pledge Acknowledgment','2019-01-25 02:34:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(102,NULL,9,'Subject for Tell a Friend','2019-04-02 19:03:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(103,NULL,10,'Subject for Pledge Acknowledgment','2019-01-05 19:47:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(104,NULL,10,'Subject for Pledge Acknowledgment','2018-10-30 11:45:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(105,NULL,9,'Subject for Tell a Friend','2019-08-25 10:25:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(106,NULL,9,'Subject for Tell a Friend','2019-02-09 01:54:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(107,NULL,9,'Subject for Tell a Friend','2019-08-01 15:54:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(108,NULL,10,'Subject for Pledge Acknowledgment','2019-03-22 22:33:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(109,NULL,10,'Subject for Pledge Acknowledgment','2019-03-28 09:59:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(110,NULL,9,'Subject for Tell a Friend','2018-12-15 04:01:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(111,NULL,9,'Subject for Tell a Friend','2019-08-16 21:37:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(112,NULL,10,'Subject for Pledge Acknowledgment','2018-11-30 19:37:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(113,NULL,9,'Subject for Tell a Friend','2018-12-04 12:27:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(114,NULL,10,'Subject for Pledge Acknowledgment','2019-04-03 16:48:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(115,NULL,9,'Subject for Tell a Friend','2018-09-27 18:14:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(116,NULL,10,'Subject for Pledge Acknowledgment','2019-08-27 20:34:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(117,NULL,10,'Subject for Pledge Acknowledgment','2019-09-04 19:36:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(118,NULL,9,'Subject for Tell a Friend','2019-02-09 21:12:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(119,NULL,9,'Subject for Tell a Friend','2019-09-12 12:04:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(120,NULL,9,'Subject for Tell a Friend','2018-09-29 21:04:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(121,NULL,9,'Subject for Tell a Friend','2019-01-10 06:52:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(122,NULL,9,'Subject for Tell a Friend','2019-04-09 14:09:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(123,NULL,10,'Subject for Pledge Acknowledgment','2019-06-16 22:07:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(124,NULL,10,'Subject for Pledge Acknowledgment','2019-02-27 02:12:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(125,NULL,9,'Subject for Tell a Friend','2019-04-19 17:29:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(126,NULL,9,'Subject for Tell a Friend','2019-01-30 04:03:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(127,NULL,9,'Subject for Tell a Friend','2019-06-04 00:56:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(128,NULL,9,'Subject for Tell a Friend','2019-09-14 00:12:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(129,NULL,10,'Subject for Pledge Acknowledgment','2019-07-24 13:15:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(130,NULL,9,'Subject for Tell a Friend','2019-09-16 23:56:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(131,NULL,10,'Subject for Pledge Acknowledgment','2019-04-04 16:37:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(132,NULL,9,'Subject for Tell a Friend','2018-12-30 00:43:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(133,NULL,10,'Subject for Pledge Acknowledgment','2018-10-27 08:09:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(134,NULL,10,'Subject for Pledge Acknowledgment','2019-08-24 10:41:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(135,NULL,10,'Subject for Pledge Acknowledgment','2019-06-05 12:45:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(136,NULL,9,'Subject for Tell a Friend','2019-04-04 11:26:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(137,NULL,9,'Subject for Tell a Friend','2019-04-25 04:18:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(138,NULL,9,'Subject for Tell a Friend','2019-09-11 20:08:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(139,NULL,10,'Subject for Pledge Acknowledgment','2019-08-02 04:44:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(140,NULL,9,'Subject for Tell a Friend','2018-11-17 00:11:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(141,NULL,10,'Subject for Pledge Acknowledgment','2019-07-13 13:47:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(142,NULL,9,'Subject for Tell a Friend','2019-08-17 05:31:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(143,NULL,9,'Subject for Tell a Friend','2019-06-16 14:55:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(144,NULL,9,'Subject for Tell a Friend','2019-08-05 05:01:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(145,NULL,10,'Subject for Pledge Acknowledgment','2018-11-13 16:29:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(146,NULL,9,'Subject for Tell a Friend','2019-07-10 15:35:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(147,NULL,9,'Subject for Tell a Friend','2019-08-25 05:51:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(148,NULL,10,'Subject for Pledge Acknowledgment','2019-01-30 19:09:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(149,NULL,10,'Subject for Pledge Acknowledgment','2019-06-18 12:39:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(150,NULL,9,'Subject for Tell a Friend','2019-02-23 20:40:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(151,NULL,9,'Subject for Tell a Friend','2019-01-05 11:52:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(152,NULL,10,'Subject for Pledge Acknowledgment','2019-08-30 04:22:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(153,NULL,9,'Subject for Tell a Friend','2019-03-28 13:36:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(154,NULL,9,'Subject for Tell a Friend','2019-01-28 12:54:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(155,NULL,10,'Subject for Pledge Acknowledgment','2019-07-03 01:26:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(156,NULL,9,'Subject for Tell a Friend','2019-08-12 20:20:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(157,NULL,9,'Subject for Tell a Friend','2019-02-05 14:02:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(158,NULL,9,'Subject for Tell a Friend','2019-02-22 20:36:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(159,NULL,10,'Subject for Pledge Acknowledgment','2019-06-13 15:34:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(160,NULL,9,'Subject for Tell a Friend','2019-02-18 22:41:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(161,NULL,10,'Subject for Pledge Acknowledgment','2018-12-01 21:00:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(162,NULL,9,'Subject for Tell a Friend','2019-03-05 02:50:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(163,NULL,10,'Subject for Pledge Acknowledgment','2019-07-02 02:57:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(164,NULL,9,'Subject for Tell a Friend','2018-09-29 21:00:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(165,NULL,9,'Subject for Tell a Friend','2019-06-04 03:13:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(166,NULL,10,'Subject for Pledge Acknowledgment','2018-10-07 13:39:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(167,NULL,10,'Subject for Pledge Acknowledgment','2019-02-06 09:54:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(168,NULL,10,'Subject for Pledge Acknowledgment','2019-03-19 13:08:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(169,NULL,9,'Subject for Tell a Friend','2019-08-11 10:18:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(170,NULL,9,'Subject for Tell a Friend','2019-06-11 12:50:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(171,NULL,10,'Subject for Pledge Acknowledgment','2019-09-12 20:31:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(172,NULL,9,'Subject for Tell a Friend','2019-05-05 07:08:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(173,NULL,10,'Subject for Pledge Acknowledgment','2019-09-16 04:07:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(174,NULL,9,'Subject for Tell a Friend','2019-07-02 05:16:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(175,NULL,9,'Subject for Tell a Friend','2019-04-27 14:10:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(176,NULL,10,'Subject for Pledge Acknowledgment','2019-03-18 03:42:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(177,NULL,10,'Subject for Pledge Acknowledgment','2019-03-06 20:17:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(178,NULL,10,'Subject for Pledge Acknowledgment','2019-03-14 01:33:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(179,NULL,10,'Subject for Pledge Acknowledgment','2018-12-06 12:18:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(180,NULL,10,'Subject for Pledge Acknowledgment','2019-05-13 19:42:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(181,NULL,9,'Subject for Tell a Friend','2018-11-19 16:32:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(182,NULL,10,'Subject for Pledge Acknowledgment','2018-12-29 23:45:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(183,NULL,9,'Subject for Tell a Friend','2019-05-04 17:49:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(184,NULL,9,'Subject for Tell a Friend','2019-05-15 20:15:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(185,NULL,9,'Subject for Tell a Friend','2019-08-25 04:47:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(186,NULL,9,'Subject for Tell a Friend','2019-01-28 18:16:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(187,NULL,10,'Subject for Pledge Acknowledgment','2019-03-04 02:30:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(188,NULL,10,'Subject for Pledge Acknowledgment','2018-10-27 14:38:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(189,NULL,10,'Subject for Pledge Acknowledgment','2018-11-02 03:30:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(190,NULL,10,'Subject for Pledge Acknowledgment','2019-05-22 06:12:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(191,NULL,10,'Subject for Pledge Acknowledgment','2018-11-04 21:26:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(192,NULL,9,'Subject for Tell a Friend','2018-12-17 01:09:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(193,NULL,9,'Subject for Tell a Friend','2019-01-11 21:02:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(194,NULL,9,'Subject for Tell a Friend','2018-12-29 21:59:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(195,NULL,10,'Subject for Pledge Acknowledgment','2019-09-05 00:37:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(196,NULL,9,'Subject for Tell a Friend','2018-10-25 06:59:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(197,NULL,9,'Subject for Tell a Friend','2019-02-11 04:47:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(198,NULL,9,'Subject for Tell a Friend','2019-09-07 16:58:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(199,NULL,10,'Subject for Pledge Acknowledgment','2019-02-27 05:35:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(200,NULL,10,'Subject for Pledge Acknowledgment','2018-10-26 15:21:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(201,NULL,9,'Subject for Tell a Friend','2018-11-04 10:23:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(202,NULL,9,'Subject for Tell a Friend','2019-02-19 20:43:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(203,NULL,9,'Subject for Tell a Friend','2019-03-07 21:33:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(204,NULL,9,'Subject for Tell a Friend','2018-11-01 15:57:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(205,NULL,10,'Subject for Pledge Acknowledgment','2019-07-11 05:38:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(206,NULL,9,'Subject for Tell a Friend','2018-11-01 04:56:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(207,NULL,9,'Subject for Tell a Friend','2019-04-01 16:04:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(208,NULL,10,'Subject for Pledge Acknowledgment','2019-03-31 05:58:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(209,NULL,10,'Subject for Pledge Acknowledgment','2019-09-06 16:19:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(210,NULL,10,'Subject for Pledge Acknowledgment','2018-09-21 07:26:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(211,NULL,9,'Subject for Tell a Friend','2018-12-24 10:05:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(212,NULL,10,'Subject for Pledge Acknowledgment','2019-04-20 00:29:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(213,NULL,10,'Subject for Pledge Acknowledgment','2019-05-08 15:26:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(214,NULL,9,'Subject for Tell a Friend','2018-10-20 17:34:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(215,NULL,9,'Subject for Tell a Friend','2018-12-18 11:59:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(216,NULL,9,'Subject for Tell a Friend','2018-09-25 03:31:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(217,NULL,10,'Subject for Pledge Acknowledgment','2019-06-04 00:44:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(218,NULL,9,'Subject for Tell a Friend','2019-04-18 11:28:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(219,NULL,10,'Subject for Pledge Acknowledgment','2019-04-28 09:18:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(220,NULL,10,'Subject for Pledge Acknowledgment','2018-10-14 08:37:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(221,NULL,10,'Subject for Pledge Acknowledgment','2019-03-06 16:45:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(222,NULL,9,'Subject for Tell a Friend','2019-05-30 06:37:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(223,NULL,9,'Subject for Tell a Friend','2019-08-21 09:38:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(224,NULL,9,'Subject for Tell a Friend','2019-08-19 00:04:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(225,NULL,9,'Subject for Tell a Friend','2019-07-22 13:59:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(226,NULL,9,'Subject for Tell a Friend','2019-04-09 17:47:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(227,NULL,10,'Subject for Pledge Acknowledgment','2019-07-30 00:12:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(228,NULL,10,'Subject for Pledge Acknowledgment','2019-05-15 23:35:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(229,NULL,9,'Subject for Tell a Friend','2019-04-01 15:28:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(230,NULL,9,'Subject for Tell a Friend','2019-02-23 00:52:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(231,NULL,10,'Subject for Pledge Acknowledgment','2019-08-09 07:03:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(232,NULL,10,'Subject for Pledge Acknowledgment','2019-03-14 09:25:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(233,NULL,9,'Subject for Tell a Friend','2019-02-24 08:31:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(234,NULL,10,'Subject for Pledge Acknowledgment','2019-04-25 06:15:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(235,NULL,9,'Subject for Tell a Friend','2019-03-23 13:05:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(236,NULL,10,'Subject for Pledge Acknowledgment','2018-10-28 09:37:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(237,NULL,9,'Subject for Tell a Friend','2019-05-09 07:48:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(238,NULL,9,'Subject for Tell a Friend','2019-08-04 22:23:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(239,NULL,10,'Subject for Pledge Acknowledgment','2018-12-29 12:39:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(240,NULL,9,'Subject for Tell a Friend','2019-08-27 07:47:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(241,NULL,10,'Subject for Pledge Acknowledgment','2018-10-13 07:18:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(242,NULL,10,'Subject for Pledge Acknowledgment','2019-02-14 10:14:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(243,NULL,9,'Subject for Tell a Friend','2019-02-25 01:07:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(244,NULL,9,'Subject for Tell a Friend','2019-01-02 05:52:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(245,NULL,9,'Subject for Tell a Friend','2018-11-27 10:38:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(246,NULL,9,'Subject for Tell a Friend','2019-01-11 15:21:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(247,NULL,9,'Subject for Tell a Friend','2018-10-19 23:05:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(248,NULL,10,'Subject for Pledge Acknowledgment','2019-01-20 08:28:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(249,NULL,9,'Subject for Tell a Friend','2019-02-03 05:02:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(250,NULL,9,'Subject for Tell a Friend','2018-09-27 01:15:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(251,NULL,9,'Subject for Tell a Friend','2018-10-15 09:54:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(252,NULL,9,'Subject for Tell a Friend','2019-07-08 10:01:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(253,NULL,10,'Subject for Pledge Acknowledgment','2019-09-15 13:44:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(254,NULL,9,'Subject for Tell a Friend','2019-04-11 18:02:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(255,NULL,9,'Subject for Tell a Friend','2019-07-26 20:24:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(256,NULL,9,'Subject for Tell a Friend','2019-08-23 13:35:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(257,NULL,10,'Subject for Pledge Acknowledgment','2019-03-14 03:43:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(258,NULL,10,'Subject for Pledge Acknowledgment','2019-07-17 11:05:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(259,NULL,9,'Subject for Tell a Friend','2019-03-09 01:20:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(260,NULL,9,'Subject for Tell a Friend','2019-06-16 02:53:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(261,NULL,9,'Subject for Tell a Friend','2018-12-14 00:54:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(262,NULL,10,'Subject for Pledge Acknowledgment','2019-09-19 09:00:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(263,NULL,10,'Subject for Pledge Acknowledgment','2019-02-28 16:17:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(264,NULL,10,'Subject for Pledge Acknowledgment','2019-03-11 02:14:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(265,NULL,10,'Subject for Pledge Acknowledgment','2019-04-15 06:11:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(266,NULL,9,'Subject for Tell a Friend','2019-09-08 09:49:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(267,NULL,10,'Subject for Pledge Acknowledgment','2019-08-11 13:35:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(268,NULL,10,'Subject for Pledge Acknowledgment','2019-08-07 11:17:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(269,NULL,9,'Subject for Tell a Friend','2018-10-03 21:45:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(270,NULL,10,'Subject for Pledge Acknowledgment','2019-02-03 07:13:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(271,NULL,10,'Subject for Pledge Acknowledgment','2018-10-22 17:13:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(272,NULL,10,'Subject for Pledge Acknowledgment','2019-08-31 00:49:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(273,NULL,10,'Subject for Pledge Acknowledgment','2019-07-13 18:51:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(274,NULL,9,'Subject for Tell a Friend','2019-05-07 01:37:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(275,NULL,10,'Subject for Pledge Acknowledgment','2019-06-20 00:48:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(276,NULL,9,'Subject for Tell a Friend','2019-07-03 10:23:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(277,NULL,10,'Subject for Pledge Acknowledgment','2019-04-06 21:56:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(278,NULL,10,'Subject for Pledge Acknowledgment','2018-10-14 11:10:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(279,NULL,10,'Subject for Pledge Acknowledgment','2019-09-15 13:58:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(280,NULL,10,'Subject for Pledge Acknowledgment','2018-11-20 12:17:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(281,NULL,9,'Subject for Tell a Friend','2019-01-07 10:29:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(282,NULL,9,'Subject for Tell a Friend','2018-12-23 09:40:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(283,NULL,10,'Subject for Pledge Acknowledgment','2019-01-22 07:11:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(284,NULL,9,'Subject for Tell a Friend','2019-03-12 06:19:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(285,NULL,10,'Subject for Pledge Acknowledgment','2019-01-22 06:31:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(286,NULL,10,'Subject for Pledge Acknowledgment','2019-06-10 18:34:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(287,NULL,9,'Subject for Tell a Friend','2019-03-22 02:12:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(288,NULL,9,'Subject for Tell a Friend','2018-11-18 14:29:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(289,NULL,10,'Subject for Pledge Acknowledgment','2019-04-27 21:11:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(290,NULL,10,'Subject for Pledge Acknowledgment','2019-08-05 09:49:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(291,NULL,10,'Subject for Pledge Acknowledgment','2019-06-05 07:24:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(292,NULL,10,'Subject for Pledge Acknowledgment','2019-04-17 11:22:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(293,NULL,9,'Subject for Tell a Friend','2019-02-16 03:35:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(294,NULL,10,'Subject for Pledge Acknowledgment','2019-07-28 23:09:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(295,NULL,10,'Subject for Pledge Acknowledgment','2019-06-09 11:31:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(296,NULL,9,'Subject for Tell a Friend','2019-08-05 20:28:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(297,NULL,10,'Subject for Pledge Acknowledgment','2019-08-15 23:35:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(298,NULL,9,'Subject for Tell a Friend','2018-11-23 08:07:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(299,NULL,9,'Subject for Tell a Friend','2019-01-12 09:59:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(300,NULL,10,'Subject for Pledge Acknowledgment','2019-02-22 09:17:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(301,NULL,9,'Subject for Tell a Friend','2019-01-24 19:59:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(302,NULL,9,'Subject for Tell a Friend','2019-04-02 13:38:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(303,NULL,9,'Subject for Tell a Friend','2019-03-06 18:14:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(304,NULL,10,'Subject for Pledge Acknowledgment','2019-08-27 23:45:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(305,NULL,9,'Subject for Tell a Friend','2019-03-19 10:09:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(306,NULL,10,'Subject for Pledge Acknowledgment','2019-07-30 13:31:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(307,NULL,10,'Subject for Pledge Acknowledgment','2019-07-30 15:38:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(308,NULL,9,'Subject for Tell a Friend','2018-12-17 23:00:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(309,NULL,10,'Subject for Pledge Acknowledgment','2019-04-11 23:13:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(310,NULL,9,'Subject for Tell a Friend','2019-04-06 20:32:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(311,NULL,10,'Subject for Pledge Acknowledgment','2019-01-01 02:59:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(312,NULL,9,'Subject for Tell a Friend','2019-01-30 19:25:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(313,NULL,9,'Subject for Tell a Friend','2019-01-26 06:52:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(314,NULL,10,'Subject for Pledge Acknowledgment','2019-07-31 22:58:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(315,NULL,10,'Subject for Pledge Acknowledgment','2019-01-08 22:59:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(316,NULL,9,'Subject for Tell a Friend','2018-12-26 11:43:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(317,NULL,9,'Subject for Tell a Friend','2019-07-21 12:59:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(318,NULL,10,'Subject for Pledge Acknowledgment','2019-09-05 03:49:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(319,NULL,9,'Subject for Tell a Friend','2019-08-14 02:40:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(320,NULL,10,'Subject for Pledge Acknowledgment','2019-01-20 07:55:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(321,NULL,9,'Subject for Tell a Friend','2019-04-20 06:17:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(322,NULL,9,'Subject for Tell a Friend','2018-11-23 23:13:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(323,NULL,9,'Subject for Tell a Friend','2019-07-22 08:19:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(324,NULL,10,'Subject for Pledge Acknowledgment','2018-12-10 11:08:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(325,NULL,10,'Subject for Pledge Acknowledgment','2019-04-26 11:16:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(326,NULL,9,'Subject for Tell a Friend','2019-03-29 22:38:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(327,NULL,10,'Subject for Pledge Acknowledgment','2019-08-12 03:11:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(328,NULL,9,'Subject for Tell a Friend','2018-12-20 08:35:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(329,NULL,9,'Subject for Tell a Friend','2019-06-12 12:14:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(330,NULL,9,'Subject for Tell a Friend','2019-06-18 07:43:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(331,NULL,10,'Subject for Pledge Acknowledgment','2019-05-10 06:15:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(332,NULL,9,'Subject for Tell a Friend','2019-08-04 05:22:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(333,NULL,9,'Subject for Tell a Friend','2019-01-08 18:12:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(334,NULL,9,'Subject for Tell a Friend','2018-10-14 13:58:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(335,NULL,9,'Subject for Tell a Friend','2019-08-14 15:56:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(336,NULL,9,'Subject for Tell a Friend','2018-10-20 12:14:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(337,NULL,9,'Subject for Tell a Friend','2018-12-21 05:26:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(338,NULL,9,'Subject for Tell a Friend','2019-03-14 08:19:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(339,NULL,9,'Subject for Tell a Friend','2019-05-29 14:56:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(340,NULL,10,'Subject for Pledge Acknowledgment','2018-12-19 13:14:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(341,NULL,9,'Subject for Tell a Friend','2019-09-05 02:21:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(342,NULL,9,'Subject for Tell a Friend','2019-06-03 10:52:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(343,NULL,9,'Subject for Tell a Friend','2019-08-02 03:26:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(344,NULL,10,'Subject for Pledge Acknowledgment','2019-05-10 20:45:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(345,NULL,9,'Subject for Tell a Friend','2019-06-09 04:33:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(346,NULL,9,'Subject for Tell a Friend','2018-10-20 14:38:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(347,NULL,9,'Subject for Tell a Friend','2018-11-12 14:51:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(348,NULL,10,'Subject for Pledge Acknowledgment','2019-08-11 15:36:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(349,NULL,9,'Subject for Tell a Friend','2019-06-15 21:52:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(350,NULL,10,'Subject for Pledge Acknowledgment','2018-10-20 13:04:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(351,NULL,9,'Subject for Tell a Friend','2019-06-05 16:23:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(352,NULL,9,'Subject for Tell a Friend','2019-04-15 16:14:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(353,NULL,10,'Subject for Pledge Acknowledgment','2018-11-22 11:00:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(354,NULL,10,'Subject for Pledge Acknowledgment','2019-07-29 04:23:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(355,NULL,9,'Subject for Tell a Friend','2019-09-14 10:30:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(356,NULL,10,'Subject for Pledge Acknowledgment','2019-07-09 19:07:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(357,NULL,10,'Subject for Pledge Acknowledgment','2019-03-20 03:13:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(358,NULL,10,'Subject for Pledge Acknowledgment','2019-06-28 18:35:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(359,NULL,9,'Subject for Tell a Friend','2019-04-13 01:11:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(360,NULL,10,'Subject for Pledge Acknowledgment','2018-12-23 17:02:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(361,NULL,10,'Subject for Pledge Acknowledgment','2019-07-14 05:13:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(362,NULL,10,'Subject for Pledge Acknowledgment','2018-12-08 14:47:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(363,NULL,9,'Subject for Tell a Friend','2019-02-17 00:47:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(364,NULL,9,'Subject for Tell a Friend','2019-08-21 07:41:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(365,NULL,10,'Subject for Pledge Acknowledgment','2019-08-15 07:35:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(366,NULL,10,'Subject for Pledge Acknowledgment','2019-07-30 19:31:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(367,NULL,10,'Subject for Pledge Acknowledgment','2019-06-25 09:28:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(368,NULL,9,'Subject for Tell a Friend','2019-02-06 23:07:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(369,NULL,9,'Subject for Tell a Friend','2018-11-08 01:54:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(370,NULL,9,'Subject for Tell a Friend','2019-03-11 00:06:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(371,NULL,10,'Subject for Pledge Acknowledgment','2019-01-01 05:59:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(372,NULL,10,'Subject for Pledge Acknowledgment','2019-02-16 19:58:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(373,NULL,9,'Subject for Tell a Friend','2018-10-02 16:48:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(374,NULL,10,'Subject for Pledge Acknowledgment','2019-03-28 10:50:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(375,NULL,10,'Subject for Pledge Acknowledgment','2019-04-27 17:46:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(376,NULL,9,'Subject for Tell a Friend','2018-12-24 21:35:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(377,NULL,10,'Subject for Pledge Acknowledgment','2019-08-06 15:40:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(378,NULL,9,'Subject for Tell a Friend','2018-11-11 09:14:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(379,NULL,10,'Subject for Pledge Acknowledgment','2019-08-03 23:12:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(380,NULL,9,'Subject for Tell a Friend','2019-01-07 12:10:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(381,NULL,10,'Subject for Pledge Acknowledgment','2018-12-20 12:48:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(382,NULL,9,'Subject for Tell a Friend','2018-10-18 09:07:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(383,NULL,10,'Subject for Pledge Acknowledgment','2018-10-13 03:06:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(384,NULL,9,'Subject for Tell a Friend','2018-10-10 04:31:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(385,NULL,9,'Subject for Tell a Friend','2018-09-22 12:47:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(386,NULL,9,'Subject for Tell a Friend','2019-09-19 14:17:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(387,NULL,9,'Subject for Tell a Friend','2019-01-20 18:27:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(388,NULL,9,'Subject for Tell a Friend','2018-10-21 10:12:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(389,NULL,9,'Subject for Tell a Friend','2019-05-09 01:06:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(390,NULL,10,'Subject for Pledge Acknowledgment','2018-11-25 14:14:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(391,NULL,10,'Subject for Pledge Acknowledgment','2019-02-12 15:02:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(392,NULL,9,'Subject for Tell a Friend','2019-03-01 13:15:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(393,NULL,9,'Subject for Tell a Friend','2019-04-21 16:26:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(394,NULL,10,'Subject for Pledge Acknowledgment','2019-09-20 12:18:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(395,NULL,10,'Subject for Pledge Acknowledgment','2019-02-10 21:31:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(396,NULL,9,'Subject for Tell a Friend','2019-07-13 02:21:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(397,NULL,9,'Subject for Tell a Friend','2019-01-27 21:11:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(398,NULL,10,'Subject for Pledge Acknowledgment','2018-12-15 11:50:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(399,NULL,9,'Subject for Tell a Friend','2018-09-21 14:34:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(400,NULL,10,'Subject for Pledge Acknowledgment','2019-05-29 02:34:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(401,NULL,10,'Subject for Pledge Acknowledgment','2018-11-07 07:20:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(402,NULL,9,'Subject for Tell a Friend','2019-05-20 05:13:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(403,NULL,10,'Subject for Pledge Acknowledgment','2019-06-11 00:09:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(404,NULL,9,'Subject for Tell a Friend','2019-03-30 22:39:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(405,NULL,9,'Subject for Tell a Friend','2019-04-17 09:56:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(406,NULL,9,'Subject for Tell a Friend','2019-06-14 21:52:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(407,NULL,10,'Subject for Pledge Acknowledgment','2019-07-29 13:43:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(408,NULL,9,'Subject for Tell a Friend','2019-09-19 23:33:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(409,NULL,10,'Subject for Pledge Acknowledgment','2019-06-30 00:45:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(410,NULL,10,'Subject for Pledge Acknowledgment','2018-11-16 09:33:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(411,NULL,10,'Subject for Pledge Acknowledgment','2019-08-04 03:40:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(412,NULL,10,'Subject for Pledge Acknowledgment','2019-07-15 13:01:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(413,NULL,9,'Subject for Tell a Friend','2018-11-27 05:58:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(414,NULL,10,'Subject for Pledge Acknowledgment','2019-06-07 17:30:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(415,NULL,10,'Subject for Pledge Acknowledgment','2019-03-23 21:23:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(416,NULL,10,'Subject for Pledge Acknowledgment','2019-02-01 08:21:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(417,NULL,9,'Subject for Tell a Friend','2019-03-12 09:42:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(418,NULL,9,'Subject for Tell a Friend','2019-06-26 23:39:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(419,NULL,9,'Subject for Tell a Friend','2018-11-08 08:32:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(420,NULL,10,'Subject for Pledge Acknowledgment','2018-11-17 16:09:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(421,NULL,9,'Subject for Tell a Friend','2019-07-05 00:30:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(422,NULL,9,'Subject for Tell a Friend','2019-07-27 03:33:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(423,NULL,10,'Subject for Pledge Acknowledgment','2019-06-23 16:53:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(424,NULL,9,'Subject for Tell a Friend','2018-12-30 10:42:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(425,NULL,9,'Subject for Tell a Friend','2019-01-31 10:57:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(426,NULL,10,'Subject for Pledge Acknowledgment','2019-07-31 01:14:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(427,NULL,10,'Subject for Pledge Acknowledgment','2019-01-20 06:45:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(428,NULL,10,'Subject for Pledge Acknowledgment','2019-01-09 08:42:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(429,NULL,9,'Subject for Tell a Friend','2019-06-07 13:09:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(430,NULL,10,'Subject for Pledge Acknowledgment','2019-09-07 18:37:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(431,NULL,9,'Subject for Tell a Friend','2019-01-16 01:23:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(432,NULL,9,'Subject for Tell a Friend','2018-11-27 02:51:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(433,NULL,9,'Subject for Tell a Friend','2018-11-15 12:35:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(434,NULL,9,'Subject for Tell a Friend','2019-08-04 18:48:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(435,NULL,9,'Subject for Tell a Friend','2019-02-15 13:37:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(436,NULL,9,'Subject for Tell a Friend','2018-11-06 16:17:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(437,NULL,10,'Subject for Pledge Acknowledgment','2019-07-02 03:20:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(438,NULL,9,'Subject for Tell a Friend','2019-07-14 09:37:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(439,NULL,10,'Subject for Pledge Acknowledgment','2019-02-17 10:37:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(440,NULL,10,'Subject for Pledge Acknowledgment','2018-12-06 11:59:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(441,NULL,10,'Subject for Pledge Acknowledgment','2019-06-20 05:58:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(442,NULL,9,'Subject for Tell a Friend','2018-11-03 08:18:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(443,NULL,9,'Subject for Tell a Friend','2019-07-26 09:51:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(444,NULL,10,'Subject for Pledge Acknowledgment','2018-11-16 07:07:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(445,NULL,9,'Subject for Tell a Friend','2019-01-17 20:48:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(446,NULL,10,'Subject for Pledge Acknowledgment','2019-01-25 07:02:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(447,NULL,10,'Subject for Pledge Acknowledgment','2018-09-20 15:38:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(448,NULL,10,'Subject for Pledge Acknowledgment','2018-11-20 07:28:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(449,NULL,10,'Subject for Pledge Acknowledgment','2019-08-15 00:07:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(450,NULL,10,'Subject for Pledge Acknowledgment','2019-04-25 07:35:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(451,1,6,'$ 125.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(452,2,6,'$ 50.00-Online: Save the Penguins','2010-03-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(453,3,6,'$ 25.00-Apr 2007 Mailer 1','2010-04-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(454,4,6,'$ 50.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(455,5,6,'$ 500.00-Apr 2007 Mailer 1','2010-04-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(456,6,6,'$ 175.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(457,7,6,'$ 50.00-Online: Save the Penguins','2010-03-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(458,8,6,'$ 10.00-Online: Save the Penguins','2010-03-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(459,9,6,'$ 250.00-Online: Save the Penguins','2010-04-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(460,10,6,NULL,'2009-07-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(461,11,6,NULL,'2009-07-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(462,12,6,NULL,'2009-10-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(463,13,6,NULL,'2009-12-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(464,1,7,'General','2019-09-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(465,2,7,'Student','2019-09-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(466,3,7,'General','2019-09-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(467,4,7,'Student','2019-09-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(468,5,7,'General','2017-08-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(469,6,7,'Student','2019-09-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(470,7,7,'General','2019-09-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(471,8,7,'Student','2019-09-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(472,9,7,'General','2019-09-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(473,10,7,'General','2017-07-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(474,11,7,'Lifetime','2019-09-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(475,12,7,'Student','2019-09-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(476,13,7,'General','2019-09-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(477,14,7,'Student','2019-09-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(478,15,7,'General','2017-05-31 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(479,16,7,'Student','2019-09-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(480,17,7,'General','2019-09-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(481,18,7,'Student','2019-09-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(482,19,7,'General','2019-09-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(483,20,7,'Student','2018-09-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(484,21,7,'General','2019-08-31 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(485,22,7,'Lifetime','2019-08-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(486,23,7,'General','2019-08-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(487,24,7,'Student','2019-08-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(488,25,7,'General','2017-03-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(489,26,7,'Student','2019-08-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(490,27,7,'General','2019-08-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(491,28,7,'Student','2019-08-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(492,29,7,'General','2019-08-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(493,30,7,'Student','2018-08-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(494,14,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(495,15,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(496,16,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(497,17,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(498,18,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(499,19,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(500,20,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(501,21,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(502,22,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(503,23,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(504,24,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(505,25,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(506,26,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(507,27,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(508,28,6,'$ 100.00 - General Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(509,29,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(510,30,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(511,31,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(512,32,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(513,33,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(514,34,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(515,35,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(516,36,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(517,37,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(518,38,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(519,39,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(520,40,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(521,41,6,'$ 50.00 - Student Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(523,43,6,'$ 1200.00 - Lifetime Membership: Offline signup','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(525,1,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(526,2,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(527,3,5,'NULL','2008-05-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(528,4,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(529,5,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(530,6,5,'NULL','2008-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(531,7,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(532,8,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(533,9,5,'NULL','2008-02-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(534,10,5,'NULL','2008-02-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(535,11,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(536,12,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(537,13,5,'NULL','2008-06-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(538,14,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(539,15,5,'NULL','2008-07-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(540,16,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(541,17,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(542,18,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(543,19,5,'NULL','2008-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(544,20,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(545,21,5,'NULL','2008-03-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(546,22,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(547,23,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(548,24,5,'NULL','2008-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(549,25,5,'NULL','2008-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(550,26,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(551,27,5,'NULL','2008-05-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(552,28,5,'NULL','2009-12-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(553,29,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(554,30,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(555,31,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(556,32,5,'NULL','2009-07-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(557,33,5,'NULL','2009-03-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(558,34,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(559,35,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(560,36,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(561,37,5,'NULL','2009-03-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(562,38,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(563,39,5,'NULL','2008-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(564,40,5,'NULL','2009-12-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(565,41,5,'NULL','2009-01-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(566,42,5,'NULL','2009-12-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(567,43,5,'NULL','2009-03-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(568,44,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(569,45,5,'NULL','2009-01-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(570,46,5,'NULL','2009-12-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(571,47,5,'NULL','2009-10-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(572,48,5,'NULL','2009-12-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(573,49,5,'NULL','2009-03-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(574,50,5,'NULL','2009-04-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(575,45,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(576,46,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(577,47,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(578,48,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(579,49,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(580,50,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(581,51,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(582,52,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(583,53,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(584,54,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(585,55,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(586,56,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(587,57,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(588,58,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(589,59,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(590,60,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(591,61,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(592,62,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(593,63,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(594,64,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(596,66,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(598,68,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(599,69,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(600,70,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(601,71,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(603,73,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(604,74,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(605,75,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(607,77,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(608,78,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(609,79,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(612,82,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(613,83,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(614,84,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(616,86,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(617,87,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(618,88,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(619,89,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(620,90,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(621,91,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(623,93,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29'),(624,94,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2019-09-20 12:57:29',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2019-09-20 19:57:29','2019-09-20 19:57:29');
 /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -97,7 +97,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_activity_contact` WRITE;
 /*!40000 ALTER TABLE `civicrm_activity_contact` DISABLE KEYS */;
-INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES (239,159,1,3),(301,204,1,3),(84,55,2,3),(106,69,2,3),(387,263,2,3),(479,321,2,3),(679,451,2,2),(776,548,2,2),(375,255,3,3),(599,397,4,3),(680,452,4,2),(780,552,4,2),(7,4,6,3),(409,277,6,3),(681,453,6,2),(1,1,7,2),(2,2,7,2),(4,3,7,2),(6,4,7,2),(8,5,7,2),(9,6,7,2),(10,7,7,2),(12,8,7,2),(14,9,7,2),(15,10,7,2),(17,11,7,2),(18,12,7,2),(19,13,7,2),(20,14,7,2),(22,15,7,2),(23,16,7,2),(25,17,7,2),(27,18,7,2),(28,19,7,2),(30,20,7,2),(32,21,7,2),(33,22,7,2),(34,23,7,2),(36,24,7,2),(38,25,7,2),(40,26,7,2),(42,27,7,2),(43,28,7,2),(45,29,7,2),(46,30,7,2),(47,31,7,2),(48,32,7,2),(49,33,7,2),(50,34,7,2),(52,35,7,2),(54,36,7,2),(55,37,7,2),(57,38,7,2),(58,39,7,2),(60,40,7,2),(62,41,7,2),(63,42,7,2),(65,43,7,2),(66,44,7,2),(68,45,7,2),(70,46,7,2),(72,47,7,2),(74,48,7,2),(76,49,7,2),(77,50,7,2),(78,51,7,2),(79,52,7,2),(80,53,7,2),(82,54,7,2),(83,55,7,2),(85,56,7,2),(86,57,7,2),(88,58,7,2),(89,59,7,2),(91,60,7,2),(92,61,7,2),(93,62,7,2),(95,63,7,2),(97,64,7,2),(99,65,7,2),(100,66,7,2),(102,67,7,2),(103,68,7,2),(105,69,7,2),(107,70,7,2),(109,71,7,2),(110,72,7,2),(111,72,7,3),(112,73,7,2),(114,74,7,2),(115,75,7,2),(117,76,7,2),(118,77,7,2),(120,78,7,2),(121,79,7,2),(122,80,7,2),(123,81,7,2),(124,82,7,2),(126,83,7,2),(127,84,7,2),(129,85,7,2),(130,86,7,2),(131,87,7,2),(133,88,7,2),(135,89,7,2),(136,90,7,2),(138,91,7,2),(140,92,7,2),(141,93,7,2),(143,94,7,2),(145,95,7,2),(147,96,7,2),(148,97,7,2),(150,98,7,2),(152,99,7,2),(153,100,7,2),(155,101,7,2),(156,102,7,2),(157,103,7,2),(158,104,7,2),(160,105,7,2),(162,106,7,2),(164,107,7,2),(166,108,7,2),(168,109,7,2),(169,110,7,2),(171,111,7,2),(172,112,7,2),(173,113,7,2),(175,114,7,2),(176,115,7,2),(178,116,7,2),(179,117,7,2),(180,118,7,2),(181,119,7,2),(182,120,7,2),(183,121,7,2),(184,122,7,2),(186,123,7,2),(188,124,7,2),(189,125,7,2),(190,126,7,2),(191,127,7,2),(192,128,7,2),(193,129,7,2),(195,130,7,2),(197,131,7,2),(198,132,7,2),(199,133,7,2),(201,134,7,2),(202,135,7,2),(204,136,7,2),(205,137,7,2),(206,138,7,2),(208,139,7,2),(210,140,7,2),(212,141,7,2),(213,142,7,2),(215,143,7,2),(217,144,7,2),(219,145,7,2),(221,146,7,2),(222,147,7,2),(223,148,7,2),(225,149,7,2),(226,150,7,2),(340,231,7,3),(455,306,7,3),(697,469,7,2),(738,510,7,2),(762,534,7,2),(146,95,8,3),(682,454,8,2),(707,479,8,2),(743,515,8,2),(759,531,8,2),(220,145,9,3),(446,301,9,3),(585,387,9,3),(608,404,9,3),(203,135,10,3),(251,167,10,3),(489,326,10,3),(658,435,10,3),(766,538,10,2),(61,40,11,3),(11,7,12,3),(154,100,12,3),(312,211,12,3),(714,486,12,2),(732,504,12,2),(16,10,13,3),(786,558,13,2),(501,333,14,3),(558,369,14,3),(384,261,15,3),(438,296,15,3),(530,350,16,3),(619,411,16,3),(683,455,16,2),(701,473,16,2),(740,512,16,2),(418,283,18,3),(712,484,18,2),(731,503,18,2),(789,561,18,2),(216,143,19,3),(583,386,19,3),(684,456,19,2),(134,88,20,3),(757,529,20,2),(508,337,21,3),(324,219,22,3),(551,364,22,3),(167,108,23,3),(448,302,23,3),(775,547,23,2),(101,66,24,3),(24,16,25,3),(196,130,26,3),(269,181,26,3),(513,340,26,3),(526,348,26,3),(545,360,26,3),(718,490,26,2),(734,506,26,2),(782,554,26,2),(31,20,27,3),(228,151,27,2),(229,152,27,2),(231,153,27,2),(233,154,27,2),(234,155,27,2),(235,156,27,2),(236,157,27,2),(237,158,27,2),(238,159,27,2),(240,160,27,2),(242,161,27,2),(243,162,27,2),(244,163,27,2),(245,164,27,2),(246,165,27,2),(248,166,27,2),(250,167,27,2),(252,168,27,2),(254,169,27,2),(255,170,27,2),(256,171,27,2),(257,172,27,2),(259,173,27,2),(260,174,27,2),(262,175,27,2),(263,176,27,2),(264,177,27,2),(265,178,27,2),(266,179,27,2),(267,180,27,2),(268,181,27,2),(270,182,27,2),(272,183,27,2),(273,184,27,2),(275,185,27,2),(277,186,27,2),(278,187,27,2),(280,188,27,2),(281,189,27,2),(283,190,27,2),(284,191,27,2),(285,192,27,2),(286,193,27,2),(287,194,27,2),(288,195,27,2),(290,196,27,2),(291,197,27,2),(292,198,27,2),(293,199,27,2),(294,200,27,2),(296,201,27,2),(297,202,27,2),(299,203,27,2),(300,204,27,2),(302,205,27,2),(303,206,27,2),(305,207,27,2),(306,208,27,2),(307,209,27,2),(309,210,27,2),(311,211,27,2),(313,212,27,2),(315,213,27,2),(317,214,27,2),(318,215,27,2),(319,216,27,2),(321,217,27,2),(322,218,27,2),(323,219,27,2),(325,220,27,2),(327,221,27,2),(328,222,27,2),(329,223,27,2),(330,224,27,2),(331,225,27,2),(332,226,27,2),(333,227,27,2),(334,228,27,2),(336,229,27,2),(338,230,27,2),(339,231,27,2),(341,232,27,2),(343,233,27,2),(345,234,27,2),(347,235,27,2),(348,236,27,2),(349,237,27,2),(350,238,27,2),(351,239,27,2),(353,240,27,2),(355,241,27,2),(357,242,27,2),(358,243,27,2),(359,244,27,2),(361,245,27,2),(362,246,27,2),(363,247,27,2),(364,248,27,2),(365,248,27,3),(366,249,27,2),(367,250,27,2),(368,251,27,2),(370,252,27,2),(372,253,27,2),(373,254,27,2),(374,255,27,2),(376,256,27,2),(377,257,27,2),(378,258,27,2),(380,259,27,2),(381,260,27,2),(383,261,27,2),(385,262,27,2),(386,263,27,2),(388,264,27,2),(389,265,27,2),(391,266,27,2),(392,267,27,2),(394,268,27,2),(396,269,27,2),(397,270,27,2),(398,271,27,2),(400,272,27,2),(402,273,27,2),(403,274,27,2),(405,275,27,2),(406,276,27,2),(408,277,27,2),(410,278,27,2),(412,279,27,2),(413,280,27,2),(415,281,27,2),(416,282,27,2),(417,283,27,2),(419,284,27,2),(420,285,27,2),(421,286,27,2),(422,287,27,2),(423,288,27,2),(425,289,27,2),(427,290,27,2),(429,291,27,2),(431,292,27,2),(433,293,27,2),(434,294,27,2),(436,295,27,2),(437,296,27,2),(439,297,27,2),(441,298,27,2),(443,299,27,2),(444,300,27,2),(671,444,29,3),(96,63,30,3),(424,288,30,3),(793,565,30,2),(382,260,31,3),(778,550,31,2),(690,462,32,2),(691,463,32,2),(772,544,32,2),(687,459,34,2),(755,527,34,2),(468,314,35,3),(492,328,35,3),(174,113,36,3),(298,202,36,3),(352,239,36,3),(407,276,36,3),(715,487,36,2),(746,518,36,2),(496,330,37,3),(144,94,38,3),(214,142,38,3),(442,298,38,3),(567,374,39,3),(572,377,39,3),(218,144,40,3),(414,280,40,3),(477,320,40,3),(595,395,40,3),(605,402,40,3),(432,292,41,3),(660,436,41,3),(765,537,41,2),(399,271,42,3),(475,319,42,3),(709,481,42,2),(744,516,42,2),(758,530,42,2),(21,14,43,3),(274,184,43,3),(669,443,43,3),(689,461,43,2),(310,210,44,3),(119,77,45,3),(369,251,45,3),(69,45,46,3),(360,244,46,3),(450,303,46,3),(539,356,46,3),(703,475,46,2),(741,513,46,2),(430,291,48,3),(767,539,48,2),(104,68,49,3),(316,213,49,3),(667,442,49,3),(163,106,50,3),(271,182,50,3),(458,308,50,3),(785,557,50,2),(44,28,51,3),(511,339,51,3),(211,140,52,3),(518,343,52,3),(704,476,52,2),(727,499,52,2),(137,90,53,3),(151,98,53,3),(654,433,53,3),(3,2,54,3),(253,168,55,3),(289,195,55,3),(354,240,55,3),(73,47,56,3),(81,53,56,3),(337,229,56,3),(342,232,56,3),(227,150,57,3),(241,160,57,3),(279,187,57,3),(590,391,57,3),(717,489,57,2),(747,519,57,2),(39,25,58,3),(471,316,58,3),(494,329,58,3),(498,331,58,3),(639,425,58,3),(41,26,59,3),(411,278,59,3),(59,39,60,3),(258,172,60,3),(694,466,60,2),(723,495,60,2),(170,110,61,3),(523,346,61,3),(622,413,61,3),(37,24,62,3),(628,417,62,3),(678,450,62,3),(797,569,62,2),(784,556,63,2),(56,37,64,3),(506,336,64,3),(610,405,64,3),(29,19,65,3),(247,165,65,3),(261,174,65,3),(549,363,65,3),(200,133,66,3),(335,228,66,3),(53,35,67,3),(344,233,67,3),(401,272,67,3),(560,370,67,3),(636,423,67,3),(643,427,68,3),(125,82,69,3),(625,415,69,3),(75,48,70,3),(404,274,70,3),(428,290,70,3),(435,294,70,3),(487,325,70,3),(87,57,71,3),(116,75,71,3),(194,129,71,3),(207,138,71,3),(356,241,71,3),(371,252,71,3),(688,460,71,2),(314,212,72,3),(485,324,72,3),(113,73,74,3),(641,426,74,3),(656,434,74,3),(35,23,75,3),(159,104,75,3),(504,335,75,3),(563,372,75,3),(90,59,76,3),(98,64,76,3),(462,310,76,3),(483,323,76,3),(139,91,77,3),(185,122,77,3),(533,352,77,3),(187,123,78,3),(520,344,78,3),(713,485,78,2),(751,523,78,2),(128,84,79,3),(249,166,79,3),(276,185,79,3),(395,268,79,3),(445,301,79,2),(447,302,79,2),(449,303,79,2),(451,304,79,2),(452,305,79,2),(454,306,79,2),(456,307,79,2),(457,308,79,2),(459,309,79,2),(461,310,79,2),(463,311,79,2),(464,312,79,2),(465,313,79,2),(467,314,79,2),(469,315,79,2),(470,316,79,2),(472,317,79,2),(473,318,79,2),(474,319,79,2),(476,320,79,2),(478,321,79,2),(480,322,79,2),(482,323,79,2),(484,324,79,2),(486,325,79,2),(488,326,79,2),(490,327,79,2),(491,328,79,2),(493,329,79,2),(495,330,79,2),(497,331,79,2),(499,332,79,2),(500,333,79,2),(502,334,79,2),(503,335,79,2),(505,336,79,2),(507,337,79,2),(509,338,79,2),(510,339,79,2),(512,340,79,2),(514,341,79,2),(516,342,79,2),(517,343,79,2),(519,344,79,2),(521,345,79,2),(522,346,79,2),(524,347,79,2),(525,348,79,2),(527,349,79,2),(528,349,79,3),(529,350,79,2),(531,351,79,2),(532,352,79,2),(534,353,79,2),(535,354,79,2),(537,355,79,2),(538,356,79,2),(540,357,79,2),(541,358,79,2),(543,359,79,2),(544,360,79,2),(546,361,79,2),(547,362,79,2),(548,363,79,2),(550,364,79,2),(552,365,79,2),(554,366,79,2),(555,367,79,2),(556,368,79,2),(557,369,79,2),(559,370,79,2),(561,371,79,2),(562,372,79,2),(564,373,79,2),(566,374,79,2),(568,375,79,2),(569,375,79,3),(570,376,79,2),(571,377,79,2),(573,378,79,2),(575,379,79,2),(576,380,79,2),(577,381,79,2),(578,382,79,2),(579,383,79,2),(580,384,79,2),(581,385,79,2),(582,386,79,2),(584,387,79,2),(586,388,79,2),(587,389,79,2),(588,390,79,2),(589,391,79,2),(591,392,79,2),(592,393,79,2),(593,394,79,2),(594,395,79,2),(596,396,79,2),(598,397,79,2),(600,398,79,2),(601,399,79,2),(602,400,79,2),(603,401,79,2),(604,402,79,2),(606,403,79,2),(607,404,79,2),(609,405,79,2),(611,406,79,2),(613,407,79,2),(614,408,79,2),(615,409,79,2),(617,410,79,2),(618,411,79,2),(620,412,79,2),(621,413,79,2),(623,414,79,2),(624,415,79,2),(626,416,79,2),(627,417,79,2),(629,418,79,2),(630,419,79,2),(631,420,79,2),(632,421,79,2),(634,422,79,2),(635,423,79,2),(637,424,79,2),(638,425,79,2),(640,426,79,2),(642,427,79,2),(644,428,79,2),(645,429,79,2),(647,430,79,2),(649,431,79,2),(651,432,79,2),(653,433,79,2),(655,434,79,2),(657,435,79,2),(659,436,79,2),(661,437,79,2),(662,438,79,2),(663,439,79,2),(664,440,79,2),(665,441,79,2),(666,442,79,2),(668,443,79,2),(670,444,79,2),(672,445,79,2),(673,446,79,2),(674,447,79,2),(675,448,79,2),(676,449,79,2),(677,450,79,2),(774,546,79,2),(64,42,80,3),(515,341,80,3),(224,148,81,3),(282,189,81,3),(453,305,82,3),(685,457,82,2),(788,560,82,2),(320,216,83,3),(132,87,84,3),(326,220,84,3),(71,46,85,3),(553,365,85,3),(426,289,86,3),(612,406,86,3),(379,258,87,3),(209,139,88,3),(232,153,88,3),(650,431,88,3),(149,97,89,3),(466,313,89,3),(542,358,89,3),(13,8,90,3),(108,70,90,3),(481,322,90,3),(648,430,90,3),(698,470,90,2),(725,497,90,2),(799,571,90,2),(393,267,91,3),(633,421,91,3),(295,200,92,3),(440,297,92,3),(597,396,92,3),(686,458,92,2),(230,152,93,3),(574,378,93,3),(26,17,94,3),(165,107,94,3),(308,209,94,3),(142,93,95,3),(460,309,95,3),(699,471,95,2),(739,511,95,2),(5,3,96,3),(94,62,96,3),(161,105,96,3),(652,432,96,3),(390,265,97,3),(646,429,97,3),(51,34,98,3),(304,206,98,3),(346,234,98,3),(536,354,99,3),(616,409,99,3),(768,540,99,2),(67,44,100,3),(565,373,100,3),(177,115,101,3),(710,482,105,2),(730,502,105,2),(764,536,107,2),(756,528,108,2),(777,549,111,2),(716,488,113,2),(733,505,113,2),(708,480,115,2),(729,501,115,2),(705,477,116,2),(742,514,116,2),(711,483,118,2),(745,517,118,2),(763,535,119,2),(695,467,124,2),(737,509,124,2),(771,543,128,2),(706,478,132,2),(728,500,132,2),(798,570,132,2),(779,551,133,2),(720,492,134,2),(735,507,134,2),(790,562,137,2),(761,533,141,2),(693,465,148,2),(736,508,148,2),(700,472,149,2),(726,498,149,2),(753,525,150,2),(754,526,156,2),(702,474,159,2),(750,522,159,2),(783,555,160,2),(801,573,163,2),(802,574,167,2),(696,468,170,2),(724,496,170,2),(760,532,172,2),(792,564,173,2),(692,464,177,2),(722,494,177,2),(787,559,181,2),(719,491,182,2),(748,520,182,2),(791,563,182,2),(721,493,183,2),(749,521,183,2),(773,545,183,2),(770,542,184,2),(795,567,185,2),(800,572,186,2),(781,553,188,2),(769,541,191,2),(794,566,196,2),(796,568,199,2);
+INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES (455,298,1,3),(652,424,1,3),(796,556,1,2),(320,207,2,3),(425,276,2,3),(691,451,2,2),(67,43,3,3),(483,316,3,3),(515,335,4,3),(692,452,4,2),(161,106,5,3),(233,151,5,3),(333,216,5,3),(789,549,5,2),(693,453,6,2),(22,15,7,3),(92,60,7,3),(155,102,7,3),(195,127,7,3),(269,174,7,3),(281,183,7,3),(329,214,7,3),(370,240,7,3),(4,3,8,3),(396,255,8,3),(694,454,8,2),(810,570,8,2),(227,147,9,3),(347,225,9,3),(412,266,9,3),(526,341,9,3),(374,243,10,3),(574,373,10,3),(724,484,10,2),(744,504,10,2),(83,53,11,3),(404,260,11,3),(238,154,12,3),(402,259,12,3),(126,83,13,3),(355,230,13,3),(479,313,13,3),(626,406,15,3),(685,445,15,3),(236,153,16,3),(695,455,16,2),(719,479,16,2),(755,515,16,2),(113,73,17,3),(568,369,17,3),(12,9,18,3),(283,184,18,3),(367,238,18,3),(644,419,18,3),(797,557,18,2),(14,10,19,3),(150,99,19,3),(459,301,19,2),(461,302,19,2),(463,303,19,2),(465,304,19,2),(466,305,19,2),(468,306,19,2),(469,307,19,2),(470,308,19,2),(472,309,19,2),(473,310,19,2),(475,311,19,2),(476,312,19,2),(478,313,19,2),(480,314,19,2),(481,315,19,2),(482,316,19,2),(484,317,19,2),(486,318,19,2),(487,319,19,2),(489,320,19,2),(490,321,19,2),(492,322,19,2),(494,323,19,2),(496,324,19,2),(497,325,19,2),(498,326,19,2),(500,327,19,2),(501,328,19,2),(503,329,19,2),(505,330,19,2),(507,331,19,2),(508,332,19,2),(510,333,19,2),(512,334,19,2),(514,335,19,2),(516,336,19,2),(518,337,19,2),(520,338,19,2),(522,339,19,2),(524,340,19,2),(525,341,19,2),(527,342,19,2),(529,343,19,2),(531,344,19,2),(532,345,19,2),(534,346,19,2),(536,347,19,2),(538,348,19,2),(539,349,19,2),(541,350,19,2),(542,351,19,2),(544,352,19,2),(546,353,19,2),(547,354,19,2),(548,355,19,2),(550,356,19,2),(551,357,19,2),(552,358,19,2),(553,359,19,2),(555,360,19,2),(556,361,19,2),(557,362,19,2),(558,363,19,2),(560,364,19,2),(562,365,19,2),(563,366,19,2),(564,367,19,2),(565,368,19,2),(567,369,19,2),(569,370,19,2),(571,371,19,2),(572,372,19,2),(573,373,19,2),(575,374,19,2),(576,375,19,2),(577,376,19,2),(579,377,19,2),(580,378,19,2),(582,379,19,2),(583,380,19,2),(585,381,19,2),(586,382,19,2),(588,383,19,2),(589,384,19,2),(591,385,19,2),(593,386,19,2),(595,387,19,2),(597,388,19,2),(599,389,19,2),(601,390,19,2),(602,391,19,2),(603,392,19,2),(605,393,19,2),(607,394,19,2),(608,395,19,2),(609,396,19,2),(611,397,19,2),(613,398,19,2),(614,399,19,2),(616,400,19,2),(617,401,19,2),(618,402,19,2),(620,403,19,2),(621,404,19,2),(623,405,19,2),(625,406,19,2),(627,407,19,2),(628,408,19,2),(630,409,19,2),(631,410,19,2),(632,411,19,2),(633,412,19,2),(634,413,19,2),(636,414,19,2),(637,415,19,2),(638,416,19,2),(639,417,19,2),(641,418,19,2),(643,419,19,2),(645,420,19,2),(646,421,19,2),(648,422,19,2),(650,423,19,2),(651,424,19,2),(653,425,19,2),(655,426,19,2),(656,427,19,2),(657,428,19,2),(658,429,19,2),(660,430,19,2),(661,431,19,2),(663,432,19,2),(665,433,19,2),(667,434,19,2),(669,435,19,2),(671,436,19,2),(673,437,19,2),(674,438,19,2),(676,439,19,2),(677,440,19,2),(678,441,19,2),(679,442,19,2),(681,443,19,2),(683,444,19,2),(684,445,19,2),(686,446,19,2),(687,447,19,2),(688,448,19,2),(689,449,19,2),(690,450,19,2),(696,456,19,2),(720,480,19,2),(742,502,19,2),(140,93,21,3),(802,562,21,2),(16,11,22,3),(298,194,22,3),(34,23,23,3),(464,303,23,3),(533,345,23,3),(604,392,23,3),(331,215,24,3),(509,332,25,3),(513,334,25,3),(596,387,25,3),(672,436,26,3),(578,376,27,3),(581,378,27,3),(163,107,28,3),(590,384,28,3),(294,192,29,3),(309,201,29,3),(666,433,29,3),(559,363,30,3),(783,543,30,2),(225,146,31,3),(254,164,31,3),(278,181,31,3),(519,337,31,3),(69,44,32,3),(172,113,32,3),(416,269,32,3),(680,442,32,3),(702,462,32,2),(703,463,32,2),(56,36,33,3),(365,237,33,3),(389,251,33,3),(592,385,33,3),(175,115,34,3),(241,156,34,3),(303,197,34,3),(521,338,34,3),(699,459,34,2),(805,565,34,2),(215,140,35,3),(422,274,35,3),(709,469,35,2),(751,511,35,2),(587,382,36,3),(670,435,36,3),(675,438,36,3),(721,481,36,2),(756,516,36,2),(187,122,37,3),(457,299,37,3),(506,330,37,3),(771,531,37,2),(146,97,38,3),(325,211,38,3),(440,287,38,3),(649,422,38,3),(718,478,39,2),(741,501,39,2),(442,288,40,3),(212,138,41,3),(318,206,41,3),(398,256,41,3),(545,352,41,3),(790,550,41,2),(208,136,43,3),(271,175,43,3),(380,246,43,3),(474,310,43,3),(701,461,43,2),(263,170,44,3),(561,364,44,3),(243,157,45,3),(495,323,45,3),(808,568,45,2),(58,37,46,3),(197,128,46,3),(606,393,46,3),(713,473,46,2),(739,499,46,2),(570,370,47,3),(210,137,48,3),(511,333,48,3),(640,417,48,3),(345,224,49,3),(530,343,49,3),(785,545,49,2),(462,302,50,3),(25,17,51,3),(36,24,51,3),(183,120,51,3),(341,222,51,3),(359,233,51,3),(266,172,53,3),(708,468,53,2),(736,496,53,2),(128,84,54,3),(436,284,54,3),(87,56,55,3),(285,185,55,3),(313,203,55,3),(471,308,55,3),(766,526,55,2),(95,62,56,3),(528,342,56,3),(659,429,56,3),(668,434,56,3),(97,63,57,3),(343,223,57,3),(710,470,57,2),(737,497,57,2),(800,560,57,2),(543,351,58,3),(799,559,58,2),(336,218,59,3),(477,312,59,3),(642,418,59,3),(647,421,59,3),(169,111,60,3),(185,121,60,3),(523,339,60,3),(19,13,61,3),(256,165,61,3),(517,336,61,3),(682,443,61,3),(378,245,62,3),(537,347,62,3),(726,486,62,2),(745,505,62,2),(38,25,63,3),(73,46,63,3),(301,196,63,3),(353,229,63,3),(385,249,63,3),(566,368,63,3),(48,30,64,3),(179,118,64,3),(248,160,65,3),(191,125,66,3),(261,169,67,3),(493,322,67,3),(811,571,67,2),(40,26,68,3),(220,143,68,3),(305,198,68,3),(488,319,68,3),(31,21,69,3),(406,261,69,3),(612,397,69,3),(733,493,69,2),(761,521,69,2),(807,567,69,2),(491,321,70,3),(535,346,70,3),(152,100,71,3),(287,186,71,3),(452,296,71,3),(615,399,71,3),(700,460,71,2),(504,329,72,3),(801,561,72,2),(29,20,73,3),(144,96,73,3),(52,33,74,3),(460,301,74,3),(99,64,75,3),(798,558,75,2),(7,5,76,3),(387,250,76,3),(138,92,77,3),(148,98,77,3),(245,158,77,3),(431,281,77,3),(251,162,78,3),(349,226,78,3),(362,235,78,3),(635,413,78,3),(159,105,80,3),(584,380,80,3),(654,425,80,3),(44,28,81,3),(619,402,81,3),(391,252,82,3),(697,457,82,2),(181,119,83,3),(499,326,83,3),(554,359,83,3),(662,431,83,3),(773,533,83,2),(315,204,84,3),(502,328,84,3),(467,305,85,3),(629,408,85,3),(103,66,86,3),(433,282,86,3),(795,555,86,2),(46,29,87,3),(42,27,88,3),(60,38,88,3),(376,244,89,3),(540,349,89,3),(729,489,89,2),(759,519,89,2),(814,574,89,2),(218,142,90,3),(382,247,90,3),(78,50,91,3),(101,65,91,3),(394,254,91,3),(549,355,91,3),(600,389,91,3),(610,396,91,3),(705,465,91,2),(749,509,91,2),(784,544,91,2),(222,144,92,3),(622,404,92,3),(698,458,92,2),(723,483,92,2),(757,517,92,2),(781,541,92,2),(131,86,93,3),(448,293,93,3),(598,388,93,3),(780,540,93,2),(62,39,94,3),(120,79,94,3),(296,193,94,3),(123,81,96,3),(167,110,96,3),(71,45,97,3),(107,69,97,3),(109,70,97,3),(203,132,97,3),(231,150,97,3),(485,317,97,3),(193,126,98,3),(200,130,98,3),(767,527,99,2),(81,52,100,3),(311,202,100,3),(594,386,100,3),(664,432,100,3),(624,405,101,3),(730,490,101,2),(747,507,101,2),(722,482,104,2),(743,503,104,2),(779,539,105,2),(775,535,108,2),(728,488,113,2),(746,506,113,2),(1,1,114,2),(2,2,114,2),(3,3,114,2),(5,4,114,2),(6,5,114,2),(8,6,114,2),(9,7,114,2),(10,8,114,2),(11,9,114,2),(13,10,114,2),(15,11,114,2),(17,12,114,2),(18,13,114,2),(20,14,114,2),(21,15,114,2),(23,16,114,2),(24,17,114,2),(26,18,114,2),(27,19,114,2),(28,20,114,2),(30,21,114,2),(32,22,114,2),(33,23,114,2),(35,24,114,2),(37,25,114,2),(39,26,114,2),(41,27,114,2),(43,28,114,2),(45,29,114,2),(47,30,114,2),(49,31,114,2),(50,32,114,2),(51,33,114,2),(53,34,114,2),(54,35,114,2),(55,36,114,2),(57,37,114,2),(59,38,114,2),(61,39,114,2),(63,40,114,2),(64,41,114,2),(65,42,114,2),(66,43,114,2),(68,44,114,2),(70,45,114,2),(72,46,114,2),(74,47,114,2),(75,48,114,2),(76,49,114,2),(77,50,114,2),(79,51,114,2),(80,52,114,2),(82,53,114,2),(84,54,114,2),(85,55,114,2),(86,56,114,2),(88,57,114,2),(89,58,114,2),(90,59,114,2),(91,60,114,2),(93,61,114,2),(94,62,114,2),(96,63,114,2),(98,64,114,2),(100,65,114,2),(102,66,114,2),(104,67,114,2),(105,68,114,2),(106,69,114,2),(108,70,114,2),(110,71,114,2),(111,72,114,2),(112,73,114,2),(114,74,114,2),(115,75,114,2),(116,76,114,2),(117,77,114,2),(118,78,114,2),(119,79,114,2),(121,80,114,2),(122,81,114,2),(124,82,114,2),(125,83,114,2),(127,84,114,2),(129,85,114,2),(130,86,114,2),(132,87,114,2),(133,88,114,2),(134,89,114,2),(135,90,114,2),(136,91,114,2),(137,92,114,2),(139,93,114,2),(141,94,114,2),(142,95,114,2),(143,96,114,2),(145,97,114,2),(147,98,114,2),(149,99,114,2),(151,100,114,2),(153,101,114,2),(154,102,114,2),(156,103,114,2),(157,104,114,2),(158,105,114,2),(160,106,114,2),(162,107,114,2),(164,108,114,2),(165,109,114,2),(166,110,114,2),(168,111,114,2),(170,112,114,2),(171,113,114,2),(173,114,114,2),(174,115,114,2),(176,116,114,2),(177,117,114,2),(178,118,114,2),(180,119,114,2),(182,120,114,2),(184,121,114,2),(186,122,114,2),(188,123,114,2),(189,124,114,2),(190,125,114,2),(192,126,114,2),(194,127,114,2),(196,128,114,2),(198,129,114,2),(199,130,114,2),(201,131,114,2),(202,132,114,2),(204,133,114,2),(205,134,114,2),(206,135,114,2),(207,136,114,2),(209,137,114,2),(211,138,114,2),(213,139,114,2),(214,140,114,2),(216,141,114,2),(217,142,114,2),(219,143,114,2),(221,144,114,2),(223,145,114,2),(224,146,114,2),(226,147,114,2),(228,148,114,2),(229,149,114,2),(230,150,114,2),(787,547,114,2),(782,542,119,2),(793,553,120,2),(727,487,121,2),(758,518,121,2),(716,476,123,2),(740,500,123,2),(774,534,124,2),(707,467,125,2),(750,510,125,2),(772,532,127,2),(704,464,130,2),(734,494,130,2),(731,491,134,2),(760,520,134,2),(812,572,135,2),(809,569,139,2),(768,528,143,2),(706,466,145,2),(735,495,145,2),(776,536,145,2),(232,151,148,2),(234,152,148,2),(235,153,148,2),(237,154,148,2),(239,155,148,2),(240,156,148,2),(242,157,148,2),(244,158,148,2),(246,159,148,2),(247,160,148,2),(249,161,148,2),(250,162,148,2),(252,163,148,2),(253,164,148,2),(255,165,148,2),(257,166,148,2),(258,167,148,2),(259,168,148,2),(260,169,148,2),(262,170,148,2),(264,171,148,2),(265,172,148,2),(267,173,148,2),(268,174,148,2),(270,175,148,2),(272,176,148,2),(273,177,148,2),(274,178,148,2),(275,179,148,2),(276,180,148,2),(277,181,148,2),(279,182,148,2),(280,183,148,2),(282,184,148,2),(284,185,148,2),(286,186,148,2),(288,187,148,2),(289,188,148,2),(290,189,148,2),(291,190,148,2),(292,191,148,2),(293,192,148,2),(295,193,148,2),(297,194,148,2),(299,195,148,2),(300,196,148,2),(302,197,148,2),(304,198,148,2),(306,199,148,2),(307,200,148,2),(308,201,148,2),(310,202,148,2),(312,203,148,2),(314,204,148,2),(316,205,148,2),(317,206,148,2),(319,207,148,2),(321,208,148,2),(322,209,148,2),(323,210,148,2),(324,211,148,2),(326,212,148,2),(327,213,148,2),(328,214,148,2),(330,215,148,2),(332,216,148,2),(334,217,148,2),(335,218,148,2),(337,219,148,2),(338,220,148,2),(339,221,148,2),(340,222,148,2),(342,223,148,2),(344,224,148,2),(346,225,148,2),(348,226,148,2),(350,227,148,2),(351,228,148,2),(352,229,148,2),(354,230,148,2),(356,231,148,2),(357,232,148,2),(358,233,148,2),(360,234,148,2),(361,235,148,2),(363,236,148,2),(364,237,148,2),(366,238,148,2),(368,239,148,2),(369,240,148,2),(371,241,148,2),(372,242,148,2),(373,243,148,2),(375,244,148,2),(377,245,148,2),(379,246,148,2),(381,247,148,2),(383,248,148,2),(384,249,148,2),(386,250,148,2),(388,251,148,2),(390,252,148,2),(392,253,148,2),(393,254,148,2),(395,255,148,2),(397,256,148,2),(399,257,148,2),(400,258,148,2),(401,259,148,2),(403,260,148,2),(405,261,148,2),(407,262,148,2),(408,263,148,2),(409,264,148,2),(410,265,148,2),(411,266,148,2),(413,267,148,2),(414,268,148,2),(415,269,148,2),(417,270,148,2),(418,271,148,2),(419,272,148,2),(420,273,148,2),(421,274,148,2),(423,275,148,2),(424,276,148,2),(426,277,148,2),(427,278,148,2),(428,279,148,2),(429,280,148,2),(430,281,148,2),(432,282,148,2),(434,283,148,2),(435,284,148,2),(437,285,148,2),(438,286,148,2),(439,287,148,2),(441,288,148,2),(443,289,148,2),(444,290,148,2),(445,291,148,2),(446,292,148,2),(447,293,148,2),(449,294,148,2),(450,295,148,2),(451,296,148,2),(453,297,148,2),(454,298,148,2),(456,299,148,2),(458,300,148,2),(715,475,151,2),(753,513,151,2),(714,474,153,2),(762,522,153,2),(786,546,153,2),(813,573,157,2),(791,551,159,2),(803,563,163,2),(769,529,170,2),(725,485,173,2),(763,523,173,2),(712,472,178,2),(738,498,178,2),(777,537,178,2),(794,554,179,2),(788,548,183,2),(804,564,184,2),(765,525,186,2),(770,530,187,2),(778,538,189,2),(711,471,190,2),(752,512,190,2),(806,566,190,2),(717,477,192,2),(754,514,192,2),(792,552,193,2),(732,492,197,2),(748,508,197,2);
 /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -107,7 +107,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_address` WRITE;
 /*!40000 ALTER TABLE `civicrm_address` DISABLE KEYS */;
-INSERT INTO `civicrm_address` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `street_address`, `street_number`, `street_number_suffix`, `street_number_predirectional`, `street_name`, `street_type`, `street_number_postdirectional`, `street_unit`, `supplemental_address_1`, `supplemental_address_2`, `supplemental_address_3`, `city`, `county_id`, `state_province_id`, `postal_code_suffix`, `postal_code`, `usps_adc`, `country_id`, `geo_code_1`, `geo_code_2`, `manual_geo_code`, `timezone`, `name`, `master_id`) VALUES (1,57,1,1,0,'657K Pine Ave SW',657,'K',NULL,'Pine','Ave','SW',NULL,NULL,NULL,NULL,'Morristown',1,1041,NULL,'37815',NULL,1228,36.213293,-83.275211,0,NULL,NULL,NULL),(2,69,1,1,0,'197L El Camino Pl SW',197,'L',NULL,'El Camino','Pl','SW',NULL,NULL,NULL,NULL,'Sand Springs',1,1035,NULL,'74063',NULL,1228,36.139385,-96.16523,0,NULL,NULL,NULL),(3,48,1,1,0,'296G Dowlen Pl W',296,'G',NULL,'Dowlen','Pl','W',NULL,NULL,NULL,NULL,'Redfox',1,1016,NULL,'41847',NULL,1228,37.21583,-82.95449,0,NULL,NULL,NULL),(4,128,1,1,0,'859X Main Way E',859,'X',NULL,'Main','Way','E',NULL,NULL,NULL,NULL,'Tulsa',1,1035,NULL,'74158',NULL,1228,36.139826,-96.029725,0,NULL,NULL,NULL),(5,66,1,1,0,'418U Woodbridge Path W',418,'U',NULL,'Woodbridge','Path','W',NULL,NULL,NULL,NULL,'Gregory',1,1042,NULL,'78359',NULL,1228,27.920604,-97.29248,0,NULL,NULL,NULL),(6,5,1,1,0,'747S Dowlen Rd SW',747,'S',NULL,'Dowlen','Rd','SW',NULL,NULL,NULL,NULL,'Ball',1,1017,NULL,'71405',NULL,1228,31.415125,-92.394536,0,NULL,NULL,NULL),(7,170,1,1,0,'566H Pine St SE',566,'H',NULL,'Pine','St','SE',NULL,NULL,NULL,NULL,'Bedminster',1,1037,NULL,'18910',NULL,1228,40.328645,-75.10278,0,NULL,NULL,NULL),(8,112,1,1,0,'43D Second Rd E',43,'D',NULL,'Second','Rd','E',NULL,NULL,NULL,NULL,'Ogden',1,1043,NULL,'84409',NULL,1228,41.255285,-111.956721,0,NULL,NULL,NULL),(9,18,1,1,0,'154H Caulder Ln N',154,'H',NULL,'Caulder','Ln','N',NULL,NULL,NULL,NULL,'Black Hawk',1,1005,NULL,'80422',NULL,1228,39.813744,-105.50875,0,NULL,NULL,NULL),(10,60,1,1,0,'966X Jackson Rd NE',966,'X',NULL,'Jackson','Rd','NE',NULL,NULL,NULL,NULL,'Philadelphia',1,1037,NULL,'19129',NULL,1228,40.011562,-75.1839,0,NULL,NULL,NULL),(11,177,1,1,0,'911F Caulder Dr SE',911,'F',NULL,'Caulder','Dr','SE',NULL,NULL,NULL,NULL,'Tupelo',1,1023,NULL,'38803',NULL,1228,34.187638,-88.77852,0,NULL,NULL,NULL),(12,149,1,1,0,'781X Cadell Blvd SW',781,'X',NULL,'Cadell','Blvd','SW',NULL,NULL,NULL,NULL,'Rome',1,1031,NULL,'13440',NULL,1228,43.217069,-75.45531,0,NULL,NULL,NULL),(13,24,1,1,0,'562S Green Path E',562,'S',NULL,'Green','Path','E',NULL,NULL,NULL,NULL,'Haralson',1,1009,NULL,'30229',NULL,1228,33.232156,-84.56854,0,NULL,NULL,NULL),(14,30,1,1,0,'648E States Pl NE',648,'E',NULL,'States','Pl','NE',NULL,NULL,NULL,NULL,'East Baldwin',1,1018,NULL,'04024',NULL,1228,43.823849,-70.68482,0,NULL,NULL,NULL),(15,12,1,1,0,'907N College Pl SW',907,'N',NULL,'College','Pl','SW',NULL,NULL,NULL,NULL,'Saint Xavier',1,1025,NULL,'59075',NULL,1228,45.395656,-107.93409,0,NULL,NULL,NULL),(16,114,1,1,0,'169I College Path E',169,'I',NULL,'College','Path','E',NULL,NULL,NULL,NULL,'Centerville',1,1003,NULL,'72829',NULL,1228,35.110131,-93.17279,0,NULL,NULL,NULL),(17,154,1,1,0,'751Q Dowlen Ave W',751,'Q',NULL,'Dowlen','Ave','W',NULL,NULL,NULL,NULL,'Damon',1,1042,NULL,'77430',NULL,1228,29.290602,-95.70739,0,NULL,NULL,NULL),(18,99,1,1,0,'614T Northpoint Way SW',614,'T',NULL,'Northpoint','Way','SW',NULL,NULL,NULL,NULL,'San Mateo',1,1004,NULL,'94401',NULL,1228,37.570385,-122.32044,0,NULL,NULL,NULL),(19,26,1,1,0,'607P Green St NE',607,'P',NULL,'Green','St','NE',NULL,NULL,NULL,NULL,'Medina',1,1034,NULL,'44258',NULL,1228,41.127594,-81.841079,0,NULL,NULL,NULL),(20,75,1,1,0,'587P Maple Pl N',587,'P',NULL,'Maple','Pl','N',NULL,NULL,NULL,NULL,'Princeton',1,1012,NULL,'61356',NULL,1228,41.372528,-89.44315,0,NULL,NULL,NULL),(21,118,1,1,0,'297Z Martin Luther King Path NE',297,'Z',NULL,'Martin Luther King','Path','NE',NULL,NULL,NULL,NULL,'Bushnell',1,1026,NULL,'69128',NULL,1228,41.173278,-103.9024,0,NULL,NULL,NULL),(22,40,1,1,0,'696Q Caulder Blvd E',696,'Q',NULL,'Caulder','Blvd','E',NULL,NULL,NULL,NULL,'Colome',1,1040,NULL,'57528',NULL,1228,43.205207,-99.76123,0,NULL,NULL,NULL),(23,38,1,1,0,'660L Second Ave E',660,'L',NULL,'Second','Ave','E',NULL,NULL,NULL,NULL,'Bedford',1,1028,NULL,'03110',NULL,1228,42.942551,-71.51993,0,NULL,NULL,NULL),(24,50,1,1,0,'272I Martin Luther King Way E',272,'I',NULL,'Martin Luther King','Way','E',NULL,NULL,NULL,NULL,'Panama',1,1014,NULL,'51562',NULL,1228,41.725547,-95.49415,0,NULL,NULL,NULL),(25,119,1,1,0,'45P Caulder Ave E',45,'P',NULL,'Caulder','Ave','E',NULL,NULL,NULL,NULL,'Banner',1,1049,NULL,'82832',NULL,1228,44.602518,-106.76367,0,NULL,NULL,NULL),(26,164,1,1,0,'480D Maple Path N',480,'D',NULL,'Maple','Path','N',NULL,NULL,NULL,NULL,'Judith Gap',1,1025,NULL,'59453',NULL,1228,46.678858,-109.64119,0,NULL,NULL,NULL),(27,158,1,1,0,'588K Green Blvd NE',588,'K',NULL,'Green','Blvd','NE',NULL,NULL,NULL,NULL,'Clay',1,1016,NULL,'42404',NULL,1228,37.481719,-87.8394,0,NULL,NULL,NULL),(28,14,1,1,0,'121Y Cadell Blvd NW',121,'Y',NULL,'Cadell','Blvd','NW',NULL,NULL,NULL,NULL,'New Kensington',1,1037,NULL,'15069',NULL,1228,40.360223,-79.439801,0,NULL,NULL,NULL),(29,67,1,1,0,'781A Woodbridge Rd NE',781,'A',NULL,'Woodbridge','Rd','NE',NULL,NULL,NULL,NULL,'La Belle',1,1024,NULL,'63477',NULL,1228,40.114109,-91.912383,0,NULL,NULL,NULL),(30,113,1,1,0,'523Q Maple Ave S',523,'Q',NULL,'Maple','Ave','S',NULL,NULL,NULL,NULL,'Glenn Dale',1,1019,NULL,'20769',NULL,1228,38.984107,-76.81544,0,NULL,NULL,NULL),(31,185,1,1,0,'918W College Ave NW',918,'W',NULL,'College','Ave','NW',NULL,NULL,NULL,NULL,'Canterbury',1,1028,NULL,'03224',NULL,1228,43.346137,-71.54434,0,NULL,NULL,NULL),(32,102,1,1,0,'171E Northpoint Dr W',171,'E',NULL,'Northpoint','Dr','W',NULL,NULL,NULL,NULL,'Nelson',1,1045,NULL,'24580',NULL,1228,36.589704,-78.66151,0,NULL,NULL,NULL),(33,123,1,1,0,'47H El Camino Pl SW',47,'H',NULL,'El Camino','Pl','SW',NULL,NULL,NULL,NULL,'Slaughter',1,1017,NULL,'70777',NULL,1228,30.722133,-91.10915,0,NULL,NULL,NULL),(34,141,1,1,0,'510Q Maple Blvd N',510,'Q',NULL,'Maple','Blvd','N',NULL,NULL,NULL,NULL,'Ellis Grove',1,1012,NULL,'62241',NULL,1228,38.011729,-89.89007,0,NULL,NULL,NULL),(35,87,1,1,0,'424O Martin Luther King Ln SE',424,'O',NULL,'Martin Luther King','Ln','SE',NULL,NULL,NULL,NULL,'Jupiter',1,1008,NULL,'33478',NULL,1228,26.925835,-80.21526,0,NULL,NULL,NULL),(36,73,1,1,0,'441J Jackson Ln SW',441,'J',NULL,'Jackson','Ln','SW',NULL,NULL,NULL,NULL,'Troy',1,1034,NULL,'45373',NULL,1228,40.036525,-84.20629,0,NULL,NULL,NULL),(37,175,1,1,0,'776L Pine Way N',776,'L',NULL,'Pine','Way','N',NULL,NULL,NULL,NULL,'Georgetown',1,1018,NULL,'04548',NULL,1228,43.810548,-69.74325,0,NULL,NULL,NULL),(38,86,1,1,0,'549M Cadell Dr E',549,'M',NULL,'Cadell','Dr','E',NULL,NULL,NULL,NULL,'Spokane',1,1046,NULL,'99260',NULL,1228,47.653568,-117.431742,0,NULL,NULL,NULL),(39,3,1,1,0,'26E College Ave S',26,'E',NULL,'College','Ave','S',NULL,NULL,NULL,NULL,'Church Hill',1,1041,NULL,'37642',NULL,1228,36.534489,-82.71292,0,NULL,NULL,NULL),(40,190,1,1,0,'466C Bay Rd NW',466,'C',NULL,'Bay','Rd','NW',NULL,NULL,NULL,NULL,'Rockford',1,1012,NULL,'61101',NULL,1228,42.292221,-89.12574,0,NULL,NULL,NULL),(41,108,1,1,0,'476N College Ave S',476,'N',NULL,'College','Ave','S',NULL,NULL,NULL,NULL,'Shermans Dale',1,1037,NULL,'17090',NULL,1228,40.332785,-77.18464,0,NULL,NULL,NULL),(42,80,1,1,0,'700M Woodbridge Ave SW',700,'M',NULL,'Woodbridge','Ave','SW',NULL,NULL,NULL,NULL,'Cocoa',1,1008,NULL,'32923',NULL,1228,28.427535,-80.828991,0,NULL,NULL,NULL),(43,152,1,1,0,'488A Maple Path SW',488,'A',NULL,'Maple','Path','SW',NULL,NULL,NULL,NULL,'Hartington',1,1026,NULL,'68739',NULL,1228,42.624108,-97.25267,0,NULL,NULL,NULL),(44,61,1,1,0,'535Y Second Rd S',535,'Y',NULL,'Second','Rd','S',NULL,NULL,NULL,NULL,'East Galesburg',1,1012,NULL,'61430',NULL,1228,40.94399,-90.31205,0,NULL,NULL,NULL),(45,130,1,1,0,'752C Dowlen St NE',752,'C',NULL,'Dowlen','St','NE',NULL,NULL,NULL,NULL,'Rochert',1,1022,NULL,'56578',NULL,1228,46.920986,-95.66842,0,NULL,NULL,NULL),(46,106,1,1,0,'619Z States Rd N',619,'Z',NULL,'States','Rd','N',NULL,NULL,NULL,NULL,'Philadelphia',1,1037,NULL,'19140',NULL,1228,40.012212,-75.14503,0,NULL,NULL,NULL),(47,9,1,1,0,'76H Woodbridge Dr SE',76,'H',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'79929',NULL,1228,31.694842,-106.299987,0,NULL,NULL,NULL),(48,107,1,1,0,'356H Bay Way SW',356,'H',NULL,'Bay','Way','SW',NULL,NULL,NULL,NULL,'Keatchie',1,1017,NULL,'71046',NULL,1228,32.168532,-93.95402,0,NULL,NULL,NULL),(49,188,1,1,0,'412S Jackson Dr N',412,'S',NULL,'Jackson','Dr','N',NULL,NULL,NULL,NULL,'Burke',1,1045,NULL,'22009',NULL,1228,38.831813,-77.288755,0,NULL,NULL,NULL),(50,62,1,1,0,'497J Maple Pl S',497,'J',NULL,'Maple','Pl','S',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'88516',NULL,1228,31.694842,-106.299987,0,NULL,NULL,NULL),(51,83,1,1,0,'873X Lincoln Path NW',873,'X',NULL,'Lincoln','Path','NW',NULL,NULL,NULL,NULL,'Kings Mountain',1,1032,NULL,'28086',NULL,1228,35.241188,-81.3614,0,NULL,NULL,NULL),(52,17,1,1,0,'106D Dowlen Pl NW',106,'D',NULL,'Dowlen','Pl','NW',NULL,NULL,NULL,NULL,'Riverside',1,1004,NULL,'92503',NULL,1228,33.91355,-117.46052,0,NULL,NULL,NULL),(53,187,1,1,0,'268D El Camino Dr E',268,'D',NULL,'El Camino','Dr','E',NULL,NULL,NULL,NULL,'Sarasota',1,1008,NULL,'34277',NULL,1228,27.167521,-82.380967,0,NULL,NULL,NULL),(54,93,1,1,0,'412D Pine Ave NW',412,'D',NULL,'Pine','Ave','NW',NULL,NULL,NULL,NULL,'Kenwood',1,1004,NULL,'95452',NULL,1228,38.414061,-122.54668,0,NULL,NULL,NULL),(55,74,1,1,0,'423Y Dowlen Pl S',423,'Y',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Hettick',1,1012,NULL,'62649',NULL,1228,39.348487,-90.08365,0,NULL,NULL,NULL),(56,71,1,1,0,'166V Bay Way S',166,'V',NULL,'Bay','Way','S',NULL,NULL,NULL,NULL,'Martinsburg',1,1034,NULL,'43037',NULL,1228,40.27453,-82.34436,0,NULL,NULL,NULL),(57,179,1,1,0,'883J Pine Ave E',883,'J',NULL,'Pine','Ave','E',NULL,NULL,NULL,NULL,'Kahuku',1,1010,NULL,'96731',NULL,1228,21.68762,-157.95903,0,NULL,NULL,NULL),(58,199,1,1,0,'680O States Dr E',680,'O',NULL,'States','Dr','E',NULL,NULL,NULL,NULL,'Russell',1,1014,NULL,'50238',NULL,1228,40.962051,-93.18373,0,NULL,NULL,NULL),(59,91,3,1,0,'95A Martin Luther King Ln E',95,'A',NULL,'Martin Luther King','Ln','E',NULL,'Urgent',NULL,NULL,'Russell Springs',1,1016,NULL,'42642',NULL,1228,37.05401,-85.06142,0,NULL,NULL,NULL),(60,105,2,1,0,'95A Martin Luther King Ln E',95,'A',NULL,'Martin Luther King','Ln','E',NULL,'Urgent',NULL,NULL,'Russell Springs',1,1016,NULL,'42642',NULL,1228,37.05401,-85.06142,0,NULL,NULL,59),(61,97,3,1,0,'7T Bay Blvd W',7,'T',NULL,'Bay','Blvd','W',NULL,'Attn: Accounting',NULL,NULL,'New Canton',1,1012,NULL,'62356',NULL,1228,39.599949,-91.09115,0,NULL,NULL,NULL),(62,54,3,1,0,'80X Beech Rd SE',80,'X',NULL,'Beech','Rd','SE',NULL,'Community Relations',NULL,NULL,'Poquoson',1,1045,NULL,'23662',NULL,1228,37.131237,-76.38089,0,NULL,NULL,NULL),(63,136,2,1,0,'80X Beech Rd SE',80,'X',NULL,'Beech','Rd','SE',NULL,'Community Relations',NULL,NULL,'Poquoson',1,1045,NULL,'23662',NULL,1228,37.131237,-76.38089,0,NULL,NULL,62),(64,72,3,1,0,'243T Bay Rd NW',243,'T',NULL,'Bay','Rd','NW',NULL,'Community Relations',NULL,NULL,'Bradford',1,1044,NULL,'05033',NULL,1228,43.994064,-72.15534,0,NULL,NULL,NULL),(65,153,2,1,0,'243T Bay Rd NW',243,'T',NULL,'Bay','Rd','NW',NULL,'Community Relations',NULL,NULL,'Bradford',1,1044,NULL,'05033',NULL,1228,43.994064,-72.15534,0,NULL,NULL,64),(66,155,3,1,0,'523Z Green Dr S',523,'Z',NULL,'Green','Dr','S',NULL,'Mailstop 101',NULL,NULL,'Bassett',1,1026,NULL,'68714',NULL,1228,42.53961,-99.52938,0,NULL,NULL,NULL),(67,90,2,1,0,'523Z Green Dr S',523,'Z',NULL,'Green','Dr','S',NULL,'Mailstop 101',NULL,NULL,'Bassett',1,1026,NULL,'68714',NULL,1228,42.53961,-99.52938,0,NULL,NULL,66),(68,37,3,1,0,'768N Woodbridge Pl S',768,'N',NULL,'Woodbridge','Pl','S',NULL,'Mailstop 101',NULL,NULL,'Saint Vincent',1,1022,NULL,'56755',NULL,1228,48.954448,-97.13949,0,NULL,NULL,NULL),(69,110,3,1,0,'649P Dowlen Ln E',649,'P',NULL,'Dowlen','Ln','E',NULL,'Payables Dept.',NULL,NULL,'Buffalo',1,1031,NULL,'14269',NULL,1228,42.768413,-78.887094,0,NULL,NULL,NULL),(70,158,2,0,0,'649P Dowlen Ln E',649,'P',NULL,'Dowlen','Ln','E',NULL,'Payables Dept.',NULL,NULL,'Buffalo',1,1031,NULL,'14269',NULL,1228,42.768413,-78.887094,0,NULL,NULL,69),(71,195,3,1,0,'11X Main Blvd SW',11,'X',NULL,'Main','Blvd','SW',NULL,'Mailstop 101',NULL,NULL,'San Luis Obispo',1,1004,NULL,'93409',NULL,1228,35.221085,-120.636399,0,NULL,NULL,NULL),(72,146,2,1,0,'11X Main Blvd SW',11,'X',NULL,'Main','Blvd','SW',NULL,'Mailstop 101',NULL,NULL,'San Luis Obispo',1,1004,NULL,'93409',NULL,1228,35.221085,-120.636399,0,NULL,NULL,71),(73,196,3,1,0,'395I Beech Pl SW',395,'I',NULL,'Beech','Pl','SW',NULL,'Churchgate',NULL,NULL,'Palo Alto',1,1004,NULL,'94308',NULL,1228,37.381144,-122.334825,0,NULL,NULL,NULL),(74,162,3,1,0,'13E Second St N',13,'E',NULL,'Second','St','N',NULL,'Cuffe Parade',NULL,NULL,'Baptistown',1,1029,NULL,'08803',NULL,1228,40.563654,-74.949409,0,NULL,NULL,NULL),(75,159,2,1,0,'13E Second St N',13,'E',NULL,'Second','St','N',NULL,'Cuffe Parade',NULL,NULL,'Baptistown',1,1029,NULL,'08803',NULL,1228,40.563654,-74.949409,0,NULL,NULL,74),(76,19,3,1,0,'891T College Dr NW',891,'T',NULL,'College','Dr','NW',NULL,'Mailstop 101',NULL,NULL,'Addy',1,1046,NULL,'99101',NULL,1228,48.305861,-117.94318,0,NULL,NULL,NULL),(77,180,2,1,0,'891T College Dr NW',891,'T',NULL,'College','Dr','NW',NULL,'Mailstop 101',NULL,NULL,'Addy',1,1046,NULL,'99101',NULL,1228,48.305861,-117.94318,0,NULL,NULL,76),(78,65,3,1,0,'686H Cadell Ave N',686,'H',NULL,'Cadell','Ave','N',NULL,'Receiving',NULL,NULL,'Ellsworth',1,1034,NULL,'44416',NULL,1228,41.017082,-80.802854,0,NULL,NULL,NULL),(79,200,2,1,0,'686H Cadell Ave N',686,'H',NULL,'Cadell','Ave','N',NULL,'Receiving',NULL,NULL,'Ellsworth',1,1034,NULL,'44416',NULL,1228,41.017082,-80.802854,0,NULL,NULL,78),(80,142,3,1,0,'782S Pine Dr W',782,'S',NULL,'Pine','Dr','W',NULL,'Cuffe Parade',NULL,NULL,'Anahola',1,1010,NULL,'96703',NULL,1228,22.148133,-159.31765,0,NULL,NULL,NULL),(81,40,2,0,0,'782S Pine Dr W',782,'S',NULL,'Pine','Dr','W',NULL,'Cuffe Parade',NULL,NULL,'Anahola',1,1010,NULL,'96703',NULL,1228,22.148133,-159.31765,0,NULL,NULL,80),(82,145,3,1,0,'373P States Ln E',373,'P',NULL,'States','Ln','E',NULL,'Subscriptions Dept',NULL,NULL,'Ripplemead',1,1045,NULL,'24150',NULL,1228,37.351691,-80.67726,0,NULL,NULL,NULL),(83,147,2,1,0,'373P States Ln E',373,'P',NULL,'States','Ln','E',NULL,'Subscriptions Dept',NULL,NULL,'Ripplemead',1,1045,NULL,'24150',NULL,1228,37.351691,-80.67726,0,NULL,NULL,82),(84,184,3,1,0,'448P Bay Path E',448,'P',NULL,'Bay','Path','E',NULL,'Disbursements',NULL,NULL,'Cameron',1,1048,NULL,'54822',NULL,1228,45.401622,-91.72727,0,NULL,NULL,NULL),(85,173,2,1,0,'448P Bay Path E',448,'P',NULL,'Bay','Path','E',NULL,'Disbursements',NULL,NULL,'Cameron',1,1048,NULL,'54822',NULL,1228,45.401622,-91.72727,0,NULL,NULL,84),(86,156,3,1,0,'274P Main Path N',274,'P',NULL,'Main','Path','N',NULL,'Donor Relations',NULL,NULL,'Ridgeland',1,1023,NULL,'39157',NULL,1228,32.420814,-90.13134,0,NULL,NULL,NULL),(87,150,2,1,0,'274P Main Path N',274,'P',NULL,'Main','Path','N',NULL,'Donor Relations',NULL,NULL,'Ridgeland',1,1023,NULL,'39157',NULL,1228,32.420814,-90.13134,0,NULL,NULL,86),(88,143,3,1,0,'613R Martin Luther King Pl W',613,'R',NULL,'Martin Luther King','Pl','W',NULL,'Payables Dept.',NULL,NULL,'Emerado',1,1033,NULL,'58228',NULL,1228,47.882652,-97.35564,0,NULL,NULL,NULL),(89,118,2,0,0,'613R Martin Luther King Pl W',613,'R',NULL,'Martin Luther King','Pl','W',NULL,'Payables Dept.',NULL,NULL,'Emerado',1,1033,NULL,'58228',NULL,1228,47.882652,-97.35564,0,NULL,NULL,88),(90,121,3,1,0,'438V Maple Ln W',438,'V',NULL,'Maple','Ln','W',NULL,'Community Relations',NULL,NULL,'Anawalt',1,1047,NULL,'24808',NULL,1228,37.338242,-81.43081,0,NULL,NULL,NULL),(91,16,2,1,0,'438V Maple Ln W',438,'V',NULL,'Maple','Ln','W',NULL,'Community Relations',NULL,NULL,'Anawalt',1,1047,NULL,'24808',NULL,1228,37.338242,-81.43081,0,NULL,NULL,90),(92,139,3,1,0,'986T Cadell Path NE',986,'T',NULL,'Cadell','Path','NE',NULL,'Attn: Accounting',NULL,NULL,'Argillite',1,1016,NULL,'41121',NULL,1228,38.456608,-82.82615,0,NULL,NULL,NULL),(93,43,2,1,0,'986T Cadell Path NE',986,'T',NULL,'Cadell','Path','NE',NULL,'Attn: Accounting',NULL,NULL,'Argillite',1,1016,NULL,'41121',NULL,1228,38.456608,-82.82615,0,NULL,NULL,92),(94,137,3,1,0,'469F Second Dr NW',469,'F',NULL,'Second','Dr','NW',NULL,'Attn: Accounting',NULL,NULL,'Pasadena',1,1004,NULL,'91123',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),(95,183,1,1,0,'26E College Ave S',26,'E',NULL,'College','Ave','S',NULL,NULL,NULL,NULL,'Church Hill',1,1041,NULL,'37642',NULL,1228,36.534489,-82.71292,0,NULL,NULL,39),(96,198,1,1,0,'26E College Ave S',26,'E',NULL,'College','Ave','S',NULL,NULL,NULL,NULL,'Church Hill',1,1041,NULL,'37642',NULL,1228,36.534489,-82.71292,0,NULL,NULL,39),(97,105,1,0,0,'26E College Ave S',26,'E',NULL,'College','Ave','S',NULL,NULL,NULL,NULL,'Church Hill',1,1041,NULL,'37642',NULL,1228,36.534489,-82.71292,0,NULL,NULL,39),(98,157,1,1,0,'26E College Ave S',26,'E',NULL,'College','Ave','S',NULL,NULL,NULL,NULL,'Church Hill',1,1041,NULL,'37642',NULL,1228,36.534489,-82.71292,0,NULL,NULL,39),(99,64,1,1,0,'466C Bay Rd NW',466,'C',NULL,'Bay','Rd','NW',NULL,NULL,NULL,NULL,'Rockford',1,1012,NULL,'61101',NULL,1228,42.292221,-89.12574,0,NULL,NULL,40),(100,35,1,1,0,'466C Bay Rd NW',466,'C',NULL,'Bay','Rd','NW',NULL,NULL,NULL,NULL,'Rockford',1,1012,NULL,'61101',NULL,1228,42.292221,-89.12574,0,NULL,NULL,40),(101,127,1,1,0,'466C Bay Rd NW',466,'C',NULL,'Bay','Rd','NW',NULL,NULL,NULL,NULL,'Rockford',1,1012,NULL,'61101',NULL,1228,42.292221,-89.12574,0,NULL,NULL,40),(102,181,1,1,0,'466C Bay Rd NW',466,'C',NULL,'Bay','Rd','NW',NULL,NULL,NULL,NULL,'Rockford',1,1012,NULL,'61101',NULL,1228,42.292221,-89.12574,0,NULL,NULL,40),(103,70,1,1,0,'476N College Ave S',476,'N',NULL,'College','Ave','S',NULL,NULL,NULL,NULL,'Shermans Dale',1,1037,NULL,'17090',NULL,1228,40.332785,-77.18464,0,NULL,NULL,41),(104,36,1,1,0,'476N College Ave S',476,'N',NULL,'College','Ave','S',NULL,NULL,NULL,NULL,'Shermans Dale',1,1037,NULL,'17090',NULL,1228,40.332785,-77.18464,0,NULL,NULL,41),(105,52,1,1,0,'476N College Ave S',476,'N',NULL,'College','Ave','S',NULL,NULL,NULL,NULL,'Shermans Dale',1,1037,NULL,'17090',NULL,1228,40.332785,-77.18464,0,NULL,NULL,41),(106,167,1,1,0,'498A Dowlen Ln NW',498,'A',NULL,'Dowlen','Ln','NW',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10184',NULL,1228,40.780751,-73.977182,0,NULL,NULL,NULL),(107,47,1,1,0,'700M Woodbridge Ave SW',700,'M',NULL,'Woodbridge','Ave','SW',NULL,NULL,NULL,NULL,'Cocoa',1,1008,NULL,'32923',NULL,1228,28.427535,-80.828991,0,NULL,NULL,42),(108,153,1,0,0,'700M Woodbridge Ave SW',700,'M',NULL,'Woodbridge','Ave','SW',NULL,NULL,NULL,NULL,'Cocoa',1,1008,NULL,'32923',NULL,1228,28.427535,-80.828991,0,NULL,NULL,42),(109,144,1,1,0,'700M Woodbridge Ave SW',700,'M',NULL,'Woodbridge','Ave','SW',NULL,NULL,NULL,NULL,'Cocoa',1,1008,NULL,'32923',NULL,1228,28.427535,-80.828991,0,NULL,NULL,42),(110,43,1,0,0,'951B Dowlen Rd SW',951,'B',NULL,'Dowlen','Rd','SW',NULL,NULL,NULL,NULL,'Grants Pass',1,1036,NULL,'97528',NULL,1228,42.396421,-123.535027,0,NULL,NULL,NULL),(111,140,1,1,0,'488A Maple Path SW',488,'A',NULL,'Maple','Path','SW',NULL,NULL,NULL,NULL,'Hartington',1,1026,NULL,'68739',NULL,1228,42.624108,-97.25267,0,NULL,NULL,43),(112,146,1,0,0,'488A Maple Path SW',488,'A',NULL,'Maple','Path','SW',NULL,NULL,NULL,NULL,'Hartington',1,1026,NULL,'68739',NULL,1228,42.624108,-97.25267,0,NULL,NULL,43),(113,150,1,0,0,'488A Maple Path SW',488,'A',NULL,'Maple','Path','SW',NULL,NULL,NULL,NULL,'Hartington',1,1026,NULL,'68739',NULL,1228,42.624108,-97.25267,0,NULL,NULL,43),(114,28,1,1,0,'627R Jackson Ave SW',627,'R',NULL,'Jackson','Ave','SW',NULL,NULL,NULL,NULL,'Lena',1,1017,NULL,'71447',NULL,1228,31.452874,-92.79465,0,NULL,NULL,NULL),(115,13,1,1,0,'535Y Second Rd S',535,'Y',NULL,'Second','Rd','S',NULL,NULL,NULL,NULL,'East Galesburg',1,1012,NULL,'61430',NULL,1228,40.94399,-90.31205,0,NULL,NULL,44),(116,98,1,1,0,'535Y Second Rd S',535,'Y',NULL,'Second','Rd','S',NULL,NULL,NULL,NULL,'East Galesburg',1,1012,NULL,'61430',NULL,1228,40.94399,-90.31205,0,NULL,NULL,44),(117,176,1,1,0,'535Y Second Rd S',535,'Y',NULL,'Second','Rd','S',NULL,NULL,NULL,NULL,'East Galesburg',1,1012,NULL,'61430',NULL,1228,40.94399,-90.31205,0,NULL,NULL,44),(118,173,1,0,0,'177A Dowlen Ln S',177,'A',NULL,'Dowlen','Ln','S',NULL,NULL,NULL,NULL,'Pauline',1,1039,NULL,'29374',NULL,1228,34.783908,-81.85468,0,NULL,NULL,NULL),(119,147,1,0,0,'752C Dowlen St NE',752,'C',NULL,'Dowlen','St','NE',NULL,NULL,NULL,NULL,'Rochert',1,1022,NULL,'56578',NULL,1228,46.920986,-95.66842,0,NULL,NULL,45),(120,178,1,1,0,'752C Dowlen St NE',752,'C',NULL,'Dowlen','St','NE',NULL,NULL,NULL,NULL,'Rochert',1,1022,NULL,'56578',NULL,1228,46.920986,-95.66842,0,NULL,NULL,45),(121,135,1,1,0,'752C Dowlen St NE',752,'C',NULL,'Dowlen','St','NE',NULL,NULL,NULL,NULL,'Rochert',1,1022,NULL,'56578',NULL,1228,46.920986,-95.66842,0,NULL,NULL,45),(122,79,1,1,0,'752C Dowlen St NE',752,'C',NULL,'Dowlen','St','NE',NULL,NULL,NULL,NULL,'Rochert',1,1022,NULL,'56578',NULL,1228,46.920986,-95.66842,0,NULL,NULL,45),(123,90,1,0,0,'619Z States Rd N',619,'Z',NULL,'States','Rd','N',NULL,NULL,NULL,NULL,'Philadelphia',1,1037,NULL,'19140',NULL,1228,40.012212,-75.14503,0,NULL,NULL,46),(124,104,1,1,0,'619Z States Rd N',619,'Z',NULL,'States','Rd','N',NULL,NULL,NULL,NULL,'Philadelphia',1,1037,NULL,'19140',NULL,1228,40.012212,-75.14503,0,NULL,NULL,46),(125,8,1,1,0,'619Z States Rd N',619,'Z',NULL,'States','Rd','N',NULL,NULL,NULL,NULL,'Philadelphia',1,1037,NULL,'19140',NULL,1228,40.012212,-75.14503,0,NULL,NULL,46),(126,109,1,1,0,'619Z States Rd N',619,'Z',NULL,'States','Rd','N',NULL,NULL,NULL,NULL,'Philadelphia',1,1037,NULL,'19140',NULL,1228,40.012212,-75.14503,0,NULL,NULL,46),(127,182,1,1,0,'76H Woodbridge Dr SE',76,'H',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'79929',NULL,1228,31.694842,-106.299987,0,NULL,NULL,47),(128,41,1,1,0,'76H Woodbridge Dr SE',76,'H',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'79929',NULL,1228,31.694842,-106.299987,0,NULL,NULL,47),(129,56,1,1,0,'76H Woodbridge Dr SE',76,'H',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'79929',NULL,1228,31.694842,-106.299987,0,NULL,NULL,47),(130,168,1,1,0,'681E Van Ness Path W',681,'E',NULL,'Van Ness','Path','W',NULL,NULL,NULL,NULL,'Scottsdale',1,1002,NULL,'85266',NULL,1228,33.276539,-112.18717,0,NULL,NULL,NULL),(131,201,1,1,0,'356H Bay Way SW',356,'H',NULL,'Bay','Way','SW',NULL,NULL,NULL,NULL,'Keatchie',1,1017,NULL,'71046',NULL,1228,32.168532,-93.95402,0,NULL,NULL,48),(132,138,1,1,0,'356H Bay Way SW',356,'H',NULL,'Bay','Way','SW',NULL,NULL,NULL,NULL,'Keatchie',1,1017,NULL,'71046',NULL,1228,32.168532,-93.95402,0,NULL,NULL,48),(133,197,1,1,0,'356H Bay Way SW',356,'H',NULL,'Bay','Way','SW',NULL,NULL,NULL,NULL,'Keatchie',1,1017,NULL,'71046',NULL,1228,32.168532,-93.95402,0,NULL,NULL,48),(134,88,1,1,0,'356H Bay Way SW',356,'H',NULL,'Bay','Way','SW',NULL,NULL,NULL,NULL,'Keatchie',1,1017,NULL,'71046',NULL,1228,32.168532,-93.95402,0,NULL,NULL,48),(135,126,1,1,0,'412S Jackson Dr N',412,'S',NULL,'Jackson','Dr','N',NULL,NULL,NULL,NULL,'Burke',1,1045,NULL,'22009',NULL,1228,38.831813,-77.288755,0,NULL,NULL,49),(136,55,1,1,0,'412S Jackson Dr N',412,'S',NULL,'Jackson','Dr','N',NULL,NULL,NULL,NULL,'Burke',1,1045,NULL,'22009',NULL,1228,38.831813,-77.288755,0,NULL,NULL,49),(137,161,1,1,0,'412S Jackson Dr N',412,'S',NULL,'Jackson','Dr','N',NULL,NULL,NULL,NULL,'Burke',1,1045,NULL,'22009',NULL,1228,38.831813,-77.288755,0,NULL,NULL,49),(138,132,1,1,0,'412S Jackson Dr N',412,'S',NULL,'Jackson','Dr','N',NULL,NULL,NULL,NULL,'Burke',1,1045,NULL,'22009',NULL,1228,38.831813,-77.288755,0,NULL,NULL,49),(139,2,1,1,0,'497J Maple Pl S',497,'J',NULL,'Maple','Pl','S',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'88516',NULL,1228,31.694842,-106.299987,0,NULL,NULL,50),(140,29,1,1,0,'497J Maple Pl S',497,'J',NULL,'Maple','Pl','S',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'88516',NULL,1228,31.694842,-106.299987,0,NULL,NULL,50),(141,34,1,1,0,'497J Maple Pl S',497,'J',NULL,'Maple','Pl','S',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'88516',NULL,1228,31.694842,-106.299987,0,NULL,NULL,50),(142,84,1,1,0,'497J Maple Pl S',497,'J',NULL,'Maple','Pl','S',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'88516',NULL,1228,31.694842,-106.299987,0,NULL,NULL,50),(143,78,1,1,0,'873X Lincoln Path NW',873,'X',NULL,'Lincoln','Path','NW',NULL,NULL,NULL,NULL,'Kings Mountain',1,1032,NULL,'28086',NULL,1228,35.241188,-81.3614,0,NULL,NULL,51),(144,163,1,1,0,'873X Lincoln Path NW',873,'X',NULL,'Lincoln','Path','NW',NULL,NULL,NULL,NULL,'Kings Mountain',1,1032,NULL,'28086',NULL,1228,35.241188,-81.3614,0,NULL,NULL,51),(145,76,1,1,0,'873X Lincoln Path NW',873,'X',NULL,'Lincoln','Path','NW',NULL,NULL,NULL,NULL,'Kings Mountain',1,1032,NULL,'28086',NULL,1228,35.241188,-81.3614,0,NULL,NULL,51),(146,44,1,1,0,'34T States Ln S',34,'T',NULL,'States','Ln','S',NULL,NULL,NULL,NULL,'Topeka',1,1015,NULL,'66637',NULL,1228,39.042939,-95.769657,0,NULL,NULL,NULL),(147,117,1,1,0,'106D Dowlen Pl NW',106,'D',NULL,'Dowlen','Pl','NW',NULL,NULL,NULL,NULL,'Riverside',1,1004,NULL,'92503',NULL,1228,33.91355,-117.46052,0,NULL,NULL,52),(148,166,1,1,0,'106D Dowlen Pl NW',106,'D',NULL,'Dowlen','Pl','NW',NULL,NULL,NULL,NULL,'Riverside',1,1004,NULL,'92503',NULL,1228,33.91355,-117.46052,0,NULL,NULL,52),(149,200,1,0,0,'106D Dowlen Pl NW',106,'D',NULL,'Dowlen','Pl','NW',NULL,NULL,NULL,NULL,'Riverside',1,1004,NULL,'92503',NULL,1228,33.91355,-117.46052,0,NULL,NULL,52),(150,39,1,1,0,'106D Dowlen Pl NW',106,'D',NULL,'Dowlen','Pl','NW',NULL,NULL,NULL,NULL,'Riverside',1,1004,NULL,'92503',NULL,1228,33.91355,-117.46052,0,NULL,NULL,52),(151,115,1,1,0,'268D El Camino Dr E',268,'D',NULL,'El Camino','Dr','E',NULL,NULL,NULL,NULL,'Sarasota',1,1008,NULL,'34277',NULL,1228,27.167521,-82.380967,0,NULL,NULL,53),(152,53,1,1,0,'268D El Camino Dr E',268,'D',NULL,'El Camino','Dr','E',NULL,NULL,NULL,NULL,'Sarasota',1,1008,NULL,'34277',NULL,1228,27.167521,-82.380967,0,NULL,NULL,53),(153,100,1,1,0,'268D El Camino Dr E',268,'D',NULL,'El Camino','Dr','E',NULL,NULL,NULL,NULL,'Sarasota',1,1008,NULL,'34277',NULL,1228,27.167521,-82.380967,0,NULL,NULL,53),(154,159,1,0,0,'268D El Camino Dr E',268,'D',NULL,'El Camino','Dr','E',NULL,NULL,NULL,NULL,'Sarasota',1,1008,NULL,'34277',NULL,1228,27.167521,-82.380967,0,NULL,NULL,53),(155,160,1,1,0,'412D Pine Ave NW',412,'D',NULL,'Pine','Ave','NW',NULL,NULL,NULL,NULL,'Kenwood',1,1004,NULL,'95452',NULL,1228,38.414061,-122.54668,0,NULL,NULL,54),(156,120,1,1,0,'412D Pine Ave NW',412,'D',NULL,'Pine','Ave','NW',NULL,NULL,NULL,NULL,'Kenwood',1,1004,NULL,'95452',NULL,1228,38.414061,-122.54668,0,NULL,NULL,54),(157,186,1,1,0,'412D Pine Ave NW',412,'D',NULL,'Pine','Ave','NW',NULL,NULL,NULL,NULL,'Kenwood',1,1004,NULL,'95452',NULL,1228,38.414061,-122.54668,0,NULL,NULL,54),(158,189,1,1,0,'142B Lincoln Pl NE',142,'B',NULL,'Lincoln','Pl','NE',NULL,NULL,NULL,NULL,'Carol Stream',1,1012,NULL,'60132',NULL,1228,41.839679,-88.088716,0,NULL,NULL,NULL),(159,131,1,1,0,'423Y Dowlen Pl S',423,'Y',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Hettick',1,1012,NULL,'62649',NULL,1228,39.348487,-90.08365,0,NULL,NULL,55),(160,46,1,1,0,'423Y Dowlen Pl S',423,'Y',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Hettick',1,1012,NULL,'62649',NULL,1228,39.348487,-90.08365,0,NULL,NULL,55),(161,21,1,1,0,'423Y Dowlen Pl S',423,'Y',NULL,'Dowlen','Pl','S',NULL,NULL,NULL,NULL,'Hettick',1,1012,NULL,'62649',NULL,1228,39.348487,-90.08365,0,NULL,NULL,55),(162,49,1,1,0,'347B Bay Ave SW',347,'B',NULL,'Bay','Ave','SW',NULL,NULL,NULL,NULL,'Albuquerque',1,1030,NULL,'87176',NULL,1228,35.044339,-106.672872,0,NULL,NULL,NULL),(163,171,1,1,0,'166V Bay Way S',166,'V',NULL,'Bay','Way','S',NULL,NULL,NULL,NULL,'Martinsburg',1,1034,NULL,'43037',NULL,1228,40.27453,-82.34436,0,NULL,NULL,56),(164,25,1,1,0,'166V Bay Way S',166,'V',NULL,'Bay','Way','S',NULL,NULL,NULL,NULL,'Martinsburg',1,1034,NULL,'43037',NULL,1228,40.27453,-82.34436,0,NULL,NULL,56),(165,111,1,1,0,'166V Bay Way S',166,'V',NULL,'Bay','Way','S',NULL,NULL,NULL,NULL,'Martinsburg',1,1034,NULL,'43037',NULL,1228,40.27453,-82.34436,0,NULL,NULL,56),(166,125,1,1,0,'166V Bay Way S',166,'V',NULL,'Bay','Way','S',NULL,NULL,NULL,NULL,'Martinsburg',1,1034,NULL,'43037',NULL,1228,40.27453,-82.34436,0,NULL,NULL,56),(167,63,1,1,0,'883J Pine Ave E',883,'J',NULL,'Pine','Ave','E',NULL,NULL,NULL,NULL,'Kahuku',1,1010,NULL,'96731',NULL,1228,21.68762,-157.95903,0,NULL,NULL,57),(168,20,1,1,0,'883J Pine Ave E',883,'J',NULL,'Pine','Ave','E',NULL,NULL,NULL,NULL,'Kahuku',1,1010,NULL,'96731',NULL,1228,21.68762,-157.95903,0,NULL,NULL,57),(169,11,1,1,0,'883J Pine Ave E',883,'J',NULL,'Pine','Ave','E',NULL,NULL,NULL,NULL,'Kahuku',1,1010,NULL,'96731',NULL,1228,21.68762,-157.95903,0,NULL,NULL,57),(170,6,1,1,0,'160N Green Path N',160,'N',NULL,'Green','Path','N',NULL,NULL,NULL,NULL,'Laquey',1,1024,NULL,'65534',NULL,1228,37.689335,-92.28363,0,NULL,NULL,NULL),(171,101,1,1,0,'680O States Dr E',680,'O',NULL,'States','Dr','E',NULL,NULL,NULL,NULL,'Russell',1,1014,NULL,'50238',NULL,1228,40.962051,-93.18373,0,NULL,NULL,58),(172,180,1,0,0,'680O States Dr E',680,'O',NULL,'States','Dr','E',NULL,NULL,NULL,NULL,'Russell',1,1014,NULL,'50238',NULL,1228,40.962051,-93.18373,0,NULL,NULL,58),(173,32,1,1,0,'680O States Dr E',680,'O',NULL,'States','Dr','E',NULL,NULL,NULL,NULL,'Russell',1,1014,NULL,'50238',NULL,1228,40.962051,-93.18373,0,NULL,NULL,58),(174,151,1,1,0,'680O States Dr E',680,'O',NULL,'States','Dr','E',NULL,NULL,NULL,NULL,'Russell',1,1014,NULL,'50238',NULL,1228,40.962051,-93.18373,0,NULL,NULL,58),(175,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL),(176,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL),(177,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL);
+INSERT INTO `civicrm_address` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `street_address`, `street_number`, `street_number_suffix`, `street_number_predirectional`, `street_name`, `street_type`, `street_number_postdirectional`, `street_unit`, `supplemental_address_1`, `supplemental_address_2`, `supplemental_address_3`, `city`, `county_id`, `state_province_id`, `postal_code_suffix`, `postal_code`, `usps_adc`, `country_id`, `geo_code_1`, `geo_code_2`, `manual_geo_code`, `timezone`, `name`, `master_id`) VALUES (1,187,1,1,0,'621V Cadell Path NE',621,'V',NULL,'Cadell','Path','NE',NULL,NULL,NULL,NULL,'East Quogue',1,1031,NULL,'11942',NULL,1228,40.84867,-72.57794,0,NULL,NULL,NULL),(2,155,1,1,0,'825I Caulder Dr SW',825,'I',NULL,'Caulder','Dr','SW',NULL,NULL,NULL,NULL,'Gig Harbor',1,1046,NULL,'98329',NULL,1228,47.378121,-122.7222,0,NULL,NULL,NULL),(3,62,1,1,0,'828G Northpoint Ave NW',828,'G',NULL,'Northpoint','Ave','NW',NULL,NULL,NULL,NULL,'Greenville',1,1039,NULL,'29605',NULL,1228,34.798035,-82.39289,0,NULL,NULL,NULL),(4,87,1,1,0,'794P Cadell St E',794,'P',NULL,'Cadell','St','E',NULL,NULL,NULL,NULL,'Tucson',1,1002,NULL,'85746',NULL,1228,32.126223,-111.04599,0,NULL,NULL,NULL),(5,129,1,1,0,'168Y College Ave NW',168,'Y',NULL,'College','Ave','NW',NULL,NULL,NULL,NULL,'Dagus Mines',1,1037,NULL,'15831',NULL,1228,41.304782,-78.621286,0,NULL,NULL,NULL),(6,112,1,1,0,'469Q Van Ness Rd NE',469,'Q',NULL,'Van Ness','Rd','NE',NULL,NULL,NULL,NULL,'Mendocino',1,1004,NULL,'95460',NULL,1228,39.311858,-123.79166,0,NULL,NULL,NULL),(7,67,1,1,0,'580Q Maple St E',580,'Q',NULL,'Maple','St','E',NULL,NULL,NULL,NULL,'Robesonia',1,1037,NULL,'19551',NULL,1228,40.357034,-76.13741,0,NULL,NULL,NULL),(8,198,1,1,0,'848X Bay Way NW',848,'X',NULL,'Bay','Way','NW',NULL,NULL,NULL,NULL,'West Harrison',1,1013,NULL,'47060',NULL,1228,39.288178,-84.87774,0,NULL,NULL,NULL),(9,181,1,1,0,'514X Woodbridge Dr SE',514,'X',NULL,'Woodbridge','Dr','SE',NULL,NULL,NULL,NULL,'Millersburg',1,1034,NULL,'44654',NULL,1228,40.542339,-81.87856,0,NULL,NULL,NULL),(10,76,1,1,0,'77P Green Ln N',77,'P',NULL,'Green','Ln','N',NULL,NULL,NULL,NULL,'Trent',1,1040,NULL,'57065',NULL,1228,43.917178,-96.65524,0,NULL,NULL,NULL),(11,153,1,1,0,'765M Jackson Dr NW',765,'M',NULL,'Jackson','Dr','NW',NULL,NULL,NULL,NULL,'Saltillo',1,1023,NULL,'38866',NULL,1228,34.360547,-88.68079,0,NULL,NULL,NULL),(12,79,1,1,0,'139Q Green Ln NW',139,'Q',NULL,'Green','Ln','NW',NULL,NULL,NULL,NULL,'Bakersfield',1,1044,NULL,'05441',NULL,1228,44.772886,-72.78854,0,NULL,NULL,NULL),(13,64,1,1,0,'303G Cadell Way NE',303,'G',NULL,'Cadell','Way','NE',NULL,NULL,NULL,NULL,'Arlington',1,1045,NULL,'22214',NULL,1228,38.880811,-77.11295,0,NULL,NULL,NULL),(14,120,1,1,0,'718R Caulder Path S',718,'R',NULL,'Caulder','Path','S',NULL,NULL,NULL,NULL,'Readfield',1,1048,NULL,'54969',NULL,1228,44.269991,-88.775457,0,NULL,NULL,NULL),(15,6,1,1,0,'208U Jackson Pl E',208,'U',NULL,'Jackson','Pl','E',NULL,NULL,NULL,NULL,'Orlando',1,1008,NULL,'32806',NULL,1228,28.51483,-81.36054,0,NULL,NULL,NULL),(16,201,1,1,0,'49F Martin Luther King Dr NW',49,'F',NULL,'Martin Luther King','Dr','NW',NULL,NULL,NULL,NULL,'Flint',1,1021,NULL,'48550',NULL,1228,43.034927,-83.688706,0,NULL,NULL,NULL),(17,171,1,1,0,'602P Van Ness Rd W',602,'P',NULL,'Van Ness','Rd','W',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10114',NULL,1228,40.780751,-73.977182,0,NULL,NULL,NULL),(18,70,1,1,0,'472J Woodbridge Dr E',472,'J',NULL,'Woodbridge','Dr','E',NULL,NULL,NULL,NULL,'Pointe Aux Pins',1,1021,NULL,'49775',NULL,1228,45.758378,-84.46507,0,NULL,NULL,NULL),(19,147,1,1,0,'363B Main Ln S',363,'B',NULL,'Main','Ln','S',NULL,NULL,NULL,NULL,'Chestnut Hill',1,1020,NULL,'02467',NULL,1228,42.321997,-71.17314,0,NULL,NULL,NULL),(20,73,1,1,0,'295P Woodbridge Path NW',295,'P',NULL,'Woodbridge','Path','NW',NULL,NULL,NULL,NULL,'Houtzdale',1,1037,NULL,'16698',NULL,1228,40.989115,-78.422403,0,NULL,NULL,NULL),(21,34,1,1,0,'818F Second Way S',818,'F',NULL,'Second','Way','S',NULL,NULL,NULL,NULL,'Glencoe',1,1035,NULL,'74032',NULL,1228,36.214419,-96.91672,0,NULL,NULL,NULL),(22,16,1,1,0,'89A Dowlen Ave S',89,'A',NULL,'Dowlen','Ave','S',NULL,NULL,NULL,NULL,'Hadensville',1,1045,NULL,'23067',NULL,1228,37.825208,-77.989878,0,NULL,NULL,NULL),(23,86,1,1,0,'168D Pine Ave N',168,'D',NULL,'Pine','Ave','N',NULL,NULL,NULL,NULL,'West Baden Springs',1,1013,NULL,'47469',NULL,1228,38.584248,-86.61296,0,NULL,NULL,NULL),(24,89,1,1,0,'713G Van Ness Rd E',713,'G',NULL,'Van Ness','Rd','E',NULL,NULL,NULL,NULL,'Delbarton',1,1047,NULL,'25670',NULL,1228,37.705946,-82.14416,0,NULL,NULL,NULL),(25,92,1,1,0,'482N Second Way NW',482,'N',NULL,'Second','Way','NW',NULL,NULL,NULL,NULL,'Flint Hill',1,1045,NULL,'22627',NULL,1228,38.765004,-78.0948,0,NULL,NULL,NULL),(26,36,1,1,0,'236E Dowlen Ln SE',236,'E',NULL,'Dowlen','Ln','SE',NULL,NULL,NULL,NULL,'West Paris',1,1018,NULL,'04289',NULL,1228,44.325285,-70.52451,0,NULL,NULL,NULL),(27,2,1,1,0,'406I Main Blvd SE',406,'I',NULL,'Main','Blvd','SE',NULL,NULL,NULL,NULL,'Saint Cloud',1,1048,NULL,'53079',NULL,1228,43.808108,-88.18164,0,NULL,NULL,NULL),(28,55,1,1,0,'818A Dowlen Path N',818,'A',NULL,'Dowlen','Path','N',NULL,NULL,NULL,NULL,'Hopedale',1,1012,NULL,'61747',NULL,1228,40.422027,-89.42614,0,NULL,NULL,NULL),(29,11,1,1,0,'747F Bay St E',747,'F',NULL,'Bay','St','E',NULL,NULL,NULL,NULL,'Universal',1,1013,NULL,'47884',NULL,1228,39.622536,-87.45451,0,NULL,NULL,NULL),(30,121,1,1,0,'370H Martin Luther King Rd S',370,'H',NULL,'Martin Luther King','Rd','S',NULL,NULL,NULL,NULL,'Minneapolis',1,1022,NULL,'55449',NULL,1228,45.168287,-93.20001,0,NULL,NULL,NULL),(31,102,1,1,0,'139H Beech Ln NW',139,'H',NULL,'Beech','Ln','NW',NULL,NULL,NULL,NULL,'Astor',1,1008,NULL,'32102',NULL,1228,29.174417,-81.56319,0,NULL,NULL,NULL),(32,135,1,1,0,'877Q Maple Ln SE',877,'Q',NULL,'Maple','Ln','SE',NULL,NULL,NULL,NULL,'Van',1,1047,NULL,'25206',NULL,1228,37.972887,-81.71468,0,NULL,NULL,NULL),(33,9,1,1,0,'605S Second St NW',605,'S',NULL,'Second','St','NW',NULL,NULL,NULL,NULL,'Jacksboro',1,1041,NULL,'37757',NULL,1228,36.326509,-84.17277,0,NULL,NULL,NULL),(34,77,1,1,0,'223C Main Dr S',223,'C',NULL,'Main','Dr','S',NULL,NULL,NULL,NULL,'Alex',1,1035,NULL,'73002',NULL,1228,34.936221,-97.74453,0,NULL,NULL,NULL),(35,97,1,1,0,'881Q Jackson Path N',881,'Q',NULL,'Jackson','Path','N',NULL,NULL,NULL,NULL,'Rogersville',1,1000,NULL,'35652',NULL,1228,34.843309,-87.29937,0,NULL,NULL,NULL),(36,39,1,1,0,'230X Beech Dr NW',230,'X',NULL,'Beech','Dr','NW',NULL,NULL,NULL,NULL,'Holstein',1,1026,NULL,'68950',NULL,1228,40.465821,-98.65405,0,NULL,NULL,NULL),(37,111,1,1,0,'448N Lincoln Rd SW',448,'N',NULL,'Lincoln','Rd','SW',NULL,NULL,NULL,NULL,'Robbinston',1,1018,NULL,'04671',NULL,1228,45.076626,-67.14057,0,NULL,NULL,NULL),(38,118,1,1,0,'495X Maple Rd E',495,'X',NULL,'Maple','Rd','E',NULL,NULL,NULL,NULL,'Pahoa',1,1010,NULL,'96778',NULL,1228,19.494625,-154.9266,0,NULL,NULL,NULL),(39,148,1,1,0,'1U Dowlen Pl SE',1,'U',NULL,'Dowlen','Pl','SE',NULL,NULL,NULL,NULL,'Ada',1,1021,NULL,'49357',NULL,1228,43.031413,-85.550267,0,NULL,NULL,NULL),(40,81,1,1,0,'436R El Camino Rd SW',436,'R',NULL,'El Camino','Rd','SW',NULL,NULL,NULL,NULL,'Ecleto',1,1042,NULL,'78111',NULL,1228,28.944864,-97.882815,0,NULL,NULL,NULL),(41,119,1,1,0,'165Y States Way W',165,'Y',NULL,'States','Way','W',NULL,NULL,NULL,NULL,'Oneida',1,1037,NULL,'18242',NULL,1228,40.90757,-76.12636,0,NULL,NULL,NULL),(42,162,1,1,0,'634Q Pine Rd NW',634,'Q',NULL,'Pine','Rd','NW',NULL,NULL,NULL,NULL,'Linn Grove',1,1014,NULL,'51033',NULL,1228,42.907563,-95.25334,0,NULL,NULL,NULL),(43,139,1,1,0,'665I Beech Ln NE',665,'I',NULL,'Beech','Ln','NE',NULL,NULL,NULL,NULL,'Clemson',1,1039,NULL,'29632',NULL,1228,34.847372,-82.710126,0,NULL,NULL,NULL),(44,49,1,1,0,'944A Jackson Ln NW',944,'A',NULL,'Jackson','Ln','NW',NULL,NULL,NULL,NULL,'Des Moines',1,1014,NULL,'50332',NULL,1228,41.672687,-93.572173,0,NULL,NULL,NULL),(45,80,1,1,0,'147P Second Way W',147,'P',NULL,'Second','Way','W',NULL,NULL,NULL,NULL,'Linville Falls',1,1032,NULL,'28647',NULL,1228,35.779182,-81.675545,0,NULL,NULL,NULL),(46,122,1,1,0,'791V Pine Way E',791,'V',NULL,'Pine','Way','E',NULL,NULL,NULL,NULL,'Williamson',1,1037,NULL,'17270',NULL,1228,39.851731,-77.7993,0,NULL,NULL,NULL),(47,157,1,1,0,'860Y Second Ave SE',860,'Y',NULL,'Second','Ave','SE',NULL,NULL,NULL,NULL,'Alexander',1,1014,NULL,'50420',NULL,1228,42.811536,-93.46844,0,NULL,NULL,NULL),(48,107,1,1,0,'782Q Northpoint Blvd SE',782,'Q',NULL,'Northpoint','Blvd','SE',NULL,NULL,NULL,NULL,'Hansford',1,1047,NULL,'25103',NULL,1228,38.202669,-81.39427,0,NULL,NULL,NULL),(49,27,1,1,0,'499Q Woodbridge Way NW',499,'Q',NULL,'Woodbridge','Way','NW',NULL,NULL,NULL,NULL,'Falling Waters',1,1047,NULL,'25419',NULL,1228,39.58132,-77.8804,0,NULL,NULL,NULL),(50,14,1,1,0,'208G Maple Way NE',208,'G',NULL,'Maple','Way','NE',NULL,NULL,NULL,NULL,'Somerset',1,1034,NULL,'43783',NULL,1228,39.801679,-82.29166,0,NULL,NULL,NULL),(51,74,1,1,0,'262Q Martin Luther King Way NE',262,'Q',NULL,'Martin Luther King','Way','NE',NULL,NULL,NULL,NULL,'Lauderdale',1,1023,NULL,'39335',NULL,1228,32.517145,-88.51801,0,NULL,NULL,NULL),(52,154,1,1,0,'398H Main Ave SW',398,'H',NULL,'Main','Ave','SW',NULL,NULL,NULL,NULL,'De Witt',1,1003,NULL,'72042',NULL,1228,34.283347,-91.32515,0,NULL,NULL,NULL),(53,196,1,1,0,'48Q Woodbridge Path E',48,'Q',NULL,'Woodbridge','Path','E',NULL,NULL,NULL,NULL,'Plainfield',1,1029,NULL,'07063',NULL,1228,40.604252,-74.44612,0,NULL,NULL,NULL),(54,52,1,1,0,'102L Caulder Ave W',102,'L',NULL,'Caulder','Ave','W',NULL,NULL,NULL,NULL,'Fresno',1,1004,NULL,'93727',NULL,1228,36.753177,-119.69703,0,NULL,NULL,NULL),(55,21,1,1,0,'488J Northpoint Way SE',488,'J',NULL,'Northpoint','Way','SE',NULL,NULL,NULL,NULL,'Repton',1,1000,NULL,'36475',NULL,1228,31.410205,-87.22474,0,NULL,NULL,NULL),(56,31,1,1,0,'680Q Beech St NE',680,'Q',NULL,'Beech','St','NE',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98164',NULL,1228,47.606139,-122.33186,0,NULL,NULL,NULL),(57,143,1,1,0,'938Y Caulder Ln N',938,'Y',NULL,'Caulder','Ln','N',NULL,NULL,NULL,NULL,'Lake Butter',1,1008,NULL,'34876',NULL,1228,28.505419,-81.571248,0,NULL,NULL,NULL),(58,110,1,1,0,'255Z College Rd E',255,'Z',NULL,'College','Rd','E',NULL,NULL,NULL,NULL,'Mountainburg',1,1003,NULL,'72946',NULL,1228,35.649503,-94.15357,0,NULL,NULL,NULL),(59,71,1,1,0,'173V Beech Way SW',173,'V',NULL,'Beech','Way','SW',NULL,NULL,NULL,NULL,'Stitzer',1,1048,NULL,'53825',NULL,1228,42.928048,-90.56703,0,NULL,NULL,NULL),(60,33,1,1,0,'488Y Caulder Blvd S',488,'Y',NULL,'Caulder','Blvd','S',NULL,NULL,NULL,NULL,'Tulsa',1,1035,NULL,'74115',NULL,1228,36.180144,-95.91129,0,NULL,NULL,NULL),(61,50,1,1,0,'873Q Cadell Ln W',873,'Q',NULL,'Cadell','Ln','W',NULL,NULL,NULL,NULL,'Raleigh',1,1032,NULL,'27640',NULL,1228,35.797692,-78.625265,0,NULL,NULL,NULL),(62,164,1,1,0,'771C Jackson Blvd S',771,'C',NULL,'Jackson','Blvd','S',NULL,NULL,NULL,NULL,'Newport',1,1013,NULL,'47966',NULL,1228,39.885739,-87.4078,0,NULL,NULL,NULL),(63,32,1,1,0,'387A States Path E',387,'A',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Braggs',1,1035,NULL,'74423',NULL,1228,35.668132,-95.18582,0,NULL,NULL,NULL),(64,200,1,1,0,'960U El Camino Way E',960,'U',NULL,'El Camino','Way','E',NULL,NULL,NULL,NULL,'Oxnard',1,1004,NULL,'93033',NULL,1228,34.166933,-119.16113,0,NULL,NULL,NULL),(65,15,1,1,0,'218W El Camino Blvd N',218,'W',NULL,'El Camino','Blvd','N',NULL,NULL,NULL,NULL,'Belpre',1,1015,NULL,'67519',NULL,1228,37.947324,-99.10017,0,NULL,NULL,NULL),(66,100,1,1,0,'404F Green St NE',404,'F',NULL,'Green','St','NE',NULL,NULL,NULL,NULL,'Realitos',1,1042,NULL,'78376',NULL,1228,27.363706,-98.56442,0,NULL,NULL,NULL),(67,137,3,1,0,'349H El Camino Path N',349,'H',NULL,'El Camino','Path','N',NULL,'Editorial Dept',NULL,NULL,'Riparius',1,1031,NULL,'12862',NULL,1228,43.675377,-73.932509,0,NULL,NULL,NULL),(68,187,2,0,0,'349H El Camino Path N',349,'H',NULL,'El Camino','Path','N',NULL,'Editorial Dept',NULL,NULL,'Riparius',1,1031,NULL,'12862',NULL,1228,43.675377,-73.932509,0,NULL,NULL,67),(69,93,3,1,0,'716N El Camino Pl NW',716,'N',NULL,'El Camino','Pl','NW',NULL,'Cuffe Parade',NULL,NULL,'Russellville',1,1039,NULL,'29476',NULL,1228,33.164201,-79.904182,0,NULL,NULL,NULL),(70,103,2,1,0,'716N El Camino Pl NW',716,'N',NULL,'El Camino','Pl','NW',NULL,'Cuffe Parade',NULL,NULL,'Russellville',1,1039,NULL,'29476',NULL,1228,33.164201,-79.904182,0,NULL,NULL,69),(71,168,3,1,0,'195X Maple Dr E',195,'X',NULL,'Maple','Dr','E',NULL,'Payables Dept.',NULL,NULL,'Columbia',1,1012,NULL,'62236',NULL,1228,38.442906,-90.20775,0,NULL,NULL,NULL),(72,38,2,1,0,'195X Maple Dr E',195,'X',NULL,'Maple','Dr','E',NULL,'Payables Dept.',NULL,NULL,'Columbia',1,1012,NULL,'62236',NULL,1228,38.442906,-90.20775,0,NULL,NULL,71),(73,141,3,1,0,'583H Caulder Ln SW',583,'H',NULL,'Caulder','Ln','SW',NULL,'Attn: Development',NULL,NULL,'Oklahoma City',1,1035,NULL,'73154',NULL,1228,35.523758,-97.525467,0,NULL,NULL,NULL),(74,145,2,1,0,'583H Caulder Ln SW',583,'H',NULL,'Caulder','Ln','SW',NULL,'Attn: Development',NULL,NULL,'Oklahoma City',1,1035,NULL,'73154',NULL,1228,35.523758,-97.525467,0,NULL,NULL,73),(75,56,3,1,0,'567Q Dowlen St N',567,'Q',NULL,'Dowlen','St','N',NULL,'Urgent',NULL,NULL,'Canton',1,1024,NULL,'63435',NULL,1228,40.178309,-91.57389,0,NULL,NULL,NULL),(76,182,3,1,0,'809L Martin Luther King Way NW',809,'L',NULL,'Martin Luther King','Way','NW',NULL,'Editorial Dept',NULL,NULL,'Cheshire',1,1006,NULL,'06408',NULL,1228,41.365709,-72.927507,0,NULL,NULL,NULL),(77,39,2,0,0,'809L Martin Luther King Way NW',809,'L',NULL,'Martin Luther King','Way','NW',NULL,'Editorial Dept',NULL,NULL,'Cheshire',1,1006,NULL,'06408',NULL,1228,41.365709,-72.927507,0,NULL,NULL,76),(78,191,3,1,0,'114P Woodbridge Blvd N',114,'P',NULL,'Woodbridge','Blvd','N',NULL,'Community Relations',NULL,NULL,'White Marsh',1,1019,NULL,'21162',NULL,1228,39.387307,-76.41236,0,NULL,NULL,NULL),(79,48,2,1,0,'114P Woodbridge Blvd N',114,'P',NULL,'Woodbridge','Blvd','N',NULL,'Community Relations',NULL,NULL,'White Marsh',1,1019,NULL,'21162',NULL,1228,39.387307,-76.41236,0,NULL,NULL,78),(80,186,3,1,0,'154F Lincoln Dr W',154,'F',NULL,'Lincoln','Dr','W',NULL,'Community Relations',NULL,NULL,'Naples',1,1042,NULL,'75568',NULL,1228,33.206258,-94.63009,0,NULL,NULL,NULL),(81,61,3,1,0,'328I Second Ln W',328,'I',NULL,'Second','Ln','W',NULL,'Receiving',NULL,NULL,'Atlanta',1,1009,NULL,'39901',NULL,1228,33.891251,-84.07456,0,NULL,NULL,NULL),(82,138,3,1,0,'551E Second Dr NE',551,'E',NULL,'Second','Dr','NE',NULL,'Cuffe Parade',NULL,NULL,'Braymer',1,1024,NULL,'64624',NULL,1228,39.581772,-93.79569,0,NULL,NULL,NULL),(83,134,2,1,0,'551E Second Dr NE',551,'E',NULL,'Second','Dr','NE',NULL,'Cuffe Parade',NULL,NULL,'Braymer',1,1024,NULL,'64624',NULL,1228,39.581772,-93.79569,0,NULL,NULL,82),(84,83,3,1,0,'973H Pine St N',973,'H',NULL,'Pine','St','N',NULL,'Cuffe Parade',NULL,NULL,'Lumber City',1,1009,NULL,'31549',NULL,1228,31.928525,-82.69332,0,NULL,NULL,NULL),(85,172,3,1,0,'949W Northpoint Dr NE',949,'W',NULL,'Northpoint','Dr','NE',NULL,'Attn: Accounting',NULL,NULL,'San Francisco',1,1004,NULL,'94106',NULL,1228,37.784827,-122.727802,0,NULL,NULL,NULL),(86,42,3,1,0,'619K Main Way NE',619,'K',NULL,'Main','Way','NE',NULL,'Receiving',NULL,NULL,'Kernersville',1,1032,NULL,'27285',NULL,1228,36.027482,-80.20728,0,NULL,NULL,NULL),(87,125,2,1,0,'619K Main Way NE',619,'K',NULL,'Main','Way','NE',NULL,'Receiving',NULL,NULL,'Kernersville',1,1032,NULL,'27285',NULL,1228,36.027482,-80.20728,0,NULL,NULL,86),(88,47,3,1,0,'408Q Caulder Path W',408,'Q',NULL,'Caulder','Path','W',NULL,'c/o PO Plus',NULL,NULL,'Simpson',1,1012,NULL,'62985',NULL,1228,37.458878,-88.69466,0,NULL,NULL,NULL),(89,175,3,1,0,'319M Northpoint Way NE',319,'M',NULL,'Northpoint','Way','NE',NULL,'Disbursements',NULL,NULL,'Baker',1,1008,NULL,'32531',NULL,1228,30.8752,-86.68607,0,NULL,NULL,NULL),(90,161,2,1,0,'319M Northpoint Way NE',319,'M',NULL,'Northpoint','Way','NE',NULL,'Disbursements',NULL,NULL,'Baker',1,1008,NULL,'32531',NULL,1228,30.8752,-86.68607,0,NULL,NULL,89),(91,29,3,1,0,'248S Caulder Path S',248,'S',NULL,'Caulder','Path','S',NULL,'Attn: Development',NULL,NULL,'Birmingham',1,1000,NULL,'35230',NULL,1228,33.544622,-86.929208,0,NULL,NULL,NULL),(92,82,2,1,0,'248S Caulder Path S',248,'S',NULL,'Caulder','Path','S',NULL,'Attn: Development',NULL,NULL,'Birmingham',1,1000,NULL,'35230',NULL,1228,33.544622,-86.929208,0,NULL,NULL,91),(93,160,3,1,0,'456B Main Ln NW',456,'B',NULL,'Main','Ln','NW',NULL,'Subscriptions Dept',NULL,NULL,'Beggs',1,1035,NULL,'74421',NULL,1228,35.755522,-96.04744,0,NULL,NULL,NULL),(94,149,2,1,0,'456B Main Ln NW',456,'B',NULL,'Main','Ln','NW',NULL,'Subscriptions Dept',NULL,NULL,'Beggs',1,1035,NULL,'74421',NULL,1228,35.755522,-96.04744,0,NULL,NULL,93),(95,4,3,1,0,'241J States Rd E',241,'J',NULL,'States','Rd','E',NULL,'Cuffe Parade',NULL,NULL,'Rebersburg',1,1037,NULL,'16872',NULL,1228,40.966199,-77.35299,0,NULL,NULL,NULL),(96,96,3,1,0,'580F Northpoint Dr NE',580,'F',NULL,'Northpoint','Dr','NE',NULL,'Receiving',NULL,NULL,'Hanceville',1,1000,NULL,'35077',NULL,1228,34.043589,-86.80644,0,NULL,NULL,NULL),(97,60,2,1,0,'580F Northpoint Dr NE',580,'F',NULL,'Northpoint','Dr','NE',NULL,'Receiving',NULL,NULL,'Hanceville',1,1000,NULL,'35077',NULL,1228,34.043589,-86.80644,0,NULL,NULL,96),(98,98,3,1,0,'810H Bay Dr NW',810,'H',NULL,'Bay','Dr','NW',NULL,'Subscriptions Dept',NULL,NULL,'Washington',1,1050,NULL,'20035',NULL,1228,38.893311,-77.014647,0,NULL,NULL,NULL),(99,149,1,0,0,'860Y Second Ave SE',860,'Y',NULL,'Second','Ave','SE',NULL,NULL,NULL,NULL,'Alexander',1,1014,NULL,'50420',NULL,1228,42.811536,-93.46844,0,NULL,NULL,47),(100,94,1,1,0,'860Y Second Ave SE',860,'Y',NULL,'Second','Ave','SE',NULL,NULL,NULL,NULL,'Alexander',1,1014,NULL,'50420',NULL,1228,42.811536,-93.46844,0,NULL,NULL,47),(101,179,1,1,0,'860Y Second Ave SE',860,'Y',NULL,'Second','Ave','SE',NULL,NULL,NULL,NULL,'Alexander',1,1014,NULL,'50420',NULL,1228,42.811536,-93.46844,0,NULL,NULL,47),(102,122,1,0,0,'445Z Lincoln St SE',445,'Z',NULL,'Lincoln','St','SE',NULL,NULL,NULL,NULL,'Littleton',1,1012,NULL,'61452',NULL,1228,40.249363,-90.66845,0,NULL,NULL,NULL),(103,37,1,1,0,'782Q Northpoint Blvd SE',782,'Q',NULL,'Northpoint','Blvd','SE',NULL,NULL,NULL,NULL,'Hansford',1,1047,NULL,'25103',NULL,1228,38.202669,-81.39427,0,NULL,NULL,48),(104,99,1,1,0,'782Q Northpoint Blvd SE',782,'Q',NULL,'Northpoint','Blvd','SE',NULL,NULL,NULL,NULL,'Hansford',1,1047,NULL,'25103',NULL,1228,38.202669,-81.39427,0,NULL,NULL,48),(105,150,1,1,0,'782Q Northpoint Blvd SE',782,'Q',NULL,'Northpoint','Blvd','SE',NULL,NULL,NULL,NULL,'Hansford',1,1047,NULL,'25103',NULL,1228,38.202669,-81.39427,0,NULL,NULL,48),(106,3,1,1,0,'782Q Northpoint Blvd SE',782,'Q',NULL,'Northpoint','Blvd','SE',NULL,NULL,NULL,NULL,'Hansford',1,1047,NULL,'25103',NULL,1228,38.202669,-81.39427,0,NULL,NULL,48),(107,146,1,1,0,'499Q Woodbridge Way NW',499,'Q',NULL,'Woodbridge','Way','NW',NULL,NULL,NULL,NULL,'Falling Waters',1,1047,NULL,'25419',NULL,1228,39.58132,-77.8804,0,NULL,NULL,49),(108,193,1,1,0,'499Q Woodbridge Way NW',499,'Q',NULL,'Woodbridge','Way','NW',NULL,NULL,NULL,NULL,'Falling Waters',1,1047,NULL,'25419',NULL,1228,39.58132,-77.8804,0,NULL,NULL,49),(109,72,1,1,0,'499Q Woodbridge Way NW',499,'Q',NULL,'Woodbridge','Way','NW',NULL,NULL,NULL,NULL,'Falling Waters',1,1047,NULL,'25419',NULL,1228,39.58132,-77.8804,0,NULL,NULL,49),(110,35,1,1,0,'499Q Woodbridge Way NW',499,'Q',NULL,'Woodbridge','Way','NW',NULL,NULL,NULL,NULL,'Falling Waters',1,1047,NULL,'25419',NULL,1228,39.58132,-77.8804,0,NULL,NULL,49),(111,82,1,0,0,'208G Maple Way NE',208,'G',NULL,'Maple','Way','NE',NULL,NULL,NULL,NULL,'Somerset',1,1034,NULL,'43783',NULL,1228,39.801679,-82.29166,0,NULL,NULL,50),(112,51,1,1,0,'208G Maple Way NE',208,'G',NULL,'Maple','Way','NE',NULL,NULL,NULL,NULL,'Somerset',1,1034,NULL,'43783',NULL,1228,39.801679,-82.29166,0,NULL,NULL,50),(113,5,1,1,0,'208G Maple Way NE',208,'G',NULL,'Maple','Way','NE',NULL,NULL,NULL,NULL,'Somerset',1,1034,NULL,'43783',NULL,1228,39.801679,-82.29166,0,NULL,NULL,50),(114,69,1,1,0,'861O Bay Blvd SW',861,'O',NULL,'Bay','Blvd','SW',NULL,NULL,NULL,NULL,'Tucson',1,1002,NULL,'85708',NULL,1228,32.196846,-110.89189,0,NULL,NULL,NULL),(115,165,1,1,0,'262Q Martin Luther King Way NE',262,'Q',NULL,'Martin Luther King','Way','NE',NULL,NULL,NULL,NULL,'Lauderdale',1,1023,NULL,'39335',NULL,1228,32.517145,-88.51801,0,NULL,NULL,51),(116,59,1,1,0,'262Q Martin Luther King Way NE',262,'Q',NULL,'Martin Luther King','Way','NE',NULL,NULL,NULL,NULL,'Lauderdale',1,1023,NULL,'39335',NULL,1228,32.517145,-88.51801,0,NULL,NULL,51),(117,48,1,0,0,'262Q Martin Luther King Way NE',262,'Q',NULL,'Martin Luther King','Way','NE',NULL,NULL,NULL,NULL,'Lauderdale',1,1023,NULL,'39335',NULL,1228,32.517145,-88.51801,0,NULL,NULL,51),(118,109,1,1,0,'262Q Martin Luther King Way NE',262,'Q',NULL,'Martin Luther King','Way','NE',NULL,NULL,NULL,NULL,'Lauderdale',1,1023,NULL,'39335',NULL,1228,32.517145,-88.51801,0,NULL,NULL,51),(119,44,1,1,0,'398H Main Ave SW',398,'H',NULL,'Main','Ave','SW',NULL,NULL,NULL,NULL,'De Witt',1,1003,NULL,'72042',NULL,1228,34.283347,-91.32515,0,NULL,NULL,52),(120,170,1,1,0,'398H Main Ave SW',398,'H',NULL,'Main','Ave','SW',NULL,NULL,NULL,NULL,'De Witt',1,1003,NULL,'72042',NULL,1228,34.283347,-91.32515,0,NULL,NULL,52),(121,142,1,1,0,'398H Main Ave SW',398,'H',NULL,'Main','Ave','SW',NULL,NULL,NULL,NULL,'De Witt',1,1003,NULL,'72042',NULL,1228,34.283347,-91.32515,0,NULL,NULL,52),(122,124,1,1,0,'398H Main Ave SW',398,'H',NULL,'Main','Ave','SW',NULL,NULL,NULL,NULL,'De Witt',1,1003,NULL,'72042',NULL,1228,34.283347,-91.32515,0,NULL,NULL,52),(123,145,1,0,0,'48Q Woodbridge Path E',48,'Q',NULL,'Woodbridge','Path','E',NULL,NULL,NULL,NULL,'Plainfield',1,1029,NULL,'07063',NULL,1228,40.604252,-74.44612,0,NULL,NULL,53),(124,106,1,1,0,'48Q Woodbridge Path E',48,'Q',NULL,'Woodbridge','Path','E',NULL,NULL,NULL,NULL,'Plainfield',1,1029,NULL,'07063',NULL,1228,40.604252,-74.44612,0,NULL,NULL,53),(125,12,1,1,0,'48Q Woodbridge Path E',48,'Q',NULL,'Woodbridge','Path','E',NULL,NULL,NULL,NULL,'Plainfield',1,1029,NULL,'07063',NULL,1228,40.604252,-74.44612,0,NULL,NULL,53),(126,25,1,1,0,'48Q Woodbridge Path E',48,'Q',NULL,'Woodbridge','Path','E',NULL,NULL,NULL,NULL,'Plainfield',1,1029,NULL,'07063',NULL,1228,40.604252,-74.44612,0,NULL,NULL,53),(127,91,1,1,0,'102L Caulder Ave W',102,'L',NULL,'Caulder','Ave','W',NULL,NULL,NULL,NULL,'Fresno',1,1004,NULL,'93727',NULL,1228,36.753177,-119.69703,0,NULL,NULL,54),(128,20,1,1,0,'102L Caulder Ave W',102,'L',NULL,'Caulder','Ave','W',NULL,NULL,NULL,NULL,'Fresno',1,1004,NULL,'93727',NULL,1228,36.753177,-119.69703,0,NULL,NULL,54),(129,57,1,1,0,'102L Caulder Ave W',102,'L',NULL,'Caulder','Ave','W',NULL,NULL,NULL,NULL,'Fresno',1,1004,NULL,'93727',NULL,1228,36.753177,-119.69703,0,NULL,NULL,54),(130,43,1,1,0,'102L Caulder Ave W',102,'L',NULL,'Caulder','Ave','W',NULL,NULL,NULL,NULL,'Fresno',1,1004,NULL,'93727',NULL,1228,36.753177,-119.69703,0,NULL,NULL,54),(131,195,1,1,0,'488J Northpoint Way SE',488,'J',NULL,'Northpoint','Way','SE',NULL,NULL,NULL,NULL,'Repton',1,1000,NULL,'36475',NULL,1228,31.410205,-87.22474,0,NULL,NULL,55),(132,169,1,1,0,'488J Northpoint Way SE',488,'J',NULL,'Northpoint','Way','SE',NULL,NULL,NULL,NULL,'Repton',1,1000,NULL,'36475',NULL,1228,31.410205,-87.22474,0,NULL,NULL,55),(133,194,1,1,0,'488J Northpoint Way SE',488,'J',NULL,'Northpoint','Way','SE',NULL,NULL,NULL,NULL,'Repton',1,1000,NULL,'36475',NULL,1228,31.410205,-87.22474,0,NULL,NULL,55),(134,185,1,1,0,'488J Northpoint Way SE',488,'J',NULL,'Northpoint','Way','SE',NULL,NULL,NULL,NULL,'Repton',1,1000,NULL,'36475',NULL,1228,31.410205,-87.22474,0,NULL,NULL,55),(135,68,1,1,0,'680Q Beech St NE',680,'Q',NULL,'Beech','St','NE',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98164',NULL,1228,47.606139,-122.33186,0,NULL,NULL,56),(136,188,1,1,0,'680Q Beech St NE',680,'Q',NULL,'Beech','St','NE',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98164',NULL,1228,47.606139,-122.33186,0,NULL,NULL,56),(137,166,1,1,0,'680Q Beech St NE',680,'Q',NULL,'Beech','St','NE',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98164',NULL,1228,47.606139,-122.33186,0,NULL,NULL,56),(138,7,1,1,0,'629M Jackson St W',629,'M',NULL,'Jackson','St','W',NULL,NULL,NULL,NULL,'Otwell',1,1013,NULL,'47564',NULL,1228,38.470473,-87.09905,0,NULL,NULL,NULL),(139,75,1,1,0,'938Y Caulder Ln N',938,'Y',NULL,'Caulder','Ln','N',NULL,NULL,NULL,NULL,'Lake Butter',1,1008,NULL,'34876',NULL,1228,28.505419,-81.571248,0,NULL,NULL,57),(140,178,1,1,0,'938Y Caulder Ln N',938,'Y',NULL,'Caulder','Ln','N',NULL,NULL,NULL,NULL,'Lake Butter',1,1008,NULL,'34876',NULL,1228,28.505419,-81.571248,0,NULL,NULL,57),(141,88,1,1,0,'938Y Caulder Ln N',938,'Y',NULL,'Caulder','Ln','N',NULL,NULL,NULL,NULL,'Lake Butter',1,1008,NULL,'34876',NULL,1228,28.505419,-81.571248,0,NULL,NULL,57),(142,105,1,1,0,'808B Second Pl E',808,'B',NULL,'Second','Pl','E',NULL,NULL,NULL,NULL,'Jupiter',1,1008,NULL,'33458',NULL,1228,26.928035,-80.11803,0,NULL,NULL,NULL),(143,176,1,1,0,'255Z College Rd E',255,'Z',NULL,'College','Rd','E',NULL,NULL,NULL,NULL,'Mountainburg',1,1003,NULL,'72946',NULL,1228,35.649503,-94.15357,0,NULL,NULL,58),(144,58,1,1,0,'255Z College Rd E',255,'Z',NULL,'College','Rd','E',NULL,NULL,NULL,NULL,'Mountainburg',1,1003,NULL,'72946',NULL,1228,35.649503,-94.15357,0,NULL,NULL,58),(145,84,1,1,0,'255Z College Rd E',255,'Z',NULL,'College','Rd','E',NULL,NULL,NULL,NULL,'Mountainburg',1,1003,NULL,'72946',NULL,1228,35.649503,-94.15357,0,NULL,NULL,58),(146,161,1,0,0,'255Z College Rd E',255,'Z',NULL,'College','Rd','E',NULL,NULL,NULL,NULL,'Mountainburg',1,1003,NULL,'72946',NULL,1228,35.649503,-94.15357,0,NULL,NULL,58),(147,23,1,1,0,'173V Beech Way SW',173,'V',NULL,'Beech','Way','SW',NULL,NULL,NULL,NULL,'Stitzer',1,1048,NULL,'53825',NULL,1228,42.928048,-90.56703,0,NULL,NULL,59),(148,38,1,0,0,'173V Beech Way SW',173,'V',NULL,'Beech','Way','SW',NULL,NULL,NULL,NULL,'Stitzer',1,1048,NULL,'53825',NULL,1228,42.928048,-90.56703,0,NULL,NULL,59),(149,184,1,1,0,'173V Beech Way SW',173,'V',NULL,'Beech','Way','SW',NULL,NULL,NULL,NULL,'Stitzer',1,1048,NULL,'53825',NULL,1228,42.928048,-90.56703,0,NULL,NULL,59),(150,108,1,1,0,'173V Beech Way SW',173,'V',NULL,'Beech','Way','SW',NULL,NULL,NULL,NULL,'Stitzer',1,1048,NULL,'53825',NULL,1228,42.928048,-90.56703,0,NULL,NULL,59),(151,85,1,1,0,'488Y Caulder Blvd S',488,'Y',NULL,'Caulder','Blvd','S',NULL,NULL,NULL,NULL,'Tulsa',1,1035,NULL,'74115',NULL,1228,36.180144,-95.91129,0,NULL,NULL,60),(152,13,1,1,0,'488Y Caulder Blvd S',488,'Y',NULL,'Caulder','Blvd','S',NULL,NULL,NULL,NULL,'Tulsa',1,1035,NULL,'74115',NULL,1228,36.180144,-95.91129,0,NULL,NULL,60),(153,18,1,1,0,'488Y Caulder Blvd S',488,'Y',NULL,'Caulder','Blvd','S',NULL,NULL,NULL,NULL,'Tulsa',1,1035,NULL,'74115',NULL,1228,36.180144,-95.91129,0,NULL,NULL,60),(154,28,1,1,0,'488Y Caulder Blvd S',488,'Y',NULL,'Caulder','Blvd','S',NULL,NULL,NULL,NULL,'Tulsa',1,1035,NULL,'74115',NULL,1228,36.180144,-95.91129,0,NULL,NULL,60),(155,24,1,1,0,'873Q Cadell Ln W',873,'Q',NULL,'Cadell','Ln','W',NULL,NULL,NULL,NULL,'Raleigh',1,1032,NULL,'27640',NULL,1228,35.797692,-78.625265,0,NULL,NULL,61),(156,132,1,1,0,'873Q Cadell Ln W',873,'Q',NULL,'Cadell','Ln','W',NULL,NULL,NULL,NULL,'Raleigh',1,1032,NULL,'27640',NULL,1228,35.797692,-78.625265,0,NULL,NULL,61),(157,125,1,0,0,'873Q Cadell Ln W',873,'Q',NULL,'Cadell','Ln','W',NULL,NULL,NULL,NULL,'Raleigh',1,1032,NULL,'27640',NULL,1228,35.797692,-78.625265,0,NULL,NULL,61),(158,177,1,1,0,'873Q Cadell Ln W',873,'Q',NULL,'Cadell','Ln','W',NULL,NULL,NULL,NULL,'Raleigh',1,1032,NULL,'27640',NULL,1228,35.797692,-78.625265,0,NULL,NULL,61),(159,173,1,1,0,'771C Jackson Blvd S',771,'C',NULL,'Jackson','Blvd','S',NULL,NULL,NULL,NULL,'Newport',1,1013,NULL,'47966',NULL,1228,39.885739,-87.4078,0,NULL,NULL,62),(160,10,1,1,0,'771C Jackson Blvd S',771,'C',NULL,'Jackson','Blvd','S',NULL,NULL,NULL,NULL,'Newport',1,1013,NULL,'47966',NULL,1228,39.885739,-87.4078,0,NULL,NULL,62),(161,190,1,1,0,'771C Jackson Blvd S',771,'C',NULL,'Jackson','Blvd','S',NULL,NULL,NULL,NULL,'Newport',1,1013,NULL,'47966',NULL,1228,39.885739,-87.4078,0,NULL,NULL,62),(162,8,1,1,0,'771C Jackson Blvd S',771,'C',NULL,'Jackson','Blvd','S',NULL,NULL,NULL,NULL,'Newport',1,1013,NULL,'47966',NULL,1228,39.885739,-87.4078,0,NULL,NULL,62),(163,130,1,1,0,'387A States Path E',387,'A',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Braggs',1,1035,NULL,'74423',NULL,1228,35.668132,-95.18582,0,NULL,NULL,63),(164,22,1,1,0,'387A States Path E',387,'A',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Braggs',1,1035,NULL,'74423',NULL,1228,35.668132,-95.18582,0,NULL,NULL,63),(165,66,1,1,0,'387A States Path E',387,'A',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Braggs',1,1035,NULL,'74423',NULL,1228,35.668132,-95.18582,0,NULL,NULL,63),(166,54,1,1,0,'387A States Path E',387,'A',NULL,'States','Path','E',NULL,NULL,NULL,NULL,'Braggs',1,1035,NULL,'74423',NULL,1228,35.668132,-95.18582,0,NULL,NULL,63),(167,183,1,1,0,'960U El Camino Way E',960,'U',NULL,'El Camino','Way','E',NULL,NULL,NULL,NULL,'Oxnard',1,1004,NULL,'93033',NULL,1228,34.166933,-119.16113,0,NULL,NULL,64),(168,189,1,1,0,'960U El Camino Way E',960,'U',NULL,'El Camino','Way','E',NULL,NULL,NULL,NULL,'Oxnard',1,1004,NULL,'93033',NULL,1228,34.166933,-119.16113,0,NULL,NULL,64),(169,26,1,1,0,'960U El Camino Way E',960,'U',NULL,'El Camino','Way','E',NULL,NULL,NULL,NULL,'Oxnard',1,1004,NULL,'93033',NULL,1228,34.166933,-119.16113,0,NULL,NULL,64),(170,163,1,1,0,'960U El Camino Way E',960,'U',NULL,'El Camino','Way','E',NULL,NULL,NULL,NULL,'Oxnard',1,1004,NULL,'93033',NULL,1228,34.166933,-119.16113,0,NULL,NULL,64),(171,134,1,0,0,'218W El Camino Blvd N',218,'W',NULL,'El Camino','Blvd','N',NULL,NULL,NULL,NULL,'Belpre',1,1015,NULL,'67519',NULL,1228,37.947324,-99.10017,0,NULL,NULL,65),(172,40,1,1,0,'218W El Camino Blvd N',218,'W',NULL,'El Camino','Blvd','N',NULL,NULL,NULL,NULL,'Belpre',1,1015,NULL,'67519',NULL,1228,37.947324,-99.10017,0,NULL,NULL,65),(173,17,1,1,0,'218W El Camino Blvd N',218,'W',NULL,'El Camino','Blvd','N',NULL,NULL,NULL,NULL,'Belpre',1,1015,NULL,'67519',NULL,1228,37.947324,-99.10017,0,NULL,NULL,65),(174,133,1,1,0,'213R El Camino Way NE',213,'R',NULL,'El Camino','Way','NE',NULL,NULL,NULL,NULL,'Green Bay',1,1048,NULL,'54303',NULL,1228,44.530892,-88.04482,0,NULL,NULL,NULL),(175,46,1,1,0,'404F Green St NE',404,'F',NULL,'Green','St','NE',NULL,NULL,NULL,NULL,'Realitos',1,1042,NULL,'78376',NULL,1228,27.363706,-98.56442,0,NULL,NULL,66),(176,60,1,0,0,'404F Green St NE',404,'F',NULL,'Green','St','NE',NULL,NULL,NULL,NULL,'Realitos',1,1042,NULL,'78376',NULL,1228,27.363706,-98.56442,0,NULL,NULL,66),(177,95,1,1,0,'404F Green St NE',404,'F',NULL,'Green','St','NE',NULL,NULL,NULL,NULL,'Realitos',1,1042,NULL,'78376',NULL,1228,27.363706,-98.56442,0,NULL,NULL,66),(178,90,1,1,0,'133U Jackson Ave S',133,'U',NULL,'Jackson','Ave','S',NULL,NULL,NULL,NULL,'Fontanelle',1,1014,NULL,'50846',NULL,1228,41.307029,-94.55679,0,NULL,NULL,NULL),(179,NULL,1,1,1,'14S El Camino Way E',14,'S',NULL,'El Camino','Way',NULL,NULL,NULL,NULL,NULL,'Collinsville',NULL,1006,NULL,'6022',NULL,1228,41.8328,-72.9253,0,NULL,NULL,NULL),(180,NULL,1,1,1,'11B Woodbridge Path SW',11,'B',NULL,'Woodbridge','Path',NULL,NULL,NULL,NULL,NULL,'Dayton',NULL,1034,NULL,'45417',NULL,1228,39.7531,-84.2471,0,NULL,NULL,NULL),(181,NULL,1,1,1,'581O Lincoln Dr SW',581,'O',NULL,'Lincoln','Dr',NULL,NULL,NULL,NULL,NULL,'Santa Fe',NULL,1030,NULL,'87594',NULL,1228,35.5212,-105.982,0,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_address` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -208,7 +208,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_contact` WRITE;
 /*!40000 ALTER TABLE `civicrm_contact` DISABLE KEYS */;
-INSERT INTO `civicrm_contact` (`id`, `contact_type`, `contact_sub_type`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `external_identifier`, `sort_name`, `display_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `preferred_mail_format`, `hash`, `api_key`, `source`, `first_name`, `middle_name`, `last_name`, `prefix_id`, `suffix_id`, `formal_title`, `communication_style_id`, `email_greeting_id`, `email_greeting_custom`, `email_greeting_display`, `postal_greeting_id`, `postal_greeting_custom`, `postal_greeting_display`, `addressee_id`, `addressee_custom`, `addressee_display`, `job_title`, `gender_id`, `birth_date`, `is_deceased`, `deceased_date`, `household_name`, `primary_contact_id`, `organization_name`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`) VALUES (1,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Default Organization','Default Organization',NULL,'Default Organization',NULL,NULL,NULL,'Both',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,'Default Organization',NULL,NULL,NULL,0,NULL,'2019-08-15 21:31:00'),(2,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper, Sharyn','Sharyn Cooper',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1253804931',NULL,'Sample Data','Sharyn','','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Cooper',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(3,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Jameson family','Jameson family',NULL,NULL,NULL,NULL,NULL,'Both','2255649769',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jameson family',5,NULL,'Dear Jameson family',2,NULL,'Jameson family',NULL,NULL,NULL,0,NULL,'Jameson family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(4,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Smith, Kacey','Kacey Smith',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','4027129634',NULL,'Sample Data','Kacey','','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Smith',NULL,1,NULL,1,'2019-02-20',NULL,NULL,'Palo Alto Arts Academy',NULL,NULL,196,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(5,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Nielsen, Alexia','Alexia Nielsen',NULL,NULL,NULL,NULL,NULL,'Both','164186955',NULL,'Sample Data','Alexia','','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Nielsen',NULL,1,'1946-10-19',1,'2018-11-18',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(6,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Brent','Brent Lee III',NULL,NULL,NULL,NULL,NULL,'Both','3880593995',NULL,'Sample Data','Brent','P','Lee',NULL,4,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Lee III',NULL,NULL,'1978-09-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:29'),(7,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Brittney','Mrs. Brittney Adams',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1087046630',NULL,'Sample Data','Brittney','','Adams',1,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Mrs. Brittney Adams',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(8,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Nielsen, Kathlyn','Mrs. Kathlyn Nielsen',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','145231118',NULL,'Sample Data','Kathlyn','','Nielsen',1,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Mrs. Kathlyn Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(9,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley family','Barkley family',NULL,NULL,NULL,NULL,NULL,'Both','2888062109',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Barkley family',5,NULL,'Dear Barkley family',2,NULL,'Barkley family',NULL,NULL,NULL,0,NULL,'Barkley family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(10,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Lashawnda','Ms. Lashawnda Cruz',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','2604537313',NULL,'Sample Data','Lashawnda','Y','Cruz',2,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Ms. Lashawnda Cruz',NULL,NULL,NULL,1,'2019-01-14',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(11,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Brzęczysław','Brzęczysław Lee Jr.',NULL,NULL,NULL,NULL,NULL,'Both','2392926300',NULL,'Sample Data','Brzęczysław','G','Lee',NULL,1,NULL,NULL,1,NULL,'Dear Brzęczysław',1,NULL,'Dear Brzęczysław',1,NULL,'Brzęczysław Lee Jr.',NULL,NULL,'2002-05-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:29'),(12,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Smith, Lashawnda','Ms. Lashawnda Smith',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','810461769',NULL,'Sample Data','Lashawnda','','Smith',2,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Ms. Lashawnda Smith',NULL,NULL,'1959-10-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(13,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Brigette','Mrs. Brigette Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','2016612463',NULL,'Sample Data','Brigette','R','Ivanov',1,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Mrs. Brigette Ivanov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(14,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Reynolds, Kenny','Kenny Reynolds II',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','2459168653',NULL,'Sample Data','Kenny','','Reynolds',NULL,3,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Reynolds II',NULL,NULL,'1964-12-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(15,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Clint','Clint Samson Sr.',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','1111759709',NULL,'Sample Data','Clint','','Samson',NULL,2,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Samson Sr.',NULL,2,'1991-05-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(16,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Juliann','Ms. Juliann Samson',NULL,NULL,NULL,NULL,NULL,'Both','1799778538',NULL,'Sample Data','Juliann','G','Samson',2,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Ms. Juliann Samson',NULL,1,'1988-06-05',0,NULL,NULL,NULL,'Local Education Fellowship',NULL,NULL,121,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(17,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Jones family','Jones family',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1110516799',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jones family',5,NULL,'Dear Jones family',2,NULL,'Jones family',NULL,NULL,NULL,0,NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(18,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Deforest, Elizabeth','Elizabeth Deforest',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','2409848026',NULL,'Sample Data','Elizabeth','E','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Deforest',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(19,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Addy Wellness Trust','Addy Wellness Trust',NULL,NULL,NULL,NULL,NULL,'Both','754252251',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Addy Wellness Trust',NULL,NULL,NULL,0,NULL,NULL,180,'Addy Wellness Trust',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(20,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Landon','Mr. Landon Lee II',NULL,NULL,NULL,NULL,NULL,'Both','4144706447',NULL,'Sample Data','Landon','X','Lee',3,3,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Mr. Landon Lee II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:29'),(21,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'McReynolds, Jacob','Jacob McReynolds Jr.',NULL,NULL,NULL,NULL,NULL,'Both','4202313565',NULL,'Sample Data','Jacob','C','McReynolds',NULL,1,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob McReynolds Jr.',NULL,2,'2014-02-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(22,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'bachmank79@testmail.co.in','bachmank79@testmail.co.in',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','2269578018',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear bachmank79@testmail.co.in',1,NULL,'Dear bachmank79@testmail.co.in',1,NULL,'bachmank79@testmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(23,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samson, Jay','Jay Samson',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','4164694386',NULL,'Sample Data','Jay','','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay Samson',NULL,2,'1941-07-29',1,'2018-12-25',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(24,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'gonzlezm@airmail.co.pl','gonzlezm@airmail.co.pl',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','3471152095',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear gonzlezm@airmail.co.pl',1,NULL,'Dear gonzlezm@airmail.co.pl',1,NULL,'gonzlezm@airmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(25,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jones, Tanya','Mrs. Tanya Jones',NULL,NULL,NULL,NULL,NULL,'Both','1578190771',NULL,'Sample Data','Tanya','','Jones',1,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Mrs. Tanya Jones',NULL,1,'1981-12-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(26,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Prentice, Jed','Jed Prentice',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','737533559',NULL,'Sample Data','Jed','','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Prentice',NULL,NULL,'1990-05-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(27,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Adams, Scott','Scott Adams',NULL,NULL,NULL,NULL,NULL,'Both','2280225126',NULL,'Sample Data','Scott','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Adams',NULL,NULL,'1952-09-14',1,'2019-01-22',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(28,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Omar','Mr. Omar Olsen',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','2675601131',NULL,'Sample Data','Omar','','Olsen',3,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Mr. Omar Olsen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(29,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Łąchowski-Cooper, Arlyne','Arlyne Łąchowski-Cooper',NULL,NULL,NULL,NULL,NULL,'Both','3561672255',NULL,'Sample Data','Arlyne','','Łąchowski-Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Łąchowski-Cooper',NULL,NULL,'2011-03-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(30,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'idaz@testmail.co.pl','idaz@testmail.co.pl',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1590898300',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear idaz@testmail.co.pl',1,NULL,'Dear idaz@testmail.co.pl',1,NULL,'idaz@testmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(31,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Sonny','Mr. Sonny Wattson',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','4056100823',NULL,'Sample Data','Sonny','M','Wattson',3,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Mr. Sonny Wattson',NULL,2,'1970-04-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(32,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samson-Barkley, Erik','Erik Samson-Barkley III',NULL,NULL,NULL,NULL,NULL,'Both','378938647',NULL,'Sample Data','Erik','','Samson-Barkley',NULL,4,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Samson-Barkley III',NULL,2,'1971-07-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:29'),(33,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samson, Kathlyn','Kathlyn Samson',NULL,NULL,NULL,NULL,NULL,'Both','2952894256',NULL,'Sample Data','Kathlyn','','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Samson',NULL,1,'1954-10-10',1,'2019-04-13',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(34,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Łąchowski-Cooper, Brigette','Dr. Brigette Łąchowski-Cooper',NULL,NULL,NULL,NULL,NULL,'Both','3626490862',NULL,'Sample Data','Brigette','','Łąchowski-Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Dr. Brigette Łąchowski-Cooper',NULL,1,'1992-10-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(35,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley-Parker, Felisha','Felisha Barkley-Parker',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2080249471',NULL,'Sample Data','Felisha','','Barkley-Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Barkley-Parker',NULL,1,'1997-11-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(36,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'bcooper@mymail.biz','bcooper@mymail.biz',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','2175964031',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear bcooper@mymail.biz',1,NULL,'Dear bcooper@mymail.biz',1,NULL,'bcooper@mymail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(37,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Minnesota Music Services','Minnesota Music Services',NULL,NULL,NULL,NULL,NULL,'Both','2721288327',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Minnesota Music Services',NULL,NULL,NULL,0,NULL,NULL,NULL,'Minnesota Music Services',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(38,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Craig','Mr. Craig Blackwell II',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','2607395408',NULL,'Sample Data','Craig','','Blackwell',3,3,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Mr. Craig Blackwell II',NULL,2,'1955-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(39,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Miguel','Miguel Jones',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','3236387575',NULL,'Sample Data','Miguel','A','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Jones',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(40,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wilson, Santina','Santina Wilson',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','602659745',NULL,'Sample Data','Santina','','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Wilson',NULL,1,NULL,0,NULL,NULL,NULL,'Pine Poetry Center',NULL,NULL,142,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(41,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Elbert','Elbert Barkley Sr.',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3782594524',NULL,'Sample Data','Elbert','H','Barkley',NULL,2,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Barkley Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(42,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Jerome','Dr. Jerome Jameson Jr.',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2954166359',NULL,'Sample Data','Jerome','','Jameson',4,1,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Dr. Jerome Jameson Jr.',NULL,2,'1937-12-02',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(43,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Olsen, Daren','Daren Olsen II',NULL,NULL,NULL,NULL,NULL,'Both','1772811610',NULL,'Sample Data','Daren','M','Olsen',NULL,3,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Olsen II',NULL,NULL,'1953-09-19',0,NULL,NULL,NULL,'Kentucky Poetry Center',NULL,NULL,139,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(44,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Reynolds, Allen','Dr. Allen Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','3330814148',NULL,'Sample Data','Allen','','Reynolds',4,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Reynolds',NULL,2,'1982-09-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(45,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Samson, Brigette','Brigette Samson',NULL,NULL,NULL,NULL,NULL,'Both','2016376463',NULL,'Sample Data','Brigette','V','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Samson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(46,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Rolando','Rolando McReynolds Sr.',NULL,NULL,NULL,NULL,NULL,'Both','792925862',NULL,'Sample Data','Rolando','P','McReynolds',NULL,2,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando McReynolds Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(47,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Olsen, Kiara','Mrs. Kiara Olsen',NULL,NULL,NULL,NULL,NULL,'Both','2769473098',NULL,'Sample Data','Kiara','Y','Olsen',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Olsen',NULL,1,'1973-04-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(48,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Craig','Craig Terry',NULL,NULL,NULL,NULL,NULL,'Both','99954809',NULL,'Sample Data','Craig','D','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(49,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Brent','Mr. Brent McReynolds',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','1642363983',NULL,'Sample Data','Brent','O','McReynolds',3,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Mr. Brent McReynolds',NULL,NULL,'1964-03-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(50,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Omar','Omar Cruz',NULL,NULL,NULL,NULL,NULL,'Both','348168112',NULL,'Sample Data','Omar','','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Cruz',NULL,NULL,'1997-01-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(51,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Errol','Mr. Errol Prentice',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','2979550406',NULL,'Sample Data','Errol','Y','Prentice',3,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Mr. Errol Prentice',NULL,2,'1957-01-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(52,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Kathlyn','Kathlyn Cooper',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','4144432038',NULL,'Sample Data','Kathlyn','B','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Cooper',NULL,1,'2006-09-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(53,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terry-Jameson, Rodrigo','Dr. Rodrigo Terry-Jameson II',NULL,NULL,NULL,NULL,NULL,'Both','3866553571',NULL,'Sample Data','Rodrigo','','Terry-Jameson',4,3,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Dr. Rodrigo Terry-Jameson II',NULL,NULL,'1984-08-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(54,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Poquoson Wellness Trust','Poquoson Wellness Trust',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','2664477883',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Poquoson Wellness Trust',NULL,NULL,NULL,0,NULL,NULL,136,'Poquoson Wellness Trust',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(55,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz-Barkley, Erik','Dr. Erik Cruz-Barkley',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2816881198',NULL,'Sample Data','Erik','','Cruz-Barkley',4,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Dr. Erik Cruz-Barkley',NULL,NULL,'1987-05-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(56,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Santina','Santina Barkley',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1386775784',NULL,'Sample Data','Santina','','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Barkley',NULL,1,'2010-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(57,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terrell, Eleonor','Mrs. Eleonor Terrell',NULL,NULL,NULL,NULL,NULL,'Both','2837539268',NULL,'Sample Data','Eleonor','B','Terrell',1,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Mrs. Eleonor Terrell',NULL,1,NULL,1,'2019-03-15',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(58,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Jackson','Jackson Deforest',NULL,NULL,NULL,NULL,NULL,'Both','2114125718',NULL,'Sample Data','Jackson','H','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Deforest',NULL,2,NULL,1,'2018-11-28',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(59,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Lincoln','Lincoln Zope III',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','2972737085',NULL,'Sample Data','Lincoln','','Zope',NULL,4,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Zope III',NULL,2,'1985-08-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(60,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Esta','Esta Wilson',NULL,NULL,NULL,NULL,NULL,'Both','4062984803',NULL,'Sample Data','Esta','W','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Wilson',NULL,1,'2009-06-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(61,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Yadav-Ivanov family','Yadav-Ivanov family',NULL,NULL,NULL,NULL,NULL,'Both','100874817',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Yadav-Ivanov family',5,NULL,'Dear Yadav-Ivanov family',2,NULL,'Yadav-Ivanov family',NULL,NULL,NULL,0,NULL,'Yadav-Ivanov family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(62,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Łąchowski-Cooper family','Łąchowski-Cooper family',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','2602821584',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Łąchowski-Cooper family',5,NULL,'Dear Łąchowski-Cooper family',2,NULL,'Łąchowski-Cooper family',NULL,NULL,NULL,0,NULL,'Łąchowski-Cooper family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(63,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'McReynolds-Lee, Ashley','Ashley McReynolds-Lee',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','218176139',NULL,'Sample Data','Ashley','','McReynolds-Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley McReynolds-Lee',NULL,2,'1976-04-02',1,'2019-07-16',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:29'),(64,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, Rebekah','Mrs. Rebekah Parker',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','4245169755',NULL,'Sample Data','Rebekah','','Parker',1,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Mrs. Rebekah Parker',NULL,1,'1958-09-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(65,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Friends Technology Trust','Friends Technology Trust',NULL,NULL,NULL,NULL,NULL,'Both','1330302854',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Friends Technology Trust',NULL,NULL,NULL,0,NULL,NULL,200,'Friends Technology Trust',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(66,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Esta','Ms. Esta Jones',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','2492655702',NULL,'Sample Data','Esta','Z','Jones',2,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Ms. Esta Jones',NULL,1,'1976-02-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(67,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Shauna','Shauna Yadav',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1029328573',NULL,'Sample Data','Shauna','','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Yadav',NULL,NULL,'1981-06-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(68,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Juliann','Juliann Samson',NULL,NULL,NULL,NULL,NULL,'Both','1799778538',NULL,'Sample Data','Juliann','Z','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Samson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(69,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Dimitrov, Toby','Mr. Toby Dimitrov II',NULL,NULL,NULL,NULL,NULL,'Both','4067537771',NULL,'Sample Data','Toby','','Dimitrov',3,3,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Dimitrov II',NULL,2,'1993-10-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(70,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'hl.cooper@testmail.co.nz','hl.cooper@testmail.co.nz',NULL,NULL,NULL,NULL,NULL,'Both','3121599721',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear hl.cooper@testmail.co.nz',1,NULL,'Dear hl.cooper@testmail.co.nz',1,NULL,'hl.cooper@testmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(71,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jones family','Jones family',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1110516799',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jones family',5,NULL,'Dear Jones family',2,NULL,'Jones family',NULL,NULL,NULL,0,NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(72,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Bradford Literacy Solutions','Bradford Literacy Solutions',NULL,NULL,NULL,NULL,NULL,'Both','2627933493',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bradford Literacy Solutions',NULL,NULL,NULL,0,NULL,NULL,153,'Bradford Literacy Solutions',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(73,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Maxwell','Maxwell Samson Sr.',NULL,NULL,NULL,NULL,NULL,'Both','3358700661',NULL,'Sample Data','Maxwell','','Samson',NULL,2,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Samson Sr.',NULL,NULL,'1957-01-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(74,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds family','McReynolds family',NULL,NULL,NULL,NULL,NULL,'Both','3032680972',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear McReynolds family',5,NULL,'Dear McReynolds family',2,NULL,'McReynolds family',NULL,NULL,NULL,0,NULL,'McReynolds family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(75,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Brent','Brent Patel',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','3059240513',NULL,'Sample Data','Brent','','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Patel',NULL,NULL,'2005-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(76,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Reynolds, Teresa','Teresa Reynolds',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','1708756275',NULL,'Sample Data','Teresa','C','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Reynolds',NULL,1,'2002-05-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(77,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Kathlyn','Mrs. Kathlyn Jensen',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3302532161',NULL,'Sample Data','Kathlyn','P','Jensen',1,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Mrs. Kathlyn Jensen',NULL,1,'1954-04-03',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(78,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Reynolds, Shauna','Dr. Shauna Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','564809255',NULL,'Sample Data','Shauna','','Reynolds',4,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Dr. Shauna Reynolds',NULL,1,'1968-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(79,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'andrewn@fakemail.biz','andrewn@fakemail.biz',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2980270509',NULL,'Sample Data',NULL,NULL,NULL,NULL,4,NULL,NULL,1,NULL,'Dear andrewn@fakemail.biz',1,NULL,'Dear andrewn@fakemail.biz',1,NULL,'andrewn@fakemail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(80,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Olsen family','Olsen family',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','1990073228',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen family',5,NULL,'Dear Olsen family',2,NULL,'Olsen family',NULL,NULL,NULL,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(81,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Kathlyn','Mrs. Kathlyn Jensen',NULL,NULL,NULL,NULL,NULL,'Both','3302532161',NULL,'Sample Data','Kathlyn','','Jensen',1,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Mrs. Kathlyn Jensen',NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(82,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Sherman','Dr. Sherman Cooper',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1707375456',NULL,'Sample Data','Sherman','O','Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Dr. Sherman Cooper',NULL,NULL,'1992-07-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(83,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Reynolds family','Reynolds family',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','4119726021',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Reynolds family',5,NULL,'Dear Reynolds family',2,NULL,'Reynolds family',NULL,NULL,NULL,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(84,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Łąchowski, Sonny','Dr. Sonny Łąchowski',NULL,NULL,NULL,NULL,NULL,'Both','3611935208',NULL,'Sample Data','Sonny','W','Łąchowski',4,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Dr. Sonny Łąchowski',NULL,NULL,'1963-05-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(85,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Cooper, Heidi','Ms. Heidi Cooper',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','2166503529',NULL,'Sample Data','Heidi','','Cooper',2,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Ms. Heidi Cooper',NULL,1,'1955-02-14',1,'2018-10-19',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(86,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jensen, Heidi','Dr. Heidi Jensen',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','3979188807',NULL,'Sample Data','Heidi','','Jensen',4,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Dr. Heidi Jensen',NULL,NULL,'1963-06-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(87,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'mcreynolds.lincoln@notmail.co.nz','mcreynolds.lincoln@notmail.co.nz',NULL,NULL,NULL,NULL,NULL,'Both','3199542396',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear mcreynolds.lincoln@notmail.co.nz',1,NULL,'Dear mcreynolds.lincoln@notmail.co.nz',1,NULL,'mcreynolds.lincoln@notmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(88,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Díaz, Delana','Delana Díaz',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','1768580764',NULL,'Sample Data','Delana','','Díaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Díaz',NULL,1,'1963-12-06',1,'2018-08-30',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(89,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Elbert','Dr. Elbert Roberts III',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','2457403218',NULL,'Sample Data','Elbert','H','Roberts',4,4,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Dr. Elbert Roberts III',NULL,2,'1991-08-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(90,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'nielsens14@sample.co.pl','nielsens14@sample.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','2440357462',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear nielsens14@sample.co.pl',1,NULL,'Dear nielsens14@sample.co.pl',1,NULL,'nielsens14@sample.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,'Bassett Arts Alliance',NULL,NULL,155,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(91,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Russell Springs Empowerment Association','Russell Springs Empowerment Association',NULL,NULL,NULL,NULL,NULL,'Both','925505101',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Russell Springs Empowerment Association',NULL,NULL,NULL,0,NULL,NULL,105,'Russell Springs Empowerment Association',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(92,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Müller, Scarlet','Scarlet Müller',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','1549122199',NULL,'Sample Data','Scarlet','Q','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(93,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper-Jensen family','Cooper-Jensen family',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','2134395889',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Cooper-Jensen family',5,NULL,'Dear Cooper-Jensen family',2,NULL,'Cooper-Jensen family',NULL,NULL,NULL,0,NULL,'Cooper-Jensen family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(94,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Reynolds, Kathleen','Kathleen Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','3830837531',NULL,'Sample Data','Kathleen','T','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(95,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Ray','Ray Terry Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1646953938',NULL,'Sample Data','Ray','','Terry',NULL,2,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Terry Sr.',NULL,2,'1966-08-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(96,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Ashley','Mrs. Ashley Dimitrov',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','665882362',NULL,'Sample Data','Ashley','','Dimitrov',1,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mrs. Ashley Dimitrov',NULL,1,'1935-01-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(97,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'New Canton Agriculture Collective','New Canton Agriculture Collective',NULL,NULL,NULL,NULL,NULL,'Both','3562520067',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'New Canton Agriculture Collective',NULL,NULL,NULL,0,NULL,NULL,99,'New Canton Agriculture Collective',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(98,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav-Ivanov, Kacey','Kacey Yadav-Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','89132998',NULL,'Sample Data','Kacey','D','Yadav-Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Yadav-Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(99,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Blackwell, Scott','Scott Blackwell Sr.',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1650464224',NULL,'Sample Data','Scott','L','Blackwell',NULL,2,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Blackwell Sr.',NULL,NULL,'1933-08-13',0,NULL,NULL,NULL,'New Canton Agriculture Collective',NULL,NULL,97,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(100,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry-Jameson, Jerome','Mr. Jerome Terry-Jameson',NULL,NULL,NULL,NULL,NULL,'Both','1409390105',NULL,'Sample Data','Jerome','','Terry-Jameson',3,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Mr. Jerome Terry-Jameson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(101,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson-Barkley, Rebekah','Rebekah Samson-Barkley',NULL,NULL,NULL,NULL,NULL,'Both','1193266027',NULL,'Sample Data','Rebekah','Z','Samson-Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Samson-Barkley',NULL,1,'1982-12-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:29'),(102,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Terrell, Ashley','Dr. Ashley Terrell III',NULL,NULL,NULL,NULL,NULL,'Both','209760227',NULL,'Sample Data','Ashley','','Terrell',4,4,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Terrell III',NULL,2,'1967-04-15',1,'2018-10-19',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(103,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'dimitrov.z.lou@testmail.co.uk','dimitrov.z.lou@testmail.co.uk',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','3677688070',NULL,'Sample Data',NULL,NULL,NULL,NULL,2,NULL,NULL,1,NULL,'Dear dimitrov.z.lou@testmail.co.uk',1,NULL,'Dear dimitrov.z.lou@testmail.co.uk',1,NULL,'dimitrov.z.lou@testmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(104,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Scott','Scott Nielsen Jr.',NULL,NULL,NULL,NULL,NULL,'Both','4027212540',NULL,'Sample Data','Scott','','Nielsen',NULL,1,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Nielsen Jr.',NULL,NULL,'1983-11-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(105,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jameson, Maria','Dr. Maria Jameson',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2824644051',NULL,'Sample Data','Maria','','Jameson',4,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Dr. Maria Jameson',NULL,NULL,'1971-02-26',0,NULL,NULL,NULL,'Russell Springs Empowerment Association',NULL,NULL,91,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(106,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Nielsen family','Nielsen family',NULL,NULL,NULL,NULL,NULL,'Both','766698874',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen family',5,NULL,'Dear Nielsen family',2,NULL,'Nielsen family',NULL,NULL,NULL,0,NULL,'Nielsen family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(107,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Díaz family','Díaz family',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','2169249835',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Díaz family',5,NULL,'Dear Díaz family',2,NULL,'Díaz family',NULL,NULL,NULL,0,NULL,'Díaz family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(108,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Cooper family','Cooper family',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1133003930',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Cooper family',5,NULL,'Dear Cooper family',2,NULL,'Cooper family',NULL,NULL,NULL,0,NULL,'Cooper family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(109,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Nielsen, Toby','Toby Nielsen',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','1430850543',NULL,'Sample Data','Toby','D','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Nielsen',NULL,2,'1952-07-06',1,'2019-08-12',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(110,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Dowlen Education Initiative','Dowlen Education Initiative',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','3906226725',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dowlen Education Initiative',NULL,NULL,NULL,0,NULL,NULL,158,'Dowlen Education Initiative',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(111,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Shauna','Shauna Jones',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','2088102406',NULL,'Sample Data','Shauna','','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Jones',NULL,1,'1983-08-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(112,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Daren','Daren Wagner Jr.',NULL,NULL,NULL,NULL,NULL,'Both','1117250816',NULL,'Sample Data','Daren','I','Wagner',NULL,1,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Wagner Jr.',NULL,2,'1935-11-09',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(113,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Esta','Ms. Esta Deforest',NULL,NULL,NULL,NULL,NULL,'Both','2058701056',NULL,'Sample Data','Esta','H','Deforest',2,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Ms. Esta Deforest',NULL,1,'1980-08-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(114,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samson, Jed','Jed Samson Jr.',NULL,NULL,NULL,NULL,NULL,'Both','4283865263',NULL,'Sample Data','Jed','Z','Samson',NULL,1,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Samson Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(115,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Kacey','Mrs. Kacey Jameson',NULL,NULL,NULL,NULL,NULL,'Both','2233552494',NULL,'Sample Data','Kacey','','Jameson',1,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Mrs. Kacey Jameson',NULL,1,'1978-09-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(116,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Kenny','Kenny Barkley',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','3409558741',NULL,'Sample Data','Kenny','W','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Barkley',NULL,NULL,'1984-04-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(117,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Iris','Iris Jones',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','3545440397',NULL,'Sample Data','Iris','','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Jones',NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(118,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Nielsen, Maxwell','Maxwell Nielsen',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','1889021515',NULL,'Sample Data','Maxwell','','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Nielsen',NULL,NULL,'1991-12-15',0,NULL,NULL,NULL,'Martin Luther King Agriculture Services',NULL,NULL,143,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(119,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Lawerence','Mr. Lawerence Jones II',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','267362464',NULL,'Sample Data','Lawerence','F','Jones',3,3,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Jones II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(120,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cooper-Jensen, Carlos','Carlos Cooper-Jensen',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3047902387',NULL,'Sample Data','Carlos','','Cooper-Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Cooper-Jensen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(121,'Organization',NULL,0,1,0,0,1,0,NULL,NULL,'Local Education Fellowship','Local Education Fellowship',NULL,NULL,NULL,NULL,NULL,'Both','818138343',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Education Fellowship',NULL,NULL,NULL,0,NULL,NULL,16,'Local Education Fellowship',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(122,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant, Shad','Shad Grant Sr.',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','3908834377',NULL,'Sample Data','Shad','B','Grant',NULL,2,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Grant Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(123,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Iris','Dr. Iris Yadav',NULL,NULL,NULL,NULL,NULL,'Both','3117553975',NULL,'Sample Data','Iris','','Yadav',4,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Dr. Iris Yadav',NULL,1,'1992-07-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(124,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Parker, Elizabeth','Elizabeth Parker',NULL,NULL,NULL,NULL,NULL,'Both','3038072630',NULL,'Sample Data','Elizabeth','','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Parker',NULL,1,'2003-04-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(125,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Omar','Omar Jones',NULL,NULL,NULL,NULL,NULL,'Both','1587290498',NULL,'Sample Data','Omar','','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Jones',NULL,2,'1957-06-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:29'),(126,'Individual',NULL,1,1,0,0,1,0,NULL,NULL,'Barkley, Magan','Magan Barkley',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','3229711525',NULL,'Sample Data','Magan','','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Barkley',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(127,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Barkley-Parker, Kenny','Dr. Kenny Barkley-Parker III',NULL,NULL,NULL,NULL,NULL,'Both','3544249506',NULL,'Sample Data','Kenny','','Barkley-Parker',4,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Dr. Kenny Barkley-Parker III',NULL,NULL,'1987-06-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(128,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Carylon','Carylon Samson',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','4170426842',NULL,'Sample Data','Carylon','T','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Samson',NULL,1,'1970-10-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(129,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'kathleenp@fakemail.com','kathleenp@fakemail.com',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','355874970',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear kathleenp@fakemail.com',1,NULL,'Dear kathleenp@fakemail.com',1,NULL,'kathleenp@fakemail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(130,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Nielsen family','Nielsen family',NULL,NULL,NULL,NULL,NULL,'Both','766698874',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen family',5,NULL,'Dear Nielsen family',2,NULL,'Nielsen family',NULL,NULL,NULL,0,NULL,'Nielsen family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(131,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Łąchowski-McReynolds, Felisha','Dr. Felisha Łąchowski-McReynolds',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','129679642',NULL,'Sample Data','Felisha','','Łąchowski-McReynolds',4,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Dr. Felisha Łąchowski-McReynolds',NULL,NULL,'1994-03-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(132,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Brent','Brent Cruz III',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','1602969410',NULL,'Sample Data','Brent','','Cruz',NULL,4,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Cruz III',NULL,2,'1968-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(133,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Claudio','Claudio Terry Jr.',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','3516562603',NULL,'Sample Data','Claudio','D','Terry',NULL,1,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Terry Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(134,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Barkley, Omar','Omar Barkley',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1166913408',NULL,'Sample Data','Omar','','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Barkley',NULL,2,'1931-06-07',1,'2018-11-28',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(135,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Teddy','Mr. Teddy Nielsen II',NULL,NULL,NULL,NULL,NULL,'Both','1600610365',NULL,'Sample Data','Teddy','E','Nielsen',3,3,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Mr. Teddy Nielsen II',NULL,2,'1986-01-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(136,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Dimitrov, Barry','Barry Dimitrov Jr.',NULL,NULL,NULL,NULL,NULL,'Both','3521413340',NULL,'Sample Data','Barry','M','Dimitrov',NULL,1,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Dimitrov Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,'Poquoson Wellness Trust',NULL,NULL,54,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(137,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Global Food Network','Global Food Network',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','892068896',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Food Network',NULL,NULL,NULL,0,NULL,NULL,NULL,'Global Food Network',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(138,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Díaz, Alexia','Alexia Díaz',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','352965868',NULL,'Sample Data','Alexia','R','Díaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Díaz',NULL,NULL,'1994-04-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(139,'Organization',NULL,1,0,0,0,1,0,NULL,NULL,'Kentucky Poetry Center','Kentucky Poetry Center',NULL,NULL,NULL,NULL,NULL,'Both','2704656276',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Kentucky Poetry Center',NULL,NULL,NULL,0,NULL,NULL,43,'Kentucky Poetry Center',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(140,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Shauna','Ms. Shauna Olsen',NULL,NULL,NULL,NULL,NULL,'Both','774481679',NULL,'Sample Data','Shauna','','Olsen',2,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Ms. Shauna Olsen',NULL,NULL,'1975-12-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(141,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Carlos','Carlos Deforest Jr.',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2222599648',NULL,'Sample Data','Carlos','I','Deforest',NULL,1,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Deforest Jr.',NULL,2,'2008-11-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(142,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Pine Poetry Center','Pine Poetry Center',NULL,NULL,NULL,NULL,NULL,'Both','2642150447',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pine Poetry Center',NULL,NULL,NULL,0,NULL,NULL,40,'Pine Poetry Center',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(143,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Martin Luther King Agriculture Services','Martin Luther King Agriculture Services',NULL,NULL,NULL,NULL,NULL,'Both','613168978',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Martin Luther King Agriculture Services',NULL,NULL,NULL,0,NULL,NULL,118,'Martin Luther King Agriculture Services',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(144,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Jed','Mr. Jed Olsen',NULL,NULL,NULL,NULL,NULL,'Both','1956151934',NULL,'Sample Data','Jed','','Olsen',3,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Mr. Jed Olsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(145,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Local Legal Center','Local Legal Center',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1488771407',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Legal Center',NULL,NULL,NULL,0,NULL,NULL,147,'Local Legal Center',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(146,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Olsen, Barry','Mr. Barry Olsen II',NULL,NULL,NULL,NULL,NULL,'Both','1622802859',NULL,'Sample Data','Barry','Z','Olsen',3,3,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Mr. Barry Olsen II',NULL,2,NULL,0,NULL,NULL,NULL,'Main Sports Academy',NULL,NULL,195,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(147,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Ashley','Dr. Ashley Nielsen',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','3185921843',NULL,'Sample Data','Ashley','','Nielsen',4,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Nielsen',NULL,1,'1976-11-15',0,NULL,NULL,NULL,'Local Legal Center',NULL,NULL,145,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(148,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Errol','Errol Terry',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','1432200958',NULL,'Sample Data','Errol','','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Terry',NULL,2,'1930-02-20',1,'2019-02-08',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(149,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Megan','Dr. Megan Cooper',NULL,NULL,NULL,NULL,NULL,'Both','2689596405',NULL,'Sample Data','Megan','','Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Dr. Megan Cooper',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(150,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Olsen, Carlos','Carlos Olsen III',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2601969506',NULL,'Sample Data','Carlos','W','Olsen',NULL,4,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Olsen III',NULL,2,NULL,0,NULL,NULL,NULL,'Mississippi Peace Collective',NULL,NULL,156,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(151,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Barkley, Teddy','Dr. Teddy Barkley',NULL,NULL,NULL,NULL,NULL,'Both','3740389850',NULL,'Sample Data','Teddy','','Barkley',4,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Dr. Teddy Barkley',NULL,2,'1987-09-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:29'),(152,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen family','Olsen family',NULL,NULL,NULL,NULL,NULL,'Both','1990073228',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen family',5,NULL,'Dear Olsen family',2,NULL,'Olsen family',NULL,NULL,NULL,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(153,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'trumano20@example.net','trumano20@example.net',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3786222307',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear trumano20@example.net',1,NULL,'Dear trumano20@example.net',1,NULL,'trumano20@example.net',NULL,NULL,NULL,0,NULL,NULL,NULL,'Bradford Literacy Solutions',NULL,NULL,72,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(154,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samuels, Heidi','Dr. Heidi Samuels',NULL,NULL,NULL,NULL,NULL,'Both','3595168109',NULL,'Sample Data','Heidi','','Samuels',4,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Dr. Heidi Samuels',NULL,1,'1967-06-18',1,'2018-10-02',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(155,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Bassett Arts Alliance','Bassett Arts Alliance',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','2812051694',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bassett Arts Alliance',NULL,NULL,NULL,0,NULL,NULL,90,'Bassett Arts Alliance',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(156,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Mississippi Peace Collective','Mississippi Peace Collective',NULL,NULL,NULL,NULL,NULL,'Both','670670428',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Mississippi Peace Collective',NULL,NULL,NULL,0,NULL,NULL,150,'Mississippi Peace Collective',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(157,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'González, Jacob','Jacob González Jr.',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2352039359',NULL,'Sample Data','Jacob','','González',NULL,1,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob González Jr.',NULL,2,'1993-10-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(158,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Billy','Dr. Billy Jensen',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1055811033',NULL,'Sample Data','Billy','','Jensen',4,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Dr. Billy Jensen',NULL,NULL,'1975-07-01',0,NULL,NULL,NULL,'Dowlen Education Initiative',NULL,NULL,110,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(159,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terry, Elizabeth','Elizabeth Terry',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','4269196887',NULL,'Sample Data','Elizabeth','A','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Terry',NULL,1,NULL,0,NULL,NULL,NULL,'United Action Initiative',NULL,NULL,162,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(160,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jensen, Delana','Delana Jensen',NULL,NULL,NULL,NULL,NULL,'Both','158606223',NULL,'Sample Data','Delana','Y','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Jensen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(161,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cruz-Barkley, Shad','Shad Cruz-Barkley Sr.',NULL,NULL,NULL,NULL,NULL,'Both','2604895058',NULL,'Sample Data','Shad','','Cruz-Barkley',NULL,2,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Cruz-Barkley Sr.',NULL,NULL,'2012-01-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(162,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'United Action Initiative','United Action Initiative',NULL,NULL,NULL,NULL,NULL,'Both','3000484068',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Action Initiative',NULL,NULL,NULL,0,NULL,NULL,159,'United Action Initiative',NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(163,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Reynolds, Margaret','Margaret Reynolds',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1615992834',NULL,'Sample Data','Margaret','B','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(164,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Delana','Delana Zope',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','3545847558',NULL,'Sample Data','Delana','','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Zope',NULL,1,'2008-11-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(165,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'ec.reynolds@testmail.com','ec.reynolds@testmail.com',NULL,NULL,NULL,NULL,NULL,'Both','2178189895',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear ec.reynolds@testmail.com',1,NULL,'Dear ec.reynolds@testmail.com',1,NULL,'ec.reynolds@testmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:27'),(166,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Alexia','Alexia Jones',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','252738965',NULL,'Sample Data','Alexia','X','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Jones',NULL,NULL,'1990-08-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(167,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Cooper, Claudio','Mr. Claudio Cooper Jr.',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1104394960',NULL,'Sample Data','Claudio','Q','Cooper',3,1,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Mr. Claudio Cooper Jr.',NULL,NULL,'1978-08-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(168,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Toby','Toby Barkley Jr.',NULL,NULL,NULL,NULL,NULL,'Both','2112758075',NULL,'Sample Data','Toby','','Barkley',NULL,1,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Barkley Jr.',NULL,2,'1979-10-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:26','2019-08-15 21:31:28'),(169,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Ashlie','Ashlie Bachman',NULL,NULL,NULL,NULL,NULL,'Both','628441271',NULL,'Sample Data','Ashlie','T','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Bachman',NULL,1,'1953-08-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:27'),(170,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Terrell, Kacey','Mrs. Kacey Terrell',NULL,NULL,NULL,NULL,NULL,'Both','1088955590',NULL,'Sample Data','Kacey','','Terrell',1,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Mrs. Kacey Terrell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:27'),(171,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samson-Jones, Rebekah','Rebekah Samson-Jones',NULL,NULL,NULL,NULL,NULL,'Both','3389954899',NULL,'Sample Data','Rebekah','','Samson-Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Samson-Jones',NULL,1,'1984-08-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(172,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Lou','Lou McReynolds',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1805936303',NULL,'Sample Data','Lou','X','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou McReynolds',NULL,2,'1977-04-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:27'),(173,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'rx.yadav@airmail.org','rx.yadav@airmail.org',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','3829836950',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear rx.yadav@airmail.org',1,NULL,'Dear rx.yadav@airmail.org',1,NULL,'rx.yadav@airmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,'Friends Food Partnership',NULL,NULL,184,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(174,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Nicole','Mrs. Nicole Olsen',NULL,NULL,NULL,NULL,NULL,'Both','585291596',NULL,'Sample Data','Nicole','J','Olsen',1,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Mrs. Nicole Olsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:27'),(175,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Grant, Ivey','Ivey Grant',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','3330966549',NULL,'Sample Data','Ivey','F','Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey Grant',NULL,1,'2002-03-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:27'),(176,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Yadav-Ivanov, Rebekah','Ms. Rebekah Yadav-Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','945556703',NULL,'Sample Data','Rebekah','V','Yadav-Ivanov',2,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Ms. Rebekah Yadav-Ivanov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(177,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terrell, Rebekah','Rebekah Terrell',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','2497753127',NULL,'Sample Data','Rebekah','W','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Terrell',NULL,NULL,'2007-01-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:27'),(178,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Elina','Elina Nielsen',NULL,NULL,NULL,NULL,NULL,'Both','2662625802',NULL,'Sample Data','Elina','','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Nielsen',NULL,1,'2012-05-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(179,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Lee family','Lee family',NULL,NULL,NULL,NULL,NULL,'Both','845831176',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Lee family',5,NULL,'Dear Lee family',2,NULL,'Lee family',NULL,NULL,NULL,0,NULL,'Lee family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(180,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson-Barkley, Clint','Mr. Clint Samson-Barkley',NULL,NULL,NULL,NULL,NULL,'Both','1147037699',NULL,'Sample Data','Clint','D','Samson-Barkley',3,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Mr. Clint Samson-Barkley',NULL,2,NULL,0,NULL,NULL,NULL,'Addy Wellness Trust',NULL,NULL,19,0,'2019-08-15 21:31:27','2019-08-15 21:31:29'),(181,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Elbert','Elbert Barkley',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3782594524',NULL,'Sample Data','Elbert','','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Barkley',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(182,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'González-Barkley, Delana','Ms. Delana González-Barkley',NULL,NULL,NULL,NULL,NULL,'Both','3303882605',NULL,'Sample Data','Delana','','González-Barkley',2,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Ms. Delana González-Barkley',NULL,1,'1962-12-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(183,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Jameson, Kathlyn','Kathlyn Jameson',NULL,NULL,NULL,NULL,NULL,'Both','1165214036',NULL,'Sample Data','Kathlyn','F','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Jameson',NULL,NULL,'1985-05-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(184,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Friends Food Partnership','Friends Food Partnership',NULL,NULL,NULL,NULL,NULL,'Both','1768409198',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Friends Food Partnership',NULL,NULL,NULL,0,NULL,NULL,173,'Friends Food Partnership',NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(185,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jacobs, Ashley','Dr. Ashley Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','2224166572',NULL,'Sample Data','Ashley','','Jacobs',4,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Jacobs',NULL,1,'1955-11-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:27'),(186,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Cooper-Jensen, Rebekah','Rebekah Cooper-Jensen',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','4221278966',NULL,'Sample Data','Rebekah','V','Cooper-Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Cooper-Jensen',NULL,1,'2012-03-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(187,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Terry-Jameson family','Terry-Jameson family',NULL,NULL,NULL,NULL,NULL,'Both','2620079717',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Terry-Jameson family',5,NULL,'Dear Terry-Jameson family',2,NULL,'Terry-Jameson family',NULL,NULL,NULL,0,NULL,'Terry-Jameson family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(188,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz-Barkley family','Cruz-Barkley family',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','1248925223',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz-Barkley family',5,NULL,'Dear Cruz-Barkley family',2,NULL,'Cruz-Barkley family',NULL,NULL,NULL,0,NULL,'Cruz-Barkley family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(189,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Omar','Mr. Omar Cooper',NULL,NULL,NULL,NULL,NULL,'Both','1015907011',NULL,'Sample Data','Omar','','Cooper',3,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Mr. Omar Cooper',NULL,2,'1959-08-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(190,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Barkley-Parker family','Barkley-Parker family',NULL,NULL,NULL,NULL,NULL,'Both','3026001130',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Barkley-Parker family',5,NULL,'Dear Barkley-Parker family',2,NULL,'Barkley-Parker family',NULL,NULL,NULL,0,NULL,'Barkley-Parker family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(191,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Megan','Mrs. Megan Lee',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','3517834087',NULL,'Sample Data','Megan','V','Lee',1,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Mrs. Megan Lee',NULL,1,'1963-09-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:27'),(192,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Miguel','Miguel Barkley',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','4174482755',NULL,'Sample Data','Miguel','R','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Barkley',NULL,2,'1965-02-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:27'),(193,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Ray','Ray Samson Jr.',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','3926508474',NULL,'Sample Data','Ray','D','Samson',NULL,1,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Samson Jr.',NULL,2,'1962-12-22',1,'2019-07-29',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:27'),(194,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Ashlie','Ashlie Wagner',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','3661734493',NULL,'Sample Data','Ashlie','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Wagner',NULL,1,'1981-10-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:27'),(195,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Main Sports Academy','Main Sports Academy',NULL,NULL,NULL,NULL,NULL,'Both','848791468',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Main Sports Academy',NULL,NULL,NULL,0,NULL,NULL,146,'Main Sports Academy',NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(196,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Palo Alto Arts Academy','Palo Alto Arts Academy',NULL,NULL,NULL,NULL,NULL,'Both','377370072',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Palo Alto Arts Academy',NULL,NULL,NULL,0,NULL,NULL,4,'Palo Alto Arts Academy',NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(197,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Díaz, Delana','Delana Díaz',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1768580764',NULL,'Sample Data','Delana','I','Díaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Díaz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(198,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jameson, Jerome','Dr. Jerome Jameson Sr.',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','2954166359',NULL,'Sample Data','Jerome','T','Jameson',4,2,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Dr. Jerome Jameson Sr.',NULL,2,'1986-02-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(199,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Samson-Barkley family','Samson-Barkley family',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','365293112',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samson-Barkley family',5,NULL,'Dear Samson-Barkley family',2,NULL,'Samson-Barkley family',NULL,NULL,NULL,0,NULL,'Samson-Barkley family',NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(200,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Rosario','Rosario Jones Jr.',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1172090017',NULL,'Sample Data','Rosario','','Jones',NULL,1,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Jones Jr.',NULL,2,NULL,0,NULL,NULL,NULL,'Friends Technology Trust',NULL,NULL,65,0,'2019-08-15 21:31:27','2019-08-15 21:31:28'),(201,'Individual',NULL,1,1,0,0,1,0,NULL,NULL,'Díaz, Rebekah','Mrs. Rebekah Díaz',NULL,NULL,NULL,NULL,NULL,'Both','1512894919',NULL,'Sample Data','Rebekah','','Díaz',1,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Mrs. Rebekah Díaz',NULL,NULL,'1958-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-08-15 21:31:27','2019-08-15 21:31:28');
+INSERT INTO `civicrm_contact` (`id`, `contact_type`, `contact_sub_type`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `external_identifier`, `sort_name`, `display_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `preferred_mail_format`, `hash`, `api_key`, `source`, `first_name`, `middle_name`, `last_name`, `prefix_id`, `suffix_id`, `formal_title`, `communication_style_id`, `email_greeting_id`, `email_greeting_custom`, `email_greeting_display`, `postal_greeting_id`, `postal_greeting_custom`, `postal_greeting_display`, `addressee_id`, `addressee_custom`, `addressee_display`, `job_title`, `gender_id`, `birth_date`, `is_deceased`, `deceased_date`, `household_name`, `primary_contact_id`, `organization_name`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`) VALUES (1,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Default Organization','Default Organization',NULL,'Default Organization',NULL,NULL,NULL,'Both',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,'Default Organization',NULL,NULL,NULL,0,NULL,'2019-09-20 19:57:09'),(2,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Shauna','Dr. Shauna Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','1678938046',NULL,'Sample Data','Shauna','','Ivanov',4,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Dr. Shauna Ivanov',NULL,NULL,'1948-03-08',1,'2018-10-17',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(3,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Müller, Toby','Toby Müller II',NULL,NULL,NULL,NULL,NULL,'Both','3713504892',NULL,'Sample Data','Toby','','Müller',NULL,3,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Müller II',NULL,2,'1977-03-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(4,'Organization',NULL,0,1,0,0,1,0,NULL,NULL,'States Culture Collective','States Culture Collective',NULL,NULL,NULL,NULL,NULL,'Both','2119330148',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'States Culture Collective',NULL,NULL,NULL,0,NULL,NULL,185,'States Culture Collective',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(5,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Parker, Claudio','Claudio Parker',NULL,NULL,NULL,NULL,NULL,'Both','1375114544',NULL,'Sample Data','Claudio','H','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Parker',NULL,2,'2001-02-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(6,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'jacksong80@lol.com','jacksong80@lol.com',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','2746230711',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,NULL,1,NULL,'Dear jacksong80@lol.com',1,NULL,'Dear jacksong80@lol.com',1,NULL,'jacksong80@lol.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(7,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Ivanov, Jackson','Jackson Ivanov III',NULL,NULL,NULL,NULL,NULL,'Both','3246901602',NULL,'Sample Data','Jackson','','Ivanov',NULL,4,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Ivanov III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(8,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Rodrigo','Rodrigo Bachman',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1057827767',NULL,'Sample Data','Rodrigo','Y','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Rodrigo Bachman',NULL,2,'1986-05-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(9,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Barkley, Billy','Billy Barkley Jr.',NULL,NULL,NULL,NULL,NULL,'Both','3175995376',NULL,'Sample Data','Billy','U','Barkley',NULL,1,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy Barkley Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(10,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Delana','Mrs. Delana Bachman',NULL,NULL,NULL,NULL,NULL,'Both','1435428348',NULL,'Sample Data','Delana','I','Bachman',1,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Mrs. Delana Bachman',NULL,NULL,'1993-07-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(11,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Díaz, Rebekah','Rebekah Díaz',NULL,NULL,NULL,NULL,NULL,'Both','1512894919',NULL,'Sample Data','Rebekah','R','Díaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Díaz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(12,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Bob','Bob Samuels Jr.',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','4029201049',NULL,'Sample Data','Bob','Y','Samuels',NULL,1,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Samuels Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(13,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov-Nielsen, Brent','Brent Ivanov-Nielsen',NULL,NULL,NULL,NULL,NULL,'Both','1657871496',NULL,'Sample Data','Brent','','Ivanov-Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Ivanov-Nielsen',NULL,2,'2008-08-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(14,'Household',NULL,0,1,0,0,1,0,NULL,NULL,'Parker family','Parker family',NULL,NULL,NULL,NULL,NULL,'Both','425242179',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Parker family',5,NULL,'Dear Parker family',2,NULL,'Parker family',NULL,NULL,NULL,0,NULL,'Parker family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(15,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Jacobs family','Jacobs family',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','1498986649',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jacobs family',5,NULL,'Dear Jacobs family',2,NULL,'Jacobs family',NULL,NULL,NULL,0,NULL,'Jacobs family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(16,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Lee, Errol','Errol Lee',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','1182001849',NULL,'Sample Data','Errol','W','Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Lee',NULL,2,'1944-10-09',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(17,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jacobs, Elina','Dr. Elina Jacobs',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3932041193',NULL,'Sample Data','Elina','P','Jacobs',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Jacobs',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(18,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Ivanov-Nielsen, Maxwell','Maxwell Ivanov-Nielsen',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','4030838087',NULL,'Sample Data','Maxwell','','Ivanov-Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Ivanov-Nielsen',NULL,2,'2005-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(19,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Roland','Roland Adams',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2320657874',NULL,'Sample Data','Roland','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Adams',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(20,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen-McReynolds, Angelika','Angelika Nielsen-McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','221213269',NULL,'Sample Data','Angelika','','Nielsen-McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Angelika Nielsen-McReynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(21,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jones-Lee family','Jones-Lee family',NULL,NULL,NULL,NULL,NULL,'Both','3144062899',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jones-Lee family',5,NULL,'Dear Jones-Lee family',2,NULL,'Jones-Lee family',NULL,NULL,NULL,0,NULL,'Jones-Lee family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(22,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Jerome','Dr. Jerome Yadav',NULL,NULL,NULL,NULL,NULL,'Both','2655948882',NULL,'Sample Data','Jerome','P','Yadav',4,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Dr. Jerome Yadav',NULL,2,'1996-02-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(23,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Felisha','Felisha Nielsen',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','3470675762',NULL,'Sample Data','Felisha','','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(24,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs-Jones, Teresa','Mrs. Teresa Jacobs-Jones',NULL,NULL,NULL,NULL,NULL,'Both','2370866954',NULL,'Sample Data','Teresa','X','Jacobs-Jones',1,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Mrs. Teresa Jacobs-Jones',NULL,NULL,'1956-10-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(25,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Troy','Troy Samuels',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','2799330146',NULL,'Sample Data','Troy','A','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Samuels',NULL,2,NULL,1,'2019-09-12',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(26,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jacobs, Craig','Craig Jacobs Sr.',NULL,NULL,NULL,NULL,NULL,'Both','2112460975',NULL,'Sample Data','Craig','','Jacobs',NULL,2,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Jacobs Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(27,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov family','Ivanov family',NULL,NULL,NULL,NULL,NULL,'Both','2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(28,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Ivanov, Jerome','Mr. Jerome Ivanov III',NULL,NULL,NULL,NULL,NULL,'Both','3339080017',NULL,'Sample Data','Jerome','Q','Ivanov',3,4,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Mr. Jerome Ivanov III',NULL,2,'1958-12-18',0,NULL,NULL,NULL,'Lumber City Development Fellowship',NULL,NULL,83,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(29,'Organization',NULL,1,0,0,0,1,0,NULL,NULL,'Local Empowerment Solutions','Local Empowerment Solutions',NULL,NULL,NULL,NULL,NULL,'Both','2469703716',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Empowerment Solutions',NULL,NULL,NULL,0,NULL,NULL,82,'Local Empowerment Solutions',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(30,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Errol','Errol Müller III',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','807767976',NULL,'Sample Data','Errol','','Müller',NULL,4,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Müller III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(31,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov family','Ivanov family',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','2450779112',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov family',5,NULL,'Dear Ivanov family',2,NULL,'Ivanov family',NULL,NULL,NULL,0,NULL,'Ivanov family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(32,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav family','Yadav family',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','1777336212',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Yadav family',5,NULL,'Dear Yadav family',2,NULL,'Yadav family',NULL,NULL,NULL,0,NULL,'Yadav family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(33,'Household',NULL,1,0,0,0,1,0,NULL,NULL,'Ivanov-Nielsen family','Ivanov-Nielsen family',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','3086379723',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov-Nielsen family',5,NULL,'Dear Ivanov-Nielsen family',2,NULL,'Ivanov-Nielsen family',NULL,NULL,NULL,0,NULL,'Ivanov-Nielsen family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(34,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cooper, Iris','Dr. Iris Cooper',NULL,NULL,NULL,NULL,NULL,'Both','2973926348',NULL,'Sample Data','Iris','','Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Dr. Iris Cooper',NULL,1,'1941-07-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(35,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Ivanov, Allan','Allan Ivanov III',NULL,NULL,NULL,NULL,NULL,'Both','3313048045',NULL,'Sample Data','Allan','K','Ivanov',NULL,4,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Ivanov III',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(36,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Ivanov, Scarlet','Scarlet Ivanov',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','959385532',NULL,'Sample Data','Scarlet','','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(37,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov-Müller, Santina','Dr. Santina Ivanov-Müller',NULL,NULL,NULL,NULL,NULL,'Both','3198007126',NULL,'Sample Data','Santina','D','Ivanov-Müller',4,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Dr. Santina Ivanov-Müller',NULL,1,'1978-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(38,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Nielsen, Bob','Bob Nielsen III',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1542221610',NULL,'Sample Data','Bob','','Nielsen',NULL,4,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Nielsen III',NULL,NULL,'2012-12-31',0,NULL,NULL,NULL,'Maple Software School',NULL,NULL,168,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(39,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Josefa','Josefa Deforest',NULL,NULL,NULL,NULL,NULL,'Both','2303939746',NULL,'Sample Data','Josefa','O','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Deforest',NULL,NULL,NULL,0,NULL,NULL,NULL,'Cheshire Action Center',NULL,NULL,182,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(40,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jacobs, Claudio','Claudio Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','3740618228',NULL,'Sample Data','Claudio','F','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Jacobs',NULL,2,'1997-08-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(41,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Lee, Beula','Dr. Beula Lee',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1766744180',NULL,'Sample Data','Beula','','Lee',4,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Dr. Beula Lee',NULL,NULL,'1955-08-24',1,'2019-07-08',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(42,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Kernersville Advocacy Alliance','Kernersville Advocacy Alliance',NULL,NULL,NULL,NULL,NULL,'Both','3061699220',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Kernersville Advocacy Alliance',NULL,NULL,NULL,0,NULL,NULL,125,'Kernersville Advocacy Alliance',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(43,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Nielsen, Omar','Omar Nielsen',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','1831503188',NULL,'Sample Data','Omar','','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Nielsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(44,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Lashawnda','Ms. Lashawnda Patel',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3886858056',NULL,'Sample Data','Lashawnda','E','Patel',2,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Ms. Lashawnda Patel',NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(45,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'olsene85@airmail.co.in','olsene85@airmail.co.in',NULL,NULL,NULL,NULL,NULL,'Both','2464575467',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear olsene85@airmail.co.in',1,NULL,'Dear olsene85@airmail.co.in',1,NULL,'olsene85@airmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(46,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Kandace','Kandace Deforest',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1547944287',NULL,'Sample Data','Kandace','J','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Deforest',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(47,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Simpson Technology Trust','Simpson Technology Trust',NULL,NULL,NULL,NULL,NULL,'Both','337777674',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Simpson Technology Trust',NULL,NULL,NULL,0,NULL,NULL,162,'Simpson Technology Trust',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(48,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jensen, Kiara','Mrs. Kiara Jensen',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','4228592498',NULL,'Sample Data','Kiara','','Jensen',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Jensen',NULL,1,NULL,0,NULL,NULL,NULL,'White Marsh Sports School',NULL,NULL,191,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(49,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Princess','Mrs. Princess Jones',NULL,NULL,NULL,NULL,NULL,'Both','3647166533',NULL,'Sample Data','Princess','','Jones',1,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Mrs. Princess Jones',NULL,1,'1951-04-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(50,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Jones family','Jones family',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1110516799',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jones family',5,NULL,'Dear Jones family',2,NULL,'Jones family',NULL,NULL,NULL,0,NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(51,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Parker, Daren','Daren Parker Sr.',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','107757717',NULL,'Sample Data','Daren','','Parker',NULL,2,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Parker Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(52,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen-McReynolds family','Nielsen-McReynolds family',NULL,NULL,NULL,NULL,NULL,'Both','3729700158',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen-McReynolds family',5,NULL,'Dear Nielsen-McReynolds family',2,NULL,'Nielsen-McReynolds family',NULL,NULL,NULL,0,NULL,'Nielsen-McReynolds family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(53,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Teddy','Teddy Jameson II',NULL,NULL,NULL,NULL,NULL,'Both','4104650414',NULL,'Sample Data','Teddy','','Jameson',NULL,3,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Jameson II',NULL,2,'2007-03-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(54,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Bryon','Bryon Yadav III',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','1301093368',NULL,'Sample Data','Bryon','G','Yadav',NULL,4,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Bryon Yadav III',NULL,NULL,'1967-06-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(55,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Bernadette','Dr. Bernadette Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','3126349786',NULL,'Sample Data','Bernadette','','Ivanov',4,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Dr. Bernadette Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(56,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Missouri Arts Initiative','Missouri Arts Initiative',NULL,NULL,NULL,NULL,NULL,'Both','3834820123',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Missouri Arts Initiative',NULL,NULL,NULL,0,NULL,NULL,NULL,'Missouri Arts Initiative',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(57,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen-McReynolds, Esta','Mrs. Esta Nielsen-McReynolds',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3791995026',NULL,'Sample Data','Esta','','Nielsen-McReynolds',1,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Mrs. Esta Nielsen-McReynolds',NULL,1,'1982-02-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(58,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'jacobs-jamesonr51@testing.com','jacobs-jamesonr51@testing.com',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','1243854947',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear jacobs-jamesonr51@testing.com',1,NULL,'Dear jacobs-jamesonr51@testing.com',1,NULL,'jacobs-jamesonr51@testing.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(59,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Sherman','Dr. Sherman Jensen Jr.',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1444666503',NULL,'Sample Data','Sherman','M','Jensen',4,1,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Dr. Sherman Jensen Jr.',NULL,NULL,'1997-10-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(60,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Clint','Clint Deforest',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','2437706084',NULL,'Sample Data','Clint','','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Deforest',NULL,2,'1989-12-27',0,NULL,NULL,NULL,'Northpoint Poetry Initiative',NULL,NULL,96,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(61,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Atlanta Agriculture Solutions','Atlanta Agriculture Solutions',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','2010883488',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Atlanta Agriculture Solutions',NULL,NULL,NULL,0,NULL,NULL,NULL,'Atlanta Agriculture Solutions',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(62,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Barkley, Esta','Ms. Esta Barkley',NULL,NULL,NULL,NULL,NULL,'Both','2407753300',NULL,'Sample Data','Esta','I','Barkley',2,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Ms. Esta Barkley',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(63,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Ivanov, Laree','Laree Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','713398135',NULL,'Sample Data','Laree','P','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,'Local Music Alliance',NULL,NULL,172,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(64,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Müller, Miguel','Miguel Müller',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','317510167',NULL,'Sample Data','Miguel','Q','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Müller',NULL,2,'1999-11-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(65,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Jacob','Jacob Nielsen Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1661720619',NULL,'Sample Data','Jacob','','Nielsen',NULL,2,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Nielsen Sr.',NULL,2,'1998-09-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(66,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'teresayadav@testing.net','teresayadav@testing.net',NULL,NULL,NULL,NULL,NULL,'Both','3576891443',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear teresayadav@testing.net',1,NULL,'Dear teresayadav@testing.net',1,NULL,'teresayadav@testing.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(67,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Rolando','Dr. Rolando Samson III',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','3728356464',NULL,'Sample Data','Rolando','Z','Samson',4,4,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Samson III',NULL,2,NULL,1,'2018-11-09',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(68,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest-Ivanov, Herminia','Ms. Herminia Deforest-Ivanov',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','669810303',NULL,'Sample Data','Herminia','M','Deforest-Ivanov',2,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Ms. Herminia Deforest-Ivanov',NULL,NULL,'1975-11-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(69,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Parker, Allen','Dr. Allen Parker',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','710842690',NULL,'Sample Data','Allen','','Parker',4,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Parker',NULL,NULL,'1978-09-05',1,'2018-10-04',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(70,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'dimitrovi56@spamalot.net','dimitrovi56@spamalot.net',NULL,NULL,NULL,NULL,NULL,'Both','2613972798',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear dimitrovi56@spamalot.net',1,NULL,'Dear dimitrovi56@spamalot.net',1,NULL,'dimitrovi56@spamalot.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(71,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen family','Nielsen family',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','766698874',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen family',5,NULL,'Dear Nielsen family',2,NULL,'Nielsen family',NULL,NULL,NULL,0,NULL,'Nielsen family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(72,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Ivanov, Herminia','Dr. Herminia Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','3410851077',NULL,'Sample Data','Herminia','','Ivanov',4,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Dr. Herminia Ivanov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(73,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'adamss@example.info','adamss@example.info',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','968220667',NULL,'Sample Data',NULL,NULL,NULL,NULL,3,NULL,NULL,1,NULL,'Dear adamss@example.info',1,NULL,'Dear adamss@example.info',1,NULL,'adamss@example.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(74,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen family','Jensen family',NULL,NULL,NULL,NULL,NULL,'Both','797435572',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jensen family',5,NULL,'Dear Jensen family',2,NULL,'Jensen family',NULL,NULL,NULL,0,NULL,'Jensen family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(75,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Robertson-Smith, Magan','Magan Robertson-Smith',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','370591172',NULL,'Sample Data','Magan','L','Robertson-Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Robertson-Smith',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(76,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Terrell, Jed','Mr. Jed Terrell',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1773288305',NULL,'Sample Data','Jed','N','Terrell',3,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Mr. Jed Terrell',NULL,2,'1930-10-27',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(77,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Patel, Rodrigo','Rodrigo Patel',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','631852002',NULL,'Sample Data','Rodrigo','','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Rodrigo Patel',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(78,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'samson.arlyne94@testmail.net','samson.arlyne94@testmail.net',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','4232787254',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear samson.arlyne94@testmail.net',1,NULL,'Dear samson.arlyne94@testmail.net',1,NULL,'samson.arlyne94@testmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(79,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Reynolds, Andrew','Andrew Reynolds',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3309670970',NULL,'Sample Data','Andrew','T','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Reynolds',NULL,2,'1932-08-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(80,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Adams, Shauna','Shauna Adams',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','1778468249',NULL,'Sample Data','Shauna','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Adams',NULL,1,'1982-07-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(81,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Jacob','Dr. Jacob Jones Sr.',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','210245998',NULL,'Sample Data','Jacob','','Jones',4,2,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Dr. Jacob Jones Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(82,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Parker, Josefa','Dr. Josefa Parker',NULL,NULL,NULL,NULL,NULL,'Both','2643167156',NULL,'Sample Data','Josefa','Q','Parker',4,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Dr. Josefa Parker',NULL,1,'1958-05-04',0,NULL,NULL,NULL,'Local Empowerment Solutions',NULL,NULL,29,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(83,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Lumber City Development Fellowship','Lumber City Development Fellowship',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','1771565526',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lumber City Development Fellowship',NULL,NULL,NULL,0,NULL,NULL,28,'Lumber City Development Fellowship',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(84,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jacobs-Jameson, Daren','Daren Jacobs-Jameson Jr.',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','2325699535',NULL,'Sample Data','Daren','S','Jacobs-Jameson',NULL,1,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Jacobs-Jameson Jr.',NULL,2,'1991-08-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(85,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Nielsen, Josefa','Dr. Josefa Nielsen',NULL,NULL,NULL,NULL,NULL,'Both','3267028471',NULL,'Sample Data','Josefa','B','Nielsen',4,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Dr. Josefa Nielsen',NULL,NULL,'1960-02-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(86,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Elina','Elina Wagner',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','4003830950',NULL,'Sample Data','Elina','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Wagner',NULL,1,'1962-07-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(87,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Bachman, Margaret','Dr. Margaret Bachman',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2110616060',NULL,'Sample Data','Margaret','W','Bachman',4,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Dr. Margaret Bachman',NULL,NULL,'1979-12-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(88,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Smith, Barry','Barry Smith Jr.',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3850252418',NULL,'Sample Data','Barry','','Smith',NULL,1,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Smith Jr.',NULL,NULL,'1979-05-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(89,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Arlyne','Arlyne McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','1526771757',NULL,'Sample Data','Arlyne','','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne McReynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(90,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Deforest, Craig','Mr. Craig Deforest III',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','3831945065',NULL,'Sample Data','Craig','C','Deforest',3,4,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Mr. Craig Deforest III',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(91,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'McReynolds, Valene','Valene McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','2007971144',NULL,'Sample Data','Valene','K','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene McReynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(92,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Kathlyn','Kathlyn Smith',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','97768727',NULL,'Sample Data','Kathlyn','V','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Smith',NULL,1,'1962-04-25',1,'2018-11-25',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(93,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'El Camino Advocacy Collective','El Camino Advocacy Collective',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','1871149562',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'El Camino Advocacy Collective',NULL,NULL,NULL,0,NULL,NULL,103,'El Camino Advocacy Collective',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(94,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'dimitrov.bryon75@notmail.org','dimitrov.bryon75@notmail.org',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','637290274',NULL,'Sample Data',NULL,NULL,NULL,NULL,3,NULL,NULL,1,NULL,'Dear dimitrov.bryon75@notmail.org',1,NULL,'Dear dimitrov.bryon75@notmail.org',1,NULL,'dimitrov.bryon75@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(95,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Megan','Megan Deforest',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','588269616',NULL,'Sample Data','Megan','','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Deforest',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(96,'Organization',NULL,1,1,0,0,0,0,NULL,NULL,'Northpoint Poetry Initiative','Northpoint Poetry Initiative',NULL,NULL,NULL,NULL,NULL,'Both','3512734240',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Northpoint Poetry Initiative',NULL,NULL,NULL,0,NULL,NULL,60,'Northpoint Poetry Initiative',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(97,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'brigetteyadav10@lol.co.pl','brigetteyadav10@lol.co.pl',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','72022308',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear brigetteyadav10@lol.co.pl',1,NULL,'Dear brigetteyadav10@lol.co.pl',1,NULL,'brigetteyadav10@lol.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(98,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Bay Wellness Partnership','Bay Wellness Partnership',NULL,NULL,NULL,NULL,NULL,'Both','3828719205',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bay Wellness Partnership',NULL,NULL,NULL,0,NULL,NULL,117,'Bay Wellness Partnership',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(99,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Mei','Dr. Mei Müller',NULL,NULL,NULL,NULL,NULL,'Both','726297805',NULL,'Sample Data','Mei','H','Müller',4,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Dr. Mei Müller',NULL,1,'1982-03-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(100,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest family','Deforest family',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','3235379039',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Deforest family',5,NULL,'Dear Deforest family',2,NULL,'Deforest family',NULL,NULL,NULL,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(101,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jameson, Jackson','Dr. Jackson Jameson Jr.',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','680754950',NULL,'Sample Data','Jackson','S','Jameson',4,1,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Jameson Jr.',NULL,NULL,'1947-05-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(102,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Russell','Dr. Russell Jensen III',NULL,NULL,NULL,NULL,NULL,'Both','1300991464',NULL,'Sample Data','Russell','R','Jensen',4,4,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Dr. Russell Jensen III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(103,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Bob','Dr. Bob Cruz II',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1833840419',NULL,'Sample Data','Bob','','Cruz',4,3,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Dr. Bob Cruz II',NULL,NULL,'1965-05-03',1,NULL,NULL,NULL,'El Camino Advocacy Collective',NULL,NULL,93,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(104,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Beula','Beula Müller',NULL,NULL,NULL,NULL,NULL,'Both','521667941',NULL,'Sample Data','Beula','','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Müller',NULL,1,'1931-09-07',1,'2018-10-01',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(105,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Smith, Sanford','Sanford Smith III',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2584375586',NULL,'Sample Data','Sanford','','Smith',NULL,4,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Smith III',NULL,NULL,'1969-11-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(106,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'samuelsa@airmail.net','samuelsa@airmail.net',NULL,NULL,NULL,NULL,NULL,'Both','1557955432',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,NULL,1,NULL,'Dear samuelsa@airmail.net',1,NULL,'Dear samuelsa@airmail.net',1,NULL,'samuelsa@airmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(107,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Müller family','Müller family',NULL,NULL,NULL,NULL,NULL,'Both','1144797465',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Müller family',5,NULL,'Dear Müller family',2,NULL,'Müller family',NULL,NULL,NULL,0,NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(108,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Rolando','Rolando Nielsen III',NULL,NULL,NULL,NULL,NULL,'Both','1720954446',NULL,'Sample Data','Rolando','Y','Nielsen',NULL,4,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Nielsen III',NULL,NULL,'1960-12-04',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(109,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Billy','Dr. Billy Jensen',NULL,NULL,NULL,NULL,NULL,'Both','1055811033',NULL,'Sample Data','Billy','','Jensen',4,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Dr. Billy Jensen',NULL,NULL,'1967-07-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(110,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Jacobs-Jameson family','Jacobs-Jameson family',NULL,NULL,NULL,NULL,NULL,'Both','2511058201',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jacobs-Jameson family',5,NULL,'Dear Jacobs-Jameson family',2,NULL,'Jacobs-Jameson family',NULL,NULL,NULL,0,NULL,'Jacobs-Jameson family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(111,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'González, Jacob','Jacob González III',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','2352039359',NULL,'Sample Data','Jacob','','González',NULL,4,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob González III',NULL,2,'1942-08-13',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(112,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wilson, Errol','Errol Wilson',NULL,NULL,NULL,NULL,NULL,'Both','1627252863',NULL,'Sample Data','Errol','A','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Wilson',NULL,2,'1973-01-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(113,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Robertson, Barry','Dr. Barry Robertson',NULL,NULL,NULL,NULL,NULL,'Both','3681115611',NULL,'Sample Data','Barry','P','Robertson',4,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Dr. Barry Robertson',NULL,2,NULL,1,'2019-05-23',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(114,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Ashley','Ashley Adams',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','2907231858',NULL,'Sample Data','Ashley','T','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Adams',NULL,1,'2001-10-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(115,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samson, Maxwell','Maxwell Samson',NULL,NULL,NULL,NULL,NULL,'Both','3358700661',NULL,'Sample Data','Maxwell','','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Samson',NULL,NULL,'1977-02-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(116,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Jacobs, Jerome','Dr. Jerome Jacobs II',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','3771685800',NULL,'Sample Data','Jerome','','Jacobs',4,3,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Dr. Jerome Jacobs II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(117,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Shauna','Shauna Olsen',NULL,NULL,NULL,NULL,NULL,'Both','774481679',NULL,'Sample Data','Shauna','','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Olsen',NULL,1,NULL,0,NULL,NULL,NULL,'Bay Wellness Partnership',NULL,NULL,98,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(118,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'jensenr90@airmail.co.pl','jensenr90@airmail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','245011405',NULL,'Sample Data',NULL,NULL,NULL,NULL,2,NULL,NULL,1,NULL,'Dear jensenr90@airmail.co.pl',1,NULL,'Dear jensenr90@airmail.co.pl',1,NULL,'jensenr90@airmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(119,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Bob','Dr. Bob Jones',NULL,NULL,NULL,NULL,NULL,'Both','3998571591',NULL,'Sample Data','Bob','T','Jones',4,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Dr. Bob Jones',NULL,2,'1952-10-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(120,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'teresapatel@infomail.co.in','teresapatel@infomail.co.in',NULL,NULL,NULL,NULL,NULL,'Both','228692150',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear teresapatel@infomail.co.in',1,NULL,'Dear teresapatel@infomail.co.in',1,NULL,'teresapatel@infomail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(121,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Deforest, Princess','Dr. Princess Deforest',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1925726838',NULL,'Sample Data','Princess','','Deforest',4,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Dr. Princess Deforest',NULL,1,'1935-11-01',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(122,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Müller, Ashley','Mrs. Ashley Müller',NULL,NULL,NULL,NULL,NULL,'Both','1765273869',NULL,'Sample Data','Ashley','','Müller',1,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mrs. Ashley Müller',NULL,NULL,'1945-11-13',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(123,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Łąchowski, Brent','Brent Łąchowski',NULL,NULL,NULL,NULL,NULL,'Both','1516135364',NULL,'Sample Data','Brent','','Łąchowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Łąchowski',NULL,2,'1997-01-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(124,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Zope, Irvin','Irvin Zope II',NULL,NULL,NULL,NULL,NULL,'Both','1828686361',NULL,'Sample Data','Irvin','','Zope',NULL,3,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Zope II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(125,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Erik','Mr. Erik Jones',NULL,NULL,NULL,NULL,NULL,'Both','2330527587',NULL,'Sample Data','Erik','D','Jones',3,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Mr. Erik Jones',NULL,2,NULL,0,NULL,NULL,NULL,'Kernersville Advocacy Alliance',NULL,NULL,42,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(126,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Errol','Errol Cruz III',NULL,NULL,NULL,NULL,NULL,'Both','4273315760',NULL,'Sample Data','Errol','U','Cruz',NULL,4,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Cruz III',NULL,2,'1985-12-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(127,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Prentice, Jerome','Dr. Jerome Prentice',NULL,NULL,NULL,NULL,NULL,'Both','2816560525',NULL,'Sample Data','Jerome','V','Prentice',4,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Dr. Jerome Prentice',NULL,2,'1941-04-23',1,'2019-01-25',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(128,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Landon','Dr. Landon Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','3544857327',NULL,'Sample Data','Landon','','Dimitrov',4,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Dr. Landon Dimitrov',NULL,2,'1980-09-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(129,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'au.jones51@notmail.co.uk','au.jones51@notmail.co.uk',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','2540604198',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear au.jones51@notmail.co.uk',1,NULL,'Dear au.jones51@notmail.co.uk',1,NULL,'au.jones51@notmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(130,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Megan','Megan Yadav',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','2317893883',NULL,'Sample Data','Megan','S','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(131,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Terrell, Jackson','Dr. Jackson Terrell',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','3811181672',NULL,'Sample Data','Jackson','K','Terrell',4,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Terrell',NULL,2,NULL,1,'2019-04-30',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(132,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Errol','Dr. Errol Jones Jr.',NULL,NULL,NULL,NULL,NULL,'Both','908628622',NULL,'Sample Data','Errol','','Jones',4,1,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Jones Jr.',NULL,NULL,'1978-12-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(133,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Bryon','Dr. Bryon Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','2100976885',NULL,'Sample Data','Bryon','','Jacobs',4,NULL,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Dr. Bryon Jacobs',NULL,NULL,'1955-10-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(134,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jacobs, Ashlie','Ashlie Jacobs',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1009124847',NULL,'Sample Data','Ashlie','V','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Jacobs',NULL,1,'1967-11-21',0,NULL,NULL,NULL,'Global Sports Trust',NULL,NULL,138,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(135,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Elina','Elina Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','3932041193',NULL,'Sample Data','Elina','R','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Jacobs',NULL,1,'1996-08-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(136,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samson, Josefa','Ms. Josefa Samson',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','3599094976',NULL,'Sample Data','Josefa','X','Samson',2,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Ms. Josefa Samson',NULL,1,'1985-12-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(137,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Community Software Fund','Community Software Fund',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','1336423295',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Software Fund',NULL,NULL,NULL,0,NULL,NULL,187,'Community Software Fund',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(138,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Global Sports Trust','Global Sports Trust',NULL,NULL,NULL,NULL,NULL,'Both','2008289903',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Sports Trust',NULL,NULL,NULL,0,NULL,NULL,134,'Global Sports Trust',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(139,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Carylon','Carylon Jacobs',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','548653672',NULL,'Sample Data','Carylon','Q','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Jacobs',NULL,1,'1965-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(140,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Reynolds, Allan','Allan Reynolds III',NULL,NULL,NULL,NULL,NULL,'Both','2732914112',NULL,'Sample Data','Allan','','Reynolds',NULL,4,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Reynolds III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(141,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Caulder Sports Fund','Caulder Sports Fund',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','1126006360',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Caulder Sports Fund',NULL,NULL,NULL,0,NULL,NULL,145,'Caulder Sports Fund',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(142,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Zope-Patel, Kiara','Kiara Zope-Patel',NULL,NULL,NULL,NULL,NULL,'Both','925434648',NULL,'Sample Data','Kiara','','Zope-Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Zope-Patel',NULL,1,'1997-12-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(143,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Smith family','Smith family',NULL,NULL,NULL,NULL,NULL,'Both','4082772645',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Smith family',5,NULL,'Dear Smith family',2,NULL,'Smith family',NULL,NULL,NULL,0,NULL,'Smith family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(144,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Díaz, Lashawnda','Lashawnda Díaz',NULL,NULL,NULL,NULL,NULL,'Both','2462862160',NULL,'Sample Data','Lashawnda','','Díaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Díaz',NULL,NULL,'1987-12-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(145,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Samuels, Tanya','Tanya Samuels',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','147060242',NULL,'Sample Data','Tanya','','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Samuels',NULL,1,'1961-03-15',0,NULL,NULL,NULL,'Caulder Sports Fund',NULL,NULL,141,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(146,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Brittney','Mrs. Brittney Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','3787428926',NULL,'Sample Data','Brittney','','Ivanov',1,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Mrs. Brittney Ivanov',NULL,NULL,'1964-08-26',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(147,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cruz, Carlos','Mr. Carlos Cruz Jr.',NULL,NULL,NULL,NULL,NULL,'Both','149105357',NULL,'Sample Data','Carlos','','Cruz',3,1,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Mr. Carlos Cruz Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(148,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Adams, Herminia','Herminia Adams',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','1782178525',NULL,'Sample Data','Herminia','Q','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Adams',NULL,NULL,'1998-02-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(149,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Dimitrov, Kathlyn','Kathlyn Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','3934921435',NULL,'Sample Data','Kathlyn','','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Dimitrov',NULL,1,'1982-01-25',0,NULL,NULL,NULL,'Main Arts Center',NULL,NULL,160,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(150,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Alexia','Alexia Müller',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','3709597045',NULL,'Sample Data','Alexia','','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Müller',NULL,1,'1993-08-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(151,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Grant, Russell','Russell Grant',NULL,NULL,NULL,NULL,NULL,'Both','388937713',NULL,'Sample Data','Russell','','Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Grant',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(152,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Shad','Shad Jacobs Sr.',NULL,NULL,NULL,NULL,NULL,'Both','3732235082',NULL,'Sample Data','Shad','M','Jacobs',NULL,2,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Jacobs Sr.',NULL,2,'2007-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(153,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Jensen, Santina','Ms. Santina Jensen',NULL,NULL,NULL,NULL,NULL,'Both','864111104',NULL,'Sample Data','Santina','L','Jensen',2,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Ms. Santina Jensen',NULL,1,'1947-04-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(154,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Zope-Patel family','Zope-Patel family',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3836073694',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Zope-Patel family',5,NULL,'Dear Zope-Patel family',2,NULL,'Zope-Patel family',NULL,NULL,NULL,0,NULL,'Zope-Patel family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(155,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Bachman, Erik','Erik Bachman',NULL,NULL,NULL,NULL,NULL,'Both','620728720',NULL,'Sample Data','Erik','C','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Bachman',NULL,2,NULL,1,'2018-12-04',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(156,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Betty','Betty Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','206687423',NULL,'Sample Data','Betty','M','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Betty Dimitrov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(157,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov family','Dimitrov family',NULL,NULL,NULL,NULL,NULL,'Both','3351288571',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov family',5,NULL,'Dear Dimitrov family',2,NULL,'Dimitrov family',NULL,NULL,NULL,0,NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(158,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Cruz, Claudio','Claudio Cruz Sr.',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','3764731328',NULL,'Sample Data','Claudio','','Cruz',NULL,2,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Cruz Sr.',NULL,2,'1979-02-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(159,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Patel, Kiara','Dr. Kiara Patel',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2968776132',NULL,'Sample Data','Kiara','N','Patel',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara Patel',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(160,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Main Arts Center','Main Arts Center',NULL,NULL,NULL,NULL,NULL,'Both','2905406863',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Main Arts Center',NULL,NULL,NULL,0,NULL,NULL,149,'Main Arts Center',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(161,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Scott','Scott Jacobs III',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','2229288735',NULL,'Sample Data','Scott','O','Jacobs',NULL,4,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Jacobs III',NULL,2,NULL,1,'2019-09-12',NULL,NULL,'Baker Peace Solutions',NULL,NULL,175,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(162,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Barkley, Bernadette','Bernadette Barkley',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2929366721',NULL,'Sample Data','Bernadette','','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Barkley',NULL,NULL,NULL,0,NULL,NULL,NULL,'Simpson Technology Trust',NULL,NULL,47,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(163,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Allan','Mr. Allan Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','238176924',NULL,'Sample Data','Allan','','Jacobs',3,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Mr. Allan Jacobs',NULL,NULL,'1959-08-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(164,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman family','Bachman family',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','1714131215',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Bachman family',5,NULL,'Dear Bachman family',2,NULL,'Bachman family',NULL,NULL,NULL,0,NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(165,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'estajensen@lol.org','estajensen@lol.org',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','3862874273',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear estajensen@lol.org',1,NULL,'Dear estajensen@lol.org',1,NULL,'estajensen@lol.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(166,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Ray','Ray Ivanov Sr.',NULL,NULL,NULL,NULL,NULL,'Both','2368574076',NULL,'Sample Data','Ray','L','Ivanov',NULL,2,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Ivanov Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(167,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Brzęczysław','Brzęczysław Deforest Sr.',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','5133953',NULL,'Sample Data','Brzęczysław','','Deforest',NULL,2,NULL,NULL,1,NULL,'Dear Brzęczysław',1,NULL,'Dear Brzęczysław',1,NULL,'Brzęczysław Deforest Sr.',NULL,2,'2002-10-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(168,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Maple Software School','Maple Software School',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','2802269565',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Maple Software School',NULL,NULL,NULL,0,NULL,NULL,38,'Maple Software School',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(169,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'jones-lee.brigette@mymail.co.in','jones-lee.brigette@mymail.co.in',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','2628951062',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear jones-lee.brigette@mymail.co.in',1,NULL,'Dear jones-lee.brigette@mymail.co.in',1,NULL,'jones-lee.brigette@mymail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(170,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope-Patel, Toby','Toby Zope-Patel',NULL,NULL,NULL,NULL,NULL,'Both','1314531740',NULL,'Sample Data','Toby','','Zope-Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Zope-Patel',NULL,2,'1990-06-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(171,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Truman','Truman Dimitrov',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','231051732',NULL,'Sample Data','Truman','C','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Dimitrov',NULL,2,'1948-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(172,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Local Music Alliance','Local Music Alliance',NULL,NULL,NULL,NULL,NULL,'Both','1337624696',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Music Alliance',NULL,NULL,NULL,0,NULL,NULL,63,'Local Music Alliance',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(173,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Bachman, Lawerence','Dr. Lawerence Bachman',NULL,NULL,NULL,NULL,NULL,'Both','2961144560',NULL,'Sample Data','Lawerence','G','Bachman',4,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Dr. Lawerence Bachman',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(174,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Jackson','Dr. Jackson Nielsen III',NULL,NULL,NULL,NULL,NULL,'Both','1699263324',NULL,'Sample Data','Jackson','','Nielsen',4,4,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Nielsen III',NULL,2,NULL,1,'2019-01-11',NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(175,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Baker Peace Solutions','Baker Peace Solutions',NULL,NULL,NULL,'\ 12\ 1',NULL,'Both','1950822334',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Baker Peace Solutions',NULL,NULL,NULL,0,NULL,NULL,161,'Baker Peace Solutions',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(176,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Herminia','Herminia Jameson',NULL,NULL,NULL,NULL,NULL,'Both','2172372210',NULL,'Sample Data','Herminia','B','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Jameson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(177,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Jones, Josefa','Ms. Josefa Jones',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','3294876457',NULL,'Sample Data','Josefa','I','Jones',2,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Ms. Josefa Jones',NULL,1,'1975-06-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(178,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Junko','Junko Smith',NULL,NULL,NULL,NULL,NULL,'Both','1889402326',NULL,'Sample Data','Junko','','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko Smith',NULL,1,'2000-03-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(179,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Maxwell','Maxwell Dimitrov II',NULL,NULL,NULL,NULL,NULL,'Both','2461663646',NULL,'Sample Data','Maxwell','Y','Dimitrov',NULL,3,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Dimitrov II',NULL,NULL,'2002-10-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(180,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Miguel','Miguel Jones',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3236387575',NULL,'Sample Data','Miguel','','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Jones',NULL,NULL,'1952-06-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(181,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Robertson, Roland','Roland Robertson II',NULL,NULL,NULL,NULL,NULL,'Both','2663656740',NULL,'Sample Data','Roland','','Robertson',NULL,3,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Robertson II',NULL,2,'1941-06-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(182,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Cheshire Action Center','Cheshire Action Center',NULL,NULL,NULL,NULL,NULL,'Both','3880160044',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Cheshire Action Center',NULL,NULL,NULL,0,NULL,NULL,39,'Cheshire Action Center',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(183,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jacobs, Lawerence','Lawerence Jacobs',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','2914828015',NULL,'Sample Data','Lawerence','','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Jacobs',NULL,NULL,'1979-06-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(184,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'nielsen.j.angelika@lol.org','nielsen.j.angelika@lol.org',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','2999481481',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear nielsen.j.angelika@lol.org',1,NULL,'Dear nielsen.j.angelika@lol.org',1,NULL,'nielsen.j.angelika@lol.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(185,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jones, Brent','Mr. Brent Jones II',NULL,NULL,NULL,NULL,NULL,'Both','2534822524',NULL,'Sample Data','Brent','R','Jones',3,3,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Mr. Brent Jones II',NULL,2,'1970-01-29',1,'2019-02-05',NULL,NULL,'States Culture Collective',NULL,NULL,4,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(186,'Organization',NULL,0,1,0,0,1,0,NULL,NULL,'Texas Technology Partners','Texas Technology Partners',NULL,NULL,NULL,'\ 11\ 1',NULL,'Both','1008431822',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Texas Technology Partners',NULL,NULL,NULL,0,NULL,NULL,NULL,'Texas Technology Partners',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(187,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts, Kandace','Kandace Roberts',NULL,NULL,NULL,NULL,NULL,'Both','3760408869',NULL,'Sample Data','Kandace','','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Roberts',NULL,1,NULL,0,NULL,NULL,NULL,'Community Software Fund',NULL,NULL,137,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(188,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Heidi','Heidi Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','1354340123',NULL,'Sample Data','Heidi','','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Ivanov',NULL,1,'1985-03-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(189,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Jacobs, Bernadette','Bernadette Jacobs',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','4086516301',NULL,'Sample Data','Bernadette','D','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Jacobs',NULL,NULL,'1984-10-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(190,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Elizabeth','Mrs. Elizabeth Bachman',NULL,NULL,NULL,NULL,NULL,'Both','2403880070',NULL,'Sample Data','Elizabeth','','Bachman',1,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Mrs. Elizabeth Bachman',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(191,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'White Marsh Sports School','White Marsh Sports School',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','3409844628',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'White Marsh Sports School',NULL,NULL,NULL,0,NULL,NULL,48,'White Marsh Sports School',NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(192,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Łąchowski, Lincoln','Mr. Lincoln Łąchowski Jr.',NULL,NULL,NULL,NULL,NULL,'Both','4115738277',NULL,'Sample Data','Lincoln','X','Łąchowski',3,1,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Mr. Lincoln Łąchowski Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(193,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Jacob','Jacob Ivanov Sr.',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','3702183609',NULL,'Sample Data','Jacob','P','Ivanov',NULL,2,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Ivanov Sr.',NULL,2,'1990-08-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(194,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones-Lee, Erik','Erik Jones-Lee',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','1686496511',NULL,'Sample Data','Erik','A','Jones-Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Jones-Lee',NULL,NULL,'2015-05-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(195,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'carlosl@fishmail.co.pl','carlosl@fishmail.co.pl',NULL,NULL,NULL,'\ 13\ 1',NULL,'Both','2728934294',NULL,'Sample Data',NULL,NULL,NULL,NULL,3,NULL,NULL,1,NULL,'Dear carlosl@fishmail.co.pl',1,NULL,'Dear carlosl@fishmail.co.pl',1,NULL,'carlosl@fishmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(196,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels family','Samuels family',NULL,NULL,NULL,'\ 15\ 1',NULL,'Both','350459294',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels family',5,NULL,'Dear Samuels family',2,NULL,'Samuels family',NULL,NULL,NULL,0,NULL,'Samuels family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(197,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Reynolds, Elizabeth','Elizabeth Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','3578793204',NULL,'Sample Data','Elizabeth','','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Reynolds',NULL,NULL,'1956-01-03',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(198,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Brigette','Dr. Brigette Olsen',NULL,NULL,NULL,'\ 14\ 1',NULL,'Both','2958585175',NULL,'Sample Data','Brigette','','Olsen',4,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Dr. Brigette Olsen',NULL,NULL,'1978-09-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(199,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Nielsen, Barry','Barry Nielsen Jr.',NULL,NULL,NULL,NULL,NULL,'Both','999751517',NULL,'Sample Data','Barry','','Nielsen',NULL,1,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Nielsen Jr.',NULL,NULL,'1999-04-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27'),(200,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Jacobs family','Jacobs family',NULL,NULL,NULL,NULL,NULL,'Both','1498986649',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jacobs family',5,NULL,'Dear Jacobs family',2,NULL,'Jacobs family',NULL,NULL,NULL,0,NULL,'Jacobs family',NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:28'),(201,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'yadavi@infomail.co.uk','yadavi@infomail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','4200254589',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear yadavi@infomail.co.uk',1,NULL,'Dear yadavi@infomail.co.uk',1,NULL,'yadavi@infomail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2019-09-20 19:57:27','2019-09-20 19:57:27');
 /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -228,7 +228,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_contribution` WRITE;
 /*!40000 ALTER TABLE `civicrm_contribution` DISABLE KEYS */;
-INSERT INTO `civicrm_contribution` (`id`, `contact_id`, `financial_type_id`, `contribution_page_id`, `payment_instrument_id`, `receive_date`, `non_deductible_amount`, `total_amount`, `fee_amount`, `net_amount`, `trxn_id`, `invoice_id`, `invoice_number`, `currency`, `cancel_date`, `cancel_reason`, `receipt_date`, `thankyou_date`, `source`, `amount_level`, `contribution_recur_id`, `is_test`, `is_pay_later`, `contribution_status_id`, `address_id`, `check_number`, `campaign_id`, `creditnote_id`, `tax_amount`, `revenue_recognition_date`) VALUES (1,2,1,NULL,4,'2010-04-11 00:00:00',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,NULL,NULL),(2,4,1,NULL,1,'2010-03-21 00:00:00',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(3,6,1,NULL,4,'2010-04-29 00:00:00',0.00,25.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,NULL,NULL),(4,8,1,NULL,4,'2010-04-11 00:00:00',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,NULL,NULL),(5,16,1,NULL,4,'2010-04-15 00:00:00',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,NULL,NULL),(6,19,1,NULL,4,'2010-04-11 00:00:00',0.00,175.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,NULL,NULL),(7,82,1,NULL,1,'2010-03-27 00:00:00',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(8,92,1,NULL,1,'2010-03-08 00:00:00',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(9,34,1,NULL,1,'2010-04-22 00:00:00',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(10,71,1,NULL,1,'2009-07-01 11:53:50',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(11,43,1,NULL,1,'2009-07-01 12:55:41',0.00,200.00,NULL,NULL,'PL43II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(12,32,1,NULL,1,'2009-10-01 11:53:50',0.00,200.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(13,32,1,NULL,1,'2009-12-01 12:55:41',0.00,200.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(14,177,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(15,60,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(16,170,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(17,90,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(18,149,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(19,52,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(20,132,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(21,115,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(22,105,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(23,18,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(24,12,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(25,113,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(26,26,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(27,134,2,NULL,1,'2019-08-16 09:31:31',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(28,148,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(29,124,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(30,7,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(31,95,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(32,16,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(33,46,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(34,116,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(35,8,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(36,42,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(37,118,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(38,36,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(39,57,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(40,182,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(41,183,2,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(42,159,2,NULL,1,'2019-08-16 09:31:31',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(43,78,2,NULL,1,'2019-08-16 09:31:31',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(45,2,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(46,4,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(47,7,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(48,8,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(49,10,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(50,13,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(51,18,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(52,20,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(53,23,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(54,26,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(55,30,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(56,31,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(57,32,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(58,34,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(59,41,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(60,42,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(61,48,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(62,50,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(63,62,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(64,63,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(65,79,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(66,82,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(67,90,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(68,99,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(69,107,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(70,108,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(71,111,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(72,119,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(73,128,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(74,132,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(75,133,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(76,137,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(77,141,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(78,150,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(79,156,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(80,160,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(81,163,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(82,167,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(83,172,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(84,173,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(85,181,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(86,182,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(87,183,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(88,184,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(89,185,4,NULL,1,'2019-08-16 09:31:31',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(90,186,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(91,188,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(92,191,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(93,196,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(94,199,4,NULL,1,'2019-08-16 09:31:31',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-08-16 09:31:31',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `civicrm_contribution` (`id`, `contact_id`, `financial_type_id`, `contribution_page_id`, `payment_instrument_id`, `receive_date`, `non_deductible_amount`, `total_amount`, `fee_amount`, `net_amount`, `trxn_id`, `invoice_id`, `invoice_number`, `currency`, `cancel_date`, `cancel_reason`, `receipt_date`, `thankyou_date`, `source`, `amount_level`, `contribution_recur_id`, `is_test`, `is_pay_later`, `contribution_status_id`, `address_id`, `check_number`, `campaign_id`, `creditnote_id`, `tax_amount`, `revenue_recognition_date`) VALUES (1,2,1,NULL,4,'2010-04-11 00:00:00',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,NULL,NULL),(2,4,1,NULL,1,'2010-03-21 00:00:00',0.00,50.00,NULL,NULL,'P20901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(3,6,1,NULL,4,'2010-04-29 00:00:00',0.00,25.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,NULL,NULL),(4,8,1,NULL,4,'2010-04-11 00:00:00',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,NULL,NULL),(5,16,1,NULL,4,'2010-04-15 00:00:00',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,NULL,NULL),(6,19,1,NULL,4,'2010-04-11 00:00:00',0.00,175.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,NULL,NULL),(7,82,1,NULL,1,'2010-03-27 00:00:00',0.00,50.00,NULL,NULL,'P20193L2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(8,92,1,NULL,1,'2010-03-08 00:00:00',0.00,10.00,NULL,NULL,'P40232Y3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(9,34,1,NULL,1,'2010-04-22 00:00:00',0.00,250.00,NULL,NULL,'P20193L6',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Help CiviCRM',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(10,71,1,NULL,1,'2009-07-01 11:53:50',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(11,43,1,NULL,1,'2009-07-01 12:55:41',0.00,200.00,NULL,NULL,'PL43II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(12,32,1,NULL,1,'2009-10-01 11:53:50',0.00,200.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(13,32,1,NULL,1,'2009-12-01 12:55:41',0.00,200.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(14,130,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(15,145,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(16,53,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(17,57,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(18,178,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(19,46,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(20,123,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(21,39,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(22,19,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(23,104,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(24,10,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(25,62,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(26,113,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(27,101,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(28,197,2,NULL,1,'2019-09-20 12:57:29',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(29,91,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(30,125,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(31,35,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(32,190,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(33,151,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(34,192,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(35,16,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(36,36,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(37,92,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(38,121,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(39,89,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(40,134,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(41,69,2,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(42,153,2,NULL,1,'2019-09-20 12:57:29',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(43,173,2,NULL,1,'2019-09-20 12:57:29',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(45,1,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(46,5,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(47,8,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(48,18,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(49,21,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(50,30,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(51,34,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(52,37,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(53,41,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(54,45,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(55,49,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(56,55,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(57,57,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(58,58,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(59,67,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(60,69,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(61,72,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(62,75,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(63,83,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(64,86,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(65,89,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(66,91,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(67,92,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(68,93,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(69,99,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(70,105,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(71,108,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(72,114,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(73,119,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(74,120,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(75,124,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(76,127,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(77,135,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(78,139,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(79,143,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(80,145,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(81,153,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(82,157,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(83,159,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(84,163,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(85,170,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(86,178,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(87,179,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(88,183,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(89,184,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(90,186,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(91,187,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(92,189,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(93,190,4,NULL,1,'2019-09-20 12:57:29',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(94,193,4,NULL,1,'2019-09-20 12:57:29',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2019-09-20 12:57:29',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -266,7 +266,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_contribution_soft` WRITE;
 /*!40000 ALTER TABLE `civicrm_contribution_soft` DISABLE KEYS */;
-INSERT INTO `civicrm_contribution_soft` (`id`, `contribution_id`, `contact_id`, `amount`, `currency`, `pcp_id`, `pcp_display_in_roll`, `pcp_roll_nickname`, `pcp_personal_note`, `soft_credit_type_id`) VALUES (1,8,57,10.00,'USD',1,1,'Jones Family','Helping Hands',10),(2,9,57,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10);
+INSERT INTO `civicrm_contribution_soft` (`id`, `contribution_id`, `contact_id`, `amount`, `currency`, `pcp_id`, `pcp_display_in_roll`, `pcp_roll_nickname`, `pcp_personal_note`, `soft_credit_type_id`) VALUES (1,8,187,10.00,'USD',1,1,'Jones Family','Helping Hands',10),(2,9,187,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10);
 /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -399,7 +399,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_domain` WRITE;
 /*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */;
-INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `config_backend`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES (1,'Default Domain Name',NULL,NULL,'5.18.beta1',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
+INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `config_backend`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES (1,'Default Domain Name',NULL,NULL,'5.19.alpha1',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
 /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -409,7 +409,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_email` WRITE;
 /*!40000 ALTER TABLE `civicrm_email` DISABLE KEYS */;
-INSERT INTO `civicrm_email` (`id`, `contact_id`, `location_type_id`, `email`, `is_primary`, `is_billing`, `on_hold`, `is_bulkmail`, `hold_date`, `reset_date`, `signature_text`, `signature_html`) VALUES (1,1,1,'fixme.domainemail@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(2,16,1,'samsonj@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(3,16,1,'juliannsamson@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL),(4,103,1,'dimitrov.z.lou@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(5,57,1,'eb.terrell@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(6,57,1,'terrell.b.eleonor@airmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(7,69,1,'tobyd77@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),(8,69,1,'dimitrov.toby@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(9,193,1,'samsonr@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(10,193,1,'rd.samson61@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(11,169,1,'at.bachman@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(12,169,1,'bachman.ashlie33@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(13,66,1,'jones.esta@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(14,129,1,'kathleenp@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(15,191,1,'lee.megan@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(16,191,1,'leem@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL),(17,60,1,'estawilson@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),(18,81,1,'kathlynjensen@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(19,81,1,'jensen.kathlyn29@testmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(20,85,1,'heidicooper24@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(21,85,1,'hcooper@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(22,116,1,'kennybarkley@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(23,116,1,'barkley.kenny@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(24,177,1,'terrellr@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(25,4,1,'kaceys@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(26,4,1,'kaceysmith71@testing.org',0,0,0,0,NULL,NULL,NULL,NULL),(27,24,1,'gonzlezm@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(28,82,1,'shermancooper@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(29,30,1,'idaz@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(30,114,1,'jz.samson15@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(31,114,1,'samson.z.jed70@example.com',0,0,0,0,NULL,NULL,NULL,NULL),(32,58,1,'deforest.h.jackson@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(33,51,1,'errolprentice@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(34,51,1,'prenticee71@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(35,26,1,'jedprentice73@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(36,42,1,'jameson.jerome@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(37,42,1,'jeromej@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(38,136,1,'dimitrovb@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(39,75,1,'patelb@example.biz',1,0,0,0,NULL,NULL,NULL,NULL),(40,59,1,'zope.lincoln75@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(41,59,1,'lincolnz@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(42,22,1,'bachmank79@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(43,192,1,'miguelbarkley87@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),(44,192,1,'miguelbarkley@lol.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(45,119,1,'lawerencej@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(46,119,1,'jonesl@example.biz',0,0,0,0,NULL,NULL,NULL,NULL),(47,95,1,'rterry@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(48,158,1,'jensenb@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),(49,158,1,'jensenb@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(50,165,1,'ec.reynolds@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(51,14,1,'reynolds.kenny@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(52,23,1,'samsonj3@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),(53,67,1,'shaunayadav72@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),(54,67,1,'shaunay87@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(55,89,1,'roberts.elbert@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(56,89,1,'roberts.h.elbert27@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(57,185,1,'jacobs.ashley@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(58,185,1,'ashleyj56@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(59,102,1,'aterrell40@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(60,102,1,'aterrell@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL),(61,68,1,'jz.samson9@example.com',1,0,0,0,NULL,NULL,NULL,NULL),(62,68,1,'julianns@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),(63,134,1,'obarkley33@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(64,141,1,'ci.deforest@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(65,7,1,'brittneya54@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(66,7,1,'adams.brittney@testing.net',0,0,0,0,NULL,NULL,NULL,NULL),(67,96,1,'ashleyd@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),(68,96,1,'dimitrova80@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(69,10,1,'ly.cruz@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(70,10,1,'cruz.y.lashawnda84@mymail.com',0,0,0,0,NULL,NULL,NULL,NULL),(71,87,1,'mcreynolds.lincoln@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(72,73,1,'msamson@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(73,73,1,'samsonm@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(74,92,1,'scarletm@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(75,157,1,'jgonzlez@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(76,183,1,'kathlynj@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(77,183,1,'jameson.f.kathlyn55@infomail.org',0,0,0,0,NULL,NULL,NULL,NULL),(78,105,1,'jameson.maria81@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(79,64,1,'rebekahparker@example.biz',1,0,0,0,NULL,NULL,NULL,NULL),(80,64,1,'parker.rebekah@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),(81,167,1,'cooper.q.claudio31@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(82,167,1,'cooperc15@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(83,70,1,'cooper.heidi@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(84,70,1,'hl.cooper@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(85,36,1,'bobcooper16@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),(86,36,1,'bcooper@mymail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(87,52,1,'cooper.kathlyn41@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(88,52,1,'kathlync80@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),(89,43,1,'dm.olsen@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),(90,43,1,'dareno@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL),(91,47,1,'kiaraolsen@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(92,47,1,'olsen.y.kiara@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(93,153,1,'trumano20@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(94,28,1,'olsen.omar@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(95,28,1,'olseno@notmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(96,146,1,'olsenb@example.org',1,0,0,0,NULL,NULL,NULL,NULL),(97,146,1,'olsenb@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(98,150,1,'olsen.carlos@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(99,150,1,'olsen.w.carlos@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL),(100,173,1,'rx.yadav@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(101,98,1,'kaceyy79@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(102,98,1,'kaceyy73@notmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(103,176,1,'yadav-ivanov.v.rebekah@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(104,79,1,'andrewn@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(105,109,1,'nielsent@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(106,109,1,'tobynielsen@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(107,90,1,'nielsens14@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(108,104,1,'scottn@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(109,104,1,'snielsen@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(110,8,1,'kathlynnielsen@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL),(111,8,1,'nielsen.kathlyn80@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL),(112,182,1,'gonzlez-barkleyd87@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(113,41,1,'elbertbarkley@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(114,201,1,'dazr@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(115,138,1,'ar.daz95@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(116,197,1,'daz.delana@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(117,132,1,'bcruz@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(118,126,1,'barkleym@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),(119,126,1,'barkley.magan@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(120,55,1,'erikc25@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(121,161,1,'scruz-barkley@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(122,29,1,'arlyne@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(123,29,1,'chowski-cooper.arlyne@testing.org',0,0,0,0,NULL,NULL,NULL,NULL),(124,34,1,'chowski-cooper.brigette78@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(125,34,1,'brigette75@lol.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(126,163,1,'reynolds.margaret99@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(127,76,1,'reynolds.c.teresa74@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(128,76,1,'reynolds.c.teresa50@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL),(129,117,1,'irisjones73@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(130,166,1,'ax.jones@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(131,200,1,'jones.rosario43@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(132,159,1,'terry.a.elizabeth@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(133,189,1,'omarcooper@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(134,189,1,'ocooper@lol.biz',0,0,0,0,NULL,NULL,NULL,NULL),(135,160,1,'jensen.y.delana@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL),(136,160,1,'jensend@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL),(137,120,1,'ccooper-jensen@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL),(138,120,1,'ccooper-jensen@sample.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(139,186,1,'cooper-jensenr89@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(140,186,1,'cooper-jensen.rebekah@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),(141,49,1,'mcreynolds.o.brent60@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(142,49,1,'bo.mcreynolds@example.net',0,0,0,0,NULL,NULL,NULL,NULL),(143,46,1,'rolandomcreynolds52@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(144,125,1,'omarjones84@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(145,125,1,'joneso31@example.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(146,171,1,'rebekahs@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(147,171,1,'rebekahs@notmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(148,111,1,'sjones80@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(149,6,1,'lee.brent@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(150,6,1,'brentl@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(151,20,1,'landonlee@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(152,20,1,'leel10@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(153,101,1,'rz.samson-barkley@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(154,101,1,'rebekahsamson-barkley85@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(155,91,3,'info@rsempowermentassociation.org',1,0,0,0,NULL,NULL,NULL,NULL),(156,105,2,'mariaj@rsempowermentassociation.org',0,0,0,0,NULL,NULL,NULL,NULL),(157,54,3,'feedback@poquosonwellnesstrust.org',1,0,0,0,NULL,NULL,NULL,NULL),(158,136,2,'dimitrov.m.barry38@poquosonwellnesstrust.org',0,0,0,0,NULL,NULL,NULL,NULL),(159,72,3,'feedback@bradfordliteracysolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(160,153,2,'@bradfordliteracysolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),(161,155,3,'sales@bassettalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(162,90,2,'@bassettalliance.org',0,0,0,0,NULL,NULL,NULL,NULL),(163,196,3,'contact@paartsacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),(164,4,2,'ksmith@paartsacademy.org',0,0,0,0,NULL,NULL,NULL,NULL),(165,162,3,'info@unitedaction.org',1,0,0,0,NULL,NULL,NULL,NULL),(166,159,2,'elizabethterry@unitedaction.org',0,0,0,0,NULL,NULL,NULL,NULL),(167,19,3,'feedback@addytrust.org',1,0,0,0,NULL,NULL,NULL,NULL),(168,180,2,'samson-barkleyc89@addytrust.org',1,0,0,0,NULL,NULL,NULL,NULL),(169,65,3,'info@friendstechnologytrust.org',1,0,0,0,NULL,NULL,NULL,NULL),(170,200,2,'jonesr53@friendstechnologytrust.org',0,0,0,0,NULL,NULL,NULL,NULL),(171,142,3,'feedback@pinepoetrycenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(172,40,2,'wilson.santina50@pinepoetrycenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(173,145,3,'contact@localcenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(174,147,2,'nielsen.ashley@localcenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(175,184,3,'feedback@friendsfood.org',1,0,0,0,NULL,NULL,NULL,NULL),(176,173,2,'42@friendsfood.org',0,0,0,0,NULL,NULL,NULL,NULL),(177,156,3,'contact@mississippipeacecollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(178,150,2,'carloso@mississippipeacecollective.org',0,0,0,0,NULL,NULL,NULL,NULL),(179,143,3,'service@mlkingagriculture.org',1,0,0,0,NULL,NULL,NULL,NULL),(180,118,2,'mnielsen@mlkingagriculture.org',1,0,0,0,NULL,NULL,NULL,NULL),(181,121,3,'sales@localeducationfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),(182,16,2,'juliannsamson@localeducationfellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),(183,139,3,'service@kentuckycenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(184,43,2,'dareno@kentuckycenter.org',0,0,0,0,NULL,NULL,NULL,NULL),(185,137,3,'contact@globalnetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),(186,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(187,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(188,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL);
+INSERT INTO `civicrm_email` (`id`, `contact_id`, `location_type_id`, `email`, `is_primary`, `is_billing`, `on_hold`, `is_bulkmail`, `hold_date`, `reset_date`, `signature_text`, `signature_html`) VALUES (1,1,1,'fixme.domainemail@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(2,167,1,'brzczysawdeforest@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(3,167,1,'deforestb67@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL),(4,144,1,'lashawndad74@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(5,65,1,'nielsen.jacob67@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),(6,187,1,'roberts.kandace@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(7,187,1,'roberts.kandace@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(8,174,1,'nielsen.jackson@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(9,62,1,'barkley.esta@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(10,87,1,'margaretbachman84@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(11,129,1,'au.jones51@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(12,129,1,'au.jones51@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(13,116,1,'jacobsj@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),(14,116,1,'jacobsj11@testmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(15,67,1,'rolandosamson@example.info',1,0,0,0,NULL,NULL,NULL,NULL),(16,152,1,'jacobs.shad@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(17,152,1,'jacobs.m.shad25@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL),(18,127,1,'prenticej28@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),(19,127,1,'jeromeprentice96@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(20,198,1,'olsen.brigette84@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(21,198,1,'olsen.brigette68@fakemail.org',0,0,0,0,NULL,NULL,NULL,NULL),(22,181,1,'robertsonr@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(23,30,1,'mller.errol@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(24,79,1,'reynolds.t.andrew2@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(25,64,1,'mller.miguel@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(26,120,1,'teresap@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(27,120,1,'teresapatel@infomail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(28,6,1,'jacksong80@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),(29,201,1,'yadavi95@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(30,201,1,'yadavi@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(31,171,1,'tc.dimitrov@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(32,158,1,'claudiocruz91@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(33,158,1,'claudiocruz24@testing.info',0,0,0,0,NULL,NULL,NULL,NULL),(34,70,1,'dimitrovi56@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL),(35,41,1,'lee.beula85@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(36,73,1,'adamss@example.info',1,0,0,0,NULL,NULL,NULL,NULL),(37,114,1,'adams.t.ashley@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(38,114,1,'adams.t.ashley74@sample.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(39,34,1,'irisc@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),(40,34,1,'icooper@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),(41,16,1,'errollee@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(42,19,1,'adams.roland48@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),(43,180,1,'jones.miguel35@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),(44,180,1,'mjones96@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(45,92,1,'smith.v.kathlyn37@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),(46,92,1,'kathlyns70@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(47,36,1,'scarleti@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(48,2,1,'sivanov56@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),(49,55,1,'ivanov.bernadette76@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(50,121,1,'deforest.princess@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(51,121,1,'deforestp@example.com',0,0,0,0,NULL,NULL,NULL,NULL),(52,102,1,'russelljensen@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(53,104,1,'mller.beula@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(54,45,1,'olsene85@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(55,9,1,'bu.barkley@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(56,128,1,'landondimitrov24@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(57,103,1,'bcruz@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(58,103,1,'cruzb@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(59,78,1,'arlynesamson78@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(60,78,1,'samson.arlyne94@testmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(61,97,1,'brigettey21@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),(62,97,1,'brigetteyadav10@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(63,117,1,'olsen.shauna35@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(64,39,1,'josefad@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),(65,131,1,'jacksonterrell@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(66,131,1,'terrell.k.jackson98@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(67,111,1,'jacobgonzlez@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(68,111,1,'gonzlez.jacob@notmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(69,118,1,'jensen.rolando57@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(70,118,1,'jensenr90@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(71,148,1,'adamsh25@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(72,119,1,'jones.t.bob85@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(73,119,1,'jones.bob@fakemail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(74,53,1,'tjameson80@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(75,53,1,'teddyjameson@fakemail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(76,162,1,'barkleyb@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(77,162,1,'barkley.bernadette@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(78,139,1,'cq.jacobs@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(79,139,1,'jacobs.q.carylon@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),(80,126,1,'cruz.errol3@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),(81,126,1,'errolc@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(82,140,1,'reynoldsa82@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(83,140,1,'reynolds.allan54@sample.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(84,49,1,'jonesp@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(85,80,1,'sadams26@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(86,122,1,'mller.ashley@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(87,122,1,'amller@infomail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(88,149,1,'dimitrov.kathlyn@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(89,149,1,'kathlyndimitrov@mymail.com',0,0,0,0,NULL,NULL,NULL,NULL),(90,94,1,'bryond@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(91,94,1,'dimitrov.bryon75@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(92,179,1,'dimitrov.maxwell@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(93,179,1,'dimitrov.maxwell72@notmail.info',0,0,0,0,NULL,NULL,NULL,NULL),(94,3,1,'mllert72@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),(95,3,1,'tmller@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(96,37,1,'ivanov-mller.d.santina56@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(97,37,1,'ivanov-mller.santina@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL),(98,99,1,'mllerm@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),(99,99,1,'mller.mei42@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),(100,72,1,'ivanov.herminia73@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),(101,69,1,'parkera@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(102,82,1,'parkerj66@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(103,82,1,'parker.q.josefa@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),(104,51,1,'darenparker@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(105,5,1,'parker.claudio@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(106,5,1,'ch.parker58@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),(107,109,1,'bjensen43@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(108,165,1,'jensene@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(109,165,1,'estajensen@lol.org',0,0,0,0,NULL,NULL,NULL,NULL),(110,59,1,'jensens@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(111,124,1,'irvinz@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(112,44,1,'patell90@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(113,44,1,'patel.lashawnda@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(114,170,1,'zope-patel.toby@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(115,170,1,'zope-patel.toby@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(116,142,1,'kzope-patel73@example.com',1,0,0,0,NULL,NULL,NULL,NULL),(117,142,1,'kzope-patel@testing.net',0,0,0,0,NULL,NULL,NULL,NULL),(118,25,1,'ta.samuels@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(119,106,1,'samuelsa@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(120,43,1,'nielsen.omar@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(121,43,1,'nielseno@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(122,91,1,'valenemcreynolds@example.biz',1,0,0,0,NULL,NULL,NULL,NULL),(123,91,1,'vk.mcreynolds32@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(124,20,1,'nielsen-mcreynolds.angelika@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(125,20,1,'anielsen-mcreynolds@infomail.info',0,0,0,0,NULL,NULL,NULL,NULL),(126,195,1,'carlosl@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(127,169,1,'jones-lee.brigette@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(128,169,1,'jones-lee.brigette@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(129,194,1,'jones-leee79@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),(130,7,1,'jacksoni@example.info',1,0,0,0,NULL,NULL,NULL,NULL),(131,68,1,'herminiad38@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(132,68,1,'hm.deforest-ivanov@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL),(133,188,1,'ivanov.heidi@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),(134,188,1,'ivanovh@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(135,166,1,'ivanovr@example.org',1,0,0,0,NULL,NULL,NULL,NULL),(136,105,1,'smiths@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),(137,58,1,'jacobs-jamesonr19@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(138,58,1,'jacobs-jamesonr51@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),(139,23,1,'nielsen.felisha@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(140,38,1,'bobn@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),(141,184,1,'aj.nielsen@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),(142,184,1,'nielsen.j.angelika@lol.org',0,0,0,0,NULL,NULL,NULL,NULL),(143,28,1,'ivanov.q.jerome37@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(144,28,1,'jeromei71@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(145,85,1,'josefanielsen36@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),(146,18,1,'mivanov-nielsen84@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(147,177,1,'ji.jones48@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(148,177,1,'jones.i.josefa@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(149,24,1,'jacobs-jones.x.teresa11@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(150,24,1,'teresajacobs-jones@notmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(151,132,1,'jones.errol@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(152,132,1,'errolj@example.info',0,0,0,0,NULL,NULL,NULL,NULL),(153,8,1,'ry.bachman@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(154,8,1,'rodrigobachman@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(155,10,1,'bachman.delana@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(156,10,1,'bachman.delana@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(157,54,1,'yadav.bryon@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(158,54,1,'bryonyadav@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL),(159,130,1,'meganyadav@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(160,130,1,'ms.yadav@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(161,22,1,'jeromey@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(162,66,1,'teresayadav@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(163,183,1,'ljacobs3@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(164,189,1,'jacobs.d.bernadette66@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(165,26,1,'craigj38@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),(166,40,1,'cf.jacobs@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(167,40,1,'claudiojacobs@spamalot.net',0,0,0,0,NULL,NULL,NULL,NULL),(168,17,1,'elinaj58@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(169,17,1,'jacobs.p.elina75@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(170,46,1,'deforest.j.kandace36@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(171,46,1,'deforest.j.kandace@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL),(172,60,1,'clintdeforest94@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),(173,95,1,'megandeforest@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),(174,93,3,'service@ecadvocacycollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(175,103,2,'cruz.bob@ecadvocacycollective.org',0,0,0,0,NULL,NULL,NULL,NULL),(176,56,3,'info@missouriarts.org',1,0,0,0,NULL,NULL,NULL,NULL),(177,182,3,'info@cheshireaction.org',1,0,0,0,NULL,NULL,NULL,NULL),(178,39,2,'jo.deforest42@cheshireaction.org',0,0,0,0,NULL,NULL,NULL,NULL),(179,191,3,'feedback@wmsportsschool.org',1,0,0,0,NULL,NULL,NULL,NULL),(180,48,2,'jensenk16@wmsportsschool.org',1,0,0,0,NULL,NULL,NULL,NULL),(181,186,3,'info@texastechnologypartners.org',1,0,0,0,NULL,NULL,NULL,NULL),(182,61,3,'feedback@atlantaagriculturesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(183,138,3,'feedback@globalsportstrust.org',1,0,0,0,NULL,NULL,NULL,NULL),(184,134,2,'ashliejacobs88@globalsportstrust.org',1,0,0,0,NULL,NULL,NULL,NULL),(185,83,3,'service@lcdevelopmentfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),(186,28,2,'jeromei52@lcdevelopmentfellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),(187,172,3,'service@localmusicalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(188,63,2,'lareeivanov@localmusicalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(189,47,3,'contact@simpsontechnologytrust.org',1,0,0,0,NULL,NULL,NULL,NULL),(190,162,2,'bernadettebarkley@simpsontechnologytrust.org',0,0,0,0,NULL,NULL,NULL,NULL),(191,175,3,'contact@bakerpeacesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(192,161,2,'jacobss@bakerpeacesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(193,160,3,'info@maincenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(194,149,2,'kathlynd74@maincenter.org',0,0,0,0,NULL,NULL,NULL,NULL),(195,4,3,'contact@statescollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(196,185,2,'br.jones99@statescollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(197,96,3,'sales@northpointpoetry.org',1,0,0,0,NULL,NULL,NULL,NULL),(198,60,2,'deforest.clint@northpointpoetry.org',0,0,0,0,NULL,NULL,NULL,NULL),(199,98,3,'service@baywellnesspartnership.org',1,0,0,0,NULL,NULL,NULL,NULL),(200,117,2,'shaunaolsen32@baywellnesspartnership.org',0,0,0,0,NULL,NULL,NULL,NULL),(201,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(202,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(203,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -447,7 +447,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_entity_financial_trxn` WRITE;
 /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` DISABLE KEYS */;
-INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, `financial_trxn_id`, `amount`) VALUES (1,'civicrm_contribution',1,1,125.00),(2,'civicrm_financial_item',1,1,125.00),(3,'civicrm_contribution',2,2,50.00),(4,'civicrm_financial_item',2,2,50.00),(5,'civicrm_contribution',3,3,25.00),(6,'civicrm_financial_item',3,3,25.00),(7,'civicrm_contribution',4,4,50.00),(8,'civicrm_financial_item',4,4,50.00),(9,'civicrm_contribution',5,5,500.00),(10,'civicrm_financial_item',5,5,500.00),(11,'civicrm_contribution',6,6,175.00),(12,'civicrm_financial_item',6,6,175.00),(13,'civicrm_contribution',7,7,50.00),(14,'civicrm_financial_item',7,7,50.00),(15,'civicrm_contribution',8,8,10.00),(16,'civicrm_financial_item',8,8,10.00),(17,'civicrm_contribution',9,9,250.00),(18,'civicrm_financial_item',9,9,250.00),(19,'civicrm_contribution',10,10,500.00),(20,'civicrm_financial_item',10,10,500.00),(21,'civicrm_contribution',11,11,200.00),(22,'civicrm_financial_item',11,11,200.00),(23,'civicrm_contribution',12,12,200.00),(24,'civicrm_financial_item',12,12,200.00),(25,'civicrm_contribution',13,13,200.00),(26,'civicrm_financial_item',13,13,200.00),(27,'civicrm_contribution',14,14,100.00),(28,'civicrm_financial_item',14,14,100.00),(29,'civicrm_contribution',15,15,100.00),(30,'civicrm_financial_item',15,15,100.00),(31,'civicrm_contribution',16,16,100.00),(32,'civicrm_financial_item',16,16,100.00),(33,'civicrm_contribution',17,17,100.00),(34,'civicrm_financial_item',17,17,100.00),(35,'civicrm_contribution',18,18,100.00),(36,'civicrm_financial_item',18,18,100.00),(37,'civicrm_contribution',19,19,100.00),(38,'civicrm_financial_item',19,19,100.00),(39,'civicrm_contribution',20,20,100.00),(40,'civicrm_financial_item',20,20,100.00),(41,'civicrm_contribution',21,21,100.00),(42,'civicrm_financial_item',21,21,100.00),(43,'civicrm_contribution',22,22,100.00),(44,'civicrm_financial_item',22,22,100.00),(45,'civicrm_contribution',23,23,100.00),(46,'civicrm_financial_item',23,23,100.00),(47,'civicrm_contribution',24,24,100.00),(48,'civicrm_financial_item',24,24,100.00),(49,'civicrm_contribution',25,25,100.00),(50,'civicrm_financial_item',25,25,100.00),(51,'civicrm_contribution',26,26,100.00),(52,'civicrm_financial_item',26,26,100.00),(53,'civicrm_contribution',27,27,100.00),(54,'civicrm_financial_item',27,27,100.00),(55,'civicrm_contribution',28,28,50.00),(56,'civicrm_financial_item',28,28,50.00),(57,'civicrm_contribution',29,29,50.00),(58,'civicrm_financial_item',29,29,50.00),(59,'civicrm_contribution',30,30,50.00),(60,'civicrm_financial_item',30,30,50.00),(61,'civicrm_contribution',31,31,50.00),(62,'civicrm_financial_item',31,31,50.00),(63,'civicrm_contribution',32,32,50.00),(64,'civicrm_financial_item',32,32,50.00),(65,'civicrm_contribution',33,33,50.00),(66,'civicrm_financial_item',33,33,50.00),(67,'civicrm_contribution',34,34,50.00),(68,'civicrm_financial_item',34,34,50.00),(69,'civicrm_contribution',35,35,50.00),(70,'civicrm_financial_item',35,35,50.00),(71,'civicrm_contribution',36,36,50.00),(72,'civicrm_financial_item',36,36,50.00),(73,'civicrm_contribution',37,37,50.00),(74,'civicrm_financial_item',37,37,50.00),(75,'civicrm_contribution',38,38,50.00),(76,'civicrm_financial_item',38,38,50.00),(77,'civicrm_contribution',39,39,50.00),(78,'civicrm_financial_item',39,39,50.00),(79,'civicrm_contribution',40,40,50.00),(80,'civicrm_financial_item',40,40,50.00),(81,'civicrm_contribution',41,41,50.00),(82,'civicrm_financial_item',41,41,50.00),(83,'civicrm_contribution',42,42,1200.00),(84,'civicrm_financial_item',42,42,1200.00),(85,'civicrm_contribution',43,43,1200.00),(86,'civicrm_financial_item',43,43,1200.00),(87,'civicrm_contribution',79,44,50.00),(88,'civicrm_financial_item',44,44,50.00),(89,'civicrm_contribution',52,45,50.00),(90,'civicrm_financial_item',45,45,50.00),(91,'civicrm_contribution',83,46,50.00),(92,'civicrm_financial_item',46,46,50.00),(93,'civicrm_contribution',72,47,50.00),(94,'civicrm_financial_item',47,47,50.00),(95,'civicrm_contribution',49,48,50.00),(96,'civicrm_financial_item',48,48,50.00),(97,'civicrm_contribution',92,49,50.00),(98,'civicrm_financial_item',49,49,50.00),(99,'civicrm_contribution',57,50,50.00),(100,'civicrm_financial_item',50,50,50.00),(101,'civicrm_contribution',53,51,50.00),(102,'civicrm_financial_item',51,51,50.00),(103,'civicrm_contribution',75,52,50.00),(104,'civicrm_financial_item',52,52,50.00),(105,'civicrm_contribution',54,53,50.00),(106,'civicrm_financial_item',53,53,50.00),(107,'civicrm_contribution',62,54,50.00),(108,'civicrm_financial_item',54,54,50.00),(109,'civicrm_contribution',66,55,50.00),(110,'civicrm_financial_item',55,55,50.00),(111,'civicrm_contribution',86,56,50.00),(112,'civicrm_financial_item',56,56,50.00),(113,'civicrm_contribution',93,57,50.00),(114,'civicrm_financial_item',57,57,50.00),(115,'civicrm_contribution',63,58,50.00),(116,'civicrm_financial_item',58,58,50.00),(117,'civicrm_contribution',90,59,50.00),(118,'civicrm_financial_item',59,59,50.00),(119,'civicrm_contribution',58,60,800.00),(120,'civicrm_financial_item',60,60,800.00),(121,'civicrm_contribution',60,61,800.00),(122,'civicrm_financial_item',61,61,800.00),(123,'civicrm_contribution',77,62,800.00),(124,'civicrm_financial_item',62,62,800.00),(125,'civicrm_contribution',69,63,800.00),(126,'civicrm_financial_item',63,63,800.00),(127,'civicrm_contribution',61,64,800.00),(128,'civicrm_financial_item',64,64,800.00),(129,'civicrm_contribution',88,65,800.00),(130,'civicrm_financial_item',65,65,800.00),(131,'civicrm_contribution',87,66,800.00),(132,'civicrm_financial_item',66,66,800.00),(133,'civicrm_contribution',45,67,800.00),(134,'civicrm_financial_item',67,67,800.00),(135,'civicrm_contribution',71,68,800.00),(136,'civicrm_financial_item',68,68,800.00),(137,'civicrm_contribution',46,69,800.00),(138,'civicrm_financial_item',69,69,800.00),(139,'civicrm_contribution',80,70,800.00),(140,'civicrm_financial_item',70,70,800.00),(141,'civicrm_contribution',50,71,800.00),(142,'civicrm_financial_item',71,71,800.00),(143,'civicrm_contribution',51,72,800.00),(144,'civicrm_financial_item',72,72,800.00),(145,'civicrm_contribution',84,73,800.00),(146,'civicrm_financial_item',73,73,800.00),(147,'civicrm_contribution',89,74,800.00),(148,'civicrm_financial_item',74,74,800.00),(149,'civicrm_contribution',74,75,800.00),(150,'civicrm_financial_item',75,75,800.00),(151,'civicrm_contribution',81,76,800.00),(152,'civicrm_financial_item',76,76,800.00),(153,'civicrm_contribution',82,77,800.00),(154,'civicrm_financial_item',77,77,800.00),(155,'civicrm_contribution',78,78,50.00),(156,'civicrm_financial_item',78,78,50.00),(157,'civicrm_contribution',70,79,50.00),(158,'civicrm_financial_item',79,79,50.00),(159,'civicrm_contribution',48,80,50.00),(160,'civicrm_financial_item',80,80,50.00),(161,'civicrm_contribution',47,81,50.00),(162,'civicrm_financial_item',81,81,50.00),(163,'civicrm_contribution',59,82,50.00),(164,'civicrm_financial_item',82,82,50.00),(165,'civicrm_contribution',68,83,50.00),(166,'civicrm_financial_item',83,83,50.00),(167,'civicrm_contribution',73,84,50.00),(168,'civicrm_financial_item',84,84,50.00),(169,'civicrm_contribution',65,85,50.00),(170,'civicrm_financial_item',85,85,50.00),(171,'civicrm_contribution',56,86,50.00),(172,'civicrm_financial_item',86,86,50.00),(173,'civicrm_contribution',91,87,50.00),(174,'civicrm_financial_item',87,87,50.00),(175,'civicrm_contribution',64,88,50.00),(176,'civicrm_financial_item',88,88,50.00),(177,'civicrm_contribution',85,89,50.00),(178,'civicrm_financial_item',89,89,50.00),(179,'civicrm_contribution',76,90,50.00),(180,'civicrm_financial_item',90,90,50.00),(181,'civicrm_contribution',55,91,50.00),(182,'civicrm_financial_item',91,91,50.00),(183,'civicrm_contribution',94,92,50.00),(184,'civicrm_financial_item',92,92,50.00),(185,'civicrm_contribution',67,93,50.00),(186,'civicrm_financial_item',93,93,50.00);
+INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, `financial_trxn_id`, `amount`) VALUES (1,'civicrm_contribution',1,1,125.00),(2,'civicrm_financial_item',1,1,125.00),(3,'civicrm_contribution',2,2,50.00),(4,'civicrm_financial_item',2,2,50.00),(5,'civicrm_contribution',3,3,25.00),(6,'civicrm_financial_item',3,3,25.00),(7,'civicrm_contribution',4,4,50.00),(8,'civicrm_financial_item',4,4,50.00),(9,'civicrm_contribution',5,5,500.00),(10,'civicrm_financial_item',5,5,500.00),(11,'civicrm_contribution',6,6,175.00),(12,'civicrm_financial_item',6,6,175.00),(13,'civicrm_contribution',7,7,50.00),(14,'civicrm_financial_item',7,7,50.00),(15,'civicrm_contribution',8,8,10.00),(16,'civicrm_financial_item',8,8,10.00),(17,'civicrm_contribution',9,9,250.00),(18,'civicrm_financial_item',9,9,250.00),(19,'civicrm_contribution',10,10,500.00),(20,'civicrm_financial_item',10,10,500.00),(21,'civicrm_contribution',11,11,200.00),(22,'civicrm_financial_item',11,11,200.00),(23,'civicrm_contribution',12,12,200.00),(24,'civicrm_financial_item',12,12,200.00),(25,'civicrm_contribution',13,13,200.00),(26,'civicrm_financial_item',13,13,200.00),(27,'civicrm_contribution',14,14,100.00),(28,'civicrm_financial_item',14,14,100.00),(29,'civicrm_contribution',15,15,100.00),(30,'civicrm_financial_item',15,15,100.00),(31,'civicrm_contribution',16,16,100.00),(32,'civicrm_financial_item',16,16,100.00),(33,'civicrm_contribution',17,17,100.00),(34,'civicrm_financial_item',17,17,100.00),(35,'civicrm_contribution',18,18,100.00),(36,'civicrm_financial_item',18,18,100.00),(37,'civicrm_contribution',19,19,100.00),(38,'civicrm_financial_item',19,19,100.00),(39,'civicrm_contribution',20,20,100.00),(40,'civicrm_financial_item',20,20,100.00),(41,'civicrm_contribution',21,21,100.00),(42,'civicrm_financial_item',21,21,100.00),(43,'civicrm_contribution',22,22,100.00),(44,'civicrm_financial_item',22,22,100.00),(45,'civicrm_contribution',23,23,100.00),(46,'civicrm_financial_item',23,23,100.00),(47,'civicrm_contribution',24,24,100.00),(48,'civicrm_financial_item',24,24,100.00),(49,'civicrm_contribution',25,25,100.00),(50,'civicrm_financial_item',25,25,100.00),(51,'civicrm_contribution',26,26,100.00),(52,'civicrm_financial_item',26,26,100.00),(53,'civicrm_contribution',27,27,100.00),(54,'civicrm_financial_item',27,27,100.00),(55,'civicrm_contribution',28,28,100.00),(56,'civicrm_financial_item',28,28,100.00),(57,'civicrm_contribution',29,29,50.00),(58,'civicrm_financial_item',29,29,50.00),(59,'civicrm_contribution',30,30,50.00),(60,'civicrm_financial_item',30,30,50.00),(61,'civicrm_contribution',31,31,50.00),(62,'civicrm_financial_item',31,31,50.00),(63,'civicrm_contribution',32,32,50.00),(64,'civicrm_financial_item',32,32,50.00),(65,'civicrm_contribution',33,33,50.00),(66,'civicrm_financial_item',33,33,50.00),(67,'civicrm_contribution',34,34,50.00),(68,'civicrm_financial_item',34,34,50.00),(69,'civicrm_contribution',35,35,50.00),(70,'civicrm_financial_item',35,35,50.00),(71,'civicrm_contribution',36,36,50.00),(72,'civicrm_financial_item',36,36,50.00),(73,'civicrm_contribution',37,37,50.00),(74,'civicrm_financial_item',37,37,50.00),(75,'civicrm_contribution',38,38,50.00),(76,'civicrm_financial_item',38,38,50.00),(77,'civicrm_contribution',39,39,50.00),(78,'civicrm_financial_item',39,39,50.00),(79,'civicrm_contribution',40,40,50.00),(80,'civicrm_financial_item',40,40,50.00),(81,'civicrm_contribution',41,41,50.00),(82,'civicrm_financial_item',41,41,50.00),(83,'civicrm_contribution',42,42,1200.00),(84,'civicrm_financial_item',42,42,1200.00),(85,'civicrm_contribution',43,43,1200.00),(86,'civicrm_financial_item',43,43,1200.00),(87,'civicrm_contribution',56,44,50.00),(88,'civicrm_financial_item',44,44,50.00),(89,'civicrm_contribution',85,45,50.00),(90,'civicrm_financial_item',45,45,50.00),(91,'civicrm_contribution',76,46,50.00),(92,'civicrm_financial_item',46,46,50.00),(93,'civicrm_contribution',71,47,50.00),(94,'civicrm_financial_item',47,47,50.00),(95,'civicrm_contribution',92,48,50.00),(96,'civicrm_financial_item',48,48,50.00),(97,'civicrm_contribution',67,49,50.00),(98,'civicrm_financial_item',49,49,50.00),(99,'civicrm_contribution',66,50,50.00),(100,'civicrm_financial_item',50,50,50.00),(101,'civicrm_contribution',72,51,50.00),(102,'civicrm_financial_item',51,51,50.00),(103,'civicrm_contribution',83,52,50.00),(104,'civicrm_financial_item',52,52,50.00),(105,'civicrm_contribution',87,53,50.00),(106,'civicrm_financial_item',53,53,50.00),(107,'civicrm_contribution',48,54,50.00),(108,'civicrm_financial_item',54,54,50.00),(109,'civicrm_contribution',57,55,50.00),(110,'civicrm_financial_item',55,55,50.00),(111,'civicrm_contribution',84,56,50.00),(112,'civicrm_financial_item',56,56,50.00),(113,'civicrm_contribution',93,57,50.00),(114,'civicrm_financial_item',57,57,50.00),(115,'civicrm_contribution',78,58,50.00),(116,'civicrm_financial_item',58,58,50.00),(117,'civicrm_contribution',77,59,50.00),(118,'civicrm_financial_item',59,59,50.00),(119,'civicrm_contribution',69,60,800.00),(120,'civicrm_financial_item',60,60,800.00),(121,'civicrm_contribution',91,61,800.00),(122,'civicrm_financial_item',61,61,800.00),(123,'civicrm_contribution',63,62,800.00),(124,'civicrm_financial_item',62,62,800.00),(125,'civicrm_contribution',80,63,800.00),(126,'civicrm_financial_item',63,63,800.00),(127,'civicrm_contribution',70,64,800.00),(128,'civicrm_financial_item',64,64,800.00),(129,'civicrm_contribution',73,65,800.00),(130,'civicrm_financial_item',65,65,800.00),(131,'civicrm_contribution',55,66,800.00),(132,'civicrm_financial_item',66,66,800.00),(133,'civicrm_contribution',88,67,800.00),(134,'civicrm_financial_item',67,67,800.00),(135,'civicrm_contribution',46,68,800.00),(136,'civicrm_financial_item',68,68,800.00),(137,'civicrm_contribution',94,69,800.00),(138,'civicrm_financial_item',69,69,800.00),(139,'civicrm_contribution',64,70,800.00),(140,'civicrm_financial_item',70,70,800.00),(141,'civicrm_contribution',62,71,800.00),(142,'civicrm_financial_item',71,71,800.00),(143,'civicrm_contribution',61,72,800.00),(144,'civicrm_financial_item',72,72,800.00),(145,'civicrm_contribution',89,73,800.00),(146,'civicrm_financial_item',73,73,800.00),(147,'civicrm_contribution',60,74,800.00),(148,'civicrm_financial_item',74,74,800.00),(149,'civicrm_contribution',47,75,800.00),(150,'civicrm_financial_item',75,75,800.00),(151,'civicrm_contribution',82,76,800.00),(152,'civicrm_financial_item',76,76,800.00),(153,'civicrm_contribution',65,77,800.00),(154,'civicrm_financial_item',77,77,800.00),(155,'civicrm_contribution',90,78,50.00),(156,'civicrm_financial_item',78,78,50.00),(157,'civicrm_contribution',79,79,50.00),(158,'civicrm_financial_item',79,79,50.00),(159,'civicrm_contribution',52,80,50.00),(160,'civicrm_financial_item',80,80,50.00),(161,'civicrm_contribution',75,81,50.00),(162,'civicrm_financial_item',81,81,50.00),(163,'civicrm_contribution',86,82,50.00),(164,'civicrm_financial_item',82,82,50.00),(165,'civicrm_contribution',68,83,50.00),(166,'civicrm_financial_item',83,83,50.00),(167,'civicrm_contribution',50,84,50.00),(168,'civicrm_financial_item',84,84,50.00),(169,'civicrm_contribution',81,85,50.00),(170,'civicrm_financial_item',85,85,50.00),(171,'civicrm_contribution',53,86,50.00),(172,'civicrm_financial_item',86,86,50.00),(173,'civicrm_contribution',74,87,50.00),(174,'civicrm_financial_item',87,87,50.00),(175,'civicrm_contribution',45,88,50.00),(176,'civicrm_financial_item',88,88,50.00),(177,'civicrm_contribution',58,89,50.00),(178,'civicrm_financial_item',89,89,50.00),(179,'civicrm_contribution',49,90,50.00),(180,'civicrm_financial_item',90,90,50.00),(181,'civicrm_contribution',51,91,50.00),(182,'civicrm_financial_item',91,91,50.00),(183,'civicrm_contribution',54,92,50.00),(184,'civicrm_financial_item',92,92,50.00),(185,'civicrm_contribution',59,93,50.00),(186,'civicrm_financial_item',93,93,50.00);
 /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -457,7 +457,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_entity_tag` WRITE;
 /*!40000 ALTER TABLE `civicrm_entity_tag` DISABLE KEYS */;
-INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES (28,'civicrm_contact',4,5),(107,'civicrm_contact',6,4),(108,'civicrm_contact',6,5),(55,'civicrm_contact',7,5),(56,'civicrm_contact',10,5),(49,'civicrm_contact',14,5),(36,'civicrm_contact',15,4),(37,'civicrm_contact',15,5),(11,'civicrm_contact',16,4),(6,'civicrm_contact',19,2),(109,'civicrm_contact',20,5),(45,'civicrm_contact',22,5),(50,'civicrm_contact',23,5),(29,'civicrm_contact',24,4),(30,'civicrm_contact',24,5),(106,'civicrm_contact',25,5),(38,'civicrm_contact',26,5),(71,'civicrm_contact',28,5),(90,'civicrm_contact',29,5),(31,'civicrm_contact',30,4),(32,'civicrm_contact',30,5),(64,'civicrm_contact',35,5),(66,'civicrm_contact',36,4),(67,'civicrm_contact',36,5),(43,'civicrm_contact',38,4),(93,'civicrm_contact',39,4),(94,'civicrm_contact',39,5),(81,'civicrm_contact',41,4),(39,'civicrm_contact',42,4),(40,'civicrm_contact',42,5),(68,'civicrm_contact',43,5),(91,'civicrm_contact',44,4),(104,'civicrm_contact',46,5),(15,'civicrm_contact',48,4),(16,'civicrm_contact',48,5),(103,'civicrm_contact',49,4),(98,'civicrm_contact',53,5),(2,'civicrm_contact',54,2),(87,'civicrm_contact',55,4),(19,'civicrm_contact',66,4),(20,'civicrm_contact',66,5),(53,'civicrm_contact',68,4),(13,'civicrm_contact',69,4),(14,'civicrm_contact',69,5),(75,'civicrm_contact',79,5),(25,'civicrm_contact',81,4),(26,'civicrm_contact',81,5),(88,'civicrm_contact',84,4),(89,'civicrm_contact',84,5),(82,'civicrm_contact',88,4),(1,'civicrm_contact',91,2),(35,'civicrm_contact',94,5),(47,'civicrm_contact',95,5),(74,'civicrm_contact',98,5),(12,'civicrm_contact',103,5),(78,'civicrm_contact',104,4),(77,'civicrm_contact',109,5),(4,'civicrm_contact',110,3),(51,'civicrm_contact',113,5),(27,'civicrm_contact',116,5),(42,'civicrm_contact',118,5),(46,'civicrm_contact',119,5),(101,'civicrm_contact',120,4),(102,'civicrm_contact',120,5),(58,'civicrm_contact',122,5),(105,'civicrm_contact',125,4),(18,'civicrm_contact',128,4),(22,'civicrm_contact',129,4),(23,'civicrm_contact',129,5),(85,'civicrm_contact',132,4),(86,'civicrm_contact',132,5),(54,'civicrm_contact',134,4),(41,'civicrm_contact',136,5),(83,'civicrm_contact',138,4),(84,'civicrm_contact',138,5),(10,'civicrm_contact',139,1),(7,'civicrm_contact',142,2),(9,'civicrm_contact',143,2),(72,'civicrm_contact',146,5),(44,'civicrm_contact',148,5),(110,'civicrm_contact',151,5),(69,'civicrm_contact',153,4),(70,'civicrm_contact',153,5),(34,'civicrm_contact',154,4),(3,'civicrm_contact',155,2),(60,'civicrm_contact',157,5),(48,'civicrm_contact',158,4),(96,'civicrm_contact',159,4),(97,'civicrm_contact',159,5),(92,'civicrm_contact',163,5),(95,'civicrm_contact',166,4),(65,'civicrm_contact',167,4),(79,'civicrm_contact',168,4),(80,'civicrm_contact',168,5),(17,'civicrm_contact',169,5),(21,'civicrm_contact',170,4),(33,'civicrm_contact',172,4),(73,'civicrm_contact',173,5),(59,'civicrm_contact',175,5),(76,'civicrm_contact',178,4),(111,'civicrm_contact',180,4),(112,'civicrm_contact',180,5),(63,'civicrm_contact',181,5),(8,'civicrm_contact',184,3),(52,'civicrm_contact',185,5),(99,'civicrm_contact',189,4),(100,'civicrm_contact',189,5),(24,'civicrm_contact',191,4),(57,'civicrm_contact',194,4),(5,'civicrm_contact',196,1),(61,'civicrm_contact',198,4),(62,'civicrm_contact',198,5);
+INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES (68,'civicrm_contact',3,4),(69,'civicrm_contact',3,5),(88,'civicrm_contact',7,5),(104,'civicrm_contact',8,5),(47,'civicrm_contact',9,4),(48,'civicrm_contact',9,5),(105,'civicrm_contact',10,5),(99,'civicrm_contact',13,4),(36,'civicrm_contact',16,4),(85,'civicrm_contact',20,5),(108,'civicrm_contact',22,4),(82,'civicrm_contact',25,4),(98,'civicrm_contact',28,4),(72,'civicrm_contact',35,4),(40,'civicrm_contact',36,4),(41,'civicrm_contact',36,5),(97,'civicrm_contact',38,4),(113,'civicrm_contact',40,4),(32,'civicrm_contact',41,5),(7,'civicrm_contact',42,3),(84,'civicrm_contact',43,4),(65,'civicrm_contact',49,4),(76,'civicrm_contact',51,4),(77,'civicrm_contact',51,5),(60,'civicrm_contact',53,4),(106,'civicrm_contact',54,4),(107,'civicrm_contact',54,5),(42,'civicrm_contact',55,5),(3,'civicrm_contact',56,2),(94,'civicrm_contact',58,4),(79,'civicrm_contact',59,4),(116,'civicrm_contact',60,4),(117,'civicrm_contact',60,5),(5,'civicrm_contact',61,3),(14,'civicrm_contact',62,5),(27,'civicrm_contact',63,4),(28,'civicrm_contact',63,5),(12,'civicrm_contact',65,4),(18,'civicrm_contact',67,5),(74,'civicrm_contact',69,4),(75,'civicrm_contact',69,5),(49,'civicrm_contact',77,5),(58,'civicrm_contact',81,4),(59,'civicrm_contact',81,5),(6,'civicrm_contact',83,2),(37,'civicrm_contact',89,4),(114,'civicrm_contact',90,4),(115,'civicrm_contact',90,5),(67,'civicrm_contact',94,4),(10,'civicrm_contact',96,1),(70,'civicrm_contact',99,4),(71,'civicrm_contact',99,5),(61,'civicrm_contact',101,4),(44,'civicrm_contact',102,4),(45,'civicrm_contact',102,5),(46,'civicrm_contact',104,5),(90,'civicrm_contact',105,4),(91,'civicrm_contact',105,5),(83,'civicrm_contact',106,4),(95,'civicrm_contact',108,4),(96,'civicrm_contact',108,5),(78,'civicrm_contact',109,4),(24,'civicrm_contact',113,5),(34,'civicrm_contact',114,4),(35,'civicrm_contact',114,5),(21,'civicrm_contact',115,4),(54,'civicrm_contact',117,4),(55,'civicrm_contact',117,5),(57,'civicrm_contact',118,4),(25,'civicrm_contact',120,4),(26,'civicrm_contact',120,5),(43,'civicrm_contact',121,5),(66,'civicrm_contact',122,4),(80,'civicrm_contact',124,4),(63,'civicrm_contact',126,4),(64,'civicrm_contact',126,5),(19,'civicrm_contact',127,4),(15,'civicrm_contact',129,4),(16,'civicrm_contact',129,5),(56,'civicrm_contact',131,5),(102,'civicrm_contact',132,4),(103,'civicrm_contact',132,5),(112,'civicrm_contact',133,5),(1,'civicrm_contact',137,3),(33,'civicrm_contact',151,5),(22,'civicrm_contact',153,4),(23,'civicrm_contact',153,5),(13,'civicrm_contact',155,4),(50,'civicrm_contact',156,4),(51,'civicrm_contact',156,5),(31,'civicrm_contact',158,4),(9,'civicrm_contact',160,3),(93,'civicrm_contact',161,5),(109,'civicrm_contact',163,4),(11,'civicrm_contact',167,4),(2,'civicrm_contact',168,1),(87,'civicrm_contact',169,5),(81,'civicrm_contact',170,4),(29,'civicrm_contact',171,4),(30,'civicrm_contact',171,5),(8,'civicrm_contact',175,2),(100,'civicrm_contact',177,4),(101,'civicrm_contact',177,5),(92,'civicrm_contact',178,4),(38,'civicrm_contact',180,4),(39,'civicrm_contact',180,5),(20,'civicrm_contact',181,5),(86,'civicrm_contact',185,5),(89,'civicrm_contact',188,5),(110,'civicrm_contact',189,4),(111,'civicrm_contact',189,5),(4,'civicrm_contact',191,3),(52,'civicrm_contact',192,4),(53,'civicrm_contact',192,5),(73,'civicrm_contact',193,5),(17,'civicrm_contact',197,4),(62,'civicrm_contact',199,5);
 /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -467,7 +467,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_event` WRITE;
 /*!40000 ALTER TABLE `civicrm_event` DISABLE KEYS */;
-INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`) VALUES (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2020-02-15 17:00:00','2020-02-17 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together,  and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2019-08-14 12:00:00','2019-08-14 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,NULL,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2020-03-15 07:00:00','2020-03-18 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,NULL,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,NULL,NULL,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,NULL,NULL,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0);
+INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`) VALUES (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2020-03-20 17:00:00','2020-03-22 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together,  and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2019-09-19 12:00:00','2019-09-19 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,NULL,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2020-04-20 07:00:00','2020-04-23 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,NULL,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,NULL,NULL,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,NULL,NULL,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),(6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,NULL,NULL,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0);
 /*!40000 ALTER TABLE `civicrm_event` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -523,7 +523,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_financial_item` WRITE;
 /*!40000 ALTER TABLE `civicrm_financial_item` DISABLE KEYS */;
-INSERT INTO `civicrm_financial_item` (`id`, `created_date`, `transaction_date`, `contact_id`, `description`, `amount`, `currency`, `financial_account_id`, `status_id`, `entity_table`, `entity_id`) VALUES (1,'2019-08-15 21:31:31','2010-04-11 00:00:00',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),(2,'2019-08-15 21:31:31','2010-03-21 00:00:00',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),(3,'2019-08-15 21:31:31','2010-04-29 00:00:00',6,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',3),(4,'2019-08-15 21:31:31','2010-04-11 00:00:00',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),(5,'2019-08-15 21:31:31','2010-04-15 00:00:00',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',5),(6,'2019-08-15 21:31:31','2010-04-11 00:00:00',19,'Contribution Amount',175.00,'USD',1,1,'civicrm_line_item',6),(7,'2019-08-15 21:31:31','2010-03-27 00:00:00',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',7),(8,'2019-08-15 21:31:31','2010-03-08 00:00:00',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',8),(9,'2019-08-15 21:31:31','2010-04-22 00:00:00',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',9),(10,'2019-08-15 21:31:31','2009-07-01 11:53:50',71,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',10),(11,'2019-08-15 21:31:31','2009-07-01 12:55:41',43,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',11),(12,'2019-08-15 21:31:31','2009-10-01 11:53:50',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',12),(13,'2019-08-15 21:31:31','2009-12-01 12:55:41',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',13),(14,'2019-08-15 21:31:31','2019-08-16 09:31:31',177,'General',100.00,'USD',2,1,'civicrm_line_item',16),(15,'2019-08-15 21:31:31','2019-08-16 09:31:31',60,'General',100.00,'USD',2,1,'civicrm_line_item',17),(16,'2019-08-15 21:31:31','2019-08-16 09:31:31',170,'General',100.00,'USD',2,1,'civicrm_line_item',18),(17,'2019-08-15 21:31:31','2019-08-16 09:31:31',90,'General',100.00,'USD',2,1,'civicrm_line_item',19),(18,'2019-08-15 21:31:31','2019-08-16 09:31:31',149,'General',100.00,'USD',2,1,'civicrm_line_item',20),(19,'2019-08-15 21:31:31','2019-08-16 09:31:31',52,'General',100.00,'USD',2,1,'civicrm_line_item',21),(20,'2019-08-15 21:31:31','2019-08-16 09:31:31',132,'General',100.00,'USD',2,1,'civicrm_line_item',22),(21,'2019-08-15 21:31:31','2019-08-16 09:31:31',115,'General',100.00,'USD',2,1,'civicrm_line_item',23),(22,'2019-08-15 21:31:31','2019-08-16 09:31:31',105,'General',100.00,'USD',2,1,'civicrm_line_item',24),(23,'2019-08-15 21:31:31','2019-08-16 09:31:31',18,'General',100.00,'USD',2,1,'civicrm_line_item',25),(24,'2019-08-15 21:31:31','2019-08-16 09:31:31',12,'General',100.00,'USD',2,1,'civicrm_line_item',26),(25,'2019-08-15 21:31:31','2019-08-16 09:31:31',113,'General',100.00,'USD',2,1,'civicrm_line_item',27),(26,'2019-08-15 21:31:31','2019-08-16 09:31:31',26,'General',100.00,'USD',2,1,'civicrm_line_item',28),(27,'2019-08-15 21:31:31','2019-08-16 09:31:31',134,'General',100.00,'USD',2,1,'civicrm_line_item',29),(28,'2019-08-15 21:31:31','2019-08-16 09:31:31',148,'Student',50.00,'USD',2,1,'civicrm_line_item',30),(29,'2019-08-15 21:31:31','2019-08-16 09:31:31',124,'Student',50.00,'USD',2,1,'civicrm_line_item',31),(30,'2019-08-15 21:31:31','2019-08-16 09:31:31',7,'Student',50.00,'USD',2,1,'civicrm_line_item',32),(31,'2019-08-15 21:31:31','2019-08-16 09:31:31',95,'Student',50.00,'USD',2,1,'civicrm_line_item',33),(32,'2019-08-15 21:31:31','2019-08-16 09:31:31',16,'Student',50.00,'USD',2,1,'civicrm_line_item',34),(33,'2019-08-15 21:31:31','2019-08-16 09:31:31',46,'Student',50.00,'USD',2,1,'civicrm_line_item',35),(34,'2019-08-15 21:31:31','2019-08-16 09:31:31',116,'Student',50.00,'USD',2,1,'civicrm_line_item',36),(35,'2019-08-15 21:31:31','2019-08-16 09:31:31',8,'Student',50.00,'USD',2,1,'civicrm_line_item',37),(36,'2019-08-15 21:31:31','2019-08-16 09:31:31',42,'Student',50.00,'USD',2,1,'civicrm_line_item',38),(37,'2019-08-15 21:31:31','2019-08-16 09:31:31',118,'Student',50.00,'USD',2,1,'civicrm_line_item',39),(38,'2019-08-15 21:31:31','2019-08-16 09:31:31',36,'Student',50.00,'USD',2,1,'civicrm_line_item',40),(39,'2019-08-15 21:31:31','2019-08-16 09:31:31',57,'Student',50.00,'USD',2,1,'civicrm_line_item',41),(40,'2019-08-15 21:31:31','2019-08-16 09:31:31',182,'Student',50.00,'USD',2,1,'civicrm_line_item',42),(41,'2019-08-15 21:31:31','2019-08-16 09:31:31',183,'Student',50.00,'USD',2,1,'civicrm_line_item',43),(42,'2019-08-15 21:31:31','2019-08-16 09:31:31',159,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',44),(43,'2019-08-15 21:31:31','2019-08-16 09:31:31',78,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',45),(44,'2019-08-15 21:31:31','2019-08-16 09:31:31',156,'Soprano',50.00,'USD',2,1,'civicrm_line_item',81),(45,'2019-08-15 21:31:31','2019-08-16 09:31:31',20,'Soprano',50.00,'USD',2,1,'civicrm_line_item',82),(46,'2019-08-15 21:31:31','2019-08-16 09:31:31',172,'Soprano',50.00,'USD',2,1,'civicrm_line_item',83),(47,'2019-08-15 21:31:31','2019-08-16 09:31:31',119,'Soprano',50.00,'USD',2,1,'civicrm_line_item',84),(48,'2019-08-15 21:31:31','2019-08-16 09:31:31',10,'Soprano',50.00,'USD',2,1,'civicrm_line_item',85),(49,'2019-08-15 21:31:31','2019-08-16 09:31:31',191,'Soprano',50.00,'USD',2,1,'civicrm_line_item',86),(50,'2019-08-15 21:31:31','2019-08-16 09:31:31',32,'Soprano',50.00,'USD',2,1,'civicrm_line_item',87),(51,'2019-08-15 21:31:31','2019-08-16 09:31:31',23,'Soprano',50.00,'USD',2,1,'civicrm_line_item',88),(52,'2019-08-15 21:31:31','2019-08-16 09:31:31',133,'Soprano',50.00,'USD',2,1,'civicrm_line_item',89),(53,'2019-08-15 21:31:31','2019-08-16 09:31:31',26,'Soprano',50.00,'USD',2,1,'civicrm_line_item',90),(54,'2019-08-15 21:31:31','2019-08-16 09:31:31',50,'Soprano',50.00,'USD',2,1,'civicrm_line_item',91),(55,'2019-08-15 21:31:31','2019-08-16 09:31:31',82,'Soprano',50.00,'USD',2,1,'civicrm_line_item',92),(56,'2019-08-15 21:31:31','2019-08-16 09:31:31',182,'Soprano',50.00,'USD',2,1,'civicrm_line_item',93),(57,'2019-08-15 21:31:31','2019-08-16 09:31:31',196,'Soprano',50.00,'USD',2,1,'civicrm_line_item',94),(58,'2019-08-15 21:31:31','2019-08-16 09:31:31',62,'Soprano',50.00,'USD',2,1,'civicrm_line_item',95),(59,'2019-08-15 21:31:31','2019-08-16 09:31:31',186,'Soprano',50.00,'USD',2,1,'civicrm_line_item',96),(60,'2019-08-15 21:31:31','2019-08-16 09:31:31',34,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',47),(61,'2019-08-15 21:31:31','2019-08-16 09:31:31',42,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',48),(62,'2019-08-15 21:31:31','2019-08-16 09:31:31',141,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',49),(63,'2019-08-15 21:31:31','2019-08-16 09:31:31',107,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',50),(64,'2019-08-15 21:31:31','2019-08-16 09:31:31',48,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',51),(65,'2019-08-15 21:31:32','2019-08-16 09:31:31',184,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',52),(66,'2019-08-15 21:31:32','2019-08-16 09:31:31',183,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',53),(67,'2019-08-15 21:31:32','2019-08-16 09:31:31',2,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',54),(68,'2019-08-15 21:31:32','2019-08-16 09:31:31',111,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',55),(69,'2019-08-15 21:31:32','2019-08-16 09:31:31',4,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',56),(70,'2019-08-15 21:31:32','2019-08-16 09:31:31',160,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',57),(71,'2019-08-15 21:31:32','2019-08-16 09:31:31',13,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',58),(72,'2019-08-15 21:31:32','2019-08-16 09:31:31',18,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',59),(73,'2019-08-15 21:31:32','2019-08-16 09:31:31',173,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',60),(74,'2019-08-15 21:31:32','2019-08-16 09:31:31',185,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',61),(75,'2019-08-15 21:31:32','2019-08-16 09:31:31',132,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',62),(76,'2019-08-15 21:31:32','2019-08-16 09:31:31',163,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),(77,'2019-08-15 21:31:32','2019-08-16 09:31:31',167,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),(78,'2019-08-15 21:31:32','2019-08-16 09:31:31',150,'Single',50.00,'USD',4,1,'civicrm_line_item',65),(79,'2019-08-15 21:31:32','2019-08-16 09:31:31',108,'Single',50.00,'USD',4,1,'civicrm_line_item',66),(80,'2019-08-15 21:31:32','2019-08-16 09:31:31',8,'Single',50.00,'USD',4,1,'civicrm_line_item',67),(81,'2019-08-15 21:31:32','2019-08-16 09:31:31',7,'Single',50.00,'USD',4,1,'civicrm_line_item',68),(82,'2019-08-15 21:31:32','2019-08-16 09:31:31',41,'Single',50.00,'USD',4,1,'civicrm_line_item',69),(83,'2019-08-15 21:31:32','2019-08-16 09:31:31',99,'Single',50.00,'USD',4,1,'civicrm_line_item',70),(84,'2019-08-15 21:31:32','2019-08-16 09:31:31',128,'Single',50.00,'USD',4,1,'civicrm_line_item',71),(85,'2019-08-15 21:31:32','2019-08-16 09:31:31',79,'Single',50.00,'USD',4,1,'civicrm_line_item',72),(86,'2019-08-15 21:31:32','2019-08-16 09:31:31',31,'Single',50.00,'USD',4,1,'civicrm_line_item',73),(87,'2019-08-15 21:31:32','2019-08-16 09:31:31',188,'Single',50.00,'USD',4,1,'civicrm_line_item',74),(88,'2019-08-15 21:31:32','2019-08-16 09:31:31',63,'Single',50.00,'USD',4,1,'civicrm_line_item',75),(89,'2019-08-15 21:31:32','2019-08-16 09:31:31',181,'Single',50.00,'USD',4,1,'civicrm_line_item',76),(90,'2019-08-15 21:31:32','2019-08-16 09:31:31',137,'Single',50.00,'USD',4,1,'civicrm_line_item',77),(91,'2019-08-15 21:31:32','2019-08-16 09:31:31',30,'Single',50.00,'USD',4,1,'civicrm_line_item',78),(92,'2019-08-15 21:31:32','2019-08-16 09:31:31',199,'Single',50.00,'USD',4,1,'civicrm_line_item',79),(93,'2019-08-15 21:31:32','2019-08-16 09:31:31',90,'Single',50.00,'USD',4,1,'civicrm_line_item',80);
+INSERT INTO `civicrm_financial_item` (`id`, `created_date`, `transaction_date`, `contact_id`, `description`, `amount`, `currency`, `financial_account_id`, `status_id`, `entity_table`, `entity_id`) VALUES (1,'2019-09-20 19:57:29','2010-04-11 00:00:00',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),(2,'2019-09-20 19:57:29','2010-03-21 00:00:00',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),(3,'2019-09-20 19:57:29','2010-04-29 00:00:00',6,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',3),(4,'2019-09-20 19:57:29','2010-04-11 00:00:00',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),(5,'2019-09-20 19:57:29','2010-04-15 00:00:00',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',5),(6,'2019-09-20 19:57:29','2010-04-11 00:00:00',19,'Contribution Amount',175.00,'USD',1,1,'civicrm_line_item',6),(7,'2019-09-20 19:57:29','2010-03-27 00:00:00',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',7),(8,'2019-09-20 19:57:29','2010-03-08 00:00:00',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',8),(9,'2019-09-20 19:57:29','2010-04-22 00:00:00',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',9),(10,'2019-09-20 19:57:29','2009-07-01 11:53:50',71,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',10),(11,'2019-09-20 19:57:29','2009-07-01 12:55:41',43,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',11),(12,'2019-09-20 19:57:29','2009-10-01 11:53:50',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',12),(13,'2019-09-20 19:57:29','2009-12-01 12:55:41',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',13),(14,'2019-09-20 19:57:29','2019-09-20 12:57:29',130,'General',100.00,'USD',2,1,'civicrm_line_item',16),(15,'2019-09-20 19:57:29','2019-09-20 12:57:29',145,'General',100.00,'USD',2,1,'civicrm_line_item',17),(16,'2019-09-20 19:57:29','2019-09-20 12:57:29',53,'General',100.00,'USD',2,1,'civicrm_line_item',18),(17,'2019-09-20 19:57:29','2019-09-20 12:57:29',57,'General',100.00,'USD',2,1,'civicrm_line_item',19),(18,'2019-09-20 19:57:29','2019-09-20 12:57:29',178,'General',100.00,'USD',2,1,'civicrm_line_item',20),(19,'2019-09-20 19:57:29','2019-09-20 12:57:29',46,'General',100.00,'USD',2,1,'civicrm_line_item',21),(20,'2019-09-20 19:57:29','2019-09-20 12:57:29',123,'General',100.00,'USD',2,1,'civicrm_line_item',22),(21,'2019-09-20 19:57:29','2019-09-20 12:57:29',39,'General',100.00,'USD',2,1,'civicrm_line_item',23),(22,'2019-09-20 19:57:29','2019-09-20 12:57:29',19,'General',100.00,'USD',2,1,'civicrm_line_item',24),(23,'2019-09-20 19:57:29','2019-09-20 12:57:29',104,'General',100.00,'USD',2,1,'civicrm_line_item',25),(24,'2019-09-20 19:57:29','2019-09-20 12:57:29',10,'General',100.00,'USD',2,1,'civicrm_line_item',26),(25,'2019-09-20 19:57:29','2019-09-20 12:57:29',62,'General',100.00,'USD',2,1,'civicrm_line_item',27),(26,'2019-09-20 19:57:29','2019-09-20 12:57:29',113,'General',100.00,'USD',2,1,'civicrm_line_item',28),(27,'2019-09-20 19:57:29','2019-09-20 12:57:29',101,'General',100.00,'USD',2,1,'civicrm_line_item',29),(28,'2019-09-20 19:57:29','2019-09-20 12:57:29',197,'General',100.00,'USD',2,1,'civicrm_line_item',30),(29,'2019-09-20 19:57:29','2019-09-20 12:57:29',91,'Student',50.00,'USD',2,1,'civicrm_line_item',31),(30,'2019-09-20 19:57:29','2019-09-20 12:57:29',125,'Student',50.00,'USD',2,1,'civicrm_line_item',32),(31,'2019-09-20 19:57:29','2019-09-20 12:57:29',35,'Student',50.00,'USD',2,1,'civicrm_line_item',33),(32,'2019-09-20 19:57:29','2019-09-20 12:57:29',190,'Student',50.00,'USD',2,1,'civicrm_line_item',34),(33,'2019-09-20 19:57:29','2019-09-20 12:57:29',151,'Student',50.00,'USD',2,1,'civicrm_line_item',35),(34,'2019-09-20 19:57:29','2019-09-20 12:57:29',192,'Student',50.00,'USD',2,1,'civicrm_line_item',36),(35,'2019-09-20 19:57:29','2019-09-20 12:57:29',16,'Student',50.00,'USD',2,1,'civicrm_line_item',37),(36,'2019-09-20 19:57:29','2019-09-20 12:57:29',36,'Student',50.00,'USD',2,1,'civicrm_line_item',38),(37,'2019-09-20 19:57:29','2019-09-20 12:57:29',92,'Student',50.00,'USD',2,1,'civicrm_line_item',39),(38,'2019-09-20 19:57:29','2019-09-20 12:57:29',121,'Student',50.00,'USD',2,1,'civicrm_line_item',40),(39,'2019-09-20 19:57:29','2019-09-20 12:57:29',89,'Student',50.00,'USD',2,1,'civicrm_line_item',41),(40,'2019-09-20 19:57:29','2019-09-20 12:57:29',134,'Student',50.00,'USD',2,1,'civicrm_line_item',42),(41,'2019-09-20 19:57:29','2019-09-20 12:57:29',69,'Student',50.00,'USD',2,1,'civicrm_line_item',43),(42,'2019-09-20 19:57:29','2019-09-20 12:57:29',153,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',44),(43,'2019-09-20 19:57:29','2019-09-20 12:57:29',173,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',45),(44,'2019-09-20 19:57:29','2019-09-20 12:57:29',55,'Soprano',50.00,'USD',2,1,'civicrm_line_item',81),(45,'2019-09-20 19:57:29','2019-09-20 12:57:29',170,'Soprano',50.00,'USD',2,1,'civicrm_line_item',82),(46,'2019-09-20 19:57:29','2019-09-20 12:57:29',127,'Soprano',50.00,'USD',2,1,'civicrm_line_item',83),(47,'2019-09-20 19:57:29','2019-09-20 12:57:29',108,'Soprano',50.00,'USD',2,1,'civicrm_line_item',84),(48,'2019-09-20 19:57:29','2019-09-20 12:57:29',189,'Soprano',50.00,'USD',2,1,'civicrm_line_item',85),(49,'2019-09-20 19:57:29','2019-09-20 12:57:29',92,'Soprano',50.00,'USD',2,1,'civicrm_line_item',86),(50,'2019-09-20 19:57:29','2019-09-20 12:57:29',91,'Soprano',50.00,'USD',2,1,'civicrm_line_item',87),(51,'2019-09-20 19:57:29','2019-09-20 12:57:29',114,'Soprano',50.00,'USD',2,1,'civicrm_line_item',88),(52,'2019-09-20 19:57:29','2019-09-20 12:57:29',159,'Soprano',50.00,'USD',2,1,'civicrm_line_item',89),(53,'2019-09-20 19:57:29','2019-09-20 12:57:29',179,'Soprano',50.00,'USD',2,1,'civicrm_line_item',90),(54,'2019-09-20 19:57:29','2019-09-20 12:57:29',18,'Soprano',50.00,'USD',2,1,'civicrm_line_item',91),(55,'2019-09-20 19:57:29','2019-09-20 12:57:29',57,'Soprano',50.00,'USD',2,1,'civicrm_line_item',92),(56,'2019-09-20 19:57:29','2019-09-20 12:57:29',163,'Soprano',50.00,'USD',2,1,'civicrm_line_item',93),(57,'2019-09-20 19:57:29','2019-09-20 12:57:29',190,'Soprano',50.00,'USD',2,1,'civicrm_line_item',94),(58,'2019-09-20 19:57:29','2019-09-20 12:57:29',139,'Soprano',50.00,'USD',2,1,'civicrm_line_item',95),(59,'2019-09-20 19:57:29','2019-09-20 12:57:29',135,'Soprano',50.00,'USD',2,1,'civicrm_line_item',96),(60,'2019-09-20 19:57:29','2019-09-20 12:57:29',99,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',47),(61,'2019-09-20 19:57:29','2019-09-20 12:57:29',187,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',48),(62,'2019-09-20 19:57:29','2019-09-20 12:57:29',83,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',49),(63,'2019-09-20 19:57:29','2019-09-20 12:57:29',145,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',50),(64,'2019-09-20 19:57:29','2019-09-20 12:57:29',105,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',51),(65,'2019-09-20 19:57:29','2019-09-20 12:57:29',119,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',52),(66,'2019-09-20 19:57:29','2019-09-20 12:57:29',49,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',53),(67,'2019-09-20 19:57:29','2019-09-20 12:57:29',183,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',54),(68,'2019-09-20 19:57:29','2019-09-20 12:57:29',5,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',55),(69,'2019-09-20 19:57:29','2019-09-20 12:57:29',193,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',56),(70,'2019-09-20 19:57:29','2019-09-20 12:57:29',86,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',57),(71,'2019-09-20 19:57:29','2019-09-20 12:57:29',75,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',58),(72,'2019-09-20 19:57:29','2019-09-20 12:57:29',72,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',59),(73,'2019-09-20 19:57:29','2019-09-20 12:57:29',184,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',60),(74,'2019-09-20 19:57:29','2019-09-20 12:57:29',69,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',61),(75,'2019-09-20 19:57:29','2019-09-20 12:57:29',8,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',62),(76,'2019-09-20 19:57:29','2019-09-20 12:57:29',157,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),(77,'2019-09-20 19:57:29','2019-09-20 12:57:29',89,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),(78,'2019-09-20 19:57:29','2019-09-20 12:57:29',186,'Single',50.00,'USD',4,1,'civicrm_line_item',65),(79,'2019-09-20 19:57:29','2019-09-20 12:57:29',143,'Single',50.00,'USD',4,1,'civicrm_line_item',66),(80,'2019-09-20 19:57:29','2019-09-20 12:57:29',37,'Single',50.00,'USD',4,1,'civicrm_line_item',67),(81,'2019-09-20 19:57:29','2019-09-20 12:57:29',124,'Single',50.00,'USD',4,1,'civicrm_line_item',68),(82,'2019-09-20 19:57:29','2019-09-20 12:57:29',178,'Single',50.00,'USD',4,1,'civicrm_line_item',69),(83,'2019-09-20 19:57:29','2019-09-20 12:57:29',93,'Single',50.00,'USD',4,1,'civicrm_line_item',70),(84,'2019-09-20 19:57:29','2019-09-20 12:57:29',30,'Single',50.00,'USD',4,1,'civicrm_line_item',71),(85,'2019-09-20 19:57:29','2019-09-20 12:57:29',153,'Single',50.00,'USD',4,1,'civicrm_line_item',72),(86,'2019-09-20 19:57:29','2019-09-20 12:57:29',41,'Single',50.00,'USD',4,1,'civicrm_line_item',73),(87,'2019-09-20 19:57:29','2019-09-20 12:57:29',120,'Single',50.00,'USD',4,1,'civicrm_line_item',74),(88,'2019-09-20 19:57:29','2019-09-20 12:57:29',1,'Single',50.00,'USD',4,1,'civicrm_line_item',75),(89,'2019-09-20 19:57:29','2019-09-20 12:57:29',58,'Single',50.00,'USD',4,1,'civicrm_line_item',76),(90,'2019-09-20 19:57:29','2019-09-20 12:57:29',21,'Single',50.00,'USD',4,1,'civicrm_line_item',77),(91,'2019-09-20 19:57:29','2019-09-20 12:57:29',34,'Single',50.00,'USD',4,1,'civicrm_line_item',78),(92,'2019-09-20 19:57:29','2019-09-20 12:57:29',45,'Single',50.00,'USD',4,1,'civicrm_line_item',79),(93,'2019-09-20 19:57:29','2019-09-20 12:57:29',67,'Single',50.00,'USD',4,1,'civicrm_line_item',80);
 /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -533,7 +533,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_financial_trxn` WRITE;
 /*!40000 ALTER TABLE `civicrm_financial_trxn` DISABLE KEYS */;
-INSERT INTO `civicrm_financial_trxn` (`id`, `from_financial_account_id`, `to_financial_account_id`, `trxn_date`, `total_amount`, `fee_amount`, `net_amount`, `currency`, `is_payment`, `trxn_id`, `trxn_result_code`, `status_id`, `payment_processor_id`, `payment_instrument_id`, `card_type_id`, `check_number`, `pan_truncation`) VALUES (1,NULL,1,'2010-04-11 00:00:00',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL),(2,NULL,1,'2010-03-21 00:00:00',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL),(3,NULL,1,'2010-04-29 00:00:00',25.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'2095',NULL),(4,NULL,1,'2010-04-11 00:00:00',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL),(5,NULL,1,'2010-04-15 00:00:00',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL),(6,NULL,1,'2010-04-11 00:00:00',175.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'102',NULL),(7,NULL,1,'2010-03-27 00:00:00',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL),(8,NULL,1,'2010-03-08 00:00:00',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL),(9,NULL,1,'2010-04-22 00:00:00',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL),(10,NULL,1,'2009-07-01 11:53:50',500.00,NULL,NULL,'USD',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL),(11,NULL,1,'2009-07-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL43II',NULL,1,NULL,1,NULL,NULL,NULL),(12,NULL,1,'2009-10-01 11:53:50',200.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL),(13,NULL,1,'2009-12-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL),(14,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(15,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(16,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(17,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(18,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(19,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(20,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(21,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(22,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(23,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(24,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(25,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(26,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(27,NULL,1,'2019-08-16 09:31:31',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(28,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(29,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(30,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(31,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(32,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(33,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(34,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(35,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(36,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(37,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(38,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(39,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(40,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(41,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(42,NULL,1,'2019-08-16 09:31:31',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(43,NULL,1,'2019-08-16 09:31:31',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(44,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(45,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(46,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(47,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(48,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(49,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(50,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(51,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(52,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(53,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(54,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(55,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(56,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(57,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(58,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(59,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(60,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(61,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(62,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(63,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(64,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(65,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(66,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(67,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(68,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(69,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(70,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(71,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(72,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(73,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(74,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(75,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(76,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(77,NULL,1,'2019-08-16 09:31:31',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(78,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(79,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(80,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(81,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(82,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(83,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(84,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(85,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(86,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(87,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(88,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(89,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(90,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(91,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(92,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(93,NULL,1,'2019-08-16 09:31:31',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL);
+INSERT INTO `civicrm_financial_trxn` (`id`, `from_financial_account_id`, `to_financial_account_id`, `trxn_date`, `total_amount`, `fee_amount`, `net_amount`, `currency`, `is_payment`, `trxn_id`, `trxn_result_code`, `status_id`, `payment_processor_id`, `payment_instrument_id`, `card_type_id`, `check_number`, `pan_truncation`) VALUES (1,NULL,1,'2010-04-11 00:00:00',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL),(2,NULL,1,'2010-03-21 00:00:00',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL),(3,NULL,1,'2010-04-29 00:00:00',25.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'2095',NULL),(4,NULL,1,'2010-04-11 00:00:00',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL),(5,NULL,1,'2010-04-15 00:00:00',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL),(6,NULL,1,'2010-04-11 00:00:00',175.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'102',NULL),(7,NULL,1,'2010-03-27 00:00:00',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL),(8,NULL,1,'2010-03-08 00:00:00',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL),(9,NULL,1,'2010-04-22 00:00:00',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL),(10,NULL,1,'2009-07-01 11:53:50',500.00,NULL,NULL,'USD',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL),(11,NULL,1,'2009-07-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL43II',NULL,1,NULL,1,NULL,NULL,NULL),(12,NULL,1,'2009-10-01 11:53:50',200.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL),(13,NULL,1,'2009-12-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL),(14,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(15,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(16,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(17,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(18,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(19,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(20,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(21,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(22,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(23,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(24,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(25,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(26,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(27,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(28,NULL,1,'2019-09-20 12:57:29',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(29,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(30,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(31,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(32,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(33,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(34,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(35,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(36,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(37,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(38,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(39,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(40,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(41,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(42,NULL,1,'2019-09-20 12:57:29',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(43,NULL,1,'2019-09-20 12:57:29',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(44,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(45,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(46,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(47,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(48,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(49,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(50,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(51,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(52,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(53,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(54,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(55,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(56,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(57,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(58,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(59,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(60,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(61,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(62,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(63,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(64,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(65,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(66,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(67,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(68,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(69,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(70,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(71,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(72,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(73,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(74,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(75,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(76,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(77,NULL,1,'2019-09-20 12:57:29',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(78,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(79,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(80,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(81,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(82,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(83,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(84,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(85,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(86,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(87,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(88,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(89,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(90,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(91,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(92,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(93,NULL,1,'2019-09-20 12:57:29',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -562,7 +562,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_group` WRITE;
 /*!40000 ALTER TABLE `civicrm_group` DISABLE KEYS */;
-INSERT INTO `civicrm_group` (`id`, `name`, `title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `where_clause`, `select_tables`, `where_tables`, `group_type`, `cache_date`, `refresh_date`, `parents`, `children`, `is_hidden`, `is_reserved`, `created_id`, `modified_id`) VALUES (1,'Administrators','Administrators','Contacts in this group are assigned Administrator role permissions.',NULL,NULL,1,'User and User Admin Only',NULL,NULL,NULL,'\ 11\ 1',NULL,NULL,NULL,NULL,0,0,NULL,NULL),(2,'Newsletter Subscribers','Newsletter Subscribers',NULL,NULL,NULL,1,'Public Pages',' (  ( ( `civicrm_group_contact-5d55cf317f43f`.group_id IN (\"2\") ) )  ) ','a:8:{s:15:\"civicrm_contact\";i:1;s:15:\"civicrm_address\";i:1;s:15:\"civicrm_country\";i:1;s:13:\"civicrm_email\";i:1;s:13:\"civicrm_phone\";i:1;s:10:\"civicrm_im\";i:1;s:19:\"civicrm_worldregion\";i:1;s:37:\"`civicrm_group_contact-5d55cf317f43f`\";s:201:\" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5d55cf317f43f` ON (contact_a.id = `civicrm_group_contact-5d55cf317f43f`.contact_id AND `civicrm_group_contact-5d55cf317f43f`.status IN (\'Added\'))\";}','a:2:{s:15:\"civicrm_contact\";i:1;s:37:\"`civicrm_group_contact-5d55cf317f43f`\";s:201:\" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5d55cf317f43f` ON (contact_a.id = `civicrm_group_contact-5d55cf317f43f`.contact_id AND `civicrm_group_contact-5d55cf317f43f`.status IN (\'Added\'))\";}','\ 11\ 12\ 1',NULL,NULL,NULL,NULL,0,0,NULL,NULL),(3,'Summer Program Volunteers','Summer Program Volunteers',NULL,NULL,NULL,1,'Public Pages',' (  ( ( `civicrm_group_contact-5d55cf318a7ba`.group_id IN (\"3\") ) )  ) ','a:8:{s:15:\"civicrm_contact\";i:1;s:15:\"civicrm_address\";i:1;s:15:\"civicrm_country\";i:1;s:13:\"civicrm_email\";i:1;s:13:\"civicrm_phone\";i:1;s:10:\"civicrm_im\";i:1;s:19:\"civicrm_worldregion\";i:1;s:37:\"`civicrm_group_contact-5d55cf318a7ba`\";s:201:\" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5d55cf318a7ba` ON (contact_a.id = `civicrm_group_contact-5d55cf318a7ba`.contact_id AND `civicrm_group_contact-5d55cf318a7ba`.status IN (\'Added\'))\";}','a:2:{s:15:\"civicrm_contact\";i:1;s:37:\"`civicrm_group_contact-5d55cf318a7ba`\";s:201:\" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5d55cf318a7ba` ON (contact_a.id = `civicrm_group_contact-5d55cf318a7ba`.contact_id AND `civicrm_group_contact-5d55cf318a7ba`.status IN (\'Added\'))\";}','\ 11\ 12\ 1',NULL,NULL,NULL,NULL,0,0,NULL,NULL),(4,'Advisory Board','Advisory Board',NULL,NULL,NULL,1,'Public Pages',' (  ( ( `civicrm_group_contact-5d55cf3194611`.group_id IN (\"4\") ) )  ) ','a:8:{s:15:\"civicrm_contact\";i:1;s:15:\"civicrm_address\";i:1;s:15:\"civicrm_country\";i:1;s:13:\"civicrm_email\";i:1;s:13:\"civicrm_phone\";i:1;s:10:\"civicrm_im\";i:1;s:19:\"civicrm_worldregion\";i:1;s:37:\"`civicrm_group_contact-5d55cf3194611`\";s:201:\" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5d55cf3194611` ON (contact_a.id = `civicrm_group_contact-5d55cf3194611`.contact_id AND `civicrm_group_contact-5d55cf3194611`.status IN (\'Added\'))\";}','a:2:{s:15:\"civicrm_contact\";i:1;s:37:\"`civicrm_group_contact-5d55cf3194611`\";s:201:\" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5d55cf3194611` ON (contact_a.id = `civicrm_group_contact-5d55cf3194611`.contact_id AND `civicrm_group_contact-5d55cf3194611`.status IN (\'Added\'))\";}','\ 11\ 12\ 1',NULL,NULL,NULL,NULL,0,0,NULL,NULL);
+INSERT INTO `civicrm_group` (`id`, `name`, `title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `where_clause`, `select_tables`, `where_tables`, `group_type`, `cache_date`, `refresh_date`, `parents`, `children`, `is_hidden`, `is_reserved`, `created_id`, `modified_id`) VALUES (1,'Administrators','Administrators','Contacts in this group are assigned Administrator role permissions.',NULL,NULL,1,'User and User Admin Only',NULL,NULL,NULL,'\ 11\ 1',NULL,NULL,NULL,NULL,0,0,NULL,NULL),(2,'Newsletter Subscribers','Newsletter Subscribers',NULL,NULL,NULL,1,'Public Pages',' (  ( ( `civicrm_group_contact-5d852f28c97c9`.group_id IN (\"2\") ) )  ) ','a:8:{s:15:\"civicrm_contact\";i:1;s:15:\"civicrm_address\";i:1;s:15:\"civicrm_country\";i:1;s:13:\"civicrm_email\";i:1;s:13:\"civicrm_phone\";i:1;s:10:\"civicrm_im\";i:1;s:19:\"civicrm_worldregion\";i:1;s:37:\"`civicrm_group_contact-5d852f28c97c9`\";s:201:\" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5d852f28c97c9` ON (contact_a.id = `civicrm_group_contact-5d852f28c97c9`.contact_id AND `civicrm_group_contact-5d852f28c97c9`.status IN (\'Added\'))\";}','a:2:{s:15:\"civicrm_contact\";i:1;s:37:\"`civicrm_group_contact-5d852f28c97c9`\";s:201:\" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5d852f28c97c9` ON (contact_a.id = `civicrm_group_contact-5d852f28c97c9`.contact_id AND `civicrm_group_contact-5d852f28c97c9`.status IN (\'Added\'))\";}','\ 11\ 12\ 1',NULL,NULL,NULL,NULL,0,0,NULL,NULL),(3,'Summer Program Volunteers','Summer Program Volunteers',NULL,NULL,NULL,1,'Public Pages',' (  ( ( `civicrm_group_contact-5d852f28cc524`.group_id IN (\"3\") ) )  ) ','a:8:{s:15:\"civicrm_contact\";i:1;s:15:\"civicrm_address\";i:1;s:15:\"civicrm_country\";i:1;s:13:\"civicrm_email\";i:1;s:13:\"civicrm_phone\";i:1;s:10:\"civicrm_im\";i:1;s:19:\"civicrm_worldregion\";i:1;s:37:\"`civicrm_group_contact-5d852f28cc524`\";s:201:\" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5d852f28cc524` ON (contact_a.id = `civicrm_group_contact-5d852f28cc524`.contact_id AND `civicrm_group_contact-5d852f28cc524`.status IN (\'Added\'))\";}','a:2:{s:15:\"civicrm_contact\";i:1;s:37:\"`civicrm_group_contact-5d852f28cc524`\";s:201:\" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5d852f28cc524` ON (contact_a.id = `civicrm_group_contact-5d852f28cc524`.contact_id AND `civicrm_group_contact-5d852f28cc524`.status IN (\'Added\'))\";}','\ 11\ 12\ 1',NULL,NULL,NULL,NULL,0,0,NULL,NULL),(4,'Advisory Board','Advisory Board',NULL,NULL,NULL,1,'Public Pages',' (  ( ( `civicrm_group_contact-5d852f28ce68e`.group_id IN (\"4\") ) )  ) ','a:8:{s:15:\"civicrm_contact\";i:1;s:15:\"civicrm_address\";i:1;s:15:\"civicrm_country\";i:1;s:13:\"civicrm_email\";i:1;s:13:\"civicrm_phone\";i:1;s:10:\"civicrm_im\";i:1;s:19:\"civicrm_worldregion\";i:1;s:37:\"`civicrm_group_contact-5d852f28ce68e`\";s:201:\" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5d852f28ce68e` ON (contact_a.id = `civicrm_group_contact-5d852f28ce68e`.contact_id AND `civicrm_group_contact-5d852f28ce68e`.status IN (\'Added\'))\";}','a:2:{s:15:\"civicrm_contact\";i:1;s:37:\"`civicrm_group_contact-5d852f28ce68e`\";s:201:\" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5d852f28ce68e` ON (contact_a.id = `civicrm_group_contact-5d852f28ce68e`.contact_id AND `civicrm_group_contact-5d852f28ce68e`.status IN (\'Added\'))\";}','\ 11\ 12\ 1',NULL,NULL,NULL,NULL,0,0,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_group` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -572,7 +572,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_group_contact` WRITE;
 /*!40000 ALTER TABLE `civicrm_group_contact` DISABLE KEYS */;
-INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES (1,2,16,'Added',NULL,NULL),(2,2,45,'Added',NULL,NULL),(3,2,103,'Added',NULL,NULL),(4,2,57,'Added',NULL,NULL),(5,2,69,'Added',NULL,NULL),(6,2,31,'Added',NULL,NULL),(7,2,48,'Added',NULL,NULL),(8,2,193,'Added',NULL,NULL),(9,2,169,'Added',NULL,NULL),(10,2,33,'Added',NULL,NULL),(11,2,128,'Added',NULL,NULL),(12,2,27,'Added',NULL,NULL),(13,2,66,'Added',NULL,NULL),(14,2,5,'Added',NULL,NULL),(15,2,170,'Added',NULL,NULL),(16,2,112,'Added',NULL,NULL),(17,2,129,'Added',NULL,NULL),(18,2,18,'Added',NULL,NULL),(19,2,191,'Added',NULL,NULL),(20,2,60,'Added',NULL,NULL),(21,2,81,'Added',NULL,NULL),(22,2,85,'Added',NULL,NULL),(23,2,116,'Added',NULL,NULL),(24,2,177,'Added',NULL,NULL),(25,2,4,'Added',NULL,NULL),(26,2,149,'Added',NULL,NULL),(27,2,24,'Added',NULL,NULL),(28,2,82,'Added',NULL,NULL),(29,2,30,'Added',NULL,NULL),(30,2,12,'Added',NULL,NULL),(31,2,172,'Added',NULL,NULL),(32,2,114,'Added',NULL,NULL),(33,2,154,'Added',NULL,NULL),(34,2,99,'Added',NULL,NULL),(35,2,94,'Added',NULL,NULL),(36,2,58,'Added',NULL,NULL),(37,2,15,'Added',NULL,NULL),(38,2,51,'Added',NULL,NULL),(39,2,26,'Added',NULL,NULL),(40,2,174,'Added',NULL,NULL),(41,2,42,'Added',NULL,NULL),(42,2,124,'Added',NULL,NULL),(43,2,136,'Added',NULL,NULL),(44,2,75,'Added',NULL,NULL),(45,2,118,'Added',NULL,NULL),(46,2,40,'Added',NULL,NULL),(47,2,38,'Added',NULL,NULL),(48,2,59,'Added',NULL,NULL),(49,2,148,'Added',NULL,NULL),(50,2,50,'Added',NULL,NULL),(51,2,22,'Added',NULL,NULL),(52,2,192,'Added',NULL,NULL),(53,2,119,'Added',NULL,NULL),(54,2,133,'Added',NULL,NULL),(55,2,95,'Added',NULL,NULL),(56,2,164,'Added',NULL,NULL),(57,2,158,'Added',NULL,NULL),(58,2,165,'Added',NULL,NULL),(59,2,14,'Added',NULL,NULL),(60,2,77,'Added',NULL,NULL),(61,3,23,'Added',NULL,NULL),(62,3,67,'Added',NULL,NULL),(63,3,113,'Added',NULL,NULL),(64,3,89,'Added',NULL,NULL),(65,3,185,'Added',NULL,NULL),(66,3,102,'Added',NULL,NULL),(67,3,68,'Added',NULL,NULL),(68,3,123,'Added',NULL,NULL),(69,3,134,'Added',NULL,NULL),(70,3,141,'Added',NULL,NULL),(71,3,7,'Added',NULL,NULL),(72,3,96,'Added',NULL,NULL),(73,3,10,'Added',NULL,NULL),(74,3,87,'Added',NULL,NULL),(75,3,194,'Added',NULL,NULL),(76,4,16,'Added',NULL,NULL),(77,4,193,'Added',NULL,NULL),(78,4,170,'Added',NULL,NULL),(79,4,85,'Added',NULL,NULL),(80,4,30,'Added',NULL,NULL),(81,4,58,'Added',NULL,NULL),(82,4,136,'Added',NULL,NULL),(83,4,50,'Added',NULL,NULL);
+INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES (1,2,167,'Added',NULL,NULL),(2,2,144,'Added',NULL,NULL),(3,2,65,'Added',NULL,NULL),(4,2,187,'Added',NULL,NULL),(5,2,155,'Added',NULL,NULL),(6,2,174,'Added',NULL,NULL),(7,2,62,'Added',NULL,NULL),(8,2,87,'Added',NULL,NULL),(9,2,129,'Added',NULL,NULL),(10,2,112,'Added',NULL,NULL),(11,2,197,'Added',NULL,NULL),(12,2,116,'Added',NULL,NULL),(13,2,67,'Added',NULL,NULL),(14,2,152,'Added',NULL,NULL),(15,2,127,'Added',NULL,NULL),(16,2,198,'Added',NULL,NULL),(17,2,181,'Added',NULL,NULL),(18,2,76,'Added',NULL,NULL),(19,2,115,'Added',NULL,NULL),(20,2,30,'Added',NULL,NULL),(21,2,153,'Added',NULL,NULL),(22,2,79,'Added',NULL,NULL),(23,2,113,'Added',NULL,NULL),(24,2,64,'Added',NULL,NULL),(25,2,120,'Added',NULL,NULL),(26,2,6,'Added',NULL,NULL),(27,2,63,'Added',NULL,NULL),(28,2,201,'Added',NULL,NULL),(29,2,171,'Added',NULL,NULL),(30,2,136,'Added',NULL,NULL),(31,2,158,'Added',NULL,NULL),(32,2,70,'Added',NULL,NULL),(33,2,41,'Added',NULL,NULL),(34,2,147,'Added',NULL,NULL),(35,2,151,'Added',NULL,NULL),(36,2,73,'Added',NULL,NULL),(37,2,114,'Added',NULL,NULL),(38,2,34,'Added',NULL,NULL),(39,2,16,'Added',NULL,NULL),(40,2,86,'Added',NULL,NULL),(41,2,89,'Added',NULL,NULL),(42,2,19,'Added',NULL,NULL),(43,2,180,'Added',NULL,NULL),(44,2,92,'Added',NULL,NULL),(45,2,36,'Added',NULL,NULL),(46,2,2,'Added',NULL,NULL),(47,2,55,'Added',NULL,NULL),(48,2,11,'Added',NULL,NULL),(49,2,121,'Added',NULL,NULL),(50,2,123,'Added',NULL,NULL),(51,2,102,'Added',NULL,NULL),(52,2,135,'Added',NULL,NULL),(53,2,104,'Added',NULL,NULL),(54,2,45,'Added',NULL,NULL),(55,2,9,'Added',NULL,NULL),(56,2,128,'Added',NULL,NULL),(57,2,77,'Added',NULL,NULL),(58,2,103,'Added',NULL,NULL),(59,2,156,'Added',NULL,NULL),(60,2,78,'Added',NULL,NULL),(61,3,192,'Added',NULL,NULL),(62,3,97,'Added',NULL,NULL),(63,3,117,'Added',NULL,NULL),(64,3,39,'Added',NULL,NULL),(65,3,131,'Added',NULL,NULL),(66,3,111,'Added',NULL,NULL),(67,3,118,'Added',NULL,NULL),(68,3,148,'Added',NULL,NULL),(69,3,81,'Added',NULL,NULL),(70,3,119,'Added',NULL,NULL),(71,3,53,'Added',NULL,NULL),(72,3,162,'Added',NULL,NULL),(73,3,101,'Added',NULL,NULL),(74,3,139,'Added',NULL,NULL),(75,3,199,'Added',NULL,NULL),(76,4,167,'Added',NULL,NULL),(77,4,87,'Added',NULL,NULL),(78,4,127,'Added',NULL,NULL),(79,4,79,'Added',NULL,NULL),(80,4,171,'Added',NULL,NULL),(81,4,73,'Added',NULL,NULL),(82,4,180,'Added',NULL,NULL),(83,4,123,'Added',NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -637,7 +637,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_line_item` WRITE;
 /*!40000 ALTER TABLE `civicrm_line_item` DISABLE KEYS */;
-INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contribution_id`, `price_field_id`, `label`, `qty`, `unit_price`, `line_total`, `participant_count`, `price_field_value_id`, `financial_type_id`, `non_deductible_amount`, `tax_amount`) VALUES (1,'civicrm_contribution',1,1,1,'Contribution Amount',1.00,125.00,125.00,0,1,1,0.00,NULL),(2,'civicrm_contribution',2,2,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(3,'civicrm_contribution',3,3,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL),(4,'civicrm_contribution',4,4,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(5,'civicrm_contribution',5,5,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(6,'civicrm_contribution',6,6,1,'Contribution Amount',1.00,175.00,175.00,0,1,1,0.00,NULL),(7,'civicrm_contribution',7,7,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(8,'civicrm_contribution',8,8,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL),(9,'civicrm_contribution',9,9,1,'Contribution Amount',1.00,250.00,250.00,0,1,1,0.00,NULL),(10,'civicrm_contribution',10,10,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(11,'civicrm_contribution',11,11,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(12,'civicrm_contribution',12,12,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(13,'civicrm_contribution',13,13,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(16,'civicrm_membership',1,14,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(17,'civicrm_membership',3,15,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(18,'civicrm_membership',5,16,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(19,'civicrm_membership',7,17,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(20,'civicrm_membership',9,18,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(21,'civicrm_membership',13,19,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(22,'civicrm_membership',15,20,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(23,'civicrm_membership',17,21,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(24,'civicrm_membership',19,22,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(25,'civicrm_membership',21,23,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(26,'civicrm_membership',23,24,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(27,'civicrm_membership',25,25,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(28,'civicrm_membership',27,26,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(29,'civicrm_membership',29,27,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(30,'civicrm_membership',2,28,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(31,'civicrm_membership',4,29,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(32,'civicrm_membership',6,30,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(33,'civicrm_membership',8,31,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(34,'civicrm_membership',10,32,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(35,'civicrm_membership',12,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(36,'civicrm_membership',14,34,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(37,'civicrm_membership',16,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(38,'civicrm_membership',18,36,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(39,'civicrm_membership',20,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(40,'civicrm_membership',24,38,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(41,'civicrm_membership',26,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(42,'civicrm_membership',28,40,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(43,'civicrm_membership',30,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(44,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(45,'civicrm_membership',22,43,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(47,'civicrm_participant',3,58,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(48,'civicrm_participant',6,60,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(49,'civicrm_participant',9,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(50,'civicrm_participant',12,69,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(51,'civicrm_participant',15,61,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(52,'civicrm_participant',18,88,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(53,'civicrm_participant',21,87,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(54,'civicrm_participant',24,45,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(55,'civicrm_participant',25,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(56,'civicrm_participant',28,46,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(57,'civicrm_participant',31,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(58,'civicrm_participant',34,50,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(59,'civicrm_participant',37,51,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(60,'civicrm_participant',40,84,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(61,'civicrm_participant',43,89,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(62,'civicrm_participant',46,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(63,'civicrm_participant',49,81,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(64,'civicrm_participant',50,82,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(65,'civicrm_participant',1,78,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(66,'civicrm_participant',4,70,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(67,'civicrm_participant',7,48,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(68,'civicrm_participant',10,47,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(69,'civicrm_participant',13,59,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(70,'civicrm_participant',16,68,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(71,'civicrm_participant',19,73,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(72,'civicrm_participant',22,65,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(73,'civicrm_participant',26,56,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(74,'civicrm_participant',29,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(75,'civicrm_participant',32,64,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(76,'civicrm_participant',35,85,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(77,'civicrm_participant',38,76,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(78,'civicrm_participant',41,55,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(79,'civicrm_participant',44,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(80,'civicrm_participant',47,67,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(81,'civicrm_participant',2,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(82,'civicrm_participant',5,52,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(83,'civicrm_participant',8,83,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(84,'civicrm_participant',11,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(85,'civicrm_participant',14,49,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(86,'civicrm_participant',17,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(87,'civicrm_participant',20,57,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(88,'civicrm_participant',23,53,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(89,'civicrm_participant',27,75,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(90,'civicrm_participant',30,54,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(91,'civicrm_participant',33,62,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(92,'civicrm_participant',36,66,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(93,'civicrm_participant',39,86,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(94,'civicrm_participant',42,93,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(95,'civicrm_participant',45,63,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(96,'civicrm_participant',48,90,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL);
+INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contribution_id`, `price_field_id`, `label`, `qty`, `unit_price`, `line_total`, `participant_count`, `price_field_value_id`, `financial_type_id`, `non_deductible_amount`, `tax_amount`) VALUES (1,'civicrm_contribution',1,1,1,'Contribution Amount',1.00,125.00,125.00,0,1,1,0.00,NULL),(2,'civicrm_contribution',2,2,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(3,'civicrm_contribution',3,3,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL),(4,'civicrm_contribution',4,4,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(5,'civicrm_contribution',5,5,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(6,'civicrm_contribution',6,6,1,'Contribution Amount',1.00,175.00,175.00,0,1,1,0.00,NULL),(7,'civicrm_contribution',7,7,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(8,'civicrm_contribution',8,8,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL),(9,'civicrm_contribution',9,9,1,'Contribution Amount',1.00,250.00,250.00,0,1,1,0.00,NULL),(10,'civicrm_contribution',10,10,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(11,'civicrm_contribution',11,11,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(12,'civicrm_contribution',12,12,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(13,'civicrm_contribution',13,13,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(16,'civicrm_membership',1,14,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(17,'civicrm_membership',3,15,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(18,'civicrm_membership',5,16,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(19,'civicrm_membership',7,17,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(20,'civicrm_membership',9,18,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(21,'civicrm_membership',10,19,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(22,'civicrm_membership',13,20,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(23,'civicrm_membership',15,21,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(24,'civicrm_membership',17,22,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(25,'civicrm_membership',19,23,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(26,'civicrm_membership',21,24,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(27,'civicrm_membership',23,25,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(28,'civicrm_membership',25,26,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(29,'civicrm_membership',27,27,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(30,'civicrm_membership',29,28,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(31,'civicrm_membership',2,29,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(32,'civicrm_membership',4,30,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(33,'civicrm_membership',6,31,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(34,'civicrm_membership',8,32,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(35,'civicrm_membership',12,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(36,'civicrm_membership',14,34,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(37,'civicrm_membership',16,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(38,'civicrm_membership',18,36,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(39,'civicrm_membership',20,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(40,'civicrm_membership',24,38,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(41,'civicrm_membership',26,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(42,'civicrm_membership',28,40,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(43,'civicrm_membership',30,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(44,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(45,'civicrm_membership',22,43,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(47,'civicrm_participant',3,69,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(48,'civicrm_participant',6,91,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(49,'civicrm_participant',9,63,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(50,'civicrm_participant',12,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(51,'civicrm_participant',15,70,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(52,'civicrm_participant',18,73,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(53,'civicrm_participant',21,55,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(54,'civicrm_participant',24,88,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(55,'civicrm_participant',25,46,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(56,'civicrm_participant',28,94,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(57,'civicrm_participant',31,64,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(58,'civicrm_participant',34,62,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(59,'civicrm_participant',37,61,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(60,'civicrm_participant',40,89,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(61,'civicrm_participant',43,60,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(62,'civicrm_participant',46,47,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(63,'civicrm_participant',49,82,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(64,'civicrm_participant',50,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(65,'civicrm_participant',1,90,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(66,'civicrm_participant',4,79,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(67,'civicrm_participant',7,52,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(68,'civicrm_participant',10,75,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(69,'civicrm_participant',13,86,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(70,'civicrm_participant',16,68,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(71,'civicrm_participant',19,50,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(72,'civicrm_participant',22,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(73,'civicrm_participant',26,53,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(74,'civicrm_participant',29,74,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(75,'civicrm_participant',32,45,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(76,'civicrm_participant',35,58,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(77,'civicrm_participant',38,49,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(78,'civicrm_participant',41,51,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(79,'civicrm_participant',44,54,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(80,'civicrm_participant',47,59,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(81,'civicrm_participant',2,56,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(82,'civicrm_participant',5,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(83,'civicrm_participant',8,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(84,'civicrm_participant',11,71,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(85,'civicrm_participant',14,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(86,'civicrm_participant',17,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(87,'civicrm_participant',20,66,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(88,'civicrm_participant',23,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(89,'civicrm_participant',27,83,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(90,'civicrm_participant',30,87,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(91,'civicrm_participant',33,48,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(92,'civicrm_participant',36,57,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(93,'civicrm_participant',39,84,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(94,'civicrm_participant',42,93,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(95,'civicrm_participant',45,78,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(96,'civicrm_participant',48,77,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL);
 /*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -647,7 +647,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_loc_block` WRITE;
 /*!40000 ALTER TABLE `civicrm_loc_block` DISABLE KEYS */;
-INSERT INTO `civicrm_loc_block` (`id`, `address_id`, `email_id`, `phone_id`, `im_id`, `address_2_id`, `email_2_id`, `phone_2_id`, `im_2_id`) VALUES (1,175,186,170,NULL,NULL,NULL,NULL,NULL),(2,176,187,171,NULL,NULL,NULL,NULL,NULL),(3,177,188,172,NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `civicrm_loc_block` (`id`, `address_id`, `email_id`, `phone_id`, `im_id`, `address_2_id`, `email_2_id`, `phone_2_id`, `im_2_id`) VALUES (1,179,201,168,NULL,NULL,NULL,NULL,NULL),(2,180,202,169,NULL,NULL,NULL,NULL,NULL),(3,181,203,170,NULL,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -896,7 +896,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_membership` WRITE;
 /*!40000 ALTER TABLE `civicrm_membership` DISABLE KEYS */;
-INSERT INTO `civicrm_membership` (`id`, `contact_id`, `membership_type_id`, `join_date`, `start_date`, `end_date`, `source`, `status_id`, `is_override`, `status_override_end_date`, `owner_membership_id`, `max_related`, `is_test`, `is_pay_later`, `contribution_recur_id`, `campaign_id`) VALUES (1,177,1,'2019-08-15','2019-08-15','2021-08-14','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(2,148,2,'2019-08-14','2019-08-14','2020-08-13','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(3,60,1,'2019-08-13','2019-08-13','2021-08-12','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(4,124,2,'2019-08-12','2019-08-12','2020-08-11','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(5,170,1,'2017-07-14','2017-07-14','2019-07-13','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(6,7,2,'2019-08-10','2019-08-10','2020-08-09','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(7,90,1,'2019-08-09','2019-08-09','2021-08-08','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(8,95,2,'2019-08-08','2019-08-08','2020-08-07','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(9,149,1,'2019-08-07','2019-08-07','2021-08-06','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(10,16,2,'2018-08-06','2018-08-06','2019-08-05','Donation',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(11,159,3,'2019-08-05','2019-08-05',NULL,'Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(12,46,2,'2019-08-04','2019-08-04','2020-08-03','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(13,52,1,'2019-08-03','2019-08-03','2021-08-02','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(14,116,2,'2019-08-02','2019-08-02','2020-08-01','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(15,132,1,'2017-04-25','2017-04-25','2019-04-24','Donation',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(16,8,2,'2019-07-31','2019-07-31','2020-07-30','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(17,115,1,'2019-07-30','2019-07-30','2021-07-29','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(18,42,2,'2019-07-29','2019-07-29','2020-07-28','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(19,105,1,'2019-07-28','2019-07-28','2021-07-27','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(20,118,2,'2018-07-27','2018-07-27','2019-07-26','Payment',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(21,18,1,'2019-07-26','2019-07-26','2021-07-25','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(22,78,3,'2019-07-25','2019-07-25',NULL,'Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(23,12,1,'2019-07-24','2019-07-24','2021-07-23','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(24,36,2,'2019-07-23','2019-07-23','2020-07-22','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(25,113,1,'2017-02-04','2017-02-04','2019-02-03','Payment',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(26,57,2,'2019-07-21','2019-07-21','2020-07-20','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(27,26,1,'2019-07-20','2019-07-20','2021-07-19','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(28,182,2,'2019-07-19','2019-07-19','2020-07-18','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(29,134,1,'2019-07-18','2019-07-18','2021-07-17','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(30,183,2,'2018-07-17','2018-07-17','2019-07-16','Donation',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL);
+INSERT INTO `civicrm_membership` (`id`, `contact_id`, `membership_type_id`, `join_date`, `start_date`, `end_date`, `source`, `status_id`, `is_override`, `status_override_end_date`, `owner_membership_id`, `max_related`, `is_test`, `is_pay_later`, `contribution_recur_id`, `campaign_id`) VALUES (1,130,1,'2019-09-20','2019-09-20','2021-09-19','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(2,91,2,'2019-09-19','2019-09-19','2020-09-18','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(3,145,1,'2019-09-18','2019-09-18','2021-09-17','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(4,125,2,'2019-09-17','2019-09-17','2020-09-16','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(5,53,1,'2017-08-19','2017-08-19','2019-08-18','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(6,35,2,'2019-09-15','2019-09-15','2020-09-14','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(7,57,1,'2019-09-14','2019-09-14','2021-09-13','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(8,190,2,'2019-09-13','2019-09-13','2020-09-12','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(9,178,1,'2019-09-12','2019-09-12','2021-09-11','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(10,46,1,'2017-07-10','2017-07-10','2019-07-09','Payment',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(11,153,3,'2019-09-10','2019-09-10',NULL,'Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(12,151,2,'2019-09-09','2019-09-09','2020-09-08','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(13,123,1,'2019-09-08','2019-09-08','2021-09-07','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(14,192,2,'2019-09-07','2019-09-07','2020-09-06','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(15,39,1,'2017-05-31','2017-05-31','2019-05-30','Donation',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(16,16,2,'2019-09-05','2019-09-05','2020-09-04','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(17,19,1,'2019-09-04','2019-09-04','2021-09-03','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(18,36,2,'2019-09-03','2019-09-03','2020-09-02','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(19,104,1,'2019-09-02','2019-09-02','2021-09-01','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(20,92,2,'2018-09-01','2018-09-01','2019-08-31','Payment',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(21,10,1,'2019-08-31','2019-08-31','2021-08-30','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(22,173,3,'2019-08-30','2019-08-30',NULL,'Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(23,62,1,'2019-08-29','2019-08-29','2021-08-28','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(24,121,2,'2019-08-28','2019-08-28','2020-08-27','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(25,113,1,'2017-03-12','2017-03-12','2019-03-11','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(26,89,2,'2019-08-26','2019-08-26','2020-08-25','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(27,101,1,'2019-08-25','2019-08-25','2021-08-24','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(28,134,2,'2019-08-24','2019-08-24','2020-08-23','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(29,197,1,'2019-08-23','2019-08-23','2021-08-22','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(30,69,2,'2018-08-22','2018-08-22','2019-08-21','Payment',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -916,7 +916,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_membership_log` WRITE;
 /*!40000 ALTER TABLE `civicrm_membership_log` DISABLE KEYS */;
-INSERT INTO `civicrm_membership_log` (`id`, `membership_id`, `status_id`, `start_date`, `end_date`, `modified_id`, `modified_date`, `membership_type_id`, `max_related`) VALUES (1,6,1,'2019-08-10','2020-08-09',7,'2019-08-15',2,NULL),(2,16,1,'2019-07-31','2020-07-30',8,'2019-08-15',2,NULL),(3,23,1,'2019-07-24','2021-07-23',12,'2019-08-15',1,NULL),(4,10,4,'2018-08-06','2019-08-05',16,'2019-08-15',2,NULL),(5,21,1,'2019-07-26','2021-07-25',18,'2019-08-15',1,NULL),(6,27,1,'2019-07-20','2021-07-19',26,'2019-08-15',1,NULL),(7,24,1,'2019-07-23','2020-07-22',36,'2019-08-15',2,NULL),(8,18,1,'2019-07-29','2020-07-28',42,'2019-08-15',2,NULL),(9,12,1,'2019-08-04','2020-08-03',46,'2019-08-15',2,NULL),(10,13,1,'2019-08-03','2021-08-02',52,'2019-08-15',1,NULL),(11,26,1,'2019-07-21','2020-07-20',57,'2019-08-15',2,NULL),(12,3,1,'2019-08-13','2021-08-12',60,'2019-08-15',1,NULL),(13,22,1,'2019-07-25',NULL,78,'2019-08-15',3,NULL),(14,7,1,'2019-08-09','2021-08-08',90,'2019-08-15',1,NULL),(15,8,1,'2019-08-08','2020-08-07',95,'2019-08-15',2,NULL),(16,19,1,'2019-07-28','2021-07-27',105,'2019-08-15',1,NULL),(17,25,3,'2017-02-04','2019-02-03',113,'2019-08-15',1,NULL),(18,17,1,'2019-07-30','2021-07-29',115,'2019-08-15',1,NULL),(19,14,1,'2019-08-02','2020-08-01',116,'2019-08-15',2,NULL),(20,20,4,'2018-07-27','2019-07-26',118,'2019-08-15',2,NULL),(21,4,1,'2019-08-12','2020-08-11',124,'2019-08-15',2,NULL),(22,15,3,'2017-04-25','2019-04-24',132,'2019-08-15',1,NULL),(23,29,1,'2019-07-18','2021-07-17',134,'2019-08-15',1,NULL),(24,2,1,'2019-08-14','2020-08-13',148,'2019-08-15',2,NULL),(25,9,1,'2019-08-07','2021-08-06',149,'2019-08-15',1,NULL),(26,11,1,'2019-08-05',NULL,159,'2019-08-15',3,NULL),(27,5,3,'2017-07-14','2019-07-13',170,'2019-08-15',1,NULL),(28,1,1,'2019-08-15','2021-08-14',177,'2019-08-15',1,NULL),(29,28,1,'2019-07-19','2020-07-18',182,'2019-08-15',2,NULL),(30,30,4,'2018-07-17','2019-07-16',183,'2019-08-15',2,NULL);
+INSERT INTO `civicrm_membership_log` (`id`, `membership_id`, `status_id`, `start_date`, `end_date`, `modified_id`, `modified_date`, `membership_type_id`, `max_related`) VALUES (1,21,1,'2019-08-31','2021-08-30',10,'2019-09-20',1,NULL),(2,16,1,'2019-09-05','2020-09-04',16,'2019-09-20',2,NULL),(3,17,1,'2019-09-04','2021-09-03',19,'2019-09-20',1,NULL),(4,6,1,'2019-09-15','2020-09-14',35,'2019-09-20',2,NULL),(5,18,1,'2019-09-03','2020-09-02',36,'2019-09-20',2,NULL),(6,15,3,'2017-05-31','2019-05-30',39,'2019-09-20',1,NULL),(7,10,3,'2017-07-10','2019-07-09',46,'2019-09-20',1,NULL),(8,5,3,'2017-08-19','2019-08-18',53,'2019-09-20',1,NULL),(9,7,1,'2019-09-14','2021-09-13',57,'2019-09-20',1,NULL),(10,23,1,'2019-08-29','2021-08-28',62,'2019-09-20',1,NULL),(11,30,4,'2018-08-22','2019-08-21',69,'2019-09-20',2,NULL),(12,26,1,'2019-08-26','2020-08-25',89,'2019-09-20',2,NULL),(13,2,1,'2019-09-19','2020-09-18',91,'2019-09-20',2,NULL),(14,20,4,'2018-09-01','2019-08-31',92,'2019-09-20',2,NULL),(15,27,1,'2019-08-25','2021-08-24',101,'2019-09-20',1,NULL),(16,19,1,'2019-09-02','2021-09-01',104,'2019-09-20',1,NULL),(17,25,3,'2017-03-12','2019-03-11',113,'2019-09-20',1,NULL),(18,24,1,'2019-08-28','2020-08-27',121,'2019-09-20',2,NULL),(19,13,1,'2019-09-08','2021-09-07',123,'2019-09-20',1,NULL),(20,4,1,'2019-09-17','2020-09-16',125,'2019-09-20',2,NULL),(21,1,1,'2019-09-20','2021-09-19',130,'2019-09-20',1,NULL),(22,28,1,'2019-08-24','2020-08-23',134,'2019-09-20',2,NULL),(23,3,1,'2019-09-18','2021-09-17',145,'2019-09-20',1,NULL),(24,12,1,'2019-09-09','2020-09-08',151,'2019-09-20',2,NULL),(25,11,1,'2019-09-10',NULL,153,'2019-09-20',3,NULL),(26,22,1,'2019-08-30',NULL,173,'2019-09-20',3,NULL),(27,9,1,'2019-09-12','2021-09-11',178,'2019-09-20',1,NULL),(28,8,1,'2019-09-13','2020-09-12',190,'2019-09-20',2,NULL),(29,14,1,'2019-09-07','2020-09-06',192,'2019-09-20',2,NULL),(30,29,1,'2019-08-23','2021-08-22',197,'2019-09-20',1,NULL);
 /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -926,7 +926,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_membership_payment` WRITE;
 /*!40000 ALTER TABLE `civicrm_membership_payment` DISABLE KEYS */;
-INSERT INTO `civicrm_membership_payment` (`id`, `membership_id`, `contribution_id`) VALUES (1,1,14),(2,3,15),(3,5,16),(4,7,17),(5,9,18),(6,13,19),(7,15,20),(8,17,21),(9,19,22),(10,21,23),(11,23,24),(12,25,25),(13,27,26),(14,29,27),(15,2,28),(16,4,29),(17,6,30),(18,8,31),(19,10,32),(20,12,33),(21,14,34),(22,16,35),(23,18,36),(24,20,37),(25,24,38),(26,26,39),(27,28,40),(28,30,41),(29,11,42),(30,22,43);
+INSERT INTO `civicrm_membership_payment` (`id`, `membership_id`, `contribution_id`) VALUES (1,1,14),(2,3,15),(3,5,16),(4,7,17),(5,9,18),(6,10,19),(7,13,20),(8,15,21),(9,17,22),(10,19,23),(11,21,24),(12,23,25),(13,25,26),(14,27,27),(15,29,28),(16,2,29),(17,4,30),(18,6,31),(19,8,32),(20,12,33),(21,14,34),(22,16,35),(23,18,36),(24,20,37),(25,24,38),(26,26,39),(27,28,40),(28,30,41),(29,11,42),(30,22,43);
 /*!40000 ALTER TABLE `civicrm_membership_payment` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -956,7 +956,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_menu` WRITE;
 /*!40000 ALTER TABLE `civicrm_menu` DISABLE KEYS */;
-INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES (1,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,400,1,1,NULL,'a:0:{}'),(2,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,410,1,1,NULL,'a:0:{}'),(3,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(4,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(5,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(6,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(7,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(8,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(9,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(10,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,30,1,1,NULL,'a:0:{}'),(11,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'),(12,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(13,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(14,1,'civicrm/tag',NULL,'Tags (Categories)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,25,1,0,NULL,'a:3:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/11.png\";}'),(15,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(16,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(17,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(18,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(19,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(20,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(21,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,1,NULL,'a:0:{}'),(22,1,'civicrm/dashlet',NULL,'CiviCRM Dashlets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Page_Dashlet\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,1,NULL,'a:0:{}'),(23,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,10,1,1,NULL,'a:0:{}'),(24,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(25,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(26,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(27,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,12,1,1,NULL,'a:0:{}'),(28,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,14,1,1,NULL,'a:0:{}'),(29,1,'civicrm/contact/search/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:10:\"mode=16384\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(30,1,'civicrm/contact/search/custom/list',NULL,'Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Page_CustomSearch\";','s:10:\"mode=16384\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,16,1,1,NULL,'a:0:{}'),(31,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(32,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(33,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(34,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(35,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(36,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(37,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(38,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(39,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(40,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(41,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(42,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(43,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(44,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(45,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(46,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(47,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(48,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(49,1,'civicrm/contact/view/note','cid=%%cid%%','Notes','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Contact_Page_View_Note\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(50,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(51,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(52,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(53,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(54,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(55,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(56,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(57,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(58,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(59,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(60,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(61,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(62,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(63,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(64,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(65,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(66,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(67,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(68,1,'civicrm/ajax/dashboard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"dashboard\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(69,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(70,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(71,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(72,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(73,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(74,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(75,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(76,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,105,1,0,NULL,'a:3:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";s:4:\"icon\";s:34:\"admin/small/duplicate_matching.png\";}'),(77,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(78,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(79,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(80,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,110,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),(81,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(82,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(83,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(84,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(85,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(86,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(87,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(88,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(89,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(90,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(91,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,362,1,0,NULL,'a:3:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";}'),(92,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(93,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(94,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(95,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(96,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(97,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(98,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(99,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(100,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(101,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(102,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(103,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(104,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(105,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(106,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(107,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:26:\"admin/small/custm_data.png\";}'),(108,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,11,1,0,0,'a:0:{}'),(109,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(110,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(111,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(112,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(113,1,'civicrm/admin/custom/group/field/changetype',NULL,'Custom Field - Change Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Custom_Form_ChangeFieldType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(114,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:3:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";}'),(115,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,21,1,0,0,'a:0:{}'),(116,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,22,1,0,NULL,'a:0:{}'),(117,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,23,1,0,NULL,'a:0:{}'),(118,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,24,1,0,NULL,'a:0:{}'),(119,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,25,1,0,NULL,'a:0:{}'),(120,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,0,1,0,NULL,'a:0:{}'),(121,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:3:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/05.png\";}'),(122,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,35,1,0,NULL,'a:3:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:25:\"admin/small/rela_type.png\";}'),(123,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/09.png\";}'),(124,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,45,1,0,NULL,'a:3:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(125,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:3:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:21:\"admin/small/title.png\";}'),(126,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,55,1,0,NULL,'a:3:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/10.png\";}'),(127,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:3:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/13.png\";}'),(128,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,65,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(129,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:3:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(130,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,75,1,0,NULL,'a:3:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/08.png\";}'),(131,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:3:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n    Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:7:\"tel.gif\";}'),(132,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(133,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,95,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(134,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(135,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:3:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(136,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,105,1,0,NULL,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(137,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,110,1,0,NULL,'a:3:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(138,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:22:\"admin/small/domain.png\";}'),(139,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:3:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:21:\"admin/small/title.png\";}'),(140,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:3:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(141,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,262,1,0,NULL,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),(142,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:3:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(143,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(144,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:3:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:29:\"admin/small/communication.png\";}'),(145,1,'civicrm/admin/labelFormats',NULL,'Label Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:3:{s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(146,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:3:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(147,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,75,1,0,NULL,'a:3:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(148,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:3:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(149,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:3:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(150,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:3:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(151,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(152,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(153,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(154,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:3:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(155,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";s:4:\"icon\";s:18:\"admin/small/03.png\";}'),(156,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),(157,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:3:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";s:4:\"icon\";s:26:\"admin/small/Synch_user.png\";}'),(158,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:9:\"check.gif\";}'),(159,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(160,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,120,1,0,NULL,'a:3:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";}'),(161,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(162,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(163,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:3:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";}'),(164,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(165,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:3:{s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(166,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(167,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(168,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:3:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:26:\"admin/small/updatepath.png\";}'),(169,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(170,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:3:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(171,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,105,1,0,NULL,'a:3:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(172,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,110,1,0,NULL,'a:3:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:33:\"admin/small/import_export_map.png\";}'),(173,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,120,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(174,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,130,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(175,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(176,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(177,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(178,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),(179,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),(180,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1370,1,0,NULL,'a:3:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/13.png\";}'),(181,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1380,1,0,NULL,'a:3:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";s:4:\"icon\";s:18:\"admin/small/13.png\";}'),(182,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,385,1,0,NULL,'a:3:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";s:4:\"icon\";s:26:\"admin/small/grant_type.png\";}'),(183,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),(184,1,'civicrm/admin',NULL,'Administer CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,9000,1,1,NULL,'a:0:{}'),(185,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(186,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(187,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(188,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:3:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";}'),(189,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'),(190,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,0,'a:0:{}'),(191,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(192,1,'civicrm/admin/tplstrings/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Persistent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(193,1,'civicrm/admin/tplstrings',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Persistent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(194,1,'civicrm/ajax/mapping',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:11:\"mappingList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(195,1,'civicrm/ajax/recipientListing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:16:\"recipientListing\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(196,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,500,1,0,NULL,'a:3:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(197,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(198,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(199,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,399,1,0,NULL,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(200,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&amp;action=browse\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(201,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(202,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(203,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(204,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(205,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(206,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(207,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(208,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(209,1,'civicrm/acl/basic',NULL,'ACL','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_ACL_Page_ACLBasic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(210,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(211,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(212,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(213,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,9999,1,1,NULL,'a:0:{}'),(214,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(215,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(216,1,'civicrm/api',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(217,1,'civicrm/ajax/apiexample',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:14:\"getExampleFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(218,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(219,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(220,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:14:\"CiviCRM API v3\";s:3:\"url\";s:20:\"/civicrm/api?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(221,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(222,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(223,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(224,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(225,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(226,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(227,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(228,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(229,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(230,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(231,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(232,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(233,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(234,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(235,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(236,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(237,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(238,1,'civicrm/ajax/l10n-js',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Resources\";i:1;s:20:\"outputLocalizationJS\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(239,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(240,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(241,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(242,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(243,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(244,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(245,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(246,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(247,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(248,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(249,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(250,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(251,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,800,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(252,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(253,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(254,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(255,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(256,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_ICalendar\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(257,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(258,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:3:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:28:\"admin/small/event_manage.png\";}'),(259,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,375,1,0,NULL,'a:3:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(260,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,385,1,0,NULL,'a:3:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:26:\"admin/small/event_type.png\";}'),(261,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:3:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:28:\"admin/small/parti_status.png\";}'),(262,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,395,1,0,NULL,'a:3:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:26:\"admin/small/parti_role.png\";}'),(263,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,398,1,0,NULL,'a:3:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(264,1,'civicrm/admin/conference_slots','group=conference_slot','Conference Slot Labels','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,415,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(265,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,810,1,1,NULL,'a:0:{}'),(266,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,820,1,1,NULL,'a:0:{}'),(267,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(268,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,910,1,0,NULL,'a:0:{}'),(269,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(270,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,920,1,0,NULL,'a:0:{}'),(271,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(272,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,940,1,0,NULL,'a:0:{}'),(273,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(274,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,960,1,0,NULL,'a:0:{}'),(275,1,'civicrm/event/manage/conference',NULL,'Conference Slots','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:37:\"CRM_Event_Form_ManageEvent_Conference\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(276,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,830,1,0,NULL,'a:0:{}'),(277,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,840,1,1,NULL,'a:0:{}'),(278,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,850,1,1,NULL,'a:0:{}'),(279,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,880,1,1,NULL,'a:0:{}'),(280,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,890,1,1,NULL,'a:0:{}'),(281,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,4,1,0,NULL,'a:0:{}'),(282,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(283,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(284,1,'civicrm/ajax/event/add_participant_to_cart',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:23:\"add_participant_to_cart\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(285,1,'civicrm/ajax/event/remove_participant_from_cart',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:28:\"remove_participant_from_cart\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(286,1,'civicrm/event/add_to_cart',NULL,'Add Event To Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:29:\"CRM_Event_Cart_Page_AddToCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(287,1,'civicrm/event/cart_checkout',NULL,'Cart Checkout','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:34:\"CRM_Event_Cart_Controller_Checkout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(288,1,'civicrm/event/remove_from_cart',NULL,'Remove From Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:34:\"CRM_Event_Cart_Page_RemoveFromCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(289,1,'civicrm/event/view_cart',NULL,'View Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Cart_Page_ViewCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(290,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(291,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,540,1,1,NULL,'a:0:{}'),(292,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(293,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(294,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,500,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(295,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(296,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(297,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,1,NULL,1,0,1,0,NULL,'a:0:{}'),(298,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,360,1,0,NULL,'a:3:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";}'),(299,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:0:{}'),(300,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,410,1,0,NULL,'a:0:{}'),(301,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:0:{}'),(302,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(303,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(304,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,440,1,0,NULL,'a:0:{}'),(305,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,460,1,0,NULL,'a:0:{}'),(306,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,470,1,0,NULL,'a:0:{}'),(307,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,480,1,0,NULL,'a:0:{}'),(308,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(309,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,365,1,0,NULL,'a:3:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:24:\"admin/small/Premiums.png\";}'),(310,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,580,1,0,NULL,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(311,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(312,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:3:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";}'),(313,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:3:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:35:\"admin/small/payment_instruments.png\";}'),(314,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,395,1,0,NULL,'a:3:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:36:\"admin/small/accepted_creditcards.png\";}'),(315,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:32:\"admin/small/soft_credit_type.png\";}'),(316,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(317,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(318,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(319,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,510,1,1,NULL,'a:0:{}'),(320,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,588,1,1,NULL,'a:0:{}'),(321,1,'civicrm/contribute/import',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,520,1,1,NULL,'a:0:{}'),(322,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,530,1,1,NULL,'a:0:{}'),(323,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(324,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(325,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(326,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(327,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(328,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(329,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(330,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,581,1,0,NULL,'a:0:{}'),(331,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,585,1,0,NULL,'a:0:{}'),(332,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,586,1,0,NULL,'a:0:{}'),(333,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,600,1,0,NULL,'a:0:{}'),(334,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,610,1,0,NULL,'a:0:{}'),(335,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(336,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(337,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,620,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(338,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,630,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(339,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(340,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(341,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(342,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,450,1,0,NULL,'a:0:{}'),(343,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(344,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,700,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(345,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(346,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:3:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";s:4:\"icon\";s:31:\"admin/small/membership_type.png\";}'),(347,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:3:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";s:4:\"icon\";s:33:\"admin/small/membership_status.png\";}'),(348,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,2,1,0,NULL,'a:0:{}'),(349,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,390,1,0,NULL,'a:0:{}'),(350,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,710,1,1,NULL,'a:0:{}'),(351,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,720,1,1,NULL,'a:0:{}'),(352,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(353,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(354,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,600,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),(355,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(356,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,410,1,0,NULL,'a:3:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";}'),(357,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,415,1,0,NULL,'a:3:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:21:\"admin/small/title.png\";}'),(358,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:3:{s:4:\"desc\";s:32:\"Configure email account setting.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(359,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(360,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(361,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(362,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,625,1,1,NULL,'a:0:{}'),(363,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,630,1,1,NULL,'a:0:{}'),(364,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,640,1,0,NULL,'a:0:{}'),(365,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,645,1,0,NULL,'a:0:{}'),(366,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,650,1,0,NULL,'a:0:{}'),(367,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(368,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(369,1,'civicrm/mailing/preview',NULL,'Preview Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Page_Preview\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,670,1,0,NULL,'a:0:{}'),(370,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,680,1,0,NULL,'a:0:{}'),(371,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,685,1,0,NULL,'a:0:{}'),(372,1,'civicrm/mailing/queue',NULL,'Sending Mail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,690,1,0,NULL,'a:0:{}'),(373,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&amp;mid=%%mid%%\";}}',NULL,NULL,4,NULL,NULL,NULL,0,695,1,0,NULL,'a:0:{}'),(374,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(375,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,800,1,0,NULL,'a:0:{}'),(376,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,850,1,0,NULL,'a:0:{}'),(377,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(378,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(379,1,'civicrm/grant',NULL,'CiviGrant Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1000,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(380,1,'civicrm/grant/info',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(381,1,'civicrm/grant/search',NULL,'Find Grants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:27:\"CRM_Grant_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1010,1,1,NULL,'a:0:{}'),(382,1,'civicrm/grant/add','action=add','New Grant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(383,1,'civicrm/contact/view/grant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(384,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,550,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(385,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,560,1,1,NULL,'a:0:{}'),(386,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,570,1,0,NULL,'a:0:{}'),(387,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(388,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,580,1,0,NULL,'a:0:{}'),(389,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(390,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,900,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(391,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(392,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,910,1,1,NULL,'a:0:{}'),(393,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(394,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(395,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(396,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(397,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(398,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(399,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(400,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(401,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(402,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:3:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";}'),(403,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:30:\"admin/small/redaction_type.png\";}'),(404,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";}'),(405,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";}'),(406,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(407,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(408,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(409,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(410,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(411,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(412,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1200,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),(413,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(414,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1220,1,1,NULL,'a:0:{}'),(415,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1241,1,1,NULL,'a:0:{}'),(416,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),(417,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(418,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";s:4:\"icon\";s:31:\"admin/small/report_template.gif\";}'),(419,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(420,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";s:4:\"icon\";s:27:\"admin/small/report_list.gif\";}'),(421,1,'civicrm/report/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','a:2:{i:0;s:15:\"CRM_Report_Form\";i:1;s:16:\"uploadChartImage\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(422,1,'civicrm/campaign',NULL,'Campaign Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:27:\"CRM_Campaign_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(423,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(424,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(425,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(426,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"icon\";s:18:\"admin/small/05.png\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(427,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,2,1,0,NULL,'a:4:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(428,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,3,1,0,NULL,'a:4:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(429,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,4,1,0,NULL,'a:4:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(430,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(431,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(432,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(433,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(434,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(435,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(436,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(437,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(438,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(439,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(440,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(441,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(442,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:26:\"{weight}.Tags (Categories)\";a:6:{s:5:\"title\";s:17:\"Tags (Categories)\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:15:\"Tags_Categories\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";s:18:\"admin/small/11.png\";s:5:\"extra\";N;}s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";s:26:\"admin/small/custm_data.png\";s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";s:25:\"admin/small/rela_type.png\";s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";s:18:\"admin/small/09.png\";s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";s:21:\"admin/small/title.png\";s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";s:18:\"admin/small/10.png\";s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";s:18:\"admin/small/13.png\";s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";s:18:\"admin/small/08.png\";s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n    Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";s:7:\"tel.gif\";s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:10;}s:6:\"Manage\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";s:34:\"admin/small/duplicate_matching.png\";s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";s:18:\"admin/small/13.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}s:14:\"CiviContribute\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&amp;reset=1\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";s:24:\"admin/small/Premiums.png\";s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";s:35:\"admin/small/payment_instruments.png\";s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";s:36:\"admin/small/accepted_creditcards.png\";s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";s:32:\"admin/small/soft_credit_type.png\";s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}s:9:\"perColumn\";d:5;}s:14:\"Communications\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&amp;reset=1\";s:4:\"icon\";s:22:\"admin/small/domain.png\";s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";s:21:\"admin/small/title.png\";s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";s:29:\"admin/small/communication.png\";s:5:\"extra\";N;}s:22:\"{weight}.Label Formats\";a:6:{s:5:\"title\";s:13:\"Label Formats\";s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:2:\"id\";s:12:\"LabelFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:6;}s:12:\"Localization\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}s:21:\"Users and Permissions\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";s:18:\"admin/small/03.png\";s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";s:26:\"admin/small/Synch_user.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:1;}s:15:\"System Settings\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:18:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";s:9:\"check.gif\";s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:62:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";a:6:{s:5:\"title\";s:53:\"Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:2:\"id\";s:46:\"Misc_Undelete_PDFs_Limits_Logging_Captcha_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";s:26:\"admin/small/updatepath.png\";s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";s:33:\"admin/small/import_export_map.png\";s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";s:18:\"admin/small/13.png\";s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:9;}s:12:\"CiviCampaign\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:3;}s:9:\"CiviEvent\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";s:28:\"admin/small/event_manage.png\";s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";s:26:\"admin/small/event_type.png\";s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";s:28:\"admin/small/parti_status.png\";s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";s:26:\"admin/small/parti_role.png\";s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:31:\"{weight}.Conference Slot Labels\";a:6:{s:5:\"title\";s:22:\"Conference Slot Labels\";s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:2:\"id\";s:20:\"ConferenceSlotLabels\";s:3:\"url\";s:65:\"/civicrm/admin/conference_slots?group=conference_slot&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}s:9:\"perColumn\";d:5;}s:8:\"CiviMail\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";s:21:\"admin/small/title.png\";s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:32:\"Configure email account setting.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:3;}s:10:\"CiviMember\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";s:31:\"admin/small/membership_type.png\";s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";s:33:\"admin/small/membership_status.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}s:12:\"Option Lists\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";s:26:\"admin/small/grant_type.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:1;}s:9:\"Customize\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:1;}s:8:\"CiviCase\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";s:30:\"admin/small/redaction_type.png\";s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:3;}s:10:\"CiviReport\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";s:31:\"admin/small/report_template.gif\";s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";s:27:\"admin/small/report_list.gif\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}}',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,NULL,'a:0:{}');
+INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES (1,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(2,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(3,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(4,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(5,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(6,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(7,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(8,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(9,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(10,1,'civicrm/admin/custom/group',NULL,'Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:26:\"admin/small/custm_data.png\";}'),(11,1,'civicrm/admin/custom/group/field',NULL,'Custom Data Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,11,1,0,0,'a:0:{}'),(12,1,'civicrm/admin/custom/group/field/option',NULL,'Custom Field - Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Custom_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(13,1,'civicrm/admin/custom/group/field/add',NULL,'Custom Field - Add','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(14,1,'civicrm/admin/custom/group/field/update',NULL,'Custom Field - Edit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(15,1,'civicrm/admin/custom/group/field/move',NULL,'Custom Field - Move','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Custom_Form_MoveField\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(16,1,'civicrm/admin/custom/group/field/changetype',NULL,'Custom Field - Change Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Custom_Form_ChangeFieldType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(17,1,'civicrm/admin/uf/group',NULL,'Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Group\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:3:{s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";}'),(18,1,'civicrm/admin/uf/group/field',NULL,'CiviCRM Profile Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,21,1,0,0,'a:0:{}'),(19,1,'civicrm/admin/uf/group/field/add',NULL,'Add Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,22,1,0,NULL,'a:0:{}'),(20,1,'civicrm/admin/uf/group/field/update',NULL,'Edit Field','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,23,1,0,NULL,'a:0:{}'),(21,1,'civicrm/admin/uf/group/add',NULL,'New CiviCRM Profile','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,24,1,0,NULL,'a:0:{}'),(22,1,'civicrm/admin/uf/group/update',NULL,'Profile Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:17:\"CRM_UF_Form_Group\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,25,1,0,NULL,'a:0:{}'),(23,1,'civicrm/admin/uf/group/setting',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_UF_Form_AdvanceSetting\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,0,1,0,NULL,'a:0:{}'),(24,1,'civicrm/admin/options/activity_type',NULL,'Activity Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:3:{s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/05.png\";}'),(25,1,'civicrm/admin/reltype',NULL,'Relationship Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_RelationshipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,35,1,0,NULL,'a:3:{s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:25:\"admin/small/rela_type.png\";}'),(26,1,'civicrm/admin/options/subtype',NULL,'Contact Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_ContactType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/09.png\";}'),(27,1,'civicrm/admin/options/gender',NULL,'Gender Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,45,1,0,NULL,'a:3:{s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(28,1,'civicrm/admin/options/individual_prefix',NULL,'Individual Prefixes (Ms, Mr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:3:{s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:21:\"admin/small/title.png\";}'),(29,1,'civicrm/admin/options/individual_suffix',NULL,'Individual Suffixes (Jr, Sr...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,55,1,0,NULL,'a:3:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/10.png\";}'),(30,1,'civicrm/admin/locationType',NULL,'Location Types (Home, Work...)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LocationType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:3:{s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/13.png\";}'),(31,1,'civicrm/admin/options/website_type',NULL,'Website Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,65,1,0,NULL,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(32,1,'civicrm/admin/options/instant_messenger_service',NULL,'Instant Messenger Services','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:3:{s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(33,1,'civicrm/admin/options/mobile_provider',NULL,'Mobile Phone Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,75,1,0,NULL,'a:3:{s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/08.png\";}'),(34,1,'civicrm/admin/options/phone_type',NULL,'Phone Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:3:{s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n    Mobile, Fax, Pager)\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:7:\"tel.gif\";}'),(35,1,'civicrm/admin/setting/preferences/display',NULL,'Display Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Display\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(36,1,'civicrm/admin/setting/search',NULL,'Search Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Form_Setting_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,95,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(37,1,'civicrm/admin/setting/preferences/date',NULL,'View Date Preferences','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Page_PreferencesDate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(38,1,'civicrm/admin/menu',NULL,'Navigation Menu','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Navigation\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:3:{s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(39,1,'civicrm/admin/options/wordreplacements',NULL,'Word Replacements','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Form_WordReplacements\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,105,1,0,NULL,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),(40,1,'civicrm/admin/options/custom_search',NULL,'Manage Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,110,1,0,NULL,'a:3:{s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(41,1,'civicrm/admin/domain','action=update','Organization Address and Contact Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contact_Form_Domain\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:22:\"admin/small/domain.png\";}'),(42,1,'civicrm/admin/options/from_email_address',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:3:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:21:\"admin/small/title.png\";}'),(43,1,'civicrm/admin/messageTemplates',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Page_MessageTemplates\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:3:{s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(44,1,'civicrm/admin/messageTemplates/add',NULL,'Message Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:22:\"edit message templates\";i:1;s:34:\"edit user-driven message templates\";i:2;s:38:\"edit system workflow message templates\";}i:1;s:2:\"or\";}','s:31:\"CRM_Admin_Form_MessageTemplates\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Message Templates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,262,1,0,NULL,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),(45,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:15:\"edit all events\";}i:1;s:2:\"or\";}','s:32:\"CRM_Admin_Page_ScheduleReminders\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:3:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(46,1,'civicrm/admin/weight',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_Weight\";i:1;s:8:\"fixOrder\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(47,1,'civicrm/admin/options/preferred_communication_method',NULL,'Preferred Communication Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:3:{s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:29:\"admin/small/communication.png\";}'),(48,1,'civicrm/admin/labelFormats',NULL,'Label Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_LabelFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:3:{s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(49,1,'civicrm/admin/pdfFormats',NULL,'Print Page (PDF) Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_PdfFormats\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:3:{s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(50,1,'civicrm/admin/options/communication_style',NULL,'Communication Style Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,75,1,0,NULL,'a:3:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(51,1,'civicrm/admin/options/email_greeting',NULL,'Email Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:3:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(52,1,'civicrm/admin/options/postal_greeting',NULL,'Postal Greeting Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:3:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(53,1,'civicrm/admin/options/addressee',NULL,'Addressee Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:3:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(54,1,'civicrm/admin/setting/localization',NULL,'Languages, Currency, Locations','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Form_Setting_Localization\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(55,1,'civicrm/admin/setting/preferences/address',NULL,'Address Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Address\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(56,1,'civicrm/admin/setting/date',NULL,'Date Formats','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Date\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(57,1,'civicrm/admin/options/languages',NULL,'Preferred Languages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:3:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(58,1,'civicrm/admin/access',NULL,'Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_Access\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";s:4:\"icon\";s:18:\"admin/small/03.png\";}'),(59,1,'civicrm/admin/access/wp-permissions',NULL,'WordPress Access Control','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_ACL_Form_WordPress_Permissions\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Access Control\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),(60,1,'civicrm/admin/synchUser',NULL,'Synchronize Users to Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_CMSUser\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:3:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";s:4:\"icon\";s:26:\"admin/small/Synch_user.png\";}'),(61,1,'civicrm/admin/configtask',NULL,'Configuration Checklist','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_ConfigTaskList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}','civicrm/admin/configtask',NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:9:\"check.gif\";}'),(62,1,'civicrm/admin/setting/component',NULL,'Enable CiviCRM Components','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(63,1,'civicrm/admin/extensions',NULL,'Manage Extensions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Extensions\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,120,1,0,NULL,'a:3:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";}'),(64,1,'civicrm/admin/extensions/upgrade',NULL,'Database Upgrades','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Page_ExtensionsUpgrade\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:17:\"Manage Extensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(65,1,'civicrm/admin/setting/smtp',NULL,'Outbound Email Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Smtp\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,20,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(66,1,'civicrm/admin/paymentProcessor',NULL,'Settings - Payment Processor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:29:\"administer payment processors\";}i:1;s:3:\"and\";}','s:31:\"CRM_Admin_Page_PaymentProcessor\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,30,1,0,NULL,'a:3:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";}'),(67,1,'civicrm/admin/setting/mapping',NULL,'Mapping and Geocoding','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Admin_Form_Setting_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,40,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(68,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Form_Setting_Miscellaneous\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,50,1,0,NULL,'a:3:{s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(69,1,'civicrm/admin/setting/path',NULL,'Directories','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Path\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,60,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(70,1,'civicrm/admin/setting/url',NULL,'Resource URLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_Setting_Url\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,70,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(71,1,'civicrm/admin/setting/updateConfigBackend',NULL,'Cleanup Caches and Update Paths','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Admin_Form_Setting_UpdateConfigBackend\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,80,1,0,NULL,'a:3:{s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:26:\"admin/small/updatepath.png\";}'),(72,1,'civicrm/admin/setting/uf',NULL,'CMS Database Integration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Setting_UF\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,90,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(73,1,'civicrm/admin/options/safe_file_extension',NULL,'Safe File Extension Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,100,1,0,NULL,'a:3:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(74,1,'civicrm/admin/options',NULL,'Option Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,105,1,0,NULL,'a:3:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(75,1,'civicrm/admin/mapping',NULL,'Import/Export Mappings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Mapping\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,110,1,0,NULL,'a:3:{s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:33:\"admin/small/import_export_map.png\";}'),(76,1,'civicrm/admin/setting/debug',NULL,'Debugging','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Admin_Form_Setting_Debugging\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,120,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(77,1,'civicrm/admin/setting/preferences/multisite',NULL,'Multi Site Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,130,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(78,1,'civicrm/admin/setting/preferences/campaign',NULL,'CiviCampaign Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,10,1,0,NULL,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(79,1,'civicrm/admin/setting/preferences/event',NULL,'CiviEvent Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Form_Generic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(80,1,'civicrm/admin/setting/preferences/mailing',NULL,'CiviMail Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Admin_Form_Preferences_Mailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),(81,1,'civicrm/admin/setting/preferences/member',NULL,'CiviMember Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Admin_Form_Preferences_Member\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),(82,1,'civicrm/admin/runjobs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:20:\"executeScheduledJobs\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),(83,1,'civicrm/admin/job',NULL,'Scheduled Jobs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Admin_Page_Job\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1370,1,0,NULL,'a:3:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/13.png\";}'),(84,1,'civicrm/admin/joblog',NULL,'Scheduled Jobs Log','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Admin_Page_JobLog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1380,1,0,NULL,'a:3:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";s:4:\"icon\";s:18:\"admin/small/13.png\";}'),(85,1,'civicrm/admin/options/grant_type',NULL,'Grant Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,385,1,0,NULL,'a:3:{s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:10:\"adminGroup\";s:12:\"Option Lists\";s:4:\"icon\";s:26:\"admin/small/grant_type.png\";}'),(86,1,'civicrm/admin/paymentProcessorType',NULL,'Payment Processor Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Admin_Page_PaymentProcessorType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),(87,1,'civicrm/admin',NULL,'Administer CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Admin_Page_Admin\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,9000,1,1,NULL,'a:0:{}'),(88,1,'civicrm/ajax/navmenu',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:7:\"navMenu\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(89,1,'civicrm/ajax/menutree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:8:\"menuTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(90,1,'civicrm/ajax/statusmsg',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:12:\"getStatusMsg\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(91,1,'civicrm/admin/price',NULL,'Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:3:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:10:\"adminGroup\";s:9:\"Customize\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";}'),(92,1,'civicrm/admin/price/add','action=add','New Price Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";}'),(93,1,'civicrm/admin/price/field',NULL,'Price Fields','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:20:\"CRM_Price_Page_Field\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,0,'a:0:{}'),(94,1,'civicrm/admin/price/field/option',NULL,'Price Field Options','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Price_Page_Option\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:10:\"Price Sets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(95,1,'civicrm/admin/tplstrings/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Form_Persistent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(96,1,'civicrm/admin/tplstrings',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Admin_Page_Persistent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(97,1,'civicrm/ajax/mapping',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:11:\"mappingList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(98,1,'civicrm/ajax/recipientListing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:16:\"recipientListing\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(99,1,'civicrm/admin/sms/provider',NULL,'Sms Providers','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Provider\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,500,1,0,NULL,'a:3:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(100,1,'civicrm/sms/send',NULL,'New Mass SMS','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:23:\"CRM_SMS_Controller_Send\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(101,1,'civicrm/sms/callback',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_SMS_Page_Callback\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(102,1,'civicrm/admin/badgelayout','action=browse','Event Name Badge Layouts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Page_Layout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,399,1,0,NULL,'a:2:{s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(103,1,'civicrm/admin/badgelayout/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Badge_Form_Layout\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?reset=1&amp;action=browse\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(104,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Admin_Page_CKEditorConfig\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(105,1,'civicrm/ajax/api4',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(106,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(107,1,'civicrm',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:0:{}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(108,1,'civicrm/dashboard',NULL,'CiviCRM Home','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,1,NULL,'a:0:{}'),(109,1,'civicrm/dashlet',NULL,'CiviCRM Dashlets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Page_Dashlet\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,1,NULL,'a:0:{}'),(110,1,'civicrm/contact/search',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,10,1,1,NULL,'a:0:{}'),(111,1,'civicrm/contact/image',NULL,'Process Uploaded Images','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"CRM_Contact_BAO_Contact\";i:1;s:12:\"processImage\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(112,1,'civicrm/contact/imagefile',NULL,'Get Image File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contact_Page_ImageFile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(113,1,'civicrm/contact/search/basic',NULL,'Find Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(114,1,'civicrm/contact/search/advanced',NULL,'Advanced Search','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=512\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,12,1,1,NULL,'a:0:{}'),(115,1,'civicrm/contact/search/builder',NULL,'Search Builder','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:9:\"mode=8192\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,14,1,1,NULL,'a:0:{}'),(116,1,'civicrm/contact/search/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:10:\"mode=16384\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(117,1,'civicrm/contact/search/custom/list',NULL,'Custom Searches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Page_CustomSearch\";','s:10:\"mode=16384\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,16,1,1,NULL,'a:0:{}'),(118,1,'civicrm/contact/add',NULL,'New Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(119,1,'civicrm/contact/add/individual','ct=Individual','New Individual','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(120,1,'civicrm/contact/add/household','ct=Household','New Household','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(121,1,'civicrm/contact/add/organization','ct=Organization','New Organization','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:12:\"add contacts\";}i:1;s:3:\"and\";}','s:24:\"CRM_Contact_Form_Contact\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Contact\";s:3:\"url\";s:28:\"/civicrm/contact/add?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(122,1,'civicrm/contact/relatedcontact',NULL,'Edit Related Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_RelatedContact\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(123,1,'civicrm/contact/merge',NULL,'Merge Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:22:\"CRM_Contact_Form_Merge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(124,1,'civicrm/contact/email',NULL,'Email a Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(125,1,'civicrm/contact/map',NULL,'Map Location(s)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_Map\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(126,1,'civicrm/contact/map/event',NULL,'Map Event Location','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contact_Form_Task_Map_Event\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Map Location(s)\";s:3:\"url\";s:28:\"/civicrm/contact/map?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(127,1,'civicrm/contact/view','cid=%%cid%%','Contact Summary','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Summary\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(128,1,'civicrm/contact/view/delete',NULL,'Delete Contact','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(129,1,'civicrm/contact/view/activity','show=1,cid=%%cid%%','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:21:\"CRM_Activity_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(130,1,'civicrm/activity/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(131,1,'civicrm/activity/email/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(132,1,'civicrm/activity/pdf/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(133,1,'civicrm/contact/view/rel','cid=%%cid%%','Relationships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_Relationship\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(134,1,'civicrm/contact/view/group','cid=%%cid%%','Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contact_Page_View_GroupContact\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(135,1,'civicrm/contact/view/smartgroup','cid=%%cid%%','Smart Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:39:\"CRM_Contact_Page_View_ContactSmartGroup\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(136,1,'civicrm/contact/view/note','cid=%%cid%%','Notes','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:26:\"CRM_Contact_Page_View_Note\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(137,1,'civicrm/contact/view/tag','cid=%%cid%%','Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Tag\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(138,1,'civicrm/contact/view/cd',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:32:\"CRM_Contact_Page_View_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(139,1,'civicrm/contact/view/cd/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Form_CustomData\";','s:13:\"addSequence=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(140,1,'civicrm/contact/view/vcard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Vcard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(141,1,'civicrm/contact/view/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:27:\"CRM_Contact_Page_View_Print\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(142,1,'civicrm/contact/view/log',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:25:\"CRM_Contact_Page_View_Log\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(143,1,'civicrm/user',NULL,'Contact Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"access Contact Dashboard\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Page_View_UserDashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(144,1,'civicrm/dashlet/activity',NULL,'Activity Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(145,1,'civicrm/dashlet/blog',NULL,'CiviCRM Blog','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Dashlet_Page_Blog\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(146,1,'civicrm/dashlet/getting-started',NULL,'CiviCRM Resources','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Dashlet_Page_GettingStarted\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(147,1,'civicrm/ajax/relation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"relationship\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(148,1,'civicrm/ajax/groupTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"groupTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(149,1,'civicrm/ajax/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:11:\"customField\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(150,1,'civicrm/ajax/customvalue',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:17:\"deleteCustomValue\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(151,1,'civicrm/ajax/cmsuser',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"checkUserName\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(152,1,'civicrm/ajax/checkemail',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactEmail\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(153,1,'civicrm/ajax/checkphone',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:15:\"getContactPhone\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(154,1,'civicrm/ajax/subtype',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"buildSubTypes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(155,1,'civicrm/ajax/dashboard',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"dashboard\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(156,1,'civicrm/ajax/signature',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:12:\"getSignature\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(157,1,'civicrm/ajax/pdfFormat',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"pdfFormat\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(158,1,'civicrm/ajax/paperSize',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:9:\"paperSize\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(159,1,'civicrm/ajax/contactref',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:31:\"access contact reference fields\";i:1;s:15:\" access CiviCRM\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"contactReference\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(160,1,'civicrm/dashlet/myCases',NULL,'Case Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Dashlet_Page_MyCases\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(161,1,'civicrm/dashlet/allCases',NULL,'All Cases Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:25:\"CRM_Dashlet_Page_AllCases\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(162,1,'civicrm/dashlet/casedashboard',NULL,'Case Dashboard Dashlet','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Dashlet_Page_CaseDashboard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"CiviCRM Dashlets\";s:3:\"url\";s:24:\"/civicrm/dashlet?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(163,1,'civicrm/contact/deduperules',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer dedupe rules\";i:1;s:24:\"merge duplicate contacts\";}i:1;s:2:\"or\";}','s:28:\"CRM_Contact_Page_DedupeRules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,105,1,0,NULL,'a:3:{s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:10:\"adminGroup\";s:6:\"Manage\";s:4:\"icon\";s:34:\"admin/small/duplicate_matching.png\";}'),(164,1,'civicrm/contact/dedupefind',NULL,'Find and Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Page_DedupeFind\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(165,1,'civicrm/ajax/dedupefind',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:10:\"getDedupes\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(166,1,'civicrm/contact/dedupemerge',NULL,'Batch Merge Duplicate Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Page_DedupeMerge\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(167,1,'civicrm/dedupe/exception',NULL,'Dedupe Exceptions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Page_DedupeException\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,110,1,0,NULL,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),(168,1,'civicrm/ajax/dedupeRules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:16:\"buildDedupeRules\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(169,1,'civicrm/contact/view/useradd','cid=%%cid%%','Add User','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:29:\"CRM_Contact_Page_View_Useradd\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(170,1,'civicrm/ajax/markSelection',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:22:\"selectUnselectContacts\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(171,1,'civicrm/ajax/toggleDedupeSelect',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:18:\"toggleDedupeSelect\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(172,1,'civicrm/ajax/flipDupePairs',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:24:\"merge duplicate contacts\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:13:\"flipDupePairs\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(173,1,'civicrm/activity/sms/add','action=add','Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:8:\"send SMS\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_SMS\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&amp;action=add&amp;context=standalone\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(174,1,'civicrm/ajax/contactrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"view my contact\";}i:1;s:2:\"or\";}','a:2:{i:0;s:21:\"CRM_Contact_Page_AJAX\";i:1;s:23:\"getContactRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(175,1,'civicrm/custom/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Custom_Form_CustomData\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(176,1,'civicrm/ajax/optionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:13:\"getOptionList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(177,1,'civicrm/ajax/reorder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:11:\"fixOrdering\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(178,1,'civicrm/ajax/multirecordfieldlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Custom_Page_AJAX\";i:1;s:23:\"getMultiRecordFieldList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(179,1,'civicrm/custom',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Custom_Form_CustomDataByType\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(180,1,'civicrm/group',NULL,'Manage Groups','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Page_Group\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,30,1,1,NULL,'a:0:{}'),(181,1,'civicrm/group/search',NULL,'Group Members','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Controller_Search\";','s:8:\"mode=256\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:7:\"comment\";s:164:\"Note: group search already respect ACL, so a strict permission at url level is not required. A simple/basic permission like \'access CiviCRM\' could be used. CRM-5417\";}'),(182,1,'civicrm/group/add',NULL,'New Group','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:11:\"edit groups\";}i:1;s:3:\"and\";}','s:20:\"CRM_Group_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:13:\"Manage Groups\";s:3:\"url\";s:22:\"/civicrm/group?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(183,1,'civicrm/ajax/grouplist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Group_Page_AJAX\";i:1;s:12:\"getGroupList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(184,1,'civicrm/import',NULL,'Import','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,400,1,1,NULL,'a:0:{}'),(185,1,'civicrm/import/contact',NULL,'Import Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contact_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,410,1,1,NULL,'a:0:{}'),(186,1,'civicrm/import/activity',NULL,'Import Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(187,1,'civicrm/import/custom','id=%%id%%','Import Multi-value Custom Data','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Custom_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,420,1,1,NULL,'a:0:{}'),(188,1,'civicrm/ajax/status',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"import contacts\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Contact_Import_Page_AJAX\";i:1;s:6:\"status\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(189,1,'civicrm/ajax/jqState',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:7:\"jqState\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(190,1,'civicrm/ajax/jqCounty',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:8:\"jqCounty\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(191,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(192,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(193,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(194,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(195,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(196,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(197,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(198,1,'civicrm/acl/basic',NULL,'ACL','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_ACL_Page_ACLBasic\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(199,1,'civicrm/file',NULL,'Browse Uploaded files','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access uploaded files\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(200,1,'civicrm/file/delete',NULL,'Delete File','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(201,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(202,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,9999,1,1,NULL,'a:0:{}'),(203,1,'civicrm/i18n',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(204,1,'civicrm/ajax/attachment',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(205,1,'civicrm/api',NULL,'CiviCRM API v3','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Page_APIExplorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(206,1,'civicrm/ajax/apiexample',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:14:\"getExampleFile\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(207,1,'civicrm/ajax/apidoc',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(208,1,'civicrm/ajax/rest',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"ajax\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(209,1,'civicrm/api/json',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:14:\"CiviCRM API v3\";s:3:\"url\";s:20:\"/civicrm/api?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(210,1,'civicrm/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(211,1,'civicrm/ajax/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(212,1,'civicrm/asset/builder',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(213,1,'civicrm/contribute/ajax/tableview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(214,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(215,1,'civicrm/batch',NULL,'Batch Data Entry','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(216,1,'civicrm/batch/add',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(217,1,'civicrm/batch/entry',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Entry\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(218,1,'civicrm/ajax/batch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(219,1,'civicrm/ajax/batchlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(220,1,'civicrm/ajax/inline',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(221,1,'civicrm/dev/qunit',NULL,'QUnit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:19:\"CRM_Core_Page_QUnit\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(222,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(223,1,'civicrm/a',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"\\Civi\\Angular\\Page\\Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(224,1,'civicrm/ajax/angular-modules',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(225,1,'civicrm/ajax/recurringentity/update-mode',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(226,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Core_Page_RecurringEntityPreview\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(227,1,'civicrm/ajax/l10n-js',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Core_Resources\";i:1;s:20:\"outputLocalizationJS\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(228,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Core_Form_ShortCode\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(229,1,'civicrm/task/add-to-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contact_Form_Task_AddToGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(230,1,'civicrm/task/remove-from-group',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(231,1,'civicrm/task/add-to-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contact_Form_Task_AddToTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(232,1,'civicrm/task/remove-from-tag',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(233,1,'civicrm/task/send-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Email\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(234,1,'civicrm/task/make-mailing-label',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Contact_Form_Task_Label\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(235,1,'civicrm/task/pick-profile',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contact_Form_Task_PickProfile\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(236,1,'civicrm/task/print-document',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Contact_Form_Task_PDF\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(237,1,'civicrm/task/unhold-email',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Unhold\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(238,1,'civicrm/task/alter-contact-preference',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contact_Form_Task_AlterPreferences\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(239,1,'civicrm/task/delete-contact',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Contact_Form_Task_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(240,1,'civicrm/payment/form',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Financial_Form_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(241,1,'civicrm/payment/edit',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Financial_Form_PaymentEdit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(242,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(243,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(244,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(245,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,362,1,0,NULL,'a:3:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";}'),(246,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(247,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(248,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(249,1,'civicrm/tag',NULL,'Tags (Categories)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:16:\"CRM_Tag_Page_Tag\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,25,1,0,NULL,'a:3:{s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";s:4:\"icon\";s:18:\"admin/small/11.png\";}'),(250,1,'civicrm/tag/edit','action=add','New Tag','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:17:\"CRM_Tag_Form_Edit\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(251,1,'civicrm/tag/merge',NULL,'Merge Tags','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','s:18:\"CRM_Tag_Form_Merge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:17:\"Tags (Categories)\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(252,1,'civicrm/ajax/tagTree',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:11:\"manage tags\";}i:1;s:2:\"or\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:10:\"getTagTree\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(253,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,800,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(254,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),(255,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(256,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(257,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(258,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_ICalendar\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(259,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(260,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:3:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:28:\"admin/small/event_manage.png\";}'),(261,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,375,1,0,NULL,'a:3:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(262,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,385,1,0,NULL,'a:3:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:26:\"admin/small/event_type.png\";}'),(263,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:3:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:28:\"admin/small/parti_status.png\";}'),(264,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,395,1,0,NULL,'a:3:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:26:\"admin/small/parti_role.png\";}'),(265,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,398,1,0,NULL,'a:3:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";s:4:\"icon\";s:18:\"admin/small/01.png\";}'),(266,1,'civicrm/admin/conference_slots','group=conference_slot','Conference Slot Labels','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,415,1,0,NULL,'a:2:{s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),(267,1,'civicrm/event/search',NULL,'Find Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,810,1,1,NULL,'a:0:{}'),(268,1,'civicrm/event/manage',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,820,1,1,NULL,'a:0:{}'),(269,1,'civicrm/event/badge',NULL,'Print Event Name Badge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:25:\"CRM_Event_Form_Task_Badge\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(270,1,'civicrm/event/manage/settings',NULL,'Event Info and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,910,1,0,NULL,'a:0:{}'),(271,1,'civicrm/event/manage/location',NULL,'Event Location','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:35:\"CRM_Event_Form_ManageEvent_Location\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(272,1,'civicrm/event/manage/fee',NULL,'Event Fees','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_ManageEvent_Fee\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,920,1,0,NULL,'a:0:{}'),(273,1,'civicrm/event/manage/registration',NULL,'Event Online Registration','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:39:\"CRM_Event_Form_ManageEvent_Registration\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,930,1,0,NULL,'a:0:{}'),(274,1,'civicrm/event/manage/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:21:\"CRM_Friend_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,940,1,0,NULL,'a:0:{}'),(275,1,'civicrm/event/manage/reminder',NULL,'Schedule Reminders','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:44:\"CRM_Event_Form_ManageEvent_ScheduleReminders\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(276,1,'civicrm/event/manage/repeat',NULL,'Repeat Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Form_ManageEvent_Repeat\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,960,1,0,NULL,'a:0:{}'),(277,1,'civicrm/event/manage/conference',NULL,'Conference Slots','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:37:\"CRM_Event_Form_ManageEvent_Conference\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,950,1,0,NULL,'a:0:{}'),(278,1,'civicrm/event/add','action=add','New Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Event_Form_ManageEvent_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,830,1,0,NULL,'a:0:{}'),(279,1,'civicrm/event/import',NULL,'Import Participants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:16:\"access CiviEvent\";i:1;s:23:\"edit event participants\";}i:1;s:3:\"and\";}','s:27:\"CRM_Event_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,840,1,1,NULL,'a:0:{}'),(280,1,'civicrm/event/price',NULL,'Manage Price Sets','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Price_Page_Set\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,850,1,1,NULL,'a:0:{}'),(281,1,'civicrm/event/selfsvcupdate',NULL,'Self-service Registration Update','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Form_SelfSvcUpdate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,880,1,1,NULL,'a:0:{}'),(282,1,'civicrm/event/selfsvctransfer',NULL,'Self-service Registration Transfer','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:30:\"CRM_Event_Form_SelfSvcTransfer\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,890,1,1,NULL,'a:0:{}'),(283,1,'civicrm/contact/view/participant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,4,1,0,NULL,'a:0:{}'),(284,1,'civicrm/ajax/eventFee',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_Page_AJAX\";i:1;s:8:\"eventFee\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(285,1,'civicrm/ajax/locBlock',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:11:\"getLocBlock\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(286,1,'civicrm/ajax/event/add_participant_to_cart',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:23:\"add_participant_to_cart\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(287,1,'civicrm/ajax/event/remove_participant_from_cart',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:28:\"remove_participant_from_cart\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(288,1,'civicrm/event/add_to_cart',NULL,'Add Event To Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:29:\"CRM_Event_Cart_Page_AddToCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(289,1,'civicrm/event/cart_checkout',NULL,'Cart Checkout','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:34:\"CRM_Event_Cart_Controller_Checkout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,1,1,1,0,NULL,'a:0:{}'),(290,1,'civicrm/event/remove_from_cart',NULL,'Remove From Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:34:\"CRM_Event_Cart_Page_RemoveFromCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(291,1,'civicrm/event/view_cart',NULL,'View Cart','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Event_Cart_Page_ViewCart\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(292,1,'civicrm/event/participant/feeselection',NULL,'Change Registration Selections','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:38:\"CRM_Event_Form_ParticipantFeeSelection\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:23:\"Event Participants List\";s:3:\"url\";s:34:\"/civicrm/event/participant?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(293,1,'civicrm/event/manage/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_PCP_Form_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Manage Events\";s:3:\"url\";s:29:\"/civicrm/event/manage?reset=1\";}}',NULL,NULL,1,NULL,NULL,NULL,1,540,1,1,NULL,'a:0:{}'),(294,1,'civicrm/event/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(295,1,'civicrm/event/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(296,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,500,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(297,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(298,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(299,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,1,NULL,1,0,1,0,NULL,'a:0:{}'),(300,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,360,1,0,NULL,'a:3:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";}'),(301,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:0:{}'),(302,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,410,1,0,NULL,'a:0:{}'),(303,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:0:{}'),(304,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(305,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,430,1,0,NULL,'a:0:{}'),(306,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,440,1,0,NULL,'a:0:{}'),(307,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,460,1,0,NULL,'a:0:{}'),(308,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,470,1,0,NULL,'a:0:{}'),(309,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,480,1,0,NULL,'a:0:{}'),(310,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(311,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,365,1,0,NULL,'a:3:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:24:\"admin/small/Premiums.png\";}'),(312,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,580,1,0,NULL,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(313,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(314,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:3:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";}'),(315,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:3:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:35:\"admin/small/payment_instruments.png\";}'),(316,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,395,1,0,NULL,'a:3:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:36:\"admin/small/accepted_creditcards.png\";}'),(317,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";s:4:\"icon\";s:32:\"admin/small/soft_credit_type.png\";}'),(318,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(319,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(320,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(321,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,510,1,1,NULL,'a:0:{}'),(322,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,588,1,1,NULL,'a:0:{}'),(323,1,'civicrm/contribute/import',NULL,'Import Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"edit contributions\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,520,1,1,NULL,'a:0:{}'),(324,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,530,1,1,NULL,'a:0:{}'),(325,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(326,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(327,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(328,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(329,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(330,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(331,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(332,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,581,1,0,NULL,'a:0:{}'),(333,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,585,1,0,NULL,'a:0:{}'),(334,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,586,1,0,NULL,'a:0:{}'),(335,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,600,1,0,NULL,'a:0:{}'),(336,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,610,1,0,NULL,'a:0:{}'),(337,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&amp;action=add\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(338,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),(339,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,620,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(340,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,630,1,1,NULL,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),(341,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(342,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(343,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(344,1,'civicrm/admin/contribute/pcp',NULL,'Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_PCP_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,450,1,0,NULL,'a:0:{}'),(345,1,'civicrm/contribute/campaign',NULL,'Setup a Personal Campaign Page - Account Information','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,NULL,1,NULL,0,0,1,0,NULL,'a:0:{}'),(346,1,'civicrm/member',NULL,'CiviMember Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:25:\"CRM_Member_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,700,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(347,1,'civicrm/member/add','action=add','New Membership','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),(348,1,'civicrm/admin/member/membershipType',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Page_MembershipType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,370,1,0,NULL,'a:3:{s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:10:\"adminGroup\";s:10:\"CiviMember\";s:4:\"icon\";s:31:\"admin/small/membership_type.png\";}'),(349,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Member_Page_MembershipStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:3:{s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:10:\"adminGroup\";s:10:\"CiviMember\";s:4:\"icon\";s:33:\"admin/small/membership_status.png\";}'),(350,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:19:\"CRM_Member_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,2,1,0,NULL,'a:0:{}'),(351,1,'civicrm/membership/view',NULL,'Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipView\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,390,1,0,NULL,'a:0:{}'),(352,1,'civicrm/member/search',NULL,'Find Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,710,1,1,NULL,'a:0:{}'),(353,1,'civicrm/member/import',NULL,'Import Memberships','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_Import_Controller\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,NULL,NULL,NULL,0,720,1,1,NULL,'a:0:{}'),(354,1,'civicrm/ajax/memType',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(355,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviMember\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Member_Form_MembershipType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:0:{}'),(356,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,600,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),(357,1,'civicrm/admin/mail',NULL,'Mailer Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(358,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,410,1,0,NULL,'a:3:{s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";}'),(359,1,'civicrm/admin/options/from_email_address/civimail',NULL,'From Email Addresses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:4:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}i:3;a:2:{s:5:\"title\";s:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,415,1,0,NULL,'a:3:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:21:\"admin/small/title.png\";}'),(360,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,420,1,0,NULL,'a:3:{s:4:\"desc\";s:32:\"Configure email account setting.\";s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:18:\"admin/small/07.png\";}'),(361,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,610,1,1,NULL,'a:0:{}'),(362,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(363,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,620,1,1,NULL,'a:0:{}'),(364,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,625,1,1,NULL,'a:0:{}'),(365,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_Component\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,630,1,1,NULL,'a:0:{}'),(366,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,640,1,0,NULL,'a:0:{}'),(367,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,645,1,0,NULL,'a:0:{}'),(368,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,650,1,0,NULL,'a:0:{}'),(369,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(370,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,660,1,0,NULL,'a:0:{}'),(371,1,'civicrm/mailing/preview',NULL,'Preview Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Page_Preview\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,670,1,0,NULL,'a:0:{}'),(372,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,680,1,0,NULL,'a:0:{}'),(373,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,685,1,0,NULL,'a:0:{}'),(374,1,'civicrm/mailing/queue',NULL,'Sending Mail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,690,1,0,NULL,'a:0:{}'),(375,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_Event\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&amp;mid=%%mid%%\";}}',NULL,NULL,4,NULL,NULL,NULL,0,695,1,0,NULL,'a:0:{}'),(376,1,'civicrm/ajax/template',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(377,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,1,NULL,0,800,1,0,NULL,'a:0:{}'),(378,1,'civicrm/mailing/approve',NULL,'Approve Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,NULL,NULL,NULL,0,850,1,0,NULL,'a:0:{}'),(379,1,'civicrm/contact/view/mailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:20:\"CRM_Mailing_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(380,1,'civicrm/ajax/contactmailing',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(381,1,'civicrm/grant',NULL,'CiviGrant Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1000,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(382,1,'civicrm/grant/info',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:24:\"CRM_Grant_Page_DashBoard\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,0,1,0,NULL,'a:0:{}'),(383,1,'civicrm/grant/search',NULL,'Find Grants','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:27:\"CRM_Grant_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1010,1,1,NULL,'a:0:{}'),(384,1,'civicrm/grant/add','action=add','New Grant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviGrant Dashboard\";s:3:\"url\";s:22:\"/civicrm/grant?reset=1\";}}',NULL,NULL,5,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:9:\"CiviGrant\";}'),(385,1,'civicrm/contact/view/grant',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviGrant\";}i:1;s:3:\"and\";}','s:18:\"CRM_Grant_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(386,1,'civicrm/pledge',NULL,'CiviPledge Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,550,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(387,1,'civicrm/pledge/search',NULL,'Find Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,560,1,1,NULL,'a:0:{}'),(388,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,570,1,0,NULL,'a:0:{}'),(389,1,'civicrm/pledge/add','action=add','New Pledge','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),(390,1,'civicrm/pledge/payment',NULL,'Pledge Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_Payment\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,NULL,NULL,NULL,0,580,1,0,NULL,'a:0:{}'),(391,1,'civicrm/ajax/pledgeAmount',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(392,1,'civicrm/case',NULL,'CiviCase Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Case_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,900,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(393,1,'civicrm/case/add',NULL,'Open Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Case_Form_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,1,NULL,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),(394,1,'civicrm/case/search',NULL,'Find Cases','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,910,1,1,NULL,'a:0:{}'),(395,1,'civicrm/case/activity',NULL,'Case Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Case_Form_Activity\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(396,1,'civicrm/case/report',NULL,'Case Activity Audit','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','s:20:\"CRM_Case_Form_Report\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(397,1,'civicrm/case/cd/edit',NULL,'Case Custom Set','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_CustomData\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(398,1,'civicrm/contact/view/case',NULL,'Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:17:\"CRM_Case_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(399,1,'civicrm/case/activity/view',NULL,'Activity View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Case_Form_ActivityView\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(400,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:24:\"CRM_Case_Form_EditClient\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&amp;cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(401,1,'civicrm/case/addToCase',NULL,'File on Case','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Case_Form_ActivityToCase\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(402,1,'civicrm/case/details',NULL,'Case Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:25:\"CRM_Case_Page_CaseDetails\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(403,1,'civicrm/admin/setting/case',NULL,'CiviCase Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Case\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,380,1,0,NULL,'a:2:{s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:18:\"admin/small/36.png\";}'),(404,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,390,1,0,NULL,'a:3:{s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";}'),(405,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:30:\"admin/small/redaction_type.png\";}'),(406,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";}'),(407,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,400,1,0,NULL,'a:3:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";}'),(408,1,'civicrm/case/report/print',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(409,1,'civicrm/case/ajax/addclient',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(410,1,'civicrm/case/ajax/processtags',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,3,NULL,'a:0:{}'),(411,1,'civicrm/case/ajax/details',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(412,1,'civicrm/ajax/delcaserole',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(413,1,'civicrm/ajax/get-cases',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(414,1,'civicrm/report',NULL,'CiviReport','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1200,1,1,NULL,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),(415,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(416,1,'civicrm/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1220,1,1,NULL,'a:0:{}'),(417,1,'civicrm/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1241,1,1,NULL,'a:0:{}'),(418,1,'civicrm/admin/report/register',NULL,'Register Report','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:18:\"administer Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),(419,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(420,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";s:4:\"icon\";s:31:\"admin/small/report_template.gif\";}'),(421,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_Page_Options\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";s:4:\"icon\";s:24:\"admin/small/template.png\";}'),(422,1,'civicrm/admin/report/list',NULL,'Reports Listing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";s:4:\"icon\";s:27:\"admin/small/report_list.gif\";}'),(423,1,'civicrm/report/chart',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','a:2:{i:0;s:15:\"CRM_Report_Form\";i:1;s:16:\"uploadChartImage\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:10:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(424,1,'civicrm/campaign',NULL,'Campaign Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:27:\"CRM_Campaign_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(425,1,'civicrm/campaign/add',NULL,'New Campaign','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Campaign\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(426,1,'civicrm/survey/add',NULL,'New Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(427,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(428,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"administer CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,0,NULL,'a:3:{s:4:\"icon\";s:18:\"admin/small/05.png\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(429,1,'civicrm/admin/options/campaign_type',NULL,'Campaign Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,2,1,0,NULL,'a:4:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(430,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,3,1,0,NULL,'a:4:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(431,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,1,4,1,0,NULL,'a:4:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:9:\"component\";s:12:\"CiviCampaign\";}'),(432,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(433,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),(434,1,'civicrm/petition/add',NULL,'New Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:26:\"CRM_Campaign_Form_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(435,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(436,1,'civicrm/petition/browse',NULL,'View Petition Signatures','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Campaign_Page_Petition\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(437,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(438,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,1,NULL,0,1,1,0,NULL,'a:0:{}'),(439,1,'civicrm/campaign/registerInterview',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(440,1,'civicrm/survey/configure/main',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:29:\"CRM_Campaign_Form_Survey_Main\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(441,1,'civicrm/survey/configure/questions',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:34:\"CRM_Campaign_Form_Survey_Questions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(442,1,'civicrm/survey/configure/results',NULL,'Configure Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:32:\"CRM_Campaign_Form_Survey_Results\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(443,1,'civicrm/survey/delete',NULL,'Delete Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";}i:1;s:2:\"or\";}','s:31:\"CRM_Campaign_Form_Survey_Delete\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,NULL,NULL,NULL,0,1,1,0,NULL,'a:0:{}'),(444,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";s:26:\"admin/small/custm_data.png\";s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";s:25:\"admin/small/rela_type.png\";s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";s:18:\"admin/small/09.png\";s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";s:21:\"admin/small/title.png\";s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";s:18:\"admin/small/10.png\";s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";s:18:\"admin/small/13.png\";s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";s:18:\"admin/small/08.png\";s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n    Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";s:7:\"tel.gif\";s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:26:\"{weight}.Tags (Categories)\";a:6:{s:5:\"title\";s:17:\"Tags (Categories)\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:15:\"Tags_Categories\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";s:18:\"admin/small/11.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:10;}s:14:\"Communications\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:11:{s:46:\"{weight}.Organization Address and Contact Info\";a:6:{s:5:\"title\";s:37:\"Organization Address and Contact Info\";s:4:\"desc\";s:150:\"Configure primary contact name, email, return-path and address information. This information is used by CiviMail to identify the sending organization.\";s:2:\"id\";s:33:\"OrganizationAddressandContactInfo\";s:3:\"url\";s:47:\"/civicrm/admin/domain?action=update&amp;reset=1\";s:4:\"icon\";s:22:\"admin/small/domain.png\";s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";s:4:\"icon\";s:21:\"admin/small/title.png\";s:5:\"extra\";N;}s:26:\"{weight}.Message Templates\";a:6:{s:5:\"title\";s:17:\"Message Templates\";s:4:\"desc\";s:130:\"Message templates allow you to save and re-use messages with layouts which you can use when sending email to one or more contacts.\";s:2:\"id\";s:16:\"MessageTemplates\";s:3:\"url\";s:39:\"/civicrm/admin/messageTemplates?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:27:\"{weight}.Schedule Reminders\";a:6:{s:5:\"title\";s:18:\"Schedule Reminders\";s:4:\"desc\";s:19:\"Schedule Reminders.\";s:2:\"id\";s:17:\"ScheduleReminders\";s:3:\"url\";s:40:\"/civicrm/admin/scheduleReminders?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:40:\"{weight}.Preferred Communication Methods\";a:6:{s:5:\"title\";s:31:\"Preferred Communication Methods\";s:4:\"desc\";s:117:\"One or more preferred methods of communication can be assigned to each contact. Customize the available options here.\";s:2:\"id\";s:29:\"PreferredCommunicationMethods\";s:3:\"url\";s:61:\"/civicrm/admin/options/preferred_communication_method?reset=1\";s:4:\"icon\";s:29:\"admin/small/communication.png\";s:5:\"extra\";N;}s:22:\"{weight}.Label Formats\";a:6:{s:5:\"title\";s:13:\"Label Formats\";s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:2:\"id\";s:12:\"LabelFormats\";s:3:\"url\";s:35:\"/civicrm/admin/labelFormats?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:33:\"{weight}.Print Page (PDF) Formats\";a:6:{s:5:\"title\";s:24:\"Print Page (PDF) Formats\";s:4:\"desc\";s:95:\"Configure PDF Page Formats that can be assigned to Message Templates when creating PDF letters.\";s:2:\"id\";s:20:\"PrintPage_PDFFormats\";s:3:\"url\";s:33:\"/civicrm/admin/pdfFormats?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:36:\"{weight}.Communication Style Options\";a:6:{s:5:\"title\";s:27:\"Communication Style Options\";s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:2:\"id\";s:25:\"CommunicationStyleOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/communication_style?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:31:\"{weight}.Email Greeting Formats\";a:6:{s:5:\"title\";s:22:\"Email Greeting Formats\";s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:2:\"id\";s:20:\"EmailGreetingFormats\";s:3:\"url\";s:45:\"/civicrm/admin/options/email_greeting?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:32:\"{weight}.Postal Greeting Formats\";a:6:{s:5:\"title\";s:23:\"Postal Greeting Formats\";s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:2:\"id\";s:21:\"PostalGreetingFormats\";s:3:\"url\";s:46:\"/civicrm/admin/options/postal_greeting?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:26:\"{weight}.Addressee Formats\";a:6:{s:5:\"title\";s:17:\"Addressee Formats\";s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:2:\"id\";s:16:\"AddresseeFormats\";s:3:\"url\";s:40:\"/civicrm/admin/options/addressee?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:6;}s:12:\"Localization\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:4:{s:39:\"{weight}.Languages, Currency, Locations\";a:6:{s:5:\"title\";s:30:\"Languages, Currency, Locations\";s:4:\"desc\";N;s:2:\"id\";s:28:\"Languages_Currency_Locations\";s:3:\"url\";s:43:\"/civicrm/admin/setting/localization?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:25:\"{weight}.Address Settings\";a:6:{s:5:\"title\";s:16:\"Address Settings\";s:4:\"desc\";N;s:2:\"id\";s:15:\"AddressSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/address?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:21:\"{weight}.Date Formats\";a:6:{s:5:\"title\";s:12:\"Date Formats\";s:4:\"desc\";N;s:2:\"id\";s:11:\"DateFormats\";s:3:\"url\";s:35:\"/civicrm/admin/setting/date?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:28:\"{weight}.Preferred Languages\";a:6:{s:5:\"title\";s:19:\"Preferred Languages\";s:4:\"desc\";s:30:\"Options for contact languages.\";s:2:\"id\";s:18:\"PreferredLanguages\";s:3:\"url\";s:40:\"/civicrm/admin/options/languages?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}s:21:\"Users and Permissions\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:2:{s:23:\"{weight}.Access Control\";a:6:{s:5:\"title\";s:14:\"Access Control\";s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:2:\"id\";s:13:\"AccessControl\";s:3:\"url\";s:29:\"/civicrm/admin/access?reset=1\";s:4:\"icon\";s:18:\"admin/small/03.png\";s:5:\"extra\";N;}s:38:\"{weight}.Synchronize Users to Contacts\";a:6:{s:5:\"title\";s:29:\"Synchronize Users to Contacts\";s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:2:\"id\";s:26:\"SynchronizeUserstoContacts\";s:3:\"url\";s:32:\"/civicrm/admin/synchUser?reset=1\";s:4:\"icon\";s:26:\"admin/small/Synch_user.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:1;}s:15:\"System Settings\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:18:{s:32:\"{weight}.Configuration Checklist\";a:6:{s:5:\"title\";s:23:\"Configuration Checklist\";s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:2:\"id\";s:22:\"ConfigurationChecklist\";s:3:\"url\";s:33:\"/civicrm/admin/configtask?reset=1\";s:4:\"icon\";s:9:\"check.gif\";s:5:\"extra\";N;}s:34:\"{weight}.Enable CiviCRM Components\";a:6:{s:5:\"title\";s:25:\"Enable CiviCRM Components\";s:4:\"desc\";s:269:\"Enable or disable components (e.g. CiviEvent, CiviMember, etc.) for your site based on the features you need. We recommend disabling any components not being used in order to simplify the user interface. You can easily re-enable components at any time from this screen.\";s:2:\"id\";s:23:\"EnableCiviCRMComponents\";s:3:\"url\";s:40:\"/civicrm/admin/setting/component?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:26:\"{weight}.Manage Extensions\";a:6:{s:5:\"title\";s:17:\"Manage Extensions\";s:4:\"desc\";s:0:\"\";s:2:\"id\";s:16:\"ManageExtensions\";s:3:\"url\";s:33:\"/civicrm/admin/extensions?reset=1\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";s:5:\"extra\";N;}s:32:\"{weight}.Outbound Email Settings\";a:6:{s:5:\"title\";s:23:\"Outbound Email Settings\";s:4:\"desc\";N;s:2:\"id\";s:21:\"OutboundEmailSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/smtp?reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";s:5:\"extra\";N;}s:37:\"{weight}.Settings - Payment Processor\";a:6:{s:5:\"title\";s:28:\"Settings - Payment Processor\";s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:2:\"id\";s:25:\"Settings-PaymentProcessor\";s:3:\"url\";s:39:\"/civicrm/admin/paymentProcessor?reset=1\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";s:5:\"extra\";N;}s:30:\"{weight}.Mapping and Geocoding\";a:6:{s:5:\"title\";s:21:\"Mapping and Geocoding\";s:4:\"desc\";N;s:2:\"id\";s:19:\"MappingandGeocoding\";s:3:\"url\";s:38:\"/civicrm/admin/setting/mapping?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:62:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";a:6:{s:5:\"title\";s:53:\"Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)\";s:4:\"desc\";s:91:\"Enable undelete/move to trash feature, detailed change logging, ReCAPTCHA to protect forms.\";s:2:\"id\";s:46:\"Misc_Undelete_PDFs_Limits_Logging_Captcha_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:20:\"{weight}.Directories\";a:6:{s:5:\"title\";s:11:\"Directories\";s:4:\"desc\";N;s:2:\"id\";s:11:\"Directories\";s:3:\"url\";s:35:\"/civicrm/admin/setting/path?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:22:\"{weight}.Resource URLs\";a:6:{s:5:\"title\";s:13:\"Resource URLs\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ResourceURLs\";s:3:\"url\";s:34:\"/civicrm/admin/setting/url?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:40:\"{weight}.Cleanup Caches and Update Paths\";a:6:{s:5:\"title\";s:31:\"Cleanup Caches and Update Paths\";s:4:\"desc\";s:157:\"Reset the Base Directory Path and Base URL settings - generally when a CiviCRM site is moved to another location in the file system and/or to another domain.\";s:2:\"id\";s:27:\"CleanupCachesandUpdatePaths\";s:3:\"url\";s:50:\"/civicrm/admin/setting/updateConfigBackend?reset=1\";s:4:\"icon\";s:26:\"admin/small/updatepath.png\";s:5:\"extra\";N;}s:33:\"{weight}.CMS Database Integration\";a:6:{s:5:\"title\";s:24:\"CMS Database Integration\";s:4:\"desc\";N;s:2:\"id\";s:22:\"CMSDatabaseIntegration\";s:3:\"url\";s:33:\"/civicrm/admin/setting/uf?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:36:\"{weight}.Safe File Extension Options\";a:6:{s:5:\"title\";s:27:\"Safe File Extension Options\";s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:2:\"id\";s:24:\"SafeFileExtensionOptions\";s:3:\"url\";s:50:\"/civicrm/admin/options/safe_file_extension?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:22:\"{weight}.Option Groups\";a:6:{s:5:\"title\";s:13:\"Option Groups\";s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:2:\"id\";s:12:\"OptionGroups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:31:\"{weight}.Import/Export Mappings\";a:6:{s:5:\"title\";s:22:\"Import/Export Mappings\";s:4:\"desc\";s:141:\"Import and Export mappings allow you to easily run the same job multiple times. This option allows you to rename or delete existing mappings.\";s:2:\"id\";s:21:\"Import_ExportMappings\";s:3:\"url\";s:30:\"/civicrm/admin/mapping?reset=1\";s:4:\"icon\";s:33:\"admin/small/import_export_map.png\";s:5:\"extra\";N;}s:18:\"{weight}.Debugging\";a:6:{s:5:\"title\";s:9:\"Debugging\";s:4:\"desc\";N;s:2:\"id\";s:9:\"Debugging\";s:3:\"url\";s:36:\"/civicrm/admin/setting/debug?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:28:\"{weight}.Multi Site Settings\";a:6:{s:5:\"title\";s:19:\"Multi Site Settings\";s:4:\"desc\";N;s:2:\"id\";s:17:\"MultiSiteSettings\";s:3:\"url\";s:52:\"/civicrm/admin/setting/preferences/multisite?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:23:\"{weight}.Scheduled Jobs\";a:6:{s:5:\"title\";s:14:\"Scheduled Jobs\";s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:2:\"id\";s:13:\"ScheduledJobs\";s:3:\"url\";s:26:\"/civicrm/admin/job?reset=1\";s:4:\"icon\";s:18:\"admin/small/13.png\";s:5:\"extra\";N;}s:22:\"{weight}.Sms Providers\";a:6:{s:5:\"title\";s:13:\"Sms Providers\";s:4:\"desc\";s:27:\"To configure a sms provider\";s:2:\"id\";s:12:\"SmsProviders\";s:3:\"url\";s:35:\"/civicrm/admin/sms/provider?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:9;}s:12:\"CiviCampaign\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:40:\"{weight}.CiviCampaign Component Settings\";a:6:{s:5:\"title\";s:31:\"CiviCampaign Component Settings\";s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:2:\"id\";s:29:\"CiviCampaignComponentSettings\";s:3:\"url\";s:51:\"/civicrm/admin/setting/preferences/campaign?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:21:\"{weight}.Survey Types\";a:6:{s:5:\"title\";s:12:\"Survey Types\";s:4:\"desc\";N;s:2:\"id\";s:11:\"SurveyTypes\";s:3:\"url\";s:42:\"/civicrm/admin/campaign/surveyType?reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:5:\"extra\";N;}s:23:\"{weight}.Campaign Types\";a:6:{s:5:\"title\";s:14:\"Campaign Types\";s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:2:\"id\";s:13:\"CampaignTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/campaign_type?reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:5:\"extra\";N;}s:24:\"{weight}.Campaign Status\";a:6:{s:5:\"title\";s:15:\"Campaign Status\";s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:2:\"id\";s:14:\"CampaignStatus\";s:3:\"url\";s:46:\"/civicrm/admin/options/campaign_status?reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:5:\"extra\";N;}s:25:\"{weight}.Engagement Index\";a:6:{s:5:\"title\";s:16:\"Engagement Index\";s:4:\"desc\";s:18:\"Engagement levels.\";s:2:\"id\";s:15:\"EngagementIndex\";s:3:\"url\";s:47:\"/civicrm/admin/options/engagement_index?reset=1\";s:4:\"icon\";s:18:\"admin/small/05.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:3;}s:9:\"CiviEvent\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:37:\"{weight}.CiviEvent Component Settings\";a:6:{s:5:\"title\";s:28:\"CiviEvent Component Settings\";s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:2:\"id\";s:26:\"CiviEventComponentSettings\";s:3:\"url\";s:48:\"/civicrm/admin/setting/preferences/event?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:33:\"{weight}.Event Name Badge Layouts\";a:6:{s:5:\"title\";s:24:\"Event Name Badge Layouts\";s:4:\"desc\";s:107:\"Configure name badge layouts for event participants, including logos and what data to include on the badge.\";s:2:\"id\";s:21:\"EventNameBadgeLayouts\";s:3:\"url\";s:52:\"/civicrm/admin/badgelayout?action=browse&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Manage Events\";a:6:{s:5:\"title\";s:13:\"Manage Events\";s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:2:\"id\";s:12:\"ManageEvents\";s:3:\"url\";s:28:\"/civicrm/admin/event?reset=1\";s:4:\"icon\";s:28:\"admin/small/event_manage.png\";s:5:\"extra\";N;}s:24:\"{weight}.Event Templates\";a:6:{s:5:\"title\";s:15:\"Event Templates\";s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:2:\"id\";s:14:\"EventTemplates\";s:3:\"url\";s:36:\"/civicrm/admin/eventTemplate?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:20:\"{weight}.Event Types\";a:6:{s:5:\"title\";s:11:\"Event Types\";s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:2:\"id\";s:10:\"EventTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/event_type?reset=1\";s:4:\"icon\";s:26:\"admin/small/event_type.png\";s:5:\"extra\";N;}s:27:\"{weight}.Participant Status\";a:6:{s:5:\"title\";s:18:\"Participant Status\";s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:2:\"id\";s:17:\"ParticipantStatus\";s:3:\"url\";s:41:\"/civicrm/admin/participant_status?reset=1\";s:4:\"icon\";s:28:\"admin/small/parti_status.png\";s:5:\"extra\";N;}s:25:\"{weight}.Participant Role\";a:6:{s:5:\"title\";s:16:\"Participant Role\";s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:2:\"id\";s:15:\"ParticipantRole\";s:3:\"url\";s:47:\"/civicrm/admin/options/participant_role?reset=1\";s:4:\"icon\";s:26:\"admin/small/parti_role.png\";s:5:\"extra\";N;}s:38:\"{weight}.Participant Listing Templates\";a:6:{s:5:\"title\";s:29:\"Participant Listing Templates\";s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:2:\"id\";s:27:\"ParticipantListingTemplates\";s:3:\"url\";s:50:\"/civicrm/admin/options/participant_listing?reset=1\";s:4:\"icon\";s:18:\"admin/small/01.png\";s:5:\"extra\";N;}s:31:\"{weight}.Conference Slot Labels\";a:6:{s:5:\"title\";s:22:\"Conference Slot Labels\";s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:2:\"id\";s:20:\"ConferenceSlotLabels\";s:3:\"url\";s:65:\"/civicrm/admin/conference_slots?group=conference_slot&amp;reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}s:9:\"perColumn\";d:5;}s:8:\"CiviMail\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:36:\"{weight}.CiviMail Component Settings\";a:6:{s:5:\"title\";s:27:\"CiviMail Component Settings\";s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:2:\"id\";s:25:\"CiviMailComponentSettings\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/mailing?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Mailer Settings\";a:6:{s:5:\"title\";s:15:\"Mailer Settings\";s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:2:\"id\";s:14:\"MailerSettings\";s:3:\"url\";s:27:\"/civicrm/admin/mail?reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";s:5:\"extra\";N;}s:49:\"{weight}.Headers, Footers, and Automated Messages\";a:6:{s:5:\"title\";s:40:\"Headers, Footers, and Automated Messages\";s:4:\"desc\";s:143:\"Configure the header and footer used for mailings. Customize the content of automated Subscribe, Unsubscribe, Resubscribe and Opt-out messages.\";s:2:\"id\";s:36:\"Headers_Footers_andAutomatedMessages\";s:3:\"url\";s:32:\"/civicrm/admin/component?reset=1\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";s:5:\"extra\";N;}s:29:\"{weight}.From Email Addresses\";a:6:{s:5:\"title\";s:20:\"From Email Addresses\";s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:2:\"id\";s:18:\"FromEmailAddresses\";s:3:\"url\";s:58:\"/civicrm/admin/options/from_email_address/civimail?reset=1\";s:4:\"icon\";s:21:\"admin/small/title.png\";s:5:\"extra\";N;}s:22:\"{weight}.Mail Accounts\";a:6:{s:5:\"title\";s:13:\"Mail Accounts\";s:4:\"desc\";s:32:\"Configure email account setting.\";s:2:\"id\";s:12:\"MailAccounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";s:4:\"icon\";s:18:\"admin/small/07.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:3;}s:10:\"CiviMember\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:38:\"{weight}.CiviMember Component Settings\";a:6:{s:5:\"title\";s:29:\"CiviMember Component Settings\";s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:2:\"id\";s:27:\"CiviMemberComponentSettings\";s:3:\"url\";s:49:\"/civicrm/admin/setting/preferences/member?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Membership Types\";a:6:{s:5:\"title\";s:16:\"Membership Types\";s:4:\"desc\";s:174:\"Define the types of memberships you want to offer. For each type, you can specify a \'name\' (Gold Member, Honor Society Member...), a description, duration, and a minimum fee.\";s:2:\"id\";s:15:\"MembershipTypes\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";s:4:\"icon\";s:31:\"admin/small/membership_type.png\";s:5:\"extra\";N;}s:32:\"{weight}.Membership Status Rules\";a:6:{s:5:\"title\";s:23:\"Membership Status Rules\";s:4:\"desc\";s:187:\"Status \'rules\' define the current status for a membership based on that membership\'s start and end dates. You can adjust the default status options and rules as needed to meet your needs.\";s:2:\"id\";s:21:\"MembershipStatusRules\";s:3:\"url\";s:46:\"/civicrm/admin/member/membershipStatus?reset=1\";s:4:\"icon\";s:33:\"admin/small/membership_status.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}s:6:\"Manage\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:27:\"{weight}.Scheduled Jobs Log\";a:6:{s:5:\"title\";s:18:\"Scheduled Jobs Log\";s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:2:\"id\";s:16:\"ScheduledJobsLog\";s:3:\"url\";s:29:\"/civicrm/admin/joblog?reset=1\";s:4:\"icon\";s:18:\"admin/small/13.png\";s:5:\"extra\";N;}s:42:\"{weight}.Find and Merge Duplicate Contacts\";a:6:{s:5:\"title\";s:33:\"Find and Merge Duplicate Contacts\";s:4:\"desc\";s:158:\"Manage the rules used to identify potentially duplicate contact records. Scan for duplicates using a selected rule and merge duplicate contact data as needed.\";s:2:\"id\";s:29:\"FindandMergeDuplicateContacts\";s:3:\"url\";s:36:\"/civicrm/contact/deduperules?reset=1\";s:4:\"icon\";s:34:\"admin/small/duplicate_matching.png\";s:5:\"extra\";N;}s:26:\"{weight}.Dedupe Exceptions\";a:6:{s:5:\"title\";s:17:\"Dedupe Exceptions\";s:4:\"desc\";N;s:2:\"id\";s:16:\"DedupeExceptions\";s:3:\"url\";s:33:\"/civicrm/dedupe/exception?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}s:12:\"Option Lists\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > Systme Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";s:26:\"admin/small/grant_type.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:1;}s:9:\"Customize\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";s:26:\"admin/small/price_sets.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:1;}s:14:\"CiviContribute\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&amp;reset=1\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";s:41:\"admin/small/online_contribution_pages.png\";s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";s:24:\"admin/small/Premiums.png\";s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";s:34:\"admin/small/contribution_types.png\";s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";s:35:\"admin/small/payment_instruments.png\";s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";s:36:\"admin/small/accepted_creditcards.png\";s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";s:32:\"admin/small/soft_credit_type.png\";s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}s:9:\"perColumn\";d:5;}s:8:\"CiviCase\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";s:18:\"admin/small/36.png\";s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";s:30:\"admin/small/redaction_type.png\";s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";s:25:\"admin/small/case_type.png\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:3;}s:10:\"CiviReport\";a:3:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";s:31:\"admin/small/report_template.gif\";s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";s:24:\"admin/small/template.png\";s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";s:27:\"admin/small/report_list.gif\";s:5:\"extra\";N;}}s:9:\"perColumn\";d:2;}}',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,NULL,'a:0:{}');
 /*!40000 ALTER TABLE `civicrm_menu` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -976,7 +976,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_navigation` WRITE;
 /*!40000 ALTER TABLE `civicrm_navigation` DISABLE KEYS */;
-INSERT INTO `civicrm_navigation` (`id`, `domain_id`, `label`, `name`, `url`, `icon`, `permission`, `permission_operator`, `parent_id`, `is_active`, `has_separator`, `weight`) VALUES (1,1,'Home','Home','civicrm/dashboard?reset=1',NULL,NULL,'',NULL,1,NULL,0),(2,1,'Search','Search',NULL,'crm-i fa-search',NULL,'',NULL,1,NULL,10),(3,1,'Find Contacts','Find Contacts','civicrm/contact/search?reset=1',NULL,NULL,'',2,1,NULL,1),(4,1,'Advanced Search','Advanced Search','civicrm/contact/search/advanced?reset=1',NULL,NULL,'',2,1,NULL,2),(5,1,'Full-text Search','Full-text Search','civicrm/contact/search/custom?csid=15&reset=1',NULL,NULL,'',2,1,NULL,3),(6,1,'Search Builder','Search Builder','civicrm/contact/search/builder?reset=1',NULL,NULL,'',2,1,1,4),(7,1,'Find Cases','Find Cases','civicrm/case/search?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',2,1,NULL,5),(8,1,'Find Contributions','Find Contributions','civicrm/contribute/search?reset=1',NULL,'access CiviContribute','',2,1,NULL,6),(9,1,'Find Mailings','Find Mailings','civicrm/mailing?reset=1',NULL,'access CiviMail','',2,1,NULL,7),(10,1,'Find Memberships','Find Memberships','civicrm/member/search?reset=1',NULL,'access CiviMember','',2,1,NULL,8),(11,1,'Find Participants','Find Participants','civicrm/event/search?reset=1',NULL,'access CiviEvent','',2,1,NULL,9),(12,1,'Find Pledges','Find Pledges','civicrm/pledge/search?reset=1',NULL,'access CiviPledge','',2,1,NULL,10),(13,1,'Find Activities','Find Activities','civicrm/activity/search?reset=1',NULL,NULL,'',2,1,1,11),(14,1,'Custom Searches','Custom Searches','civicrm/contact/search/custom/list?reset=1',NULL,NULL,'',2,1,NULL,12),(15,1,'Contacts','Contacts',NULL,'crm-i fa-address-book-o',NULL,'',NULL,1,NULL,20),(16,1,'New Individual','New Individual','civicrm/contact/add?reset=1&ct=Individual',NULL,'add contacts','',15,1,NULL,1),(17,1,'New Household','New Household','civicrm/contact/add?reset=1&ct=Household',NULL,'add contacts','',15,1,NULL,2),(18,1,'New Organization','New Organization','civicrm/contact/add?reset=1&ct=Organization',NULL,'add contacts','',15,1,1,3),(19,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'access CiviReport','',15,1,1,4),(20,1,'New Activity','New Activity','civicrm/activity?reset=1&action=add&context=standalone',NULL,NULL,'',15,1,NULL,5),(21,1,'New Email','New Email','civicrm/activity/email/add?atype=3&action=add&reset=1&context=standalone',NULL,NULL,'',15,1,1,6),(22,1,'Import Contacts','Import Contacts','civicrm/import/contact?reset=1',NULL,'import contacts','',15,1,NULL,7),(23,1,'Import Activities','Import Activities','civicrm/import/activity?reset=1',NULL,'import contacts','',15,1,1,8),(24,1,'New Group','New Group','civicrm/group/add?reset=1',NULL,'edit groups','',15,1,NULL,9),(25,1,'Manage Groups','Manage Groups','civicrm/group?reset=1',NULL,'access CiviCRM','',15,1,1,10),(26,1,'New Tag','New Tag','civicrm/tag?reset=1&action=add',NULL,'manage tags','',15,1,NULL,11),(27,1,'Manage Tags (Categories)','Manage Tags (Categories)','civicrm/tag?reset=1',NULL,'manage tags','',15,1,1,12),(28,1,'Find and Merge Duplicate Contacts','Find and Merge Duplicate Contacts','civicrm/contact/deduperules?reset=1',NULL,'administer dedupe rules,merge duplicate contacts','OR',15,1,NULL,13),(29,1,'Contributions','Contributions',NULL,'crm-i fa-credit-card','access CiviContribute','',NULL,1,NULL,30),(30,1,'Dashboard','Dashboard','civicrm/contribute?reset=1',NULL,'access CiviContribute','',29,1,NULL,1),(31,1,'New Contribution','New Contribution','civicrm/contribute/add?reset=1&action=add&context=standalone',NULL,'access CiviContribute,edit contributions','AND',29,1,NULL,2),(32,1,'Find Contributions','Find Contributions','civicrm/contribute/search?reset=1',NULL,'access CiviContribute','',29,1,NULL,3),(33,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',29,1,1,4),(34,1,'Import Contributions','Import Contributions','civicrm/contribute/import?reset=1',NULL,'access CiviContribute,edit contributions','AND',29,1,1,5),(35,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',29,1,NULL,7),(36,1,'Pledges','Pledges',NULL,NULL,'access CiviPledge','',29,1,1,6),(37,1,'Accounting Batches','Accounting Batches',NULL,NULL,'view own manual batches,view all manual batches','OR',29,1,1,8),(38,1,'Dashboard','Dashboard','civicrm/pledge?reset=1',NULL,'access CiviPledge','',36,1,NULL,1),(39,1,'New Pledge','New Pledge','civicrm/pledge/add?reset=1&action=add&context=standalone',NULL,'access CiviPledge,edit pledges','AND',36,1,NULL,2),(40,1,'Find Pledges','Find Pledges','civicrm/pledge/search?reset=1',NULL,'access CiviPledge','',36,1,NULL,3),(41,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',36,1,0,4),(42,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute/add?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,NULL,9),(43,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,1,10),(44,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,NULL,11),(45,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,1,12),(46,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,NULL,13),(47,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,1,14),(48,1,'New Batch','New Batch','civicrm/financial/batch?reset=1&action=add',NULL,'create manual batch','AND',37,1,NULL,1),(49,1,'Open Batches','Open Batches','civicrm/financial/financialbatches?reset=1&batchStatus=1',NULL,'view own manual batches,view all manual batches','OR',37,1,NULL,2),(50,1,'Closed Batches','Closed Batches','civicrm/financial/financialbatches?reset=1&batchStatus=2',NULL,'view own manual batches,view all manual batches','OR',37,1,NULL,3),(51,1,'Exported Batches','Exported Batches','civicrm/financial/financialbatches?reset=1&batchStatus=5',NULL,'view own manual batches,view all manual batches','OR',37,1,NULL,4),(52,1,'Events','Events',NULL,'crm-i fa-calendar','access CiviEvent','',NULL,1,NULL,40),(53,1,'Dashboard','CiviEvent Dashboard','civicrm/event?reset=1',NULL,'access CiviEvent','',52,1,NULL,1),(54,1,'Register Event Participant','Register Event Participant','civicrm/participant/add?reset=1&action=add&context=standalone',NULL,'access CiviEvent,edit event participants','AND',52,1,NULL,2),(55,1,'Find Participants','Find Participants','civicrm/event/search?reset=1',NULL,'access CiviEvent','',52,1,NULL,3),(56,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',52,1,1,4),(57,1,'Import Participants','Import Participants','civicrm/event/import?reset=1',NULL,'access CiviEvent,edit event participants','AND',52,1,1,5),(58,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',52,1,NULL,6),(59,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,edit all events','AND',52,1,1,7),(60,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',52,1,1,8),(61,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,edit all events','AND',52,1,1,9),(62,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',52,1,NULL,10),(63,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,edit all events','AND',52,1,NULL,11),(64,1,'Mailings','Mailings',NULL,'crm-i fa-envelope-o','access CiviMail,create mailings,approve mailings,schedule mailings,send SMS','OR',NULL,1,NULL,50),(65,1,'New Mailing','New Mailing','civicrm/mailing/send?reset=1',NULL,'access CiviMail,create mailings','OR',64,1,NULL,1),(66,1,'Draft and Unscheduled Mailings','Draft and Unscheduled Mailings','civicrm/mailing/browse/unscheduled?reset=1&scheduled=false',NULL,'access CiviMail,create mailings,schedule mailings','OR',64,1,NULL,2),(67,1,'Scheduled and Sent Mailings','Scheduled and Sent Mailings','civicrm/mailing/browse/scheduled?reset=1&scheduled=true',NULL,'access CiviMail,approve mailings,create mailings,schedule mailings','OR',64,1,NULL,3),(68,1,'Archived Mailings','Archived Mailings','civicrm/mailing/browse/archived?reset=1',NULL,'access CiviMail,create mailings','OR',64,1,NULL,4),(69,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',64,1,1,5),(70,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',64,1,NULL,6),(71,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'edit message templates','',64,1,NULL,7),(72,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',64,1,1,8),(73,1,'New SMS','New SMS','civicrm/sms/send?reset=1',NULL,'send SMS',NULL,64,1,NULL,9),(74,1,'Find Mass SMS','Find Mass SMS','civicrm/mailing/browse?reset=1&sms=1',NULL,'send SMS',NULL,64,1,1,10),(75,1,'New A/B Test','New A/B Test','civicrm/a/#/abtest/new',NULL,'access CiviMail','',64,1,NULL,15),(76,1,'Manage A/B Tests','Manage A/B Tests','civicrm/a/#/abtest',NULL,'access CiviMail','',64,1,1,16),(77,1,'Memberships','Memberships',NULL,'crm-i fa-id-badge','access CiviMember','',NULL,1,NULL,60),(78,1,'Dashboard','Dashboard','civicrm/member?reset=1',NULL,'access CiviMember','',77,1,NULL,1),(79,1,'New Membership','New Membership','civicrm/member/add?reset=1&action=add&context=standalone',NULL,'access CiviMember,edit memberships','AND',77,1,NULL,2),(80,1,'Find Memberships','Find Memberships','civicrm/member/search?reset=1',NULL,'access CiviMember','',77,1,NULL,3),(81,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',77,1,1,4),(82,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',77,1,NULL,5),(83,1,'Import Memberships','Import Members','civicrm/member/import?reset=1',NULL,'access CiviMember,edit memberships','AND',77,1,1,6),(84,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',77,1,NULL,7),(85,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',77,1,NULL,8),(86,1,'Campaigns','Campaigns',NULL,'crm-i fa-bullhorn','interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',NULL,1,NULL,70),(87,1,'Dashboard','Dashboard','civicrm/campaign?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,1),(88,1,'Surveys','Survey Dashboard','civicrm/campaign?reset=1&subPage=survey',NULL,'manage campaign,administer CiviCampaign','OR',87,1,NULL,1),(89,1,'Petitions','Petition Dashboard','civicrm/campaign?reset=1&subPage=petition',NULL,'manage campaign,administer CiviCampaign','OR',87,1,NULL,2),(90,1,'Campaigns','Campaign Dashboard','civicrm/campaign?reset=1&subPage=campaign',NULL,'manage campaign,administer CiviCampaign','OR',87,1,NULL,3),(91,1,'New Campaign','New Campaign','civicrm/campaign/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,2),(92,1,'New Survey','New Survey','civicrm/survey/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,3),(93,1,'New Petition','New Petition','civicrm/petition/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,4),(94,1,'Reserve Respondents','Reserve Respondents','civicrm/survey/search?reset=1&op=reserve',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts','OR',86,1,NULL,5),(95,1,'Interview Respondents','Interview Respondents','civicrm/survey/search?reset=1&op=interview',NULL,'administer CiviCampaign,manage campaign,interview campaign contacts','OR',86,1,NULL,6),(96,1,'Release Respondents','Release Respondents','civicrm/survey/search?reset=1&op=release',NULL,'administer CiviCampaign,manage campaign,release campaign contacts','OR',86,1,NULL,7),(97,1,'Campaign Reports','Campaign Reports','civicrm/report/list?compid=9&reset=1',NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',86,1,1,8),(98,1,'Conduct Survey','Conduct Survey','civicrm/campaign/vote?reset=1',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts,interview campaign contacts','OR',86,1,NULL,9),(99,1,'GOTV (Voter Tracking)','Voter Listing','civicrm/campaign/gotv?reset=1',NULL,'administer CiviCampaign,manage campaign,release campaign contacts,gotv campaign contacts','OR',86,1,NULL,10),(100,1,'Cases','Cases',NULL,'crm-i fa-folder-open-o','access my cases and activities,access all cases and activities','OR',NULL,1,NULL,80),(101,1,'Dashboard','Dashboard','civicrm/case?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',100,1,NULL,1),(102,1,'New Case','New Case','civicrm/case/add?reset=1&action=add&atype=13&context=standalone',NULL,'add cases,access all cases and activities','OR',100,1,NULL,2),(103,1,'Find Cases','Find Cases','civicrm/case/search?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',100,1,1,3),(104,1,'Case Reports','Case Reports','civicrm/report/list?compid=7&reset=1',NULL,'access my cases and activities,access all cases and activities,administer CiviCase','OR',100,1,0,4),(105,1,'Grants','Grants',NULL,'crm-i fa-money','access CiviGrant','',NULL,1,NULL,90),(106,1,'Dashboard','Dashboard','civicrm/grant?reset=1',NULL,'access CiviGrant','',105,1,NULL,1),(107,1,'New Grant','New Grant','civicrm/grant/add?reset=1&action=add&context=standalone',NULL,'access CiviGrant,edit grants','AND',105,1,NULL,2),(108,1,'Find Grants','Find Grants','civicrm/grant/search?reset=1',NULL,'access CiviGrant','',105,1,1,3),(109,1,'Grant Reports','Grant Reports','civicrm/report/list?compid=5&reset=1',NULL,'access CiviGrant','',105,1,0,4),(110,1,'Administer','Administer',NULL,'crm-i fa-gears','administer CiviCRM','',NULL,1,NULL,100),(111,1,'Administration Console','Administration Console','civicrm/admin?reset=1',NULL,'administer CiviCRM','',110,1,NULL,1),(112,1,'System Status','System Status','civicrm/a/#/status',NULL,'administer CiviCRM','',111,1,NULL,0),(113,1,'Configuration Checklist','Configuration Checklist','civicrm/admin/configtask?reset=1',NULL,'administer CiviCRM','',111,1,NULL,1),(114,1,'Customize Data and Screens','Customize Data and Screens',NULL,NULL,'administer CiviCRM','',110,1,NULL,3),(115,1,'Custom Fields','Custom Fields','civicrm/admin/custom/group?reset=1',NULL,'administer CiviCRM','',114,1,NULL,1),(116,1,'Profiles','Profiles','civicrm/admin/uf/group?reset=1',NULL,'administer CiviCRM','',114,1,NULL,2),(117,1,'Tags (Categories)','Tags (Categories)','civicrm/tag?reset=1',NULL,'administer CiviCRM','',114,1,NULL,3),(118,1,'Activity Types','Activity Types','civicrm/admin/options/activity_type?reset=1',NULL,'administer CiviCRM','',114,1,NULL,4),(119,1,'Relationship Types','Relationship Types','civicrm/admin/reltype?reset=1',NULL,'administer CiviCRM','',114,1,NULL,5),(120,1,'Contact Types','Contact Types','civicrm/admin/options/subtype?reset=1',NULL,'administer CiviCRM','',114,1,NULL,6),(121,1,'Display Preferences','Display Preferences','civicrm/admin/setting/preferences/display?reset=1',NULL,'administer CiviCRM','',114,1,NULL,9),(122,1,'Search Preferences','Search Preferences','civicrm/admin/setting/search?reset=1',NULL,'administer CiviCRM','',114,1,NULL,10),(123,1,'Date Preferences','Date Preferences','civicrm/admin/setting/preferences/date?reset=1',NULL,'administer CiviCRM','',114,1,NULL,11),(124,1,'Navigation Menu','Navigation Menu','civicrm/admin/menu?reset=1',NULL,'administer CiviCRM','',114,1,NULL,12),(125,1,'Word Replacements','Word Replacements','civicrm/admin/options/wordreplacements?reset=1',NULL,'administer CiviCRM','',114,1,NULL,13),(126,1,'Manage Custom Searches','Manage Custom Searches','civicrm/admin/options/custom_search?reset=1',NULL,'administer CiviCRM','',114,1,NULL,14),(127,1,'Dropdown Options','Dropdown Options','civicrm/admin/options?action=browse&reset=1',NULL,'administer CiviCRM','',114,1,NULL,8),(128,1,'Gender Options','Gender Options','civicrm/admin/options/gender?reset=1',NULL,'administer CiviCRM','',127,1,NULL,1),(129,1,'Individual Prefixes (Ms, Mr...)','Individual Prefixes (Ms, Mr...)','civicrm/admin/options/individual_prefix?reset=1',NULL,'administer CiviCRM','',127,1,NULL,2),(130,1,'Individual Suffixes (Jr, Sr...)','Individual Suffixes (Jr, Sr...)','civicrm/admin/options/individual_suffix?reset=1',NULL,'administer CiviCRM','',127,1,NULL,3),(131,1,'Instant Messenger Services','Instant Messenger Services','civicrm/admin/options/instant_messenger_service?reset=1',NULL,'administer CiviCRM','',127,1,NULL,4),(132,1,'Location Types (Home, Work...)','Location Types (Home, Work...)','civicrm/admin/locationType?reset=1',NULL,'administer CiviCRM','',127,1,NULL,5),(133,1,'Mobile Phone Providers','Mobile Phone Providers','civicrm/admin/options/mobile_provider?reset=1',NULL,'administer CiviCRM','',127,1,NULL,6),(134,1,'Phone Types','Phone Types','civicrm/admin/options/phone_type?reset=1',NULL,'administer CiviCRM','',127,1,NULL,7),(135,1,'Website Types','Website Types','civicrm/admin/options/website_type?reset=1',NULL,'administer CiviCRM','',127,1,NULL,8),(136,1,'Communications','Communications',NULL,NULL,'administer CiviCRM','',110,1,NULL,4),(137,1,'Organization Address and Contact Info','Organization Address and Contact Info','civicrm/admin/domain?action=update&reset=1',NULL,'administer CiviCRM','',136,1,NULL,1),(138,1,'FROM Email Addresses','FROM Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',136,1,NULL,2),(139,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',136,1,NULL,3),(140,1,'Schedule Reminders','Schedule Reminders','civicrm/admin/scheduleReminders?reset=1',NULL,'administer CiviCRM','',136,1,NULL,4),(141,1,'Preferred Communication Methods','Preferred Communication Methods','civicrm/admin/options/preferred_communication_method?reset=1',NULL,'administer CiviCRM','',136,1,NULL,5),(142,1,'Label Formats','Label Formats','civicrm/admin/labelFormats?reset=1',NULL,'administer CiviCRM','',136,1,NULL,6),(143,1,'Print Page (PDF) Formats','Print Page (PDF) Formats','civicrm/admin/pdfFormats?reset=1',NULL,'administer CiviCRM','',136,1,NULL,7),(144,1,'Communication Style Options','Communication Style Options','civicrm/admin/options/communication_style?reset=1',NULL,'administer CiviCRM','',136,1,NULL,8),(145,1,'Email Greeting Formats','Email Greeting Formats','civicrm/admin/options/email_greeting?reset=1',NULL,'administer CiviCRM','',136,1,NULL,9),(146,1,'Postal Greeting Formats','Postal Greeting Formats','civicrm/admin/options/postal_greeting?reset=1',NULL,'administer CiviCRM','',136,1,NULL,10),(147,1,'Addressee Formats','Addressee Formats','civicrm/admin/options/addressee?reset=1',NULL,'administer CiviCRM','',136,1,NULL,11),(148,1,'Localization','Localization',NULL,NULL,'administer CiviCRM','',110,1,NULL,6),(149,1,'Languages, Currency, Locations','Languages, Currency, Locations','civicrm/admin/setting/localization?reset=1',NULL,'administer CiviCRM','',148,1,NULL,1),(150,1,'Address Settings','Address Settings','civicrm/admin/setting/preferences/address?reset=1',NULL,'administer CiviCRM','',148,1,NULL,2),(151,1,'Date Formats','Date Formats','civicrm/admin/setting/date?reset=1',NULL,'administer CiviCRM','',148,1,NULL,3),(152,1,'Preferred Language Options','Preferred Language Options','civicrm/admin/options/languages?reset=1',NULL,'administer CiviCRM','',148,1,NULL,4),(153,1,'Users and Permissions','Users and Permissions',NULL,NULL,'administer CiviCRM','',110,1,NULL,7),(154,1,'Permissions (Access Control)','Permissions (Access Control)','civicrm/admin/access?reset=1',NULL,'administer CiviCRM','',153,1,NULL,1),(155,1,'Synchronize Users to Contacts','Synchronize Users to Contacts','civicrm/admin/synchUser?reset=1',NULL,'administer CiviCRM','',153,1,NULL,2),(156,1,'System Settings','System Settings',NULL,NULL,'administer CiviCRM','',110,1,NULL,8),(157,1,'Components','Enable Components','civicrm/admin/setting/component?reset=1',NULL,'administer CiviCRM','',156,1,NULL,1),(158,1,'Connections','Connections','civicrm/a/#/cxn',NULL,'administer CiviCRM','',156,1,NULL,2),(159,1,'Extensions','Manage Extensions','civicrm/admin/extensions?reset=1',NULL,'administer CiviCRM','',156,1,1,3),(160,1,'Cleanup Caches and Update Paths','Cleanup Caches and Update Paths','civicrm/admin/setting/updateConfigBackend?reset=1',NULL,'administer CiviCRM','',156,1,NULL,4),(161,1,'CMS Database Integration','CMS Integration','civicrm/admin/setting/uf?reset=1',NULL,'administer CiviCRM','',156,1,NULL,5),(162,1,'Debugging and Error Handling','Debugging and Error Handling','civicrm/admin/setting/debug?reset=1',NULL,'administer CiviCRM','',156,1,NULL,6),(163,1,'Directories','Directories','civicrm/admin/setting/path?reset=1',NULL,'administer CiviCRM','',156,1,NULL,7),(164,1,'Import/Export Mappings','Import/Export Mappings','civicrm/admin/mapping?reset=1',NULL,'administer CiviCRM','',156,1,NULL,8),(165,1,'Mapping and Geocoding','Mapping and Geocoding','civicrm/admin/setting/mapping?reset=1',NULL,'administer CiviCRM','',156,1,NULL,9),(166,1,'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','civicrm/admin/setting/misc?reset=1',NULL,'administer CiviCRM','',156,1,NULL,10),(167,1,'Multi Site Settings','Multi Site Settings','civicrm/admin/setting/preferences/multisite?reset=1',NULL,'administer CiviCRM','',156,1,NULL,11),(168,1,'Option Groups','Option Groups','civicrm/admin/options?reset=1',NULL,'administer CiviCRM','',156,1,NULL,12),(169,1,'Outbound Email (SMTP/Sendmail)','Outbound Email','civicrm/admin/setting/smtp?reset=1',NULL,'administer CiviCRM','',156,1,NULL,13),(170,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',156,1,NULL,14),(171,1,'Resource URLs','Resource URLs','civicrm/admin/setting/url?reset=1',NULL,'administer CiviCRM','',156,1,NULL,15),(172,1,'Safe File Extensions','Safe File Extensions','civicrm/admin/options/safe_file_extension?reset=1',NULL,'administer CiviCRM','',156,1,NULL,16),(173,1,'Scheduled Jobs','Scheduled Jobs','civicrm/admin/job?reset=1',NULL,'administer CiviCRM','',156,1,NULL,17),(174,1,'SMS Providers','SMS Providers','civicrm/admin/sms/provider?reset=1',NULL,'administer CiviCRM','',156,1,NULL,18),(175,1,'CiviCampaign','CiviCampaign',NULL,NULL,'administer CiviCampaign,administer CiviCRM','AND',110,1,NULL,9),(176,1,'Survey Types','Survey Types','civicrm/admin/campaign/surveyType?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,1),(177,1,'Campaign Types','Campaign Types','civicrm/admin/options/campaign_type?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,2),(178,1,'Campaign Status','Campaign Status','civicrm/admin/options/campaign_status?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,3),(179,1,'Engagement Index','Engagement Index','civicrm/admin/options/engagement_index?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,4),(180,1,'CiviCampaign Component Settings','CiviCampaign Component Settings','civicrm/admin/setting/preferences/campaign?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,5),(181,1,'CiviCase','CiviCase',NULL,NULL,'administer CiviCase',NULL,110,1,NULL,10),(182,1,'CiviCase Settings','CiviCase Settings','civicrm/admin/setting/case?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,1),(183,1,'Case Types','Case Types','civicrm/a/#/caseType',NULL,'administer CiviCase',NULL,181,1,NULL,2),(184,1,'Redaction Rules','Redaction Rules','civicrm/admin/options/redaction_rule?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,3),(185,1,'Case Statuses','Case Statuses','civicrm/admin/options/case_status?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,4),(186,1,'Encounter Medium','Encounter Medium','civicrm/admin/options/encounter_medium?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,5),(187,1,'CiviContribute','CiviContribute',NULL,NULL,'access CiviContribute,administer CiviCRM','AND',110,1,NULL,11),(188,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,6),(189,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,1,7),(190,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,8),(191,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,1,9),(192,1,'Financial Types','Financial Types','civicrm/admin/financial/financialType?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,10),(193,1,'Financial Accounts','Financial Accounts','civicrm/admin/financial/financialAccount?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,11),(194,1,'Payment Methods','Payment Instruments','civicrm/admin/options/payment_instrument?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,12),(195,1,'Accepted Credit Cards','Accepted Credit Cards','civicrm/admin/options/accept_creditcard?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,13),(196,1,'Soft Credit Types','Soft Credit Types','civicrm/admin/options/soft_credit_type?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,1,14),(197,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,15),(198,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,16),(199,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',187,1,NULL,17),(200,1,'CiviContribute Component Settings','CiviContribute Component Settings','civicrm/admin/setting/preferences/contribute?reset=1',NULL,'administer CiviCRM','',187,1,NULL,18),(201,1,'CiviEvent','CiviEvent',NULL,NULL,'access CiviEvent,administer CiviCRM','AND',110,1,NULL,12),(202,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,1),(203,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,2),(204,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,3),(205,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,4),(206,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,5),(207,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,6),(208,1,'Event Types','Event Types','civicrm/admin/options/event_type?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,7),(209,1,'Participant Statuses','Participant Statuses','civicrm/admin/participant_status?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,8),(210,1,'Participant Roles','Participant Roles','civicrm/admin/options/participant_role?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,9),(211,1,'Participant Listing Options','Participant Listing Options','civicrm/admin/options/participant_listing?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,10),(212,1,'Event Name Badge Layouts','Event Name Badge Layouts','civicrm/admin/badgelayout?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,11),(213,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',201,1,NULL,12),(214,1,'CiviEvent Component Settings','CiviEvent Component Settings','civicrm/admin/setting/preferences/event?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,13),(215,1,'CiviGrant','CiviGrant',NULL,NULL,'access CiviGrant,administer CiviCRM','AND',110,1,NULL,13),(216,1,'Grant Types','Grant Types','civicrm/admin/options/grant_type?reset=1',NULL,'access CiviGrant,administer CiviCRM','AND',215,1,NULL,1),(217,1,'Grant Status','Grant Status','civicrm/admin/options/grant_status?reset=1',NULL,'access CiviGrant,administer CiviCRM','AND',215,1,NULL,2),(218,1,'CiviMail','CiviMail',NULL,NULL,'access CiviMail,administer CiviCRM','AND',110,1,NULL,14),(219,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,1),(220,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',218,1,NULL,2),(221,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',218,1,NULL,3),(222,1,'Mail Accounts','Mail Accounts','civicrm/admin/mailSettings?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,4),(223,1,'Mailer Settings','Mailer Settings','civicrm/admin/mail?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,5),(224,1,'CiviMail Component Settings','CiviMail Component Settings','civicrm/admin/setting/preferences/mailing?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,6),(225,1,'CiviMember','CiviMember',NULL,NULL,'access CiviMember,administer CiviCRM','AND',110,1,NULL,15),(226,1,'Membership Types','Membership Types','civicrm/admin/member/membershipType?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,1),(227,1,'Membership Status Rules','Membership Status Rules','civicrm/admin/member/membershipStatus?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,1,2),(228,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,3),(229,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,4),(230,1,'CiviMember Component Settings','CiviMember Component Settings','civicrm/admin/setting/preferences/member?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,5),(231,1,'CiviReport','CiviReport',NULL,NULL,'access CiviReport,administer CiviCRM','AND',110,1,NULL,16),(232,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',231,1,NULL,1),(233,1,'Create New Report from Template','Create New Report from Template','civicrm/admin/report/template/list?reset=1',NULL,'administer Reports','',231,1,NULL,2),(234,1,'Manage Templates','Manage Templates','civicrm/admin/report/options/report_template?reset=1',NULL,'administer Reports','',231,1,NULL,3),(235,1,'Register Report','Register Report','civicrm/admin/report/register?reset=1',NULL,'administer Reports','',231,1,NULL,4),(236,1,'Support','Support',NULL,'crm-i fa-life-ring',NULL,'',NULL,1,NULL,110),(237,1,'Get started','Get started','https://civicrm.org/get-started?src=iam',NULL,NULL,'AND',236,1,NULL,1),(238,1,'Documentation','Documentation','https://civicrm.org/documentation?src=iam',NULL,NULL,'AND',236,1,NULL,2),(239,1,'Ask a question','Ask a question','https://civicrm.org/ask-a-question?src=iam',NULL,NULL,'AND',236,1,NULL,3),(240,1,'Get expert help','Get expert help','https://civicrm.org/experts?src=iam',NULL,NULL,'AND',236,1,NULL,4),(241,1,'About CiviCRM','About CiviCRM','https://civicrm.org/about?src=iam',NULL,NULL,'AND',236,1,1,5),(242,1,'Register your site','Register your site','https://civicrm.org/register-your-site?src=iam&sid={sid}',NULL,NULL,'AND',236,1,NULL,6),(243,1,'Join CiviCRM','Join CiviCRM','https://civicrm.org/become-a-member?src=iam&sid={sid}',NULL,NULL,'AND',236,1,NULL,7),(244,1,'Developer','Developer',NULL,NULL,'administer CiviCRM','',236,1,1,8),(245,1,'API Explorer','API Explorer','civicrm/api',NULL,'administer CiviCRM','',244,1,NULL,1),(246,1,'Developer Docs','Developer Docs','https://civicrm.org/developer-documentation?src=iam',NULL,'administer CiviCRM','',244,1,NULL,3),(247,1,'Reports','Reports',NULL,'crm-i fa-bar-chart','access CiviReport','',NULL,1,NULL,95),(248,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'administer CiviCRM','',247,1,0,1),(249,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',247,1,0,2),(250,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',247,1,0,3),(251,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',247,1,0,4),(252,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',247,1,0,5),(253,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',247,1,0,6),(254,1,'Campaign Reports','Campaign Reports','civicrm/report/list?compid=9&reset=1',NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',247,1,0,7),(255,1,'Case Reports','Case Reports','civicrm/report/list?compid=7&reset=1',NULL,'access my cases and activities,access all cases and activities,administer CiviCase','OR',247,1,0,8),(256,1,'Grant Reports','Grant Reports','civicrm/report/list?compid=5&reset=1',NULL,'access CiviGrant','',247,1,0,9),(257,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',247,1,1,10),(258,1,'My Reports','My Reports','civicrm/report/list?myreports=1&reset=1',NULL,'access CiviReport','',247,1,1,11),(259,1,'New Student','New Student','civicrm/contact/add?ct=Individual&cst=Student&reset=1',NULL,'add contacts','',16,1,NULL,1),(260,1,'New Parent','New Parent','civicrm/contact/add?ct=Individual&cst=Parent&reset=1',NULL,'add contacts','',16,1,NULL,2),(261,1,'New Staff','New Staff','civicrm/contact/add?ct=Individual&cst=Staff&reset=1',NULL,'add contacts','',16,1,NULL,3),(262,1,'New Team','New Team','civicrm/contact/add?ct=Organization&cst=Team&reset=1',NULL,'add contacts','',18,1,NULL,1),(263,1,'New Sponsor','New Sponsor','civicrm/contact/add?ct=Organization&cst=Sponsor&reset=1',NULL,'add contacts','',18,1,NULL,2);
+INSERT INTO `civicrm_navigation` (`id`, `domain_id`, `label`, `name`, `url`, `icon`, `permission`, `permission_operator`, `parent_id`, `is_active`, `has_separator`, `weight`) VALUES (1,1,'Home','Home','civicrm/dashboard?reset=1',NULL,NULL,'',NULL,1,NULL,0),(2,1,'Search','Search',NULL,'crm-i fa-search',NULL,'',NULL,1,NULL,10),(3,1,'Find Contacts','Find Contacts','civicrm/contact/search?reset=1',NULL,NULL,'',2,1,NULL,1),(4,1,'Advanced Search','Advanced Search','civicrm/contact/search/advanced?reset=1',NULL,NULL,'',2,1,NULL,2),(5,1,'Full-text Search','Full-text Search','civicrm/contact/search/custom?csid=15&reset=1',NULL,NULL,'',2,1,NULL,3),(6,1,'Search Builder','Search Builder','civicrm/contact/search/builder?reset=1',NULL,NULL,'',2,1,1,4),(7,1,'Find Cases','Find Cases','civicrm/case/search?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',2,1,NULL,5),(8,1,'Find Contributions','Find Contributions','civicrm/contribute/search?reset=1',NULL,'access CiviContribute','',2,1,NULL,6),(9,1,'Find Mailings','Find Mailings','civicrm/mailing?reset=1',NULL,'access CiviMail','',2,1,NULL,7),(10,1,'Find Memberships','Find Memberships','civicrm/member/search?reset=1',NULL,'access CiviMember','',2,1,NULL,8),(11,1,'Find Participants','Find Participants','civicrm/event/search?reset=1',NULL,'access CiviEvent','',2,1,NULL,9),(12,1,'Find Pledges','Find Pledges','civicrm/pledge/search?reset=1',NULL,'access CiviPledge','',2,1,NULL,10),(13,1,'Find Activities','Find Activities','civicrm/activity/search?reset=1',NULL,NULL,'',2,1,1,11),(14,1,'Custom Searches','Custom Searches','civicrm/contact/search/custom/list?reset=1',NULL,NULL,'',2,1,NULL,12),(15,1,'Contacts','Contacts',NULL,'crm-i fa-address-book-o',NULL,'',NULL,1,NULL,20),(16,1,'New Individual','New Individual','civicrm/contact/add?reset=1&ct=Individual',NULL,'add contacts','',15,1,NULL,1),(17,1,'New Household','New Household','civicrm/contact/add?reset=1&ct=Household',NULL,'add contacts','',15,1,NULL,2),(18,1,'New Organization','New Organization','civicrm/contact/add?reset=1&ct=Organization',NULL,'add contacts','',15,1,1,3),(19,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'access CiviReport','',15,1,1,4),(20,1,'New Activity','New Activity','civicrm/activity?reset=1&action=add&context=standalone',NULL,NULL,'',15,1,NULL,5),(21,1,'New Email','New Email','civicrm/activity/email/add?atype=3&action=add&reset=1&context=standalone',NULL,NULL,'',15,1,1,6),(22,1,'Import Contacts','Import Contacts','civicrm/import/contact?reset=1',NULL,'import contacts','',15,1,NULL,7),(23,1,'Import Activities','Import Activities','civicrm/import/activity?reset=1',NULL,'import contacts','',15,1,1,8),(24,1,'New Group','New Group','civicrm/group/add?reset=1',NULL,'edit groups','',15,1,NULL,9),(25,1,'Manage Groups','Manage Groups','civicrm/group?reset=1',NULL,'access CiviCRM','',15,1,1,10),(26,1,'New Tag','New Tag','civicrm/tag?reset=1&action=add',NULL,'manage tags','',15,1,NULL,11),(27,1,'Manage Tags (Categories)','Manage Tags (Categories)','civicrm/tag?reset=1',NULL,'manage tags','',15,1,1,12),(28,1,'Find and Merge Duplicate Contacts','Find and Merge Duplicate Contacts','civicrm/contact/deduperules?reset=1',NULL,'administer dedupe rules,merge duplicate contacts','OR',15,1,NULL,13),(29,1,'Contributions','Contributions',NULL,'crm-i fa-credit-card','access CiviContribute','',NULL,1,NULL,30),(30,1,'Dashboard','Dashboard','civicrm/contribute?reset=1',NULL,'access CiviContribute','',29,1,NULL,1),(31,1,'New Contribution','New Contribution','civicrm/contribute/add?reset=1&action=add&context=standalone',NULL,'access CiviContribute,edit contributions','AND',29,1,NULL,2),(32,1,'Find Contributions','Find Contributions','civicrm/contribute/search?reset=1',NULL,'access CiviContribute','',29,1,NULL,3),(33,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',29,1,1,4),(34,1,'Import Contributions','Import Contributions','civicrm/contribute/import?reset=1',NULL,'access CiviContribute,edit contributions','AND',29,1,1,5),(35,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',29,1,NULL,7),(36,1,'Pledges','Pledges',NULL,NULL,'access CiviPledge','',29,1,1,6),(37,1,'Accounting Batches','Accounting Batches',NULL,NULL,'view own manual batches,view all manual batches','OR',29,1,1,8),(38,1,'Dashboard','Dashboard','civicrm/pledge?reset=1',NULL,'access CiviPledge','',36,1,NULL,1),(39,1,'New Pledge','New Pledge','civicrm/pledge/add?reset=1&action=add&context=standalone',NULL,'access CiviPledge,edit pledges','AND',36,1,NULL,2),(40,1,'Find Pledges','Find Pledges','civicrm/pledge/search?reset=1',NULL,'access CiviPledge','',36,1,NULL,3),(41,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',36,1,0,4),(42,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute/add?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,NULL,9),(43,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,1,10),(44,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,NULL,11),(45,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,1,12),(46,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,NULL,13),(47,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',29,1,1,14),(48,1,'New Batch','New Batch','civicrm/financial/batch?reset=1&action=add',NULL,'create manual batch','AND',37,1,NULL,1),(49,1,'Open Batches','Open Batches','civicrm/financial/financialbatches?reset=1&batchStatus=1',NULL,'view own manual batches,view all manual batches','OR',37,1,NULL,2),(50,1,'Closed Batches','Closed Batches','civicrm/financial/financialbatches?reset=1&batchStatus=2',NULL,'view own manual batches,view all manual batches','OR',37,1,NULL,3),(51,1,'Exported Batches','Exported Batches','civicrm/financial/financialbatches?reset=1&batchStatus=5',NULL,'view own manual batches,view all manual batches','OR',37,1,NULL,4),(52,1,'Events','Events',NULL,'crm-i fa-calendar','access CiviEvent','',NULL,1,NULL,40),(53,1,'Dashboard','CiviEvent Dashboard','civicrm/event?reset=1',NULL,'access CiviEvent','',52,1,NULL,1),(54,1,'Register Event Participant','Register Event Participant','civicrm/participant/add?reset=1&action=add&context=standalone',NULL,'access CiviEvent,edit event participants','AND',52,1,NULL,2),(55,1,'Find Participants','Find Participants','civicrm/event/search?reset=1',NULL,'access CiviEvent','',52,1,NULL,3),(56,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',52,1,1,4),(57,1,'Import Participants','Import Participants','civicrm/event/import?reset=1',NULL,'access CiviEvent,edit event participants','AND',52,1,1,5),(58,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',52,1,NULL,6),(59,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,edit all events','AND',52,1,1,7),(60,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',52,1,1,8),(61,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,edit all events','AND',52,1,1,9),(62,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',52,1,NULL,10),(63,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,edit all events','AND',52,1,NULL,11),(64,1,'Mailings','Mailings',NULL,'crm-i fa-envelope-o','access CiviMail,create mailings,approve mailings,schedule mailings,send SMS','OR',NULL,1,NULL,50),(65,1,'New Mailing','New Mailing','civicrm/mailing/send?reset=1',NULL,'access CiviMail,create mailings','OR',64,1,NULL,1),(66,1,'Draft and Unscheduled Mailings','Draft and Unscheduled Mailings','civicrm/mailing/browse/unscheduled?reset=1&scheduled=false',NULL,'access CiviMail,create mailings,schedule mailings','OR',64,1,NULL,2),(67,1,'Scheduled and Sent Mailings','Scheduled and Sent Mailings','civicrm/mailing/browse/scheduled?reset=1&scheduled=true',NULL,'access CiviMail,approve mailings,create mailings,schedule mailings','OR',64,1,NULL,3),(68,1,'Archived Mailings','Archived Mailings','civicrm/mailing/browse/archived?reset=1',NULL,'access CiviMail,create mailings','OR',64,1,NULL,4),(69,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',64,1,1,5),(70,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',64,1,NULL,6),(71,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'edit message templates','',64,1,NULL,7),(72,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',64,1,1,8),(73,1,'New SMS','New SMS','civicrm/sms/send?reset=1',NULL,'send SMS',NULL,64,1,NULL,9),(74,1,'Find Mass SMS','Find Mass SMS','civicrm/mailing/browse?reset=1&sms=1',NULL,'send SMS',NULL,64,1,1,10),(75,1,'New A/B Test','New A/B Test','civicrm/a/#/abtest/new',NULL,'access CiviMail','',64,1,NULL,15),(76,1,'Manage A/B Tests','Manage A/B Tests','civicrm/a/#/abtest',NULL,'access CiviMail','',64,1,1,16),(77,1,'Memberships','Memberships',NULL,'crm-i fa-id-badge','access CiviMember','',NULL,1,NULL,60),(78,1,'Dashboard','Dashboard','civicrm/member?reset=1',NULL,'access CiviMember','',77,1,NULL,1),(79,1,'New Membership','New Membership','civicrm/member/add?reset=1&action=add&context=standalone',NULL,'access CiviMember,edit memberships','AND',77,1,NULL,2),(80,1,'Find Memberships','Find Memberships','civicrm/member/search?reset=1',NULL,'access CiviMember','',77,1,NULL,3),(81,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',77,1,1,4),(82,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',77,1,NULL,5),(83,1,'Import Memberships','Import Members','civicrm/member/import?reset=1',NULL,'access CiviMember,edit memberships','AND',77,1,1,6),(84,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',77,1,NULL,7),(85,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',77,1,NULL,8),(86,1,'Campaigns','Campaigns',NULL,'crm-i fa-bullhorn','interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',NULL,1,NULL,70),(87,1,'Dashboard','Dashboard','civicrm/campaign?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,1),(88,1,'Surveys','Survey Dashboard','civicrm/campaign?reset=1&subPage=survey',NULL,'manage campaign,administer CiviCampaign','OR',87,1,NULL,1),(89,1,'Petitions','Petition Dashboard','civicrm/campaign?reset=1&subPage=petition',NULL,'manage campaign,administer CiviCampaign','OR',87,1,NULL,2),(90,1,'Campaigns','Campaign Dashboard','civicrm/campaign?reset=1&subPage=campaign',NULL,'manage campaign,administer CiviCampaign','OR',87,1,NULL,3),(91,1,'New Campaign','New Campaign','civicrm/campaign/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,2),(92,1,'New Survey','New Survey','civicrm/survey/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,3),(93,1,'New Petition','New Petition','civicrm/petition/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,4),(94,1,'Reserve Respondents','Reserve Respondents','civicrm/survey/search?reset=1&op=reserve',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts','OR',86,1,NULL,5),(95,1,'Interview Respondents','Interview Respondents','civicrm/survey/search?reset=1&op=interview',NULL,'administer CiviCampaign,manage campaign,interview campaign contacts','OR',86,1,NULL,6),(96,1,'Release Respondents','Release Respondents','civicrm/survey/search?reset=1&op=release',NULL,'administer CiviCampaign,manage campaign,release campaign contacts','OR',86,1,NULL,7),(97,1,'Campaign Reports','Campaign Reports','civicrm/report/list?compid=9&reset=1',NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',86,1,1,8),(98,1,'Conduct Survey','Conduct Survey','civicrm/campaign/vote?reset=1',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts,interview campaign contacts','OR',86,1,NULL,9),(99,1,'GOTV (Voter Tracking)','Voter Listing','civicrm/campaign/gotv?reset=1',NULL,'administer CiviCampaign,manage campaign,release campaign contacts,gotv campaign contacts','OR',86,1,NULL,10),(100,1,'Cases','Cases',NULL,'crm-i fa-folder-open-o','access my cases and activities,access all cases and activities','OR',NULL,1,NULL,80),(101,1,'Dashboard','Dashboard','civicrm/case?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',100,1,NULL,1),(102,1,'New Case','New Case','civicrm/case/add?reset=1&action=add&atype=13&context=standalone',NULL,'add cases,access all cases and activities','OR',100,1,NULL,2),(103,1,'Find Cases','Find Cases','civicrm/case/search?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',100,1,1,3),(104,1,'Case Reports','Case Reports','civicrm/report/list?compid=7&reset=1',NULL,'access my cases and activities,access all cases and activities,administer CiviCase','OR',100,1,0,4),(105,1,'Grants','Grants',NULL,'crm-i fa-money','access CiviGrant','',NULL,1,NULL,90),(106,1,'Dashboard','Dashboard','civicrm/grant?reset=1',NULL,'access CiviGrant','',105,1,NULL,1),(107,1,'New Grant','New Grant','civicrm/grant/add?reset=1&action=add&context=standalone',NULL,'access CiviGrant,edit grants','AND',105,1,NULL,2),(108,1,'Find Grants','Find Grants','civicrm/grant/search?reset=1',NULL,'access CiviGrant','',105,1,1,3),(109,1,'Grant Reports','Grant Reports','civicrm/report/list?compid=5&reset=1',NULL,'access CiviGrant','',105,1,0,4),(110,1,'Administer','Administer',NULL,'crm-i fa-gears','administer CiviCRM','',NULL,1,NULL,100),(111,1,'Administration Console','Administration Console','civicrm/admin?reset=1',NULL,'administer CiviCRM','',110,1,NULL,1),(112,1,'System Status','System Status','civicrm/a/#/status',NULL,'administer CiviCRM','',111,1,NULL,0),(113,1,'Configuration Checklist','Configuration Checklist','civicrm/admin/configtask?reset=1',NULL,'administer CiviCRM','',111,1,NULL,1),(114,1,'Customize Data and Screens','Customize Data and Screens',NULL,NULL,'administer CiviCRM','',110,1,NULL,3),(115,1,'Custom Fields','Custom Fields','civicrm/admin/custom/group?reset=1',NULL,'administer CiviCRM','',114,1,NULL,1),(116,1,'Profiles','Profiles','civicrm/admin/uf/group?reset=1',NULL,'administer CiviCRM','',114,1,NULL,2),(117,1,'Tags (Categories)','Tags (Categories)','civicrm/tag?reset=1',NULL,'administer CiviCRM','',114,1,NULL,3),(118,1,'Activity Types','Activity Types','civicrm/admin/options/activity_type?reset=1',NULL,'administer CiviCRM','',114,1,NULL,4),(119,1,'Relationship Types','Relationship Types','civicrm/admin/reltype?reset=1',NULL,'administer CiviCRM','',114,1,NULL,5),(120,1,'Contact Types','Contact Types','civicrm/admin/options/subtype?reset=1',NULL,'administer CiviCRM','',114,1,NULL,6),(121,1,'Display Preferences','Display Preferences','civicrm/admin/setting/preferences/display?reset=1',NULL,'administer CiviCRM','',114,1,NULL,9),(122,1,'Search Preferences','Search Preferences','civicrm/admin/setting/search?reset=1',NULL,'administer CiviCRM','',114,1,NULL,10),(123,1,'Date Preferences','Date Preferences','civicrm/admin/setting/preferences/date?reset=1',NULL,'administer CiviCRM','',114,1,NULL,11),(124,1,'Navigation Menu','Navigation Menu','civicrm/admin/menu?reset=1',NULL,'administer CiviCRM','',114,1,NULL,12),(125,1,'Word Replacements','Word Replacements','civicrm/admin/options/wordreplacements?reset=1',NULL,'administer CiviCRM','',114,1,NULL,13),(126,1,'Manage Custom Searches','Manage Custom Searches','civicrm/admin/options/custom_search?reset=1',NULL,'administer CiviCRM','',114,1,NULL,14),(127,1,'Dropdown Options','Dropdown Options','civicrm/admin/options?action=browse&reset=1',NULL,'administer CiviCRM','',114,1,NULL,8),(128,1,'Gender Options','Gender Options','civicrm/admin/options/gender?reset=1',NULL,'administer CiviCRM','',127,1,NULL,1),(129,1,'Individual Prefixes (Ms, Mr...)','Individual Prefixes (Ms, Mr...)','civicrm/admin/options/individual_prefix?reset=1',NULL,'administer CiviCRM','',127,1,NULL,2),(130,1,'Individual Suffixes (Jr, Sr...)','Individual Suffixes (Jr, Sr...)','civicrm/admin/options/individual_suffix?reset=1',NULL,'administer CiviCRM','',127,1,NULL,3),(131,1,'Instant Messenger Services','Instant Messenger Services','civicrm/admin/options/instant_messenger_service?reset=1',NULL,'administer CiviCRM','',127,1,NULL,4),(132,1,'Location Types (Home, Work...)','Location Types (Home, Work...)','civicrm/admin/locationType?reset=1',NULL,'administer CiviCRM','',127,1,NULL,5),(133,1,'Mobile Phone Providers','Mobile Phone Providers','civicrm/admin/options/mobile_provider?reset=1',NULL,'administer CiviCRM','',127,1,NULL,6),(134,1,'Phone Types','Phone Types','civicrm/admin/options/phone_type?reset=1',NULL,'administer CiviCRM','',127,1,NULL,7),(135,1,'Website Types','Website Types','civicrm/admin/options/website_type?reset=1',NULL,'administer CiviCRM','',127,1,NULL,8),(136,1,'Communications','Communications',NULL,NULL,'administer CiviCRM','',110,1,NULL,4),(137,1,'Organization Address and Contact Info','Organization Address and Contact Info','civicrm/admin/domain?action=update&reset=1',NULL,'administer CiviCRM','',136,1,NULL,1),(138,1,'FROM Email Addresses','FROM Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',136,1,NULL,2),(139,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',136,1,NULL,3),(140,1,'Schedule Reminders','Schedule Reminders','civicrm/admin/scheduleReminders?reset=1',NULL,'administer CiviCRM','',136,1,NULL,4),(141,1,'Preferred Communication Methods','Preferred Communication Methods','civicrm/admin/options/preferred_communication_method?reset=1',NULL,'administer CiviCRM','',136,1,NULL,5),(142,1,'Label Formats','Label Formats','civicrm/admin/labelFormats?reset=1',NULL,'administer CiviCRM','',136,1,NULL,6),(143,1,'Print Page (PDF) Formats','Print Page (PDF) Formats','civicrm/admin/pdfFormats?reset=1',NULL,'administer CiviCRM','',136,1,NULL,7),(144,1,'Communication Style Options','Communication Style Options','civicrm/admin/options/communication_style?reset=1',NULL,'administer CiviCRM','',136,1,NULL,8),(145,1,'Email Greeting Formats','Email Greeting Formats','civicrm/admin/options/email_greeting?reset=1',NULL,'administer CiviCRM','',136,1,NULL,9),(146,1,'Postal Greeting Formats','Postal Greeting Formats','civicrm/admin/options/postal_greeting?reset=1',NULL,'administer CiviCRM','',136,1,NULL,10),(147,1,'Addressee Formats','Addressee Formats','civicrm/admin/options/addressee?reset=1',NULL,'administer CiviCRM','',136,1,NULL,11),(148,1,'Localization','Localization',NULL,NULL,'administer CiviCRM','',110,1,NULL,6),(149,1,'Languages, Currency, Locations','Languages, Currency, Locations','civicrm/admin/setting/localization?reset=1',NULL,'administer CiviCRM','',148,1,NULL,1),(150,1,'Address Settings','Address Settings','civicrm/admin/setting/preferences/address?reset=1',NULL,'administer CiviCRM','',148,1,NULL,2),(151,1,'Date Formats','Date Formats','civicrm/admin/setting/date?reset=1',NULL,'administer CiviCRM','',148,1,NULL,3),(152,1,'Preferred Language Options','Preferred Language Options','civicrm/admin/options/languages?reset=1',NULL,'administer CiviCRM','',148,1,NULL,4),(153,1,'Users and Permissions','Users and Permissions',NULL,NULL,'administer CiviCRM','',110,1,NULL,7),(154,1,'Permissions (Access Control)','Permissions (Access Control)','civicrm/admin/access?reset=1',NULL,'administer CiviCRM','',153,1,NULL,1),(155,1,'Synchronize Users to Contacts','Synchronize Users to Contacts','civicrm/admin/synchUser?reset=1',NULL,'administer CiviCRM','',153,1,NULL,2),(156,1,'System Settings','System Settings',NULL,NULL,'administer CiviCRM','',110,1,NULL,8),(157,1,'Components','Enable Components','civicrm/admin/setting/component?reset=1',NULL,'administer CiviCRM','',156,1,NULL,1),(158,1,'Connections','Connections','civicrm/a/#/cxn',NULL,'administer CiviCRM','',156,1,NULL,2),(159,1,'Extensions','Manage Extensions','civicrm/admin/extensions?reset=1',NULL,'administer CiviCRM','',156,1,1,3),(160,1,'Cleanup Caches and Update Paths','Cleanup Caches and Update Paths','civicrm/admin/setting/updateConfigBackend?reset=1',NULL,'administer CiviCRM','',156,1,NULL,4),(161,1,'CMS Database Integration','CMS Integration','civicrm/admin/setting/uf?reset=1',NULL,'administer CiviCRM','',156,1,NULL,5),(162,1,'Debugging and Error Handling','Debugging and Error Handling','civicrm/admin/setting/debug?reset=1',NULL,'administer CiviCRM','',156,1,NULL,6),(163,1,'Directories','Directories','civicrm/admin/setting/path?reset=1',NULL,'administer CiviCRM','',156,1,NULL,7),(164,1,'Import/Export Mappings','Import/Export Mappings','civicrm/admin/mapping?reset=1',NULL,'administer CiviCRM','',156,1,NULL,8),(165,1,'Mapping and Geocoding','Mapping and Geocoding','civicrm/admin/setting/mapping?reset=1',NULL,'administer CiviCRM','',156,1,NULL,9),(166,1,'Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','Misc (Undelete, PDFs, Limits, Logging, Captcha, etc.)','civicrm/admin/setting/misc?reset=1',NULL,'administer CiviCRM','',156,1,NULL,10),(167,1,'Multi Site Settings','Multi Site Settings','civicrm/admin/setting/preferences/multisite?reset=1',NULL,'administer CiviCRM','',156,1,NULL,11),(168,1,'Option Groups','Option Groups','civicrm/admin/options?reset=1',NULL,'administer CiviCRM','',156,1,NULL,12),(169,1,'Outbound Email (SMTP/Sendmail)','Outbound Email','civicrm/admin/setting/smtp?reset=1',NULL,'administer CiviCRM','',156,1,NULL,13),(170,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',156,1,NULL,14),(171,1,'Resource URLs','Resource URLs','civicrm/admin/setting/url?reset=1',NULL,'administer CiviCRM','',156,1,NULL,15),(172,1,'Safe File Extensions','Safe File Extensions','civicrm/admin/options/safe_file_extension?reset=1',NULL,'administer CiviCRM','',156,1,NULL,16),(173,1,'Scheduled Jobs','Scheduled Jobs','civicrm/admin/job?reset=1',NULL,'administer CiviCRM','',156,1,NULL,17),(174,1,'SMS Providers','SMS Providers','civicrm/admin/sms/provider?reset=1',NULL,'administer CiviCRM','',156,1,NULL,18),(175,1,'CiviCampaign','CiviCampaign',NULL,NULL,'administer CiviCampaign,administer CiviCRM','AND',110,1,NULL,9),(176,1,'Survey Types','Survey Types','civicrm/admin/campaign/surveyType?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,1),(177,1,'Campaign Types','Campaign Types','civicrm/admin/options/campaign_type?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,2),(178,1,'Campaign Status','Campaign Status','civicrm/admin/options/campaign_status?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,3),(179,1,'Engagement Index','Engagement Index','civicrm/admin/options/engagement_index?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,4),(180,1,'CiviCampaign Component Settings','CiviCampaign Component Settings','civicrm/admin/setting/preferences/campaign?reset=1',NULL,'administer CiviCampaign','',175,1,NULL,5),(181,1,'CiviCase','CiviCase',NULL,NULL,'administer CiviCase',NULL,110,1,NULL,10),(182,1,'CiviCase Settings','CiviCase Settings','civicrm/admin/setting/case?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,1),(183,1,'Case Types','Case Types','civicrm/a/#/caseType',NULL,'administer CiviCase',NULL,181,1,NULL,2),(184,1,'Redaction Rules','Redaction Rules','civicrm/admin/options/redaction_rule?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,3),(185,1,'Case Statuses','Case Statuses','civicrm/admin/options/case_status?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,4),(186,1,'Encounter Medium','Encounter Medium','civicrm/admin/options/encounter_medium?reset=1',NULL,'administer CiviCase',NULL,181,1,NULL,5),(187,1,'CiviContribute','CiviContribute',NULL,NULL,'access CiviContribute,administer CiviCRM','AND',110,1,NULL,11),(188,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,6),(189,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,1,7),(190,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,8),(191,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,1,9),(192,1,'Financial Types','Financial Types','civicrm/admin/financial/financialType?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,10),(193,1,'Financial Accounts','Financial Accounts','civicrm/admin/financial/financialAccount?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,11),(194,1,'Payment Methods','Payment Instruments','civicrm/admin/options/payment_instrument?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,12),(195,1,'Accepted Credit Cards','Accepted Credit Cards','civicrm/admin/options/accept_creditcard?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,13),(196,1,'Soft Credit Types','Soft Credit Types','civicrm/admin/options/soft_credit_type?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,1,14),(197,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,15),(198,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',187,1,NULL,16),(199,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',187,1,NULL,17),(200,1,'CiviContribute Component Settings','CiviContribute Component Settings','civicrm/admin/setting/preferences/contribute?reset=1',NULL,'administer CiviCRM','',187,1,NULL,18),(201,1,'CiviEvent','CiviEvent',NULL,NULL,'access CiviEvent,administer CiviCRM','AND',110,1,NULL,12),(202,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,1),(203,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,2),(204,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,3),(205,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,4),(206,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,5),(207,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,1,6),(208,1,'Event Types','Event Types','civicrm/admin/options/event_type?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,7),(209,1,'Participant Statuses','Participant Statuses','civicrm/admin/participant_status?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,8),(210,1,'Participant Roles','Participant Roles','civicrm/admin/options/participant_role?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,9),(211,1,'Participant Listing Options','Participant Listing Options','civicrm/admin/options/participant_listing?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,10),(212,1,'Event Name Badge Layouts','Event Name Badge Layouts','civicrm/admin/badgelayout?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,11),(213,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',201,1,NULL,12),(214,1,'CiviEvent Component Settings','CiviEvent Component Settings','civicrm/admin/setting/preferences/event?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',201,1,NULL,13),(215,1,'CiviGrant','CiviGrant',NULL,NULL,'access CiviGrant,administer CiviCRM','AND',110,1,NULL,13),(216,1,'Grant Types','Grant Types','civicrm/admin/options/grant_type?reset=1',NULL,'access CiviGrant,administer CiviCRM','AND',215,1,NULL,1),(217,1,'Grant Status','Grant Status','civicrm/admin/options/grant_status?reset=1',NULL,'access CiviGrant,administer CiviCRM','AND',215,1,NULL,2),(218,1,'CiviMail','CiviMail',NULL,NULL,'access CiviMail,administer CiviCRM','AND',110,1,NULL,14),(219,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,1),(220,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',218,1,NULL,2),(221,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',218,1,NULL,3),(222,1,'Mail Accounts','Mail Accounts','civicrm/admin/mailSettings?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,4),(223,1,'Mailer Settings','Mailer Settings','civicrm/admin/mail?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,5),(224,1,'CiviMail Component Settings','CiviMail Component Settings','civicrm/admin/setting/preferences/mailing?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',218,1,NULL,6),(225,1,'CiviMember','CiviMember',NULL,NULL,'access CiviMember,administer CiviCRM','AND',110,1,NULL,15),(226,1,'Membership Types','Membership Types','civicrm/admin/member/membershipType?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,1),(227,1,'Membership Status Rules','Membership Status Rules','civicrm/admin/member/membershipStatus?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,1,2),(228,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,3),(229,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,4),(230,1,'CiviMember Component Settings','CiviMember Component Settings','civicrm/admin/setting/preferences/member?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',225,1,NULL,5),(231,1,'CiviReport','CiviReport',NULL,NULL,'access CiviReport,administer CiviCRM','AND',110,1,NULL,16),(232,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',231,1,NULL,1),(233,1,'Create New Report from Template','Create New Report from Template','civicrm/admin/report/template/list?reset=1',NULL,'administer Reports','',231,1,NULL,2),(234,1,'Manage Templates','Manage Templates','civicrm/admin/report/options/report_template?reset=1',NULL,'administer Reports','',231,1,NULL,3),(235,1,'Register Report','Register Report','civicrm/admin/report/register?reset=1',NULL,'administer Reports','',231,1,NULL,4),(236,1,'Support','Support',NULL,'crm-i fa-life-ring',NULL,'',NULL,1,NULL,110),(237,1,'Get started','Get started','https://civicrm.org/get-started?src=iam',NULL,NULL,'AND',236,1,NULL,1),(238,1,'Documentation','Documentation','https://civicrm.org/documentation?src=iam',NULL,NULL,'AND',236,1,NULL,2),(239,1,'Ask a question','Ask a question','https://civicrm.org/ask-a-question?src=iam',NULL,NULL,'AND',236,1,NULL,3),(240,1,'Get expert help','Get expert help','https://civicrm.org/experts?src=iam',NULL,NULL,'AND',236,1,NULL,4),(241,1,'About CiviCRM','About CiviCRM','https://civicrm.org/about?src=iam',NULL,NULL,'AND',236,1,1,5),(242,1,'Register your site','Register your site','https://civicrm.org/register-your-site?src=iam&sid={sid}',NULL,NULL,'AND',236,1,NULL,6),(243,1,'Join CiviCRM','Join CiviCRM','https://civicrm.org/become-a-member?src=iam&sid={sid}',NULL,NULL,'AND',236,1,NULL,7),(244,1,'Developer','Developer',NULL,NULL,'administer CiviCRM','',236,1,1,8),(245,1,'Api Explorer v3','API Explorer','civicrm/api',NULL,'administer CiviCRM','',244,1,NULL,1),(246,1,'Api Explorer v4','Api Explorer v4','civicrm/api4#/explorer',NULL,'administer CiviCRM','',244,1,NULL,2),(247,1,'Developer Docs','Developer Docs','https://civicrm.org/developer-documentation?src=iam',NULL,'administer CiviCRM','',244,1,NULL,3),(248,1,'Reports','Reports',NULL,'crm-i fa-bar-chart','access CiviReport','',NULL,1,NULL,95),(249,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'administer CiviCRM','',248,1,0,1),(250,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',248,1,0,2),(251,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',248,1,0,3),(252,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',248,1,0,4),(253,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',248,1,0,5),(254,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',248,1,0,6),(255,1,'Campaign Reports','Campaign Reports','civicrm/report/list?compid=9&reset=1',NULL,'interview campaign contacts,release campaign contacts,reserve campaign contacts,manage campaign,administer CiviCampaign,gotv campaign contacts','OR',248,1,0,7),(256,1,'Case Reports','Case Reports','civicrm/report/list?compid=7&reset=1',NULL,'access my cases and activities,access all cases and activities,administer CiviCase','OR',248,1,0,8),(257,1,'Grant Reports','Grant Reports','civicrm/report/list?compid=5&reset=1',NULL,'access CiviGrant','',248,1,0,9),(258,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',248,1,1,10),(259,1,'My Reports','My Reports','civicrm/report/list?myreports=1&reset=1',NULL,'access CiviReport','',248,1,1,11),(260,1,'New Student','New Student','civicrm/contact/add?ct=Individual&cst=Student&reset=1',NULL,'add contacts','',16,1,NULL,1),(261,1,'New Parent','New Parent','civicrm/contact/add?ct=Individual&cst=Parent&reset=1',NULL,'add contacts','',16,1,NULL,2),(262,1,'New Staff','New Staff','civicrm/contact/add?ct=Individual&cst=Staff&reset=1',NULL,'add contacts','',16,1,NULL,3),(263,1,'New Team','New Team','civicrm/contact/add?ct=Organization&cst=Team&reset=1',NULL,'add contacts','',18,1,NULL,1),(264,1,'New Sponsor','New Sponsor','civicrm/contact/add?ct=Organization&cst=Sponsor&reset=1',NULL,'add contacts','',18,1,NULL,2);
 /*!40000 ALTER TABLE `civicrm_navigation` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -986,7 +986,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_note` WRITE;
 /*!40000 ALTER TABLE `civicrm_note` DISABLE KEYS */;
-INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `modified_date`, `subject`, `privacy`) VALUES (1,'civicrm_contact',172,'Connect for presentation',1,'2018-09-11',NULL,'0'),(2,'civicrm_contact',106,'Send reminder for annual dinner',1,'2019-04-18',NULL,'0'),(3,'civicrm_contact',4,'Send reminder for annual dinner',1,'2018-10-16',NULL,'0'),(4,'civicrm_contact',160,'Organize the Terry Fox run',1,'2018-10-10',NULL,'0'),(5,'civicrm_contact',78,'Get the registration done for NGO status',1,'2018-09-25',NULL,'0'),(6,'civicrm_contact',65,'Connect for presentation',1,'2019-03-05',NULL,'0'),(7,'civicrm_contact',157,'Invite members for the Steve Prefontaine 10k dream run',1,'2019-01-01',NULL,'0'),(8,'civicrm_contact',183,'Organize the Terry Fox run',1,'2019-07-13',NULL,'0'),(9,'civicrm_contact',80,'Connect for presentation',1,'2018-09-06',NULL,'0'),(10,'civicrm_contact',143,'Arrange for cricket match with Sunil Gavaskar',1,'2018-11-17',NULL,'0'),(11,'civicrm_contact',42,'Arrange collection of funds from members',1,'2019-03-13',NULL,'0'),(12,'civicrm_contact',2,'Send reminder for annual dinner',1,'2019-03-26',NULL,'0'),(13,'civicrm_contact',74,'Send newsletter for April 2005',1,'2018-10-17',NULL,'0'),(14,'civicrm_contact',78,'Reminder screening of \"Black\" on next Friday',1,'2019-07-10',NULL,'0'),(15,'civicrm_contact',21,'Connect for presentation',1,'2019-02-17',NULL,'0'),(16,'civicrm_contact',53,'Contact the Commissioner of Charities',1,'2019-01-22',NULL,'0'),(17,'civicrm_contact',119,'Send reminder for annual dinner',1,'2018-12-29',NULL,'0'),(18,'civicrm_contact',102,'Contact the Commissioner of Charities',1,'2018-11-19',NULL,'0'),(19,'civicrm_contact',15,'Contact the Commissioner of Charities',1,'2019-02-27',NULL,'0'),(20,'civicrm_contact',180,'Organize the Terry Fox run',1,'2019-01-05',NULL,'0');
+INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `modified_date`, `subject`, `privacy`) VALUES (1,'civicrm_contact',170,'Arrange collection of funds from members',1,'2018-12-26',NULL,'0'),(2,'civicrm_contact',104,'Arrange for cricket match with Sunil Gavaskar',1,'2019-06-23',NULL,'0'),(3,'civicrm_contact',91,'Arrange collection of funds from members',1,'2018-10-08',NULL,'0'),(4,'civicrm_contact',198,'Organize the Terry Fox run',1,'2018-12-15',NULL,'0'),(5,'civicrm_contact',34,'Connect for presentation',1,'2018-09-25',NULL,'0'),(6,'civicrm_contact',105,'Reminder screening of \"Black\" on next Friday',1,'2019-03-16',NULL,'0'),(7,'civicrm_contact',197,'Send reminder for annual dinner',1,'2019-01-10',NULL,'0'),(8,'civicrm_contact',132,'Contact the Commissioner of Charities',1,'2019-05-07',NULL,'0'),(9,'civicrm_contact',97,'Reminder screening of \"Black\" on next Friday',1,'2019-08-03',NULL,'0'),(10,'civicrm_contact',122,'Arrange collection of funds from members',1,'2018-09-27',NULL,'0'),(11,'civicrm_contact',120,'Get the registration done for NGO status',1,'2019-08-06',NULL,'0'),(12,'civicrm_contact',62,'Get the registration done for NGO status',1,'2018-10-16',NULL,'0'),(13,'civicrm_contact',6,'Send newsletter for April 2005',1,'2018-11-17',NULL,'0'),(14,'civicrm_contact',90,'Contact the Commissioner of Charities',1,'2019-06-25',NULL,'0'),(15,'civicrm_contact',132,'Get the registration done for NGO status',1,'2018-09-30',NULL,'0'),(16,'civicrm_contact',113,'Send reminder for annual dinner',1,'2019-02-07',NULL,'0'),(17,'civicrm_contact',167,'Reminder screening of \"Black\" on next Friday',1,'2019-02-12',NULL,'0'),(18,'civicrm_contact',104,'Arrange collection of funds from members',1,'2019-08-10',NULL,'0'),(19,'civicrm_contact',143,'Reminder screening of \"Black\" on next Friday',1,'2018-11-29',NULL,'0'),(20,'civicrm_contact',38,'Arrange collection of funds from members',1,'2019-03-15',NULL,'0');
 /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1025,7 +1025,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_participant` WRITE;
 /*!40000 ALTER TABLE `civicrm_participant` DISABLE KEYS */;
-INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`) VALUES (1,150,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(2,156,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(3,34,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(4,108,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(5,20,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(6,42,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(7,8,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(8,172,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(9,141,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(10,7,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(11,119,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(12,107,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(13,41,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(14,10,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(15,48,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(16,99,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(17,191,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(18,184,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(19,128,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(20,32,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(21,183,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(22,79,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(23,23,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(24,2,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(25,111,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(26,31,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(27,133,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(28,4,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(29,188,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(30,26,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(31,160,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(32,63,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(33,50,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(34,13,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(35,181,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(36,82,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(37,18,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(38,137,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(39,182,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(40,173,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(41,30,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(42,196,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(43,185,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(44,199,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(45,62,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(46,132,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(47,90,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(48,186,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(49,163,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(50,167,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL);
+INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`) VALUES (1,186,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(2,55,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(3,99,3,3,'3','2008-05-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(4,143,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(5,170,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(6,187,3,2,'2','2008-03-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(7,37,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(8,127,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(9,83,3,1,'1','2008-02-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(10,124,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(11,108,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(12,145,3,4,'4','2009-03-06 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(13,178,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(14,189,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(15,105,3,4,'1','2008-07-04 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(16,93,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(17,92,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(18,119,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(19,30,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(20,91,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(21,49,3,1,'4','2008-03-25 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(22,153,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(23,114,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(24,183,3,3,'1','2008-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(25,5,3,2,'2','2008-04-05 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(26,41,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(27,159,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(28,193,3,3,'3','2009-12-12 00:00:00','Direct Transfer','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(29,120,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(30,179,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(31,86,3,2,'2','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(32,1,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(33,18,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(34,75,3,1,'1','2009-12-15 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(35,58,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(36,57,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(37,72,3,4,'4','2009-03-06 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(38,21,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(39,163,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(40,184,3,4,'1','2009-12-14 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(41,34,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(42,190,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(43,69,3,3,'1','2009-03-05 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(44,45,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(45,139,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(46,8,3,1,'4','2009-12-13 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(47,67,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(48,135,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(49,157,3,3,'1','2009-03-11 00:00:00','Credit Card','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(50,89,3,2,'2','2009-04-05 00:00:00','Check','Tiny-tots (ages 5-8)',0,0,800.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_participant` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1035,7 +1035,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_participant_payment` WRITE;
 /*!40000 ALTER TABLE `civicrm_participant_payment` DISABLE KEYS */;
-INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES (1,24,45),(2,28,46),(3,10,47),(4,7,48),(5,14,49),(6,34,50),(7,37,51),(8,5,52),(9,23,53),(10,30,54),(11,41,55),(12,26,56),(13,20,57),(14,3,58),(15,13,59),(16,6,60),(17,15,61),(18,33,62),(19,45,63),(20,32,64),(21,22,65),(22,36,66),(23,47,67),(24,16,68),(25,12,69),(26,4,70),(27,25,71),(28,11,72),(29,19,73),(30,46,74),(31,27,75),(32,38,76),(33,9,77),(34,1,78),(35,2,79),(36,31,80),(37,49,81),(38,50,82),(39,8,83),(40,40,84),(41,35,85),(42,39,86),(43,21,87),(44,18,88),(45,43,89),(46,48,90),(47,29,91),(48,17,92),(49,42,93),(50,44,94);
+INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES (1,32,45),(2,25,46),(3,46,47),(4,33,48),(5,38,49),(6,19,50),(7,41,51),(8,7,52),(9,26,53),(10,44,54),(11,21,55),(12,2,56),(13,36,57),(14,35,58),(15,47,59),(16,43,60),(17,37,61),(18,34,62),(19,9,63),(20,31,64),(21,50,65),(22,20,66),(23,17,67),(24,16,68),(25,3,69),(26,15,70),(27,11,71),(28,23,72),(29,18,73),(30,29,74),(31,10,75),(32,8,76),(33,48,77),(34,45,78),(35,4,79),(36,12,80),(37,22,81),(38,49,82),(39,27,83),(40,39,84),(41,5,85),(42,13,86),(43,30,87),(44,24,88),(45,40,89),(46,1,90),(47,6,91),(48,14,92),(49,42,93),(50,28,94);
 /*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1083,7 +1083,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_pcp` WRITE;
 /*!40000 ALTER TABLE `civicrm_pcp` DISABLE KEYS */;
-INSERT INTO `civicrm_pcp` (`id`, `contact_id`, `status_id`, `title`, `intro_text`, `page_text`, `donate_link_text`, `page_id`, `page_type`, `pcp_block_id`, `is_thermometer`, `is_honor_roll`, `goal_amount`, `currency`, `is_active`, `is_notify`) VALUES (1,57,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1);
+INSERT INTO `civicrm_pcp` (`id`, `contact_id`, `status_id`, `title`, `intro_text`, `page_text`, `donate_link_text`, `page_id`, `page_type`, `pcp_block_id`, `is_thermometer`, `is_honor_roll`, `goal_amount`, `currency`, `is_active`, `is_notify`) VALUES (1,187,2,'My Personal Civi Fundraiser','I\'m on a mission to get all my friends and family to help support my favorite open-source civic sector CRM.','<p>Friends and family - please help build much needed infrastructure for the civic sector by supporting my personal campaign!</p>\r\n<p><a href=\"https://civicrm.org\">You can learn more about CiviCRM here</a>.</p>\r\n<p>Then click the <strong>Contribute Now</strong> button to go to our easy-to-use online contribution form.</p>','Contribute Now',1,'contribute',1,1,1,5000.00,'USD',1,1);
 /*!40000 ALTER TABLE `civicrm_pcp` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1112,7 +1112,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_phone` WRITE;
 /*!40000 ALTER TABLE `civicrm_phone` DISABLE KEYS */;
-INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES (1,45,1,1,0,NULL,'(416) 458-4524',NULL,'4164584524',1),(2,45,1,0,0,NULL,'(295) 652-8430',NULL,'2956528430',2),(3,31,1,1,0,NULL,'(419) 204-4699',NULL,'4192044699',1),(4,193,1,1,0,NULL,'674-5460',NULL,'6745460',2),(5,33,1,1,0,NULL,'(373) 521-1062',NULL,'3735211062',2),(6,33,1,0,0,NULL,'848-2125',NULL,'8482125',2),(7,128,1,1,0,NULL,'542-6257',NULL,'5426257',1),(8,66,1,1,0,NULL,'897-3336',NULL,'8973336',2),(9,66,1,0,0,NULL,'438-3118',NULL,'4383118',2),(10,5,1,1,0,NULL,'733-9004',NULL,'7339004',2),(11,170,1,1,0,NULL,'318-5333',NULL,'3185333',1),(12,112,1,1,0,NULL,'264-8273',NULL,'2648273',2),(13,129,1,1,0,NULL,'744-9423',NULL,'7449423',1),(14,129,1,0,0,NULL,'(770) 663-2139',NULL,'7706632139',2),(15,18,1,1,0,NULL,'804-6992',NULL,'8046992',1),(16,18,1,0,0,NULL,'783-4099',NULL,'7834099',2),(17,191,1,1,0,NULL,'(356) 399-4255',NULL,'3563994255',1),(18,60,1,1,0,NULL,'(739) 519-4437',NULL,'7395194437',1),(19,81,1,1,0,NULL,'(648) 556-6905',NULL,'6485566905',2),(20,85,1,1,0,NULL,'(734) 406-5485',NULL,'7344065485',1),(21,177,1,1,0,NULL,'(341) 331-3763',NULL,'3413313763',1),(22,4,1,1,0,NULL,'733-3487',NULL,'7333487',1),(23,149,1,1,0,NULL,'(895) 661-1279',NULL,'8956611279',2),(24,149,1,0,0,NULL,'(791) 316-7116',NULL,'7913167116',1),(25,24,1,1,0,NULL,'(727) 354-3154',NULL,'7273543154',1),(26,172,1,1,0,NULL,'(599) 328-5682',NULL,'5993285682',2),(27,154,1,1,0,NULL,'756-3002',NULL,'7563002',1),(28,99,1,1,0,NULL,'(750) 521-7032',NULL,'7505217032',1),(29,99,1,0,0,NULL,'640-4437',NULL,'6404437',2),(30,94,1,1,0,NULL,'(420) 693-9626',NULL,'4206939626',1),(31,94,1,0,0,NULL,'(645) 882-6226',NULL,'6458826226',1),(32,58,1,1,0,NULL,'(450) 623-9253',NULL,'4506239253',1),(33,51,1,1,0,NULL,'395-9335',NULL,'3959335',2),(34,174,1,1,0,NULL,'(688) 686-7390',NULL,'6886867390',2),(35,42,1,1,0,NULL,'(548) 298-4778',NULL,'5482984778',1),(36,42,1,0,0,NULL,'702-1306',NULL,'7021306',2),(37,124,1,1,0,NULL,'(541) 334-2923',NULL,'5413342923',1),(38,136,1,1,0,NULL,'617-9402',NULL,'6179402',1),(39,75,1,1,0,NULL,'(401) 696-6635',NULL,'4016966635',2),(40,75,1,0,0,NULL,'(825) 544-4788',NULL,'8255444788',2),(41,118,1,1,0,NULL,'489-4575',NULL,'4894575',2),(42,40,1,1,0,NULL,'794-3539',NULL,'7943539',2),(43,40,1,0,0,NULL,'671-8696',NULL,'6718696',2),(44,38,1,1,0,NULL,'(861) 221-4170',NULL,'8612214170',2),(45,38,1,0,0,NULL,'577-6474',NULL,'5776474',2),(46,59,1,1,0,NULL,'(809) 676-6354',NULL,'8096766354',1),(47,59,1,0,0,NULL,'(427) 841-5956',NULL,'4278415956',2),(48,50,1,1,0,NULL,'(371) 476-1771',NULL,'3714761771',1),(49,22,1,1,0,NULL,'(273) 449-6092',NULL,'2734496092',1),(50,22,1,0,0,NULL,'387-8856',NULL,'3878856',1),(51,192,1,1,0,NULL,'812-4900',NULL,'8124900',2),(52,119,1,1,0,NULL,'388-1362',NULL,'3881362',1),(53,133,1,1,0,NULL,'889-1704',NULL,'8891704',2),(54,95,1,1,0,NULL,'225-7130',NULL,'2257130',2),(55,95,1,0,0,NULL,'(515) 620-2366',NULL,'5156202366',1),(56,164,1,1,0,NULL,'(210) 336-6282',NULL,'2103366282',2),(57,164,1,0,0,NULL,'(292) 828-6415',NULL,'2928286415',1),(58,158,1,1,0,NULL,'772-7499',NULL,'7727499',2),(59,165,1,1,0,NULL,'841-4051',NULL,'8414051',1),(60,67,1,1,0,NULL,'(675) 234-2284',NULL,'6752342284',1),(61,67,1,0,0,NULL,'849-7757',NULL,'8497757',2),(62,89,1,1,0,NULL,'(497) 448-8112',NULL,'4974488112',1),(63,185,1,1,0,NULL,'(707) 857-2635',NULL,'7078572635',2),(64,185,1,0,0,NULL,'(523) 472-6136',NULL,'5234726136',1),(65,102,1,1,0,NULL,'(817) 466-3066',NULL,'8174663066',2),(66,102,1,0,0,NULL,'(777) 612-1461',NULL,'7776121461',2),(67,68,1,1,0,NULL,'392-4040',NULL,'3924040',2),(68,134,1,1,0,NULL,'(743) 645-8541',NULL,'7436458541',1),(69,134,1,0,0,NULL,'663-4268',NULL,'6634268',1),(70,141,1,1,0,NULL,'(553) 379-3520',NULL,'5533793520',1),(71,141,1,0,0,NULL,'(657) 768-9560',NULL,'6577689560',1),(72,96,1,1,0,NULL,'(436) 219-5243',NULL,'4362195243',2),(73,73,1,1,0,NULL,'712-4363',NULL,'7124363',1),(74,73,1,0,0,NULL,'(886) 709-8183',NULL,'8867098183',1),(75,122,1,1,0,NULL,'567-4676',NULL,'5674676',1),(76,175,1,1,0,NULL,'(587) 398-7347',NULL,'5873987347',1),(77,86,1,1,0,NULL,'272-2002',NULL,'2722002',1),(78,86,1,0,0,NULL,'(886) 459-1626',NULL,'8864591626',1),(79,183,1,1,0,NULL,'627-4706',NULL,'6274706',2),(80,183,1,0,0,NULL,'461-4553',NULL,'4614553',2),(81,198,1,1,0,NULL,'356-2173',NULL,'3562173',2),(82,105,1,1,0,NULL,'357-3877',NULL,'3573877',1),(83,105,1,0,0,NULL,'434-9349',NULL,'4349349',2),(84,181,1,1,0,NULL,'(483) 888-8909',NULL,'4838888909',1),(85,181,1,0,0,NULL,'783-6583',NULL,'7836583',1),(86,64,1,1,0,NULL,'618-8111',NULL,'6188111',2),(87,35,1,1,0,NULL,'(651) 370-7408',NULL,'6513707408',2),(88,35,1,0,0,NULL,'662-7175',NULL,'6627175',2),(89,127,1,1,0,NULL,'737-7278',NULL,'7377278',2),(90,127,1,0,0,NULL,'823-9444',NULL,'8239444',2),(91,70,1,1,0,NULL,'284-6984',NULL,'2846984',2),(92,47,1,1,0,NULL,'(372) 888-2702',NULL,'3728882702',1),(93,47,1,0,0,NULL,'(337) 536-7412',NULL,'3375367412',1),(94,153,1,1,0,NULL,'710-3803',NULL,'7103803',2),(95,144,1,1,0,NULL,'(867) 541-9144',NULL,'8675419144',2),(96,28,1,1,0,NULL,'(836) 356-5887',NULL,'8363565887',1),(97,28,1,0,0,NULL,'(277) 487-6392',NULL,'2774876392',2),(98,146,1,1,0,NULL,'(475) 839-4900',NULL,'4758394900',2),(99,146,1,0,0,NULL,'784-9517',NULL,'7849517',2),(100,173,1,1,0,NULL,'(830) 823-1988',NULL,'8308231988',1),(101,173,1,0,0,NULL,'616-4995',NULL,'6164995',1),(102,13,1,1,0,NULL,'778-6169',NULL,'7786169',2),(103,13,1,0,0,NULL,'(825) 680-7843',NULL,'8256807843',2),(104,176,1,1,0,NULL,'534-3600',NULL,'5343600',1),(105,176,1,0,0,NULL,'(836) 519-3018',NULL,'8365193018',2),(106,147,1,1,0,NULL,'783-2227',NULL,'7832227',1),(107,147,1,0,0,NULL,'(894) 619-1351',NULL,'8946191351',1),(108,178,1,1,0,NULL,'(838) 548-2582',NULL,'8385482582',1),(109,178,1,0,0,NULL,'(327) 754-2942',NULL,'3277542942',1),(110,135,1,1,0,NULL,'(573) 233-6973',NULL,'5732336973',2),(111,104,1,1,0,NULL,'(288) 768-7518',NULL,'2887687518',1),(112,104,1,0,0,NULL,'557-7897',NULL,'5577897',2),(113,8,1,1,0,NULL,'381-2209',NULL,'3812209',2),(114,8,1,0,0,NULL,'471-7776',NULL,'4717776',2),(115,168,1,1,0,NULL,'730-6305',NULL,'7306305',1),(116,168,1,0,0,NULL,'346-9833',NULL,'3469833',2),(117,182,1,1,0,NULL,'407-2291',NULL,'4072291',1),(118,182,1,0,0,NULL,'591-4439',NULL,'5914439',2),(119,56,1,1,0,NULL,'(404) 254-8579',NULL,'4042548579',1),(120,56,1,0,0,NULL,'(223) 553-7223',NULL,'2235537223',1),(121,88,1,1,0,NULL,'(830) 535-1051',NULL,'8305351051',1),(122,88,1,0,0,NULL,'815-3141',NULL,'8153141',1),(123,197,1,1,0,NULL,'676-8507',NULL,'6768507',2),(124,132,1,1,0,NULL,'417-4534',NULL,'4174534',2),(125,126,1,1,0,NULL,'(859) 486-2188',NULL,'8594862188',1),(126,55,1,1,0,NULL,'(324) 555-8041',NULL,'3245558041',2),(127,161,1,1,0,NULL,'816-2277',NULL,'8162277',1),(128,84,1,1,0,NULL,'(735) 582-8298',NULL,'7355828298',1),(129,2,1,1,0,NULL,'892-7532',NULL,'8927532',1),(130,29,1,1,0,NULL,'775-7191',NULL,'7757191',1),(131,34,1,1,0,NULL,'631-5680',NULL,'6315680',1),(132,34,1,0,0,NULL,'809-9396',NULL,'8099396',2),(133,44,1,1,0,NULL,'(646) 462-5870',NULL,'6464625870',1),(134,163,1,1,0,NULL,'312-8928',NULL,'3128928',2),(135,163,1,0,0,NULL,'600-1011',NULL,'6001011',2),(136,76,1,1,0,NULL,'(805) 745-9664',NULL,'8057459664',1),(137,39,1,1,0,NULL,'(255) 372-5131',NULL,'2553725131',2),(138,166,1,1,0,NULL,'658-9730',NULL,'6589730',1),(139,166,1,0,0,NULL,'671-9118',NULL,'6719118',1),(140,159,1,1,0,NULL,'(866) 764-5582',NULL,'8667645582',2),(141,115,1,1,0,NULL,'851-8085',NULL,'8518085',1),(142,115,1,0,0,NULL,'(789) 257-4464',NULL,'7892574464',2),(143,100,1,1,0,NULL,'(577) 395-5328',NULL,'5773955328',1),(144,160,1,1,0,NULL,'683-2437',NULL,'6832437',1),(145,120,1,1,0,NULL,'253-4199',NULL,'2534199',2),(146,120,1,0,0,NULL,'(897) 303-4275',NULL,'8973034275',2),(147,186,1,1,0,NULL,'(454) 355-9889',NULL,'4543559889',1),(148,186,1,0,0,NULL,'621-5335',NULL,'6215335',2),(149,49,1,1,0,NULL,'(323) 663-9672',NULL,'3236639672',1),(150,49,1,0,0,NULL,'410-3282',NULL,'4103282',2),(151,131,1,1,0,NULL,'446-8005',NULL,'4468005',2),(152,131,1,0,0,NULL,'534-4791',NULL,'5344791',2),(153,21,1,1,0,NULL,'(434) 421-8386',NULL,'4344218386',1),(154,21,1,0,0,NULL,'313-6026',NULL,'3136026',2),(155,125,1,1,0,NULL,'784-6763',NULL,'7846763',2),(156,125,1,0,0,NULL,'(707) 700-3027',NULL,'7077003027',2),(157,171,1,1,0,NULL,'(728) 843-9634',NULL,'7288439634',2),(158,111,1,1,0,NULL,'229-6648',NULL,'2296648',2),(159,6,1,1,0,NULL,'497-5710',NULL,'4975710',1),(160,6,1,0,0,NULL,'(360) 226-2889',NULL,'3602262889',2),(161,11,1,1,0,NULL,'460-9438',NULL,'4609438',2),(162,11,1,0,0,NULL,'519-4639',NULL,'5194639',2),(163,151,1,1,0,NULL,'(657) 472-4231',NULL,'6574724231',2),(164,101,1,1,0,NULL,'323-9902',NULL,'3239902',2),(165,101,1,0,0,NULL,'284-7875',NULL,'2847875',2),(166,180,1,1,0,NULL,'(391) 872-6177',NULL,'3918726177',2),(167,180,1,0,0,NULL,'441-3077',NULL,'4413077',2),(168,32,1,1,0,NULL,'(644) 656-3124',NULL,'6446563124',1),(169,32,1,0,0,NULL,'(642) 409-3746',NULL,'6424093746',2),(170,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),(171,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),(172,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1);
+INSERT INTO `civicrm_phone` (`id`, `contact_id`, `location_type_id`, `is_primary`, `is_billing`, `mobile_provider_id`, `phone`, `phone_ext`, `phone_numeric`, `phone_type_id`) VALUES (1,174,1,1,0,NULL,'751-5701',NULL,'7515701',2),(2,174,1,0,0,NULL,'812-3004',NULL,'8123004',1),(3,87,1,1,0,NULL,'654-8297',NULL,'6548297',1),(4,87,1,0,0,NULL,'656-6175',NULL,'6566175',2),(5,129,1,1,0,NULL,'(272) 799-5063',NULL,'2727995063',1),(6,112,1,1,0,NULL,'(882) 507-5823',NULL,'8825075823',2),(7,197,1,1,0,NULL,'394-7024',NULL,'3947024',2),(8,197,1,0,0,NULL,'(469) 898-4577',NULL,'4698984577',1),(9,116,1,1,0,NULL,'664-9419',NULL,'6649419',1),(10,67,1,1,0,NULL,'(399) 547-4076',NULL,'3995474076',2),(11,67,1,0,0,NULL,'(431) 354-6503',NULL,'4313546503',1),(12,127,1,1,0,NULL,'(471) 634-2023',NULL,'4716342023',1),(13,181,1,1,0,NULL,'(617) 340-6794',NULL,'6173406794',1),(14,76,1,1,0,NULL,'(384) 572-2086',NULL,'3845722086',2),(15,76,1,0,0,NULL,'627-4118',NULL,'6274118',2),(16,115,1,1,0,NULL,'(802) 467-3957',NULL,'8024673957',2),(17,30,1,1,0,NULL,'(830) 842-7777',NULL,'8308427777',1),(18,153,1,1,0,NULL,'292-6957',NULL,'2926957',1),(19,79,1,1,0,NULL,'(571) 395-5731',NULL,'5713955731',2),(20,113,1,1,0,NULL,'(717) 716-4012',NULL,'7177164012',2),(21,113,1,0,0,NULL,'771-6923',NULL,'7716923',2),(22,64,1,1,0,NULL,'(792) 303-4561',NULL,'7923034561',2),(23,64,1,0,0,NULL,'(315) 739-7993',NULL,'3157397993',2),(24,6,1,1,0,NULL,'684-6198',NULL,'6846198',1),(25,63,1,1,0,NULL,'(883) 537-1889',NULL,'8835371889',1),(26,63,1,0,0,NULL,'270-3051',NULL,'2703051',2),(27,201,1,1,0,NULL,'(669) 532-8422',NULL,'6695328422',1),(28,201,1,0,0,NULL,'(848) 488-5210',NULL,'8484885210',1),(29,136,1,1,0,NULL,'(652) 300-9685',NULL,'6523009685',2),(30,136,1,0,0,NULL,'(800) 331-6187',NULL,'8003316187',1),(31,158,1,1,0,NULL,'684-4306',NULL,'6844306',1),(32,158,1,0,0,NULL,'359-1468',NULL,'3591468',1),(33,70,1,1,0,NULL,'(359) 689-7496',NULL,'3596897496',1),(34,41,1,1,0,NULL,'(459) 811-4100',NULL,'4598114100',2),(35,41,1,0,0,NULL,'(693) 239-2206',NULL,'6932392206',2),(36,147,1,1,0,NULL,'292-2079',NULL,'2922079',2),(37,147,1,0,0,NULL,'(635) 437-8156',NULL,'6354378156',2),(38,151,1,1,0,NULL,'521-4687',NULL,'5214687',1),(39,151,1,0,0,NULL,'(456) 504-9821',NULL,'4565049821',2),(40,114,1,1,0,NULL,'417-4424',NULL,'4174424',2),(41,114,1,0,0,NULL,'529-9213',NULL,'5299213',1),(42,34,1,1,0,NULL,'324-7341',NULL,'3247341',1),(43,34,1,0,0,NULL,'887-9290',NULL,'8879290',2),(44,16,1,1,0,NULL,'426-3665',NULL,'4263665',1),(45,16,1,0,0,NULL,'(423) 469-1518',NULL,'4234691518',2),(46,86,1,1,0,NULL,'671-2758',NULL,'6712758',1),(47,86,1,0,0,NULL,'(255) 369-8520',NULL,'2553698520',2),(48,89,1,1,0,NULL,'(388) 635-6125',NULL,'3886356125',1),(49,92,1,1,0,NULL,'(611) 685-1812',NULL,'6116851812',1),(50,92,1,0,0,NULL,'(407) 551-1355',NULL,'4075511355',1),(51,36,1,1,0,NULL,'(634) 547-6996',NULL,'6345476996',2),(52,2,1,1,0,NULL,'791-8706',NULL,'7918706',2),(53,2,1,0,0,NULL,'(807) 803-5671',NULL,'8078035671',1),(54,121,1,1,0,NULL,'474-8398',NULL,'4748398',1),(55,121,1,0,0,NULL,'(417) 791-3919',NULL,'4177913919',1),(56,135,1,1,0,NULL,'(713) 339-5477',NULL,'7133395477',1),(57,104,1,1,0,NULL,'(811) 229-4511',NULL,'8112294511',1),(58,104,1,0,0,NULL,'(826) 480-4067',NULL,'8264804067',2),(59,45,1,1,0,NULL,'706-6605',NULL,'7066605',2),(60,45,1,0,0,NULL,'409-3524',NULL,'4093524',2),(61,128,1,1,0,NULL,'(542) 325-8537',NULL,'5423258537',2),(62,77,1,1,0,NULL,'(803) 724-5796',NULL,'8037245796',1),(63,77,1,0,0,NULL,'(899) 536-3957',NULL,'8995363957',1),(64,103,1,1,0,NULL,'244-4375',NULL,'2444375',2),(65,131,1,1,0,NULL,'465-6815',NULL,'4656815',1),(66,111,1,1,0,NULL,'(593) 609-1541',NULL,'5936091541',1),(67,111,1,0,0,NULL,'589-3012',NULL,'5893012',1),(68,148,1,1,0,NULL,'827-7443',NULL,'8277443',1),(69,81,1,1,0,NULL,'(237) 586-1255',NULL,'2375861255',1),(70,81,1,0,0,NULL,'(806) 897-8332',NULL,'8068978332',1),(71,119,1,1,0,NULL,'(691) 320-2229',NULL,'6913202229',1),(72,119,1,0,0,NULL,'(566) 552-3386',NULL,'5665523386',2),(73,139,1,1,0,NULL,'(323) 710-2708',NULL,'3237102708',1),(74,139,1,0,0,NULL,'363-4443',NULL,'3634443',2),(75,159,1,1,0,NULL,'345-3082',NULL,'3453082',1),(76,159,1,0,0,NULL,'295-7784',NULL,'2957784',1),(77,140,1,1,0,NULL,'(859) 642-3820',NULL,'8596423820',2),(78,80,1,1,0,NULL,'(694) 544-3870',NULL,'6945443870',1),(79,80,1,0,0,NULL,'314-5921',NULL,'3145921',1),(80,122,1,1,0,NULL,'716-5709',NULL,'7165709',2),(81,149,1,1,0,NULL,'(465) 303-9535',NULL,'4653039535',1),(82,149,1,0,0,NULL,'818-8686',NULL,'8188686',1),(83,179,1,1,0,NULL,'395-5509',NULL,'3955509',2),(84,37,1,1,0,NULL,'766-4555',NULL,'7664555',2),(85,99,1,1,0,NULL,'223-5013',NULL,'2235013',1),(86,150,1,1,0,NULL,'509-6841',NULL,'5096841',2),(87,150,1,0,0,NULL,'453-5645',NULL,'4535645',2),(88,146,1,1,0,NULL,'475-1876',NULL,'4751876',2),(89,72,1,1,0,NULL,'(530) 230-3336',NULL,'5302303336',1),(90,69,1,1,0,NULL,'204-3297',NULL,'2043297',1),(91,69,1,0,0,NULL,'335-1525',NULL,'3351525',1),(92,82,1,1,0,NULL,'(405) 806-5346',NULL,'4058065346',2),(93,82,1,0,0,NULL,'(253) 228-4867',NULL,'2532284867',2),(94,5,1,1,0,NULL,'(857) 267-3958',NULL,'8572673958',2),(95,109,1,1,0,NULL,'495-9011',NULL,'4959011',2),(96,109,1,0,0,NULL,'(761) 670-1828',NULL,'7616701828',1),(97,59,1,1,0,NULL,'(407) 673-4489',NULL,'4076734489',1),(98,48,1,1,0,NULL,'(860) 705-5236',NULL,'8607055236',1),(99,124,1,1,0,NULL,'(776) 675-7081',NULL,'7766757081',2),(100,124,1,0,0,NULL,'301-6500',NULL,'3016500',2),(101,170,1,1,0,NULL,'(440) 492-1480',NULL,'4404921480',2),(102,25,1,1,0,NULL,'605-9665',NULL,'6059665',1),(103,145,1,1,0,NULL,'379-3246',NULL,'3793246',2),(104,145,1,0,0,NULL,'693-8940',NULL,'6938940',1),(105,12,1,1,0,NULL,'(867) 709-1919',NULL,'8677091919',2),(106,12,1,0,0,NULL,'(402) 834-9553',NULL,'4028349553',2),(107,43,1,1,0,NULL,'674-2476',NULL,'6742476',2),(108,43,1,0,0,NULL,'583-5894',NULL,'5835894',1),(109,91,1,1,0,NULL,'299-7241',NULL,'2997241',2),(110,91,1,0,0,NULL,'631-5850',NULL,'6315850',2),(111,57,1,1,0,NULL,'285-1495',NULL,'2851495',2),(112,185,1,1,0,NULL,'553-2519',NULL,'5532519',1),(113,185,1,0,0,NULL,'(493) 754-3887',NULL,'4937543887',1),(114,169,1,1,0,NULL,'(528) 839-5815',NULL,'5288395815',2),(115,194,1,1,0,NULL,'(781) 316-9375',NULL,'7813169375',1),(116,7,1,1,0,NULL,'(867) 809-5412',NULL,'8678095412',1),(117,7,1,0,0,NULL,'(344) 746-5820',NULL,'3447465820',2),(118,68,1,1,0,NULL,'322-9331',NULL,'3229331',2),(119,68,1,0,0,NULL,'543-7145',NULL,'5437145',2),(120,188,1,1,0,NULL,'(464) 297-8181',NULL,'4642978181',1),(121,188,1,0,0,NULL,'(804) 390-2990',NULL,'8043902990',1),(122,105,1,1,0,NULL,'833-1724',NULL,'8331724',1),(123,105,1,0,0,NULL,'(746) 540-2794',NULL,'7465402794',1),(124,178,1,1,0,NULL,'(549) 602-9615',NULL,'5496029615',2),(125,178,1,0,0,NULL,'765-9769',NULL,'7659769',1),(126,88,1,1,0,NULL,'259-1228',NULL,'2591228',2),(127,161,1,1,0,NULL,'593-7888',NULL,'5937888',2),(128,176,1,1,0,NULL,'(656) 667-4374',NULL,'6566674374',2),(129,176,1,0,0,NULL,'(879) 306-3948',NULL,'8793063948',1),(130,84,1,1,0,NULL,'(725) 803-3451',NULL,'7258033451',2),(131,108,1,1,0,NULL,'(635) 419-9639',NULL,'6354199639',1),(132,108,1,0,0,NULL,'248-6502',NULL,'2486502',1),(133,38,1,1,0,NULL,'388-7780',NULL,'3887780',1),(134,38,1,0,0,NULL,'561-2013',NULL,'5612013',1),(135,184,1,1,0,NULL,'(255) 208-7010',NULL,'2552087010',1),(136,184,1,0,0,NULL,'668-9878',NULL,'6689878',2),(137,85,1,1,0,NULL,'(691) 223-3297',NULL,'6912233297',2),(138,85,1,0,0,NULL,'460-4972',NULL,'4604972',1),(139,13,1,1,0,NULL,'480-3738',NULL,'4803738',2),(140,13,1,0,0,NULL,'366-7161',NULL,'3667161',2),(141,18,1,1,0,NULL,'(308) 869-1545',NULL,'3088691545',2),(142,177,1,1,0,NULL,'302-2419',NULL,'3022419',1),(143,24,1,1,0,NULL,'672-3341',NULL,'6723341',2),(144,24,1,0,0,NULL,'(728) 704-9923',NULL,'7287049923',1),(145,125,1,1,0,NULL,'820-2391',NULL,'8202391',2),(146,125,1,0,0,NULL,'660-1590',NULL,'6601590',1),(147,8,1,1,0,NULL,'(514) 478-8263',NULL,'5144788263',1),(148,173,1,1,0,NULL,'338-3790',NULL,'3383790',2),(149,130,1,1,0,NULL,'(675) 482-9334',NULL,'6754829334',1),(150,22,1,1,0,NULL,'(881) 853-6739',NULL,'8818536739',1),(151,22,1,0,0,NULL,'(300) 639-4832',NULL,'3006394832',2),(152,163,1,1,0,NULL,'(643) 888-5952',NULL,'6438885952',2),(153,163,1,0,0,NULL,'(389) 864-6969',NULL,'3898646969',1),(154,183,1,1,0,NULL,'(283) 519-2860',NULL,'2835192860',1),(155,183,1,0,0,NULL,'(523) 471-1701',NULL,'5234711701',1),(156,189,1,1,0,NULL,'473-2601',NULL,'4732601',2),(157,189,1,0,0,NULL,'709-2825',NULL,'7092825',2),(158,26,1,1,0,NULL,'(521) 788-5975',NULL,'5217885975',2),(159,134,1,1,0,NULL,'(666) 488-8680',NULL,'6664888680',1),(160,134,1,0,0,NULL,'(656) 780-4061',NULL,'6567804061',2),(161,17,1,1,0,NULL,'491-9378',NULL,'4919378',1),(162,17,1,0,0,NULL,'(402) 330-3622',NULL,'4023303622',2),(163,90,1,1,0,NULL,'(524) 601-6195',NULL,'5246016195',1),(164,90,1,0,0,NULL,'657-6834',NULL,'6576834',1),(165,46,1,1,0,NULL,'(533) 601-7273',NULL,'5336017273',2),(166,95,1,1,0,NULL,'466-5611',NULL,'4665611',2),(167,95,1,0,0,NULL,'714-4441',NULL,'7144441',1),(168,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),(169,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),(170,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1);
 /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1269,7 +1269,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_relationship` WRITE;
 /*!40000 ALTER TABLE `civicrm_relationship` DISABLE KEYS */;
-INSERT INTO `civicrm_relationship` (`id`, `contact_id_a`, `contact_id_b`, `relationship_type_id`, `start_date`, `end_date`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`, `case_id`) VALUES (1,198,157,1,NULL,NULL,1,NULL,0,0,NULL),(2,105,157,1,NULL,NULL,1,NULL,0,0,NULL),(3,198,183,1,NULL,NULL,1,NULL,0,0,NULL),(4,105,183,1,NULL,NULL,1,NULL,0,0,NULL),(5,105,198,4,NULL,NULL,1,NULL,0,0,NULL),(6,183,3,8,NULL,NULL,1,NULL,0,0,NULL),(7,198,3,8,NULL,NULL,1,NULL,0,0,NULL),(8,105,3,8,NULL,NULL,1,NULL,0,0,NULL),(9,157,3,7,NULL,NULL,1,NULL,0,0,NULL),(10,183,157,2,NULL,NULL,1,NULL,0,0,NULL),(11,35,181,1,NULL,NULL,1,NULL,0,0,NULL),(12,127,181,1,NULL,NULL,1,NULL,0,0,NULL),(13,35,64,1,NULL,NULL,1,NULL,0,0,NULL),(14,127,64,1,NULL,NULL,1,NULL,0,0,NULL),(15,127,35,4,NULL,NULL,1,NULL,0,0,NULL),(16,64,190,8,NULL,NULL,1,NULL,0,0,NULL),(17,35,190,8,NULL,NULL,1,NULL,0,0,NULL),(18,127,190,8,NULL,NULL,1,NULL,0,0,NULL),(19,181,190,7,NULL,NULL,1,NULL,0,0,NULL),(20,64,181,2,NULL,NULL,1,NULL,0,0,NULL),(21,36,167,1,NULL,NULL,1,NULL,0,0,NULL),(22,52,167,1,NULL,NULL,1,NULL,0,0,NULL),(23,36,70,1,NULL,NULL,1,NULL,0,0,NULL),(24,52,70,1,NULL,NULL,1,NULL,0,0,NULL),(25,52,36,4,NULL,NULL,1,NULL,0,0,NULL),(26,70,108,8,NULL,NULL,1,NULL,0,0,NULL),(27,36,108,8,NULL,NULL,1,NULL,0,0,NULL),(28,52,108,8,NULL,NULL,1,NULL,0,0,NULL),(29,167,108,7,NULL,NULL,0,NULL,0,0,NULL),(30,70,167,2,NULL,NULL,0,NULL,0,0,NULL),(31,153,43,1,NULL,NULL,1,NULL,0,0,NULL),(32,144,43,1,NULL,NULL,1,NULL,0,0,NULL),(33,153,47,1,NULL,NULL,1,NULL,0,0,NULL),(34,144,47,1,NULL,NULL,1,NULL,0,0,NULL),(35,144,153,4,NULL,NULL,1,NULL,0,0,NULL),(36,47,80,8,NULL,NULL,1,NULL,0,0,NULL),(37,153,80,8,NULL,NULL,1,NULL,0,0,NULL),(38,144,80,8,NULL,NULL,1,NULL,0,0,NULL),(39,43,80,7,NULL,NULL,0,NULL,0,0,NULL),(40,47,43,2,NULL,NULL,0,NULL,0,0,NULL),(41,146,28,1,NULL,NULL,1,NULL,0,0,NULL),(42,150,28,1,NULL,NULL,1,NULL,0,0,NULL),(43,146,140,1,NULL,NULL,1,NULL,0,0,NULL),(44,150,140,1,NULL,NULL,1,NULL,0,0,NULL),(45,150,146,4,NULL,NULL,1,NULL,0,0,NULL),(46,140,152,8,NULL,NULL,1,NULL,0,0,NULL),(47,146,152,8,NULL,NULL,1,NULL,0,0,NULL),(48,150,152,8,NULL,NULL,1,NULL,0,0,NULL),(49,28,152,7,NULL,NULL,0,NULL,0,0,NULL),(50,140,28,2,NULL,NULL,0,NULL,0,0,NULL),(51,98,173,1,NULL,NULL,1,NULL,0,0,NULL),(52,176,173,1,NULL,NULL,1,NULL,0,0,NULL),(53,98,13,1,NULL,NULL,1,NULL,0,0,NULL),(54,176,13,1,NULL,NULL,1,NULL,0,0,NULL),(55,176,98,4,NULL,NULL,1,NULL,0,0,NULL),(56,13,61,8,NULL,NULL,1,NULL,0,0,NULL),(57,98,61,8,NULL,NULL,1,NULL,0,0,NULL),(58,176,61,8,NULL,NULL,1,NULL,0,0,NULL),(59,173,61,7,NULL,NULL,0,NULL,0,0,NULL),(60,13,173,2,NULL,NULL,0,NULL,0,0,NULL),(61,178,79,1,NULL,NULL,1,NULL,0,0,NULL),(62,135,79,1,NULL,NULL,1,NULL,0,0,NULL),(63,178,147,1,NULL,NULL,1,NULL,0,0,NULL),(64,135,147,1,NULL,NULL,1,NULL,0,0,NULL),(65,135,178,4,NULL,NULL,1,NULL,0,0,NULL),(66,147,130,8,NULL,NULL,1,NULL,0,0,NULL),(67,178,130,8,NULL,NULL,1,NULL,0,0,NULL),(68,135,130,8,NULL,NULL,1,NULL,0,0,NULL),(69,79,130,7,NULL,NULL,1,NULL,0,0,NULL),(70,147,79,2,NULL,NULL,1,NULL,0,0,NULL),(71,104,109,1,NULL,NULL,1,NULL,0,0,NULL),(72,8,109,1,NULL,NULL,1,NULL,0,0,NULL),(73,104,90,1,NULL,NULL,1,NULL,0,0,NULL),(74,8,90,1,NULL,NULL,1,NULL,0,0,NULL),(75,8,104,4,NULL,NULL,1,NULL,0,0,NULL),(76,90,106,8,NULL,NULL,1,NULL,0,0,NULL),(77,104,106,8,NULL,NULL,1,NULL,0,0,NULL),(78,8,106,8,NULL,NULL,1,NULL,0,0,NULL),(79,109,106,7,NULL,NULL,1,NULL,0,0,NULL),(80,90,109,2,NULL,NULL,1,NULL,0,0,NULL),(81,41,168,1,NULL,NULL,1,NULL,0,0,NULL),(82,56,168,1,NULL,NULL,1,NULL,0,0,NULL),(83,41,182,1,NULL,NULL,1,NULL,0,0,NULL),(84,56,182,1,NULL,NULL,1,NULL,0,0,NULL),(85,56,41,4,NULL,NULL,1,NULL,0,0,NULL),(86,182,9,8,NULL,NULL,1,NULL,0,0,NULL),(87,41,9,8,NULL,NULL,1,NULL,0,0,NULL),(88,56,9,8,NULL,NULL,1,NULL,0,0,NULL),(89,168,9,7,NULL,NULL,0,NULL,0,0,NULL),(90,182,168,2,NULL,NULL,0,NULL,0,0,NULL),(91,138,88,1,NULL,NULL,1,NULL,0,0,NULL),(92,197,88,1,NULL,NULL,1,NULL,0,0,NULL),(93,138,201,1,NULL,NULL,1,NULL,0,0,NULL),(94,197,201,1,NULL,NULL,1,NULL,0,0,NULL),(95,197,138,4,NULL,NULL,1,NULL,0,0,NULL),(96,201,107,8,NULL,NULL,1,NULL,0,0,NULL),(97,138,107,8,NULL,NULL,1,NULL,0,0,NULL),(98,197,107,8,NULL,NULL,1,NULL,0,0,NULL),(99,88,107,7,NULL,NULL,1,NULL,0,0,NULL),(100,201,88,2,NULL,NULL,1,NULL,0,0,NULL),(101,55,132,1,NULL,NULL,1,NULL,0,0,NULL),(102,161,132,1,NULL,NULL,1,NULL,0,0,NULL),(103,55,126,1,NULL,NULL,1,NULL,0,0,NULL),(104,161,126,1,NULL,NULL,1,NULL,0,0,NULL),(105,161,55,4,NULL,NULL,1,NULL,0,0,NULL),(106,126,188,8,NULL,NULL,1,NULL,0,0,NULL),(107,55,188,8,NULL,NULL,1,NULL,0,0,NULL),(108,161,188,8,NULL,NULL,1,NULL,0,0,NULL),(109,132,188,7,NULL,NULL,1,NULL,0,0,NULL),(110,126,132,2,NULL,NULL,1,NULL,0,0,NULL),(111,29,84,1,NULL,NULL,1,NULL,0,0,NULL),(112,34,84,1,NULL,NULL,1,NULL,0,0,NULL),(113,29,2,1,NULL,NULL,1,NULL,0,0,NULL),(114,34,2,1,NULL,NULL,1,NULL,0,0,NULL),(115,34,29,4,NULL,NULL,1,NULL,0,0,NULL),(116,2,62,8,NULL,NULL,1,NULL,0,0,NULL),(117,29,62,8,NULL,NULL,1,NULL,0,0,NULL),(118,34,62,8,NULL,NULL,1,NULL,0,0,NULL),(119,84,62,7,NULL,NULL,1,NULL,0,0,NULL),(120,2,84,2,NULL,NULL,1,NULL,0,0,NULL),(121,163,44,1,NULL,NULL,1,NULL,0,0,NULL),(122,76,44,1,NULL,NULL,1,NULL,0,0,NULL),(123,163,78,1,NULL,NULL,1,NULL,0,0,NULL),(124,76,78,1,NULL,NULL,1,NULL,0,0,NULL),(125,76,163,4,NULL,NULL,1,NULL,0,0,NULL),(126,78,83,8,NULL,NULL,1,NULL,0,0,NULL),(127,163,83,8,NULL,NULL,1,NULL,0,0,NULL),(128,76,83,8,NULL,NULL,1,NULL,0,0,NULL),(129,44,83,7,NULL,NULL,0,NULL,0,0,NULL),(130,78,44,2,NULL,NULL,0,NULL,0,0,NULL),(131,166,39,1,NULL,NULL,1,NULL,0,0,NULL),(132,200,39,1,NULL,NULL,1,NULL,0,0,NULL),(133,166,117,1,NULL,NULL,1,NULL,0,0,NULL),(134,200,117,1,NULL,NULL,1,NULL,0,0,NULL),(135,200,166,4,NULL,NULL,1,NULL,0,0,NULL),(136,117,17,8,NULL,NULL,1,NULL,0,0,NULL),(137,166,17,8,NULL,NULL,1,NULL,0,0,NULL),(138,200,17,8,NULL,NULL,1,NULL,0,0,NULL),(139,39,17,7,NULL,NULL,1,NULL,0,0,NULL),(140,117,39,2,NULL,NULL,1,NULL,0,0,NULL),(141,53,159,1,NULL,NULL,1,NULL,0,0,NULL),(142,100,159,1,NULL,NULL,1,NULL,0,0,NULL),(143,53,115,1,NULL,NULL,1,NULL,0,0,NULL),(144,100,115,1,NULL,NULL,1,NULL,0,0,NULL),(145,100,53,4,NULL,NULL,1,NULL,0,0,NULL),(146,115,187,8,NULL,NULL,1,NULL,0,0,NULL),(147,53,187,8,NULL,NULL,1,NULL,0,0,NULL),(148,100,187,8,NULL,NULL,1,NULL,0,0,NULL),(149,159,187,7,NULL,NULL,1,NULL,0,0,NULL),(150,115,159,2,NULL,NULL,1,NULL,0,0,NULL),(151,120,189,1,NULL,NULL,1,NULL,0,0,NULL),(152,186,189,1,NULL,NULL,1,NULL,0,0,NULL),(153,120,160,1,NULL,NULL,1,NULL,0,0,NULL),(154,186,160,1,NULL,NULL,1,NULL,0,0,NULL),(155,186,120,4,NULL,NULL,1,NULL,0,0,NULL),(156,160,93,8,NULL,NULL,1,NULL,0,0,NULL),(157,120,93,8,NULL,NULL,1,NULL,0,0,NULL),(158,186,93,8,NULL,NULL,1,NULL,0,0,NULL),(159,189,93,7,NULL,NULL,0,NULL,0,0,NULL),(160,160,189,2,NULL,NULL,0,NULL,0,0,NULL),(161,46,49,1,NULL,NULL,1,NULL,0,0,NULL),(162,21,49,1,NULL,NULL,1,NULL,0,0,NULL),(163,46,131,1,NULL,NULL,1,NULL,0,0,NULL),(164,21,131,1,NULL,NULL,1,NULL,0,0,NULL),(165,21,46,4,NULL,NULL,1,NULL,0,0,NULL),(166,131,74,8,NULL,NULL,1,NULL,0,0,NULL),(167,46,74,8,NULL,NULL,1,NULL,0,0,NULL),(168,21,74,8,NULL,NULL,1,NULL,0,0,NULL),(169,49,74,7,NULL,NULL,0,NULL,0,0,NULL),(170,131,49,2,NULL,NULL,0,NULL,0,0,NULL),(171,25,125,1,NULL,NULL,1,NULL,0,0,NULL),(172,111,125,1,NULL,NULL,1,NULL,0,0,NULL),(173,25,171,1,NULL,NULL,1,NULL,0,0,NULL),(174,111,171,1,NULL,NULL,1,NULL,0,0,NULL),(175,111,25,4,NULL,NULL,1,NULL,0,0,NULL),(176,171,71,8,NULL,NULL,1,NULL,0,0,NULL),(177,25,71,8,NULL,NULL,1,NULL,0,0,NULL),(178,111,71,8,NULL,NULL,1,NULL,0,0,NULL),(179,125,71,7,NULL,NULL,1,NULL,0,0,NULL),(180,171,125,2,NULL,NULL,1,NULL,0,0,NULL),(181,20,6,1,NULL,NULL,1,NULL,0,0,NULL),(182,11,6,1,NULL,NULL,1,NULL,0,0,NULL),(183,20,63,1,NULL,NULL,1,NULL,0,0,NULL),(184,11,63,1,NULL,NULL,1,NULL,0,0,NULL),(185,11,20,4,NULL,NULL,1,NULL,0,0,NULL),(186,63,179,8,NULL,NULL,1,NULL,0,0,NULL),(187,20,179,8,NULL,NULL,1,NULL,0,0,NULL),(188,11,179,8,NULL,NULL,1,NULL,0,0,NULL),(189,6,179,7,NULL,NULL,0,NULL,0,0,NULL),(190,63,6,2,NULL,NULL,0,NULL,0,0,NULL),(191,180,151,1,NULL,NULL,1,NULL,0,0,NULL),(192,32,151,1,NULL,NULL,1,NULL,0,0,NULL),(193,180,101,1,NULL,NULL,1,NULL,0,0,NULL),(194,32,101,1,NULL,NULL,1,NULL,0,0,NULL),(195,32,180,4,NULL,NULL,1,NULL,0,0,NULL),(196,101,199,8,NULL,NULL,1,NULL,0,0,NULL),(197,180,199,8,NULL,NULL,1,NULL,0,0,NULL),(198,32,199,8,NULL,NULL,1,NULL,0,0,NULL),(199,151,199,7,NULL,NULL,1,NULL,0,0,NULL),(200,101,151,2,NULL,NULL,1,NULL,0,0,NULL),(201,180,19,5,NULL,NULL,1,NULL,0,0,NULL),(202,136,54,5,NULL,NULL,1,NULL,0,0,NULL),(203,200,65,5,NULL,NULL,1,NULL,0,0,NULL),(204,153,72,5,NULL,NULL,1,NULL,0,0,NULL),(205,105,91,5,NULL,NULL,1,NULL,0,0,NULL),(206,99,97,5,NULL,NULL,1,NULL,0,0,NULL),(207,158,110,5,NULL,NULL,1,NULL,0,0,NULL),(208,16,121,5,NULL,NULL,1,NULL,0,0,NULL),(209,43,139,5,NULL,NULL,1,NULL,0,0,NULL),(210,40,142,5,NULL,NULL,1,NULL,0,0,NULL),(211,118,143,5,NULL,NULL,1,NULL,0,0,NULL),(212,147,145,5,NULL,NULL,1,NULL,0,0,NULL),(213,90,155,5,NULL,NULL,1,NULL,0,0,NULL),(214,150,156,5,NULL,NULL,1,NULL,0,0,NULL),(215,159,162,5,NULL,NULL,1,NULL,0,0,NULL),(216,173,184,5,NULL,NULL,1,NULL,0,0,NULL),(217,146,195,5,NULL,NULL,1,NULL,0,0,NULL),(218,4,196,5,NULL,NULL,1,NULL,0,0,NULL);
+INSERT INTO `civicrm_relationship` (`id`, `contact_id_a`, `contact_id_b`, `relationship_type_id`, `start_date`, `end_date`, `is_active`, `description`, `is_permission_a_b`, `is_permission_b_a`, `case_id`) VALUES (1,94,122,1,NULL,NULL,1,NULL,0,0,NULL),(2,179,122,1,NULL,NULL,1,NULL,0,0,NULL),(3,94,149,1,NULL,NULL,1,NULL,0,0,NULL),(4,179,149,1,NULL,NULL,1,NULL,0,0,NULL),(5,179,94,4,NULL,NULL,1,NULL,0,0,NULL),(6,149,157,8,NULL,NULL,1,NULL,0,0,NULL),(7,94,157,8,NULL,NULL,1,NULL,0,0,NULL),(8,179,157,8,NULL,NULL,1,NULL,0,0,NULL),(9,122,157,7,NULL,NULL,0,NULL,0,0,NULL),(10,149,122,2,NULL,NULL,0,NULL,0,0,NULL),(11,99,3,1,NULL,NULL,1,NULL,0,0,NULL),(12,150,3,1,NULL,NULL,1,NULL,0,0,NULL),(13,99,37,1,NULL,NULL,1,NULL,0,0,NULL),(14,150,37,1,NULL,NULL,1,NULL,0,0,NULL),(15,150,99,4,NULL,NULL,1,NULL,0,0,NULL),(16,37,107,8,NULL,NULL,1,NULL,0,0,NULL),(17,99,107,8,NULL,NULL,1,NULL,0,0,NULL),(18,150,107,8,NULL,NULL,1,NULL,0,0,NULL),(19,3,107,7,NULL,NULL,1,NULL,0,0,NULL),(20,37,3,2,NULL,NULL,1,NULL,0,0,NULL),(21,193,35,1,NULL,NULL,1,NULL,0,0,NULL),(22,72,35,1,NULL,NULL,1,NULL,0,0,NULL),(23,193,146,1,NULL,NULL,1,NULL,0,0,NULL),(24,72,146,1,NULL,NULL,1,NULL,0,0,NULL),(25,72,193,4,NULL,NULL,1,NULL,0,0,NULL),(26,146,27,8,NULL,NULL,1,NULL,0,0,NULL),(27,193,27,8,NULL,NULL,1,NULL,0,0,NULL),(28,72,27,8,NULL,NULL,1,NULL,0,0,NULL),(29,35,27,7,NULL,NULL,1,NULL,0,0,NULL),(30,146,35,2,NULL,NULL,1,NULL,0,0,NULL),(31,51,69,1,NULL,NULL,1,NULL,0,0,NULL),(32,5,69,1,NULL,NULL,1,NULL,0,0,NULL),(33,51,82,1,NULL,NULL,1,NULL,0,0,NULL),(34,5,82,1,NULL,NULL,1,NULL,0,0,NULL),(35,5,51,4,NULL,NULL,1,NULL,0,0,NULL),(36,82,14,8,NULL,NULL,1,NULL,0,0,NULL),(37,51,14,8,NULL,NULL,1,NULL,0,0,NULL),(38,5,14,8,NULL,NULL,1,NULL,0,0,NULL),(39,69,14,7,NULL,NULL,0,NULL,0,0,NULL),(40,82,69,2,NULL,NULL,0,NULL,0,0,NULL),(41,59,109,1,NULL,NULL,1,NULL,0,0,NULL),(42,48,109,1,NULL,NULL,1,NULL,0,0,NULL),(43,59,165,1,NULL,NULL,1,NULL,0,0,NULL),(44,48,165,1,NULL,NULL,1,NULL,0,0,NULL),(45,48,59,4,NULL,NULL,1,NULL,0,0,NULL),(46,165,74,8,NULL,NULL,1,NULL,0,0,NULL),(47,59,74,8,NULL,NULL,1,NULL,0,0,NULL),(48,48,74,8,NULL,NULL,1,NULL,0,0,NULL),(49,109,74,7,NULL,NULL,1,NULL,0,0,NULL),(50,165,109,2,NULL,NULL,1,NULL,0,0,NULL),(51,170,124,1,NULL,NULL,1,NULL,0,0,NULL),(52,142,124,1,NULL,NULL,1,NULL,0,0,NULL),(53,170,44,1,NULL,NULL,1,NULL,0,0,NULL),(54,142,44,1,NULL,NULL,1,NULL,0,0,NULL),(55,142,170,4,NULL,NULL,1,NULL,0,0,NULL),(56,44,154,8,NULL,NULL,1,NULL,0,0,NULL),(57,170,154,8,NULL,NULL,1,NULL,0,0,NULL),(58,142,154,8,NULL,NULL,1,NULL,0,0,NULL),(59,124,154,7,NULL,NULL,1,NULL,0,0,NULL),(60,44,124,2,NULL,NULL,1,NULL,0,0,NULL),(61,106,25,1,NULL,NULL,1,NULL,0,0,NULL),(62,12,25,1,NULL,NULL,1,NULL,0,0,NULL),(63,106,145,1,NULL,NULL,1,NULL,0,0,NULL),(64,12,145,1,NULL,NULL,1,NULL,0,0,NULL),(65,12,106,4,NULL,NULL,1,NULL,0,0,NULL),(66,145,196,8,NULL,NULL,1,NULL,0,0,NULL),(67,106,196,8,NULL,NULL,1,NULL,0,0,NULL),(68,12,196,8,NULL,NULL,1,NULL,0,0,NULL),(69,25,196,7,NULL,NULL,1,NULL,0,0,NULL),(70,145,25,2,NULL,NULL,1,NULL,0,0,NULL),(71,20,43,1,NULL,NULL,1,NULL,0,0,NULL),(72,57,43,1,NULL,NULL,1,NULL,0,0,NULL),(73,20,91,1,NULL,NULL,1,NULL,0,0,NULL),(74,57,91,1,NULL,NULL,1,NULL,0,0,NULL),(75,57,20,4,NULL,NULL,1,NULL,0,0,NULL),(76,91,52,8,NULL,NULL,1,NULL,0,0,NULL),(77,20,52,8,NULL,NULL,1,NULL,0,0,NULL),(78,57,52,8,NULL,NULL,1,NULL,0,0,NULL),(79,43,52,7,NULL,NULL,1,NULL,0,0,NULL),(80,91,43,2,NULL,NULL,1,NULL,0,0,NULL),(81,169,185,1,NULL,NULL,1,NULL,0,0,NULL),(82,194,185,1,NULL,NULL,1,NULL,0,0,NULL),(83,169,195,1,NULL,NULL,1,NULL,0,0,NULL),(84,194,195,1,NULL,NULL,1,NULL,0,0,NULL),(85,194,169,4,NULL,NULL,1,NULL,0,0,NULL),(86,195,21,8,NULL,NULL,1,NULL,0,0,NULL),(87,169,21,8,NULL,NULL,1,NULL,0,0,NULL),(88,194,21,8,NULL,NULL,1,NULL,0,0,NULL),(89,185,21,7,NULL,NULL,1,NULL,0,0,NULL),(90,195,185,2,NULL,NULL,1,NULL,0,0,NULL),(91,188,7,1,NULL,NULL,1,NULL,0,0,NULL),(92,166,7,1,NULL,NULL,1,NULL,0,0,NULL),(93,188,68,1,NULL,NULL,1,NULL,0,0,NULL),(94,166,68,1,NULL,NULL,1,NULL,0,0,NULL),(95,166,188,4,NULL,NULL,1,NULL,0,0,NULL),(96,68,31,8,NULL,NULL,1,NULL,0,0,NULL),(97,188,31,8,NULL,NULL,1,NULL,0,0,NULL),(98,166,31,8,NULL,NULL,1,NULL,0,0,NULL),(99,7,31,7,NULL,NULL,0,NULL,0,0,NULL),(100,68,7,2,NULL,NULL,0,NULL,0,0,NULL),(101,178,105,1,NULL,NULL,1,NULL,0,0,NULL),(102,88,105,1,NULL,NULL,1,NULL,0,0,NULL),(103,178,75,1,NULL,NULL,1,NULL,0,0,NULL),(104,88,75,1,NULL,NULL,1,NULL,0,0,NULL),(105,88,178,4,NULL,NULL,1,NULL,0,0,NULL),(106,75,143,8,NULL,NULL,1,NULL,0,0,NULL),(107,178,143,8,NULL,NULL,1,NULL,0,0,NULL),(108,88,143,8,NULL,NULL,1,NULL,0,0,NULL),(109,105,143,7,NULL,NULL,0,NULL,0,0,NULL),(110,75,105,2,NULL,NULL,0,NULL,0,0,NULL),(111,58,161,1,NULL,NULL,1,NULL,0,0,NULL),(112,84,161,1,NULL,NULL,1,NULL,0,0,NULL),(113,58,176,1,NULL,NULL,1,NULL,0,0,NULL),(114,84,176,1,NULL,NULL,1,NULL,0,0,NULL),(115,84,58,4,NULL,NULL,1,NULL,0,0,NULL),(116,176,110,8,NULL,NULL,1,NULL,0,0,NULL),(117,58,110,8,NULL,NULL,1,NULL,0,0,NULL),(118,84,110,8,NULL,NULL,1,NULL,0,0,NULL),(119,161,110,7,NULL,NULL,1,NULL,0,0,NULL),(120,176,161,2,NULL,NULL,1,NULL,0,0,NULL),(121,38,108,1,NULL,NULL,1,NULL,0,0,NULL),(122,184,108,1,NULL,NULL,1,NULL,0,0,NULL),(123,38,23,1,NULL,NULL,1,NULL,0,0,NULL),(124,184,23,1,NULL,NULL,1,NULL,0,0,NULL),(125,184,38,4,NULL,NULL,1,NULL,0,0,NULL),(126,23,71,8,NULL,NULL,1,NULL,0,0,NULL),(127,38,71,8,NULL,NULL,1,NULL,0,0,NULL),(128,184,71,8,NULL,NULL,1,NULL,0,0,NULL),(129,108,71,7,NULL,NULL,1,NULL,0,0,NULL),(130,23,108,2,NULL,NULL,1,NULL,0,0,NULL),(131,13,28,1,NULL,NULL,1,NULL,0,0,NULL),(132,18,28,1,NULL,NULL,1,NULL,0,0,NULL),(133,13,85,1,NULL,NULL,1,NULL,0,0,NULL),(134,18,85,1,NULL,NULL,1,NULL,0,0,NULL),(135,18,13,4,NULL,NULL,1,NULL,0,0,NULL),(136,85,33,8,NULL,NULL,1,NULL,0,0,NULL),(137,13,33,8,NULL,NULL,1,NULL,0,0,NULL),(138,18,33,8,NULL,NULL,1,NULL,0,0,NULL),(139,28,33,7,NULL,NULL,1,NULL,0,0,NULL),(140,85,28,2,NULL,NULL,1,NULL,0,0,NULL),(141,132,177,1,NULL,NULL,1,NULL,0,0,NULL),(142,125,177,1,NULL,NULL,1,NULL,0,0,NULL),(143,132,24,1,NULL,NULL,1,NULL,0,0,NULL),(144,125,24,1,NULL,NULL,1,NULL,0,0,NULL),(145,125,132,4,NULL,NULL,1,NULL,0,0,NULL),(146,24,50,8,NULL,NULL,1,NULL,0,0,NULL),(147,132,50,8,NULL,NULL,1,NULL,0,0,NULL),(148,125,50,8,NULL,NULL,1,NULL,0,0,NULL),(149,177,50,7,NULL,NULL,1,NULL,0,0,NULL),(150,24,177,2,NULL,NULL,1,NULL,0,0,NULL),(151,10,8,1,NULL,NULL,1,NULL,0,0,NULL),(152,190,8,1,NULL,NULL,1,NULL,0,0,NULL),(153,10,173,1,NULL,NULL,1,NULL,0,0,NULL),(154,190,173,1,NULL,NULL,1,NULL,0,0,NULL),(155,190,10,4,NULL,NULL,1,NULL,0,0,NULL),(156,173,164,8,NULL,NULL,1,NULL,0,0,NULL),(157,10,164,8,NULL,NULL,1,NULL,0,0,NULL),(158,190,164,8,NULL,NULL,1,NULL,0,0,NULL),(159,8,164,7,NULL,NULL,1,NULL,0,0,NULL),(160,173,8,2,NULL,NULL,1,NULL,0,0,NULL),(161,22,54,1,NULL,NULL,1,NULL,0,0,NULL),(162,66,54,1,NULL,NULL,1,NULL,0,0,NULL),(163,22,130,1,NULL,NULL,1,NULL,0,0,NULL),(164,66,130,1,NULL,NULL,1,NULL,0,0,NULL),(165,66,22,4,NULL,NULL,1,NULL,0,0,NULL),(166,130,32,8,NULL,NULL,1,NULL,0,0,NULL),(167,22,32,8,NULL,NULL,1,NULL,0,0,NULL),(168,66,32,8,NULL,NULL,1,NULL,0,0,NULL),(169,54,32,7,NULL,NULL,1,NULL,0,0,NULL),(170,130,54,2,NULL,NULL,1,NULL,0,0,NULL),(171,189,163,1,NULL,NULL,1,NULL,0,0,NULL),(172,26,163,1,NULL,NULL,1,NULL,0,0,NULL),(173,189,183,1,NULL,NULL,1,NULL,0,0,NULL),(174,26,183,1,NULL,NULL,1,NULL,0,0,NULL),(175,26,189,4,NULL,NULL,1,NULL,0,0,NULL),(176,183,200,8,NULL,NULL,1,NULL,0,0,NULL),(177,189,200,8,NULL,NULL,1,NULL,0,0,NULL),(178,26,200,8,NULL,NULL,1,NULL,0,0,NULL),(179,163,200,7,NULL,NULL,1,NULL,0,0,NULL),(180,183,163,2,NULL,NULL,1,NULL,0,0,NULL),(181,40,133,1,NULL,NULL,1,NULL,0,0,NULL),(182,17,133,1,NULL,NULL,1,NULL,0,0,NULL),(183,40,134,1,NULL,NULL,1,NULL,0,0,NULL),(184,17,134,1,NULL,NULL,1,NULL,0,0,NULL),(185,17,40,4,NULL,NULL,1,NULL,0,0,NULL),(186,134,15,8,NULL,NULL,1,NULL,0,0,NULL),(187,40,15,8,NULL,NULL,1,NULL,0,0,NULL),(188,17,15,8,NULL,NULL,1,NULL,0,0,NULL),(189,133,15,7,NULL,NULL,0,NULL,0,0,NULL),(190,134,133,2,NULL,NULL,0,NULL,0,0,NULL),(191,60,90,1,NULL,NULL,1,NULL,0,0,NULL),(192,95,90,1,NULL,NULL,1,NULL,0,0,NULL),(193,60,46,1,NULL,NULL,1,NULL,0,0,NULL),(194,95,46,1,NULL,NULL,1,NULL,0,0,NULL),(195,95,60,4,NULL,NULL,1,NULL,0,0,NULL),(196,46,100,8,NULL,NULL,1,NULL,0,0,NULL),(197,60,100,8,NULL,NULL,1,NULL,0,0,NULL),(198,95,100,8,NULL,NULL,1,NULL,0,0,NULL),(199,90,100,7,NULL,NULL,0,NULL,0,0,NULL),(200,46,90,2,NULL,NULL,0,NULL,0,0,NULL),(201,185,4,5,NULL,NULL,1,NULL,0,0,NULL),(202,82,29,5,NULL,NULL,1,NULL,0,0,NULL),(203,125,42,5,NULL,NULL,1,NULL,0,0,NULL),(204,162,47,5,NULL,NULL,1,NULL,0,0,NULL),(205,28,83,5,NULL,NULL,1,NULL,0,0,NULL),(206,103,93,5,NULL,NULL,1,NULL,0,0,NULL),(207,60,96,5,NULL,NULL,1,NULL,0,0,NULL),(208,117,98,5,NULL,NULL,1,NULL,0,0,NULL),(209,187,137,5,NULL,NULL,1,NULL,0,0,NULL),(210,134,138,5,NULL,NULL,1,NULL,0,0,NULL),(211,145,141,5,NULL,NULL,1,NULL,0,0,NULL),(212,149,160,5,NULL,NULL,1,NULL,0,0,NULL),(213,38,168,5,NULL,NULL,1,NULL,0,0,NULL),(214,63,172,5,NULL,NULL,1,NULL,0,0,NULL),(215,161,175,5,NULL,NULL,1,NULL,0,0,NULL),(216,39,182,5,NULL,NULL,1,NULL,0,0,NULL),(217,48,191,5,NULL,NULL,1,NULL,0,0,NULL);
 /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1345,7 +1345,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_subscription_history` WRITE;
 /*!40000 ALTER TABLE `civicrm_subscription_history` DISABLE KEYS */;
-INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES (1,16,2,'2019-01-16 10:40:09','Email','Added',NULL),(2,45,2,'2019-04-24 22:35:26','Admin','Added',NULL),(3,103,2,'2018-08-23 09:10:49','Admin','Added',NULL),(4,57,2,'2018-09-10 04:09:33','Email','Added',NULL),(5,69,2,'2018-08-17 23:10:50','Admin','Added',NULL),(6,31,2,'2019-02-06 00:07:48','Admin','Added',NULL),(7,48,2,'2019-04-16 10:00:37','Admin','Added',NULL),(8,193,2,'2018-10-21 00:33:26','Email','Added',NULL),(9,169,2,'2018-09-22 22:11:59','Admin','Added',NULL),(10,33,2,'2018-09-01 19:40:26','Admin','Added',NULL),(11,128,2,'2018-08-23 20:03:17','Email','Added',NULL),(12,27,2,'2018-10-14 19:46:17','Email','Added',NULL),(13,66,2,'2019-01-01 11:49:21','Email','Added',NULL),(14,5,2,'2018-08-20 20:03:14','Email','Added',NULL),(15,170,2,'2018-08-22 18:57:32','Admin','Added',NULL),(16,112,2,'2018-11-03 15:59:57','Admin','Added',NULL),(17,129,2,'2019-03-26 16:06:33','Admin','Added',NULL),(18,18,2,'2018-10-20 03:25:56','Admin','Added',NULL),(19,191,2,'2019-03-25 11:29:05','Email','Added',NULL),(20,60,2,'2019-04-28 21:08:53','Email','Added',NULL),(21,81,2,'2018-12-25 03:50:57','Email','Added',NULL),(22,85,2,'2018-12-26 14:22:42','Admin','Added',NULL),(23,116,2,'2019-03-04 06:07:29','Email','Added',NULL),(24,177,2,'2019-02-24 09:56:21','Admin','Added',NULL),(25,4,2,'2019-04-06 14:29:13','Email','Added',NULL),(26,149,2,'2019-08-08 17:38:43','Email','Added',NULL),(27,24,2,'2019-01-04 20:19:34','Admin','Added',NULL),(28,82,2,'2019-02-13 13:21:06','Email','Added',NULL),(29,30,2,'2018-09-27 02:56:13','Admin','Added',NULL),(30,12,2,'2019-05-01 07:12:52','Email','Added',NULL),(31,172,2,'2019-04-18 01:09:08','Admin','Added',NULL),(32,114,2,'2019-08-08 21:27:46','Admin','Added',NULL),(33,154,2,'2019-06-03 23:32:37','Email','Added',NULL),(34,99,2,'2019-04-23 18:39:21','Admin','Added',NULL),(35,94,2,'2019-04-23 16:50:15','Email','Added',NULL),(36,58,2,'2019-03-29 05:14:38','Email','Added',NULL),(37,15,2,'2019-01-26 08:58:15','Email','Added',NULL),(38,51,2,'2018-10-03 04:57:07','Email','Added',NULL),(39,26,2,'2019-03-21 11:35:48','Admin','Added',NULL),(40,174,2,'2019-07-10 06:37:58','Admin','Added',NULL),(41,42,2,'2019-05-17 18:54:01','Admin','Added',NULL),(42,124,2,'2018-12-25 05:17:06','Email','Added',NULL),(43,136,2,'2018-11-15 22:21:58','Email','Added',NULL),(44,75,2,'2019-07-08 04:38:45','Email','Added',NULL),(45,118,2,'2019-02-22 23:49:19','Email','Added',NULL),(46,40,2,'2018-09-28 20:35:36','Email','Added',NULL),(47,38,2,'2019-02-20 15:04:44','Email','Added',NULL),(48,59,2,'2018-12-18 05:36:15','Email','Added',NULL),(49,148,2,'2019-03-07 03:08:29','Email','Added',NULL),(50,50,2,'2019-04-05 16:17:03','Email','Added',NULL),(51,22,2,'2019-06-07 14:08:02','Email','Added',NULL),(52,192,2,'2018-11-09 23:25:45','Email','Added',NULL),(53,119,2,'2019-06-03 04:06:46','Admin','Added',NULL),(54,133,2,'2019-01-15 22:05:09','Email','Added',NULL),(55,95,2,'2018-12-19 00:21:23','Admin','Added',NULL),(56,164,2,'2018-09-12 03:12:48','Email','Added',NULL),(57,158,2,'2019-08-11 23:35:02','Admin','Added',NULL),(58,165,2,'2019-03-15 09:33:54','Email','Added',NULL),(59,14,2,'2019-05-22 03:20:12','Email','Added',NULL),(60,77,2,'2018-11-14 09:05:25','Admin','Added',NULL),(61,23,3,'2018-08-24 04:30:04','Email','Added',NULL),(62,67,3,'2018-09-04 09:46:28','Admin','Added',NULL),(63,113,3,'2019-03-07 07:40:06','Admin','Added',NULL),(64,89,3,'2019-05-01 12:52:10','Admin','Added',NULL),(65,185,3,'2019-07-18 02:03:46','Admin','Added',NULL),(66,102,3,'2018-10-18 09:31:51','Email','Added',NULL),(67,68,3,'2018-11-16 16:12:31','Email','Added',NULL),(68,123,3,'2018-12-24 10:47:02','Email','Added',NULL),(69,134,3,'2019-05-08 19:08:00','Admin','Added',NULL),(70,141,3,'2019-05-16 11:33:36','Email','Added',NULL),(71,7,3,'2019-03-24 23:07:58','Email','Added',NULL),(72,96,3,'2019-07-08 03:12:28','Email','Added',NULL),(73,10,3,'2019-04-28 09:43:51','Admin','Added',NULL),(74,87,3,'2018-08-27 08:47:45','Admin','Added',NULL),(75,194,3,'2018-08-25 02:26:13','Email','Added',NULL),(76,16,4,'2018-09-24 00:56:20','Admin','Added',NULL),(77,193,4,'2019-01-07 16:26:09','Email','Added',NULL),(78,170,4,'2018-11-10 18:43:09','Admin','Added',NULL),(79,85,4,'2019-06-04 05:15:06','Email','Added',NULL),(80,30,4,'2019-06-09 07:55:50','Email','Added',NULL),(81,58,4,'2019-04-10 12:07:36','Email','Added',NULL),(82,136,4,'2019-07-22 20:13:04','Email','Added',NULL),(83,50,4,'2019-05-24 15:37:26','Email','Added',NULL);
+INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES (1,167,2,'2018-11-08 18:55:20','Admin','Added',NULL),(2,144,2,'2019-04-26 07:35:07','Email','Added',NULL),(3,65,2,'2019-06-01 00:46:49','Email','Added',NULL),(4,187,2,'2019-06-29 03:05:43','Admin','Added',NULL),(5,155,2,'2019-02-07 18:41:10','Admin','Added',NULL),(6,174,2,'2019-07-29 21:44:47','Admin','Added',NULL),(7,62,2,'2018-10-21 08:13:10','Admin','Added',NULL),(8,87,2,'2019-01-10 18:49:05','Admin','Added',NULL),(9,129,2,'2019-01-27 15:14:50','Admin','Added',NULL),(10,112,2,'2019-06-05 15:05:54','Email','Added',NULL),(11,197,2,'2018-12-05 04:42:03','Admin','Added',NULL),(12,116,2,'2019-06-09 19:29:45','Admin','Added',NULL),(13,67,2,'2019-07-29 00:49:04','Email','Added',NULL),(14,152,2,'2019-02-01 03:08:16','Admin','Added',NULL),(15,127,2,'2019-04-08 05:39:32','Admin','Added',NULL),(16,198,2,'2019-06-09 15:52:34','Email','Added',NULL),(17,181,2,'2019-04-20 03:14:26','Email','Added',NULL),(18,76,2,'2019-04-30 17:29:29','Admin','Added',NULL),(19,115,2,'2019-06-17 17:46:57','Admin','Added',NULL),(20,30,2,'2019-04-22 12:21:04','Email','Added',NULL),(21,153,2,'2019-07-31 18:22:34','Email','Added',NULL),(22,79,2,'2019-01-11 21:53:11','Admin','Added',NULL),(23,113,2,'2018-12-28 14:57:20','Email','Added',NULL),(24,64,2,'2018-12-17 18:56:57','Admin','Added',NULL),(25,120,2,'2019-06-28 07:34:25','Email','Added',NULL),(26,6,2,'2019-01-09 16:26:21','Admin','Added',NULL),(27,63,2,'2019-04-01 05:10:42','Email','Added',NULL),(28,201,2,'2019-02-25 13:44:44','Admin','Added',NULL),(29,171,2,'2018-10-12 19:49:31','Admin','Added',NULL),(30,136,2,'2019-05-22 16:52:06','Email','Added',NULL),(31,158,2,'2018-12-08 08:08:28','Admin','Added',NULL),(32,70,2,'2019-08-13 08:39:27','Email','Added',NULL),(33,41,2,'2019-09-09 05:15:32','Admin','Added',NULL),(34,147,2,'2019-06-07 04:56:30','Admin','Added',NULL),(35,151,2,'2019-07-24 09:25:19','Email','Added',NULL),(36,73,2,'2019-08-18 19:55:16','Admin','Added',NULL),(37,114,2,'2019-03-20 13:25:48','Email','Added',NULL),(38,34,2,'2019-07-10 06:54:39','Admin','Added',NULL),(39,16,2,'2018-10-03 18:20:07','Email','Added',NULL),(40,86,2,'2019-07-30 16:46:58','Email','Added',NULL),(41,89,2,'2019-05-28 12:11:22','Email','Added',NULL),(42,19,2,'2018-10-15 00:37:27','Email','Added',NULL),(43,180,2,'2019-08-12 07:01:55','Email','Added',NULL),(44,92,2,'2019-04-06 09:23:05','Email','Added',NULL),(45,36,2,'2019-04-14 22:52:23','Admin','Added',NULL),(46,2,2,'2019-05-31 08:33:41','Admin','Added',NULL),(47,55,2,'2018-10-29 01:36:06','Admin','Added',NULL),(48,11,2,'2018-11-15 22:14:48','Email','Added',NULL),(49,121,2,'2019-03-15 17:13:28','Email','Added',NULL),(50,123,2,'2019-05-04 08:16:47','Email','Added',NULL),(51,102,2,'2019-06-19 08:46:33','Admin','Added',NULL),(52,135,2,'2019-02-27 22:05:26','Email','Added',NULL),(53,104,2,'2018-12-26 04:15:52','Email','Added',NULL),(54,45,2,'2019-02-24 18:06:17','Email','Added',NULL),(55,9,2,'2018-10-10 01:40:18','Admin','Added',NULL),(56,128,2,'2019-04-18 01:48:13','Email','Added',NULL),(57,77,2,'2019-07-19 03:25:40','Email','Added',NULL),(58,103,2,'2019-07-13 19:59:08','Admin','Added',NULL),(59,156,2,'2019-06-10 05:10:20','Email','Added',NULL),(60,78,2,'2019-02-11 07:44:44','Admin','Added',NULL),(61,192,3,'2019-02-14 16:56:36','Email','Added',NULL),(62,97,3,'2018-09-23 16:32:47','Admin','Added',NULL),(63,117,3,'2019-06-15 05:32:40','Admin','Added',NULL),(64,39,3,'2019-03-12 02:35:40','Email','Added',NULL),(65,131,3,'2019-05-20 00:50:38','Admin','Added',NULL),(66,111,3,'2018-10-16 19:09:55','Admin','Added',NULL),(67,118,3,'2019-01-28 06:33:25','Email','Added',NULL),(68,148,3,'2019-05-22 03:17:02','Admin','Added',NULL),(69,81,3,'2018-10-02 02:32:37','Email','Added',NULL),(70,119,3,'2019-04-24 07:56:59','Admin','Added',NULL),(71,53,3,'2019-01-14 08:26:58','Admin','Added',NULL),(72,162,3,'2019-06-26 21:21:14','Email','Added',NULL),(73,101,3,'2018-12-21 20:36:38','Email','Added',NULL),(74,139,3,'2019-02-03 22:19:22','Email','Added',NULL),(75,199,3,'2018-10-15 08:09:04','Admin','Added',NULL),(76,167,4,'2019-04-10 21:01:17','Email','Added',NULL),(77,87,4,'2018-10-14 07:50:04','Admin','Added',NULL),(78,127,4,'2019-07-11 02:37:15','Admin','Added',NULL),(79,79,4,'2019-07-24 02:48:44','Admin','Added',NULL),(80,171,4,'2018-11-30 11:53:03','Admin','Added',NULL),(81,73,4,'2019-04-14 00:58:51','Admin','Added',NULL),(82,180,4,'2018-10-26 02:05:10','Email','Added',NULL),(83,123,4,'2019-04-23 15:02:26','Admin','Added',NULL);
 /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1441,7 +1441,7 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_website` WRITE;
 /*!40000 ALTER TABLE `civicrm_website` DISABLE KEYS */;
-INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES (1,91,'http://rsempowermentassociation.org',1),(2,54,'http://poquosonwellnesstrust.org',1),(3,72,'http://bradfordliteracysolutions.org',1),(4,155,'http://bassettalliance.org',1),(5,196,'http://paartsacademy.org',1),(6,162,'http://unitedaction.org',1),(7,19,'http://addytrust.org',1),(8,65,'http://friendstechnologytrust.org',1),(9,142,'http://pinepoetrycenter.org',1),(10,145,'http://localcenter.org',1),(11,184,'http://friendsfood.org',1),(12,156,'http://mississippipeacecollective.org',1),(13,143,'http://mlkingagriculture.org',1),(14,121,'http://localeducationfellowship.org',1),(15,139,'http://kentuckycenter.org',1),(16,137,'http://globalnetwork.org',1);
+INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES (1,93,'http://ecadvocacycollective.org',1),(2,56,'http://missouriarts.org',1),(3,182,'http://cheshireaction.org',1),(4,191,'http://wmsportsschool.org',1),(5,186,'http://texastechnologypartners.org',1),(6,61,'http://atlantaagriculturesolutions.org',1),(7,138,'http://globalsportstrust.org',1),(8,83,'http://lcdevelopmentfellowship.org',1),(9,172,'http://localmusicalliance.org',1),(10,47,'http://simpsontechnologytrust.org',1),(11,175,'http://bakerpeacesolutions.org',1),(12,160,'http://maincenter.org',1),(13,4,'http://statescollective.org',1),(14,96,'http://northpointpoetry.org',1),(15,98,'http://baywellnesspartnership.org',1);
 /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1473,7 +1473,7 @@ UNLOCK TABLES;
 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
--- Dump completed on 2019-08-16  9:31:32
+-- Dump completed on 2019-09-20 12:57:30
 -- +--------------------------------------------------------------------+
 -- | CiviCRM version 5                                                  |
 -- +--------------------------------------------------------------------+
index e68bb610eb821b38b24a8988db745bf5434606cb..1c6f5f9cfbe7e1d8fc4fe57c798fdaea5928d062 100644 (file)
             {else}
                 <td class="tasklist"><a href="{$config->userFrameworkBaseURL}?q=admin/user/permissions&civicrmDestination=civicrm/admin/configtask">{ts}Permissions for Anonymous Users{/ts}</a></td>
             {/if}
-            <td>{ts}You will also need to change Drupal permissions so anonymous users can make contributions, register for events and / or use profiles to enter contact information.{/ts} {docURL page="Default Permissions and Roles" resource="wiki"}</td>
+            <td>{ts}You will also need to change Drupal permissions so anonymous users can make contributions, register for events and / or use profiles to enter contact information.{/ts} {docURL page="user/en/latest/initial-set-up/permissions-and-access-control" text="(learn more...)"}</td>
         </tr>
     {/if}
-    <tr class="even">
-        <td class="tasklist nowrap"><a href="{crmURL p="civicrm/admin/messageTemplates" q="selectedChild=workflow&reset=1&civicrmDestination=`$destination`"}" title="{$linkTitle|escape}">{ts}System Workflow Templates{/ts}</a></td>
-        <td>{ts}Review and modify the templates used for system-generated emails, including contribution receipts and event registration confirmations.{/ts}</td>
-    </tr>
+    {if $enabledComponents.CiviContribute eq 1}
+      <tr class="even">
+          <td class="tasklist nowrap"><a href="{crmURL p="civicrm/admin/setting/preferences/contribute" q="selectedChild=workflow&reset=1&civicrmDestination=`$destination`"}" title="{$linkTitle|escape}">{ts}CiviContribute Component Settings{/ts}</a></td>
+          <td>{ts}Review and modify the CiviContribute Component settings such as Taxes and Invoicing, Deferred Revenue, and Access Control by Financial Type{/ts}</td>
+      </tr>
+    {/if}
 </table>
 <br />
 
diff --git a/templates/CRM/Api4/Page/Api4Explorer.tpl b/templates/CRM/Api4/Page/Api4Explorer.tpl
new file mode 100644 (file)
index 0000000..e69de29
index b31ef0c7916b80514fe09bda49119c5712188eae..3b8a79fda7dea283567f1f912f19899f6d5ab208 100644 (file)
         <td>&nbsp;</td>
         <td>{$form.is_share.html} {$form.is_share.label} {help id="id-is_share"}</td>
       </tr>
-    <tr class="crm-contribution-contributionpage-settings-form-block-is_active"><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td>{$form.is_active.html} {$form.is_active.label}<br />
+        <tr class="crm-contribution-contributionpage-settings-form-block-is_active">
+        <td>&nbsp;</td>  
+        <td>{$form.is_active.html} {$form.is_active.label}</td>
+      </tr>
   {if $contributionPageID}
-        <span class="description">
+        <tr class="crm-contribution-contributionpage-settings-form-block-info_link">
+        <td>&nbsp;</td>  
+        <td class="description">
           {if $config->userSystem->is_drupal || $config->userFramework EQ 'WordPress'}
               {ts}When your page is active, you can link people to the page by copying and pasting the following URL:{/ts}<br />
               <strong>{crmURL a=1 fe=1 p='civicrm/contribute/transact' q="reset=1&id=`$contributionPageID`"}</strong>
           {elseif $config->userFramework EQ 'Joomla'}
               {ts 1=$title}When your page is active, create front-end links to the contribution page using the Menu Manager. Select <strong>Administer CiviCRM &raquo; CiviContribute &raquo; Manage Contribution Pages</strong> and select <strong>%1</strong> for the contribution page.{/ts}
           {/if}
-    </span>
       {/if}
   </td>
   </tr>
index dd6ed9a73a5c3086c0e6d76c36b2be498dcf9aad..4da6ef78acedb2bee892e1208fb93038160186c1 100644 (file)
     <td>{$payment_instrument}{if $payment_processor_name} ({$payment_processor_name}){/if}</td>
   </tr>
 
-  {if $payment_instrument eq 'Check'|ts}
+  {if $check_number}
     <tr>
       <td class="label">{ts}Check Number{/ts}</td>
       <td>{$check_number}</td>
index 212ecb31e2dbea8f889a2c4966e0a9e27285c1bd..f048667b59ba595a942b56303474b47e0366808d 100644 (file)
     </tr>
 
     {if $eventID}
-      <tr>
+      <tr class="crm-event-manage-eventinfo-form-block-info_link">
         <td>&nbsp;</td>
         <td class="description">
           {if $config->userSystem->is_drupal || $config->userFramework EQ 'WordPress'}
index 9967cebfdecbb27ff72eacb3f7f5789cfeb1d17b..6b730b171bc1d613aecf8018cf57ebe0d0e8530e 100644 (file)
@@ -218,7 +218,7 @@ class CRM_Batch_Form_EntryTest extends CiviUnitTestCase {
     $params = $this->getContributionData();
     $this->assertTrue($form->testProcessContribution($params));
     $result = $this->callAPISuccess('contribution', 'get', ['return' => 'total_amount']);
-    $this->assertEquals(2, $result['count']);
+    $this->assertEquals(3, $result['count']);
     foreach ($result['values'] as $contribution) {
       $this->assertEquals($this->callAPISuccess('line_item', 'getvalue', [
         'contribution_id' => $contribution['id'],
@@ -226,6 +226,11 @@ class CRM_Batch_Form_EntryTest extends CiviUnitTestCase {
 
       ]), $contribution['total_amount']);
     }
+    $checkResult = $this->callAPISuccess('Contribution', 'get', ['check_number' => ['IS NOT NULL' => 1]]);
+    $this->assertEquals(1, $checkResult['count']);
+    $entityFinancialTrxn = $this->callAPISuccess('EntityFinancialTrxn', 'get', ['entity_table' => 'civicrm_contribution', 'entity_id' => $checkResult['id']]);
+    $financialTrxn = $this->callAPISuccess('FinancialTrxn', 'get', ['id' => $entityFinancialTrxn['values'][$entityFinancialTrxn['id']]['financial_trxn_id']]);
+    $this->assertEquals('1234', $financialTrxn['values'][$financialTrxn['id']]['check_number']);
   }
 
   /**
@@ -373,8 +378,17 @@ class CRM_Batch_Form_EntryTest extends CiviUnitTestCase {
           'check_number' => NULL,
           'contribution_status_id' => 1,
         ],
+        3 => [
+          'financial_type' => 1,
+          'total_amount' => $this->formatMoneyInput(1500.15),
+          'receive_date' => '2013-07-24',
+          'receive_date_time' => NULL,
+          'payment_instrument' => 4,
+          'contribution_check_number' => '1234',
+          'contribution_status_id' => 1,
+        ],
       ],
-      'actualBatchTotal' => $this->formatMoneyInput(3000.30),
+      'actualBatchTotal' => $this->formatMoneyInput(4500.45),
 
     ];
   }
index 44c958ec0698bec51fc582e832949c8b165fb0ca..d9ba98acce9742a81d5b3f09427b8667ee6fc0d7 100644 (file)
@@ -1623,4 +1623,63 @@ Price Field - Price Field 1        1   $ 100.00      $ 100.00
     $this->assertEquals("Hello", $membership2["custom_{$membershipCustomField['id']}"]);
   }
 
+  /**
+   * Test non-membership donation on a contribution page
+   * using membership priceset.
+   */
+  public function testDonationOnMembershipPagePriceset() {
+    $contactID = $this->individualCreate();
+    $this->createPriceSetWithPage();
+    $form = new CRM_Contribute_Form_Contribution_Confirm();
+    $form->controller = new CRM_Core_Controller();
+    $form->_params = [
+      'id' => $this->_ids['contribution_page'],
+      "qfKey" => "donotcare",
+      "priceSetId" => $this->_ids['price_set'],
+      'price_set_id' => $this->_ids['price_set'],
+      "price_" . $this->_ids['price_field'][0] => $this->_ids['price_field_value']['cont'],
+      "invoiceID" => "9a6f7b49358dc31c3604e463b225c5be",
+      "email" => "admin@example.com",
+      "currencyID" => "USD",
+      'description' => "Membership Contribution",
+      'contact_id' => $contactID,
+      'select_contact_id' => $contactID,
+      'useForMember' => 1,
+      'skipLineItem' => 0,
+      'email-5' => 'test@test.com',
+      'amount' => 10,
+      'tax_amount' => NULL,
+      'is_pay_later' => 1,
+      'is_quick_config' => 1,
+    ];
+    $form->submit($form->_params);
+
+    $contribution = $this->callAPISuccessGetSingle('Contribution', [
+      'contact_id' => $contactID,
+    ]);
+    //Check no membership is created.
+    $this->callAPIFailure('Membership', 'getsingle', [
+      'contact_id' => $contactID,
+    ]);
+    $this->contributionDelete($contribution['id']);
+
+    //Choose Membership Priceset
+    $form->_params["price_{$this->_ids['price_field'][0]}"] = $this->_ids['price_field_value'][0];
+    $form->_params["amount"] = 20;
+    $form->submit($form->_params);
+
+    $contribution = $this->callAPISuccessGetSingle('Contribution', [
+      'contact_id' => $contactID,
+    ]);
+    //Check membership is created for the contact.
+    $membership = $this->callAPISuccessGetSingle('Membership', [
+      'contact_id' => $contactID,
+    ]);
+    $membershipPayment = $this->callAPISuccessGetSingle('MembershipPayment', [
+      'contribution_id' => $contribution['id'],
+    ]);
+    $this->assertEquals($membershipPayment['membership_id'], $membership['id']);
+    $this->membershipDelete($membership['id']);
+  }
+
 }
index a00a9ca67a9ab0d4ae86299fa91b16e14f138c86..45786d9de899d0bcf99accc6743e83fa8169be31 100644 (file)
@@ -432,4 +432,28 @@ class CRM_Core_ResourcesTest extends CiviUnitTestCase {
     $this->assertEquals($expected, CRM_Core_Resources::isFullyFormedUrl($url));
   }
 
+  /**
+   * Test for hook_civicrm_entityRefFilters().
+   *
+   */
+  public function testEntityRefFiltersHook() {
+    CRM_Utils_Hook_UnitTests::singleton()->setHook('civicrm_entityRefFilters', [$this, 'entityRefFilters']);
+    $data = CRM_Core_Resources::getEntityRefMetadata();
+    $this->assertEquals(count($data['links']['Contact']), 4);
+    $this->assertEquals(!empty($data['links']['Contact']['new_staff']), TRUE);
+  }
+
+  /**
+   * @param array $filters
+   * @param array $links
+   */
+  public function entityRefFilters(&$filters, &$links) {
+    $links['Contact']['new_staff'] = [
+      'label' => ts('New Staff'),
+      'url' => '/civicrm/profile/create&reset=1&context=dialog&gid=5',
+      'type' => 'Individual',
+      'icon' => 'fa-user',
+    ];
+  }
+
 }
index ad220feff66b16f2c17d43a449a9b6fc22bc3d01..a6fd93fce7d4a8381a761ffb84f156cc5dd97ebf 100644 (file)
@@ -1818,9 +1818,9 @@ class CRM_Export_BAO_ExportTest extends CiviUnitTestCase {
     return [
       'participant_campaign_id' => 'participant_campaign_id varchar(16)',
       'participant_contact_id' => 'participant_contact_id varchar(16)',
-      'componentpaymentfield_contribution_status' => 'componentpaymentfield_contribution_status text',
+      'componentpaymentfield_contribution_status' => 'componentpaymentfield_contribution_status varchar(255)',
       'currency' => 'currency varchar(3)',
-      'componentpaymentfield_received_date' => 'componentpaymentfield_received_date text',
+      'componentpaymentfield_received_date' => 'componentpaymentfield_received_date varchar(32)',
       'default_role_id' => 'default_role_id varchar(16)',
       'participant_discount_name' => 'participant_discount_name varchar(16)',
       'event_id' => 'event_id varchar(16)',
@@ -1843,7 +1843,7 @@ class CRM_Export_BAO_ExportTest extends CiviUnitTestCase {
       'participant_register_date' => 'participant_register_date varchar(32)',
       'participant_registered_by_id' => 'participant_registered_by_id varchar(16)',
       'participant_is_test' => 'participant_is_test varchar(16)',
-      'componentpaymentfield_total_amount' => 'componentpaymentfield_total_amount text',
+      'componentpaymentfield_total_amount' => 'componentpaymentfield_total_amount varchar(32)',
       'componentpaymentfield_transaction_id' => 'componentpaymentfield_transaction_id varchar(255)',
       'transferred_to_contact_id' => 'transferred_to_contact_id varchar(16)',
     ];
index 1d516932bd88ece0b495557a7bad6ea74b0e9f5d..d89fde7a57b28266524620cbb934b9bedc748656 100644 (file)
@@ -785,4 +785,169 @@ class CRM_Member_BAO_MembershipTest extends CiviUnitTestCase {
     $this->assertEquals(1, $membershipAfterProcess['is_override']);
   }
 
+  /**
+   * @throws \CRM_Core_Exception
+   */
+  public function testMembershipPaymentForSingleContributionMultipleMembership() {
+    $membershipTypeID1 = $this->membershipTypeCreate(['name' => 'Parent']);
+    $membershipTypeID2 = $this->membershipTypeCreate(['name' => 'Child']);
+    $financialTypeId = $this->getFinancialTypeId('Member Dues');
+    $priceSet = $this->callAPISuccess('price_set', 'create', [
+      'is_quick_config' => 0,
+      'extends' => 'CiviMember',
+      'financial_type_id' => $financialTypeId,
+      'title' => 'Family Membership',
+    ]);
+    $priceSetID = $priceSet['id'];
+    $priceField = $this->callAPISuccess('price_field', 'create', [
+      'price_set_id' => $priceSetID,
+      'label' => 'Memberships',
+      'html_type' => 'Radio',
+    ]);
+    $priceFieldValue = $this->callAPISuccess('price_field_value', 'create', [
+      'price_set_id' => $priceSetID,
+      'price_field_id' => $priceField['id'],
+      'label' => 'Parent',
+      'amount' => 100,
+      'financial_type_id' => $financialTypeId,
+      'membership_type_id' => $membershipTypeID1,
+      'membership_num_terms' => 1,
+    ]);
+    $priceFieldValueId = [1 => $priceFieldValue['id']];
+    $priceFieldValue = $this->callAPISuccess('price_field_value', 'create', [
+      'price_set_id' => $priceSetID,
+      'price_field_id' => $priceField['id'],
+      'label' => 'Child',
+      'amount' => 50,
+      'financial_type_id' => $financialTypeId,
+      'membership_type_id' => $membershipTypeID2,
+      'membership_num_terms' => 1,
+    ]);
+    $priceFieldValueId[2] = $priceFieldValue['id'];
+    $parentContactId = $this->individualCreate();
+    $contributionRecur = $this->callAPISuccess('contribution_recur', 'create', [
+      'contact_id' => $parentContactId,
+      'amount' => 200,
+      'frequency_unit' => 'day',
+      'frequency_interval' => 1,
+      'installments' => 2,
+      'start_date' => 'yesterday',
+      'create_date' => 'yesterday',
+      'modified_date' => 'yesterday',
+      'cancel_date' => NULL,
+      'end_date' => '+ 2 weeks',
+      'processor_id' => '643411460836',
+      'trxn_id' => 'e0d0808e26f3e661c6c18eb7c039d363',
+      'invoice_id' => 'e0d0808e26f3e661c6c18eb7c039d363',
+      'contribution_status_id' => 'In Progress',
+      'cycle_day' => 1,
+      'next_sched_contribution_date' => '+ 1 week',
+      'auto_renew' => 0,
+      'currency' => 'USD',
+      'payment_processor_id' => $this->paymentProcessorCreate(),
+      'financial_type_id' => $financialTypeId,
+      'payment_instrument_id' => 'Credit Card',
+    ]);
+    $contribution = $this->callAPISuccess('contribution', 'create', [
+      'total_amount' => 200,
+      'contribution_recur_id' => $contributionRecur['id'],
+      'currency' => 'USD',
+      'contact_id' => $parentContactId,
+      'financial_type_id' => $financialTypeId,
+      'contribution_status_id' => 'Completed',
+      'skipLineItem' => TRUE,
+      'is_recur' => TRUE,
+    ]);
+    $params[] = [
+      'contact_id' => $parentContactId,
+      'membership_type_id' => $membershipTypeID1,
+      'contribution_recur_id' => $contributionRecur['id'],
+      'join_date' => date('Ymd', time()),
+      'start_date' => date('Ymd', time()),
+      'end_date' => date('Ymd', strtotime('+1 year')),
+      'skipLineItem' => TRUE,
+      'source' => 'Payment',
+      'line_items' => [
+        'price_field_id' => $priceField['id'],
+        'price_field_value_id' => $priceFieldValueId[1],
+        'label' => 'Parent',
+        'contribution_id' => $contribution['id'],
+        'membership_type_id' => $membershipTypeID1,
+        'qty' => 1,
+        'unit_price' => 100,
+        'line_total' => 100,
+        'financial_type_id' => $financialTypeId,
+        'entity_table' => 'civicrm_membership',
+      ],
+    ];
+    $params[] = [
+      'contact_id' => $this->individualCreate(),
+      'membership_type_id' => $membershipTypeID2,
+      'contribution_recur_id' => $contributionRecur['id'],
+      'join_date' => date('Ymd', time()),
+      'start_date' => date('Ymd', time()),
+      'end_date' => date('Ymd', strtotime('+1 year')),
+      'skipLineItem' => TRUE,
+      'source' => 'Payment',
+      'line_items' => [
+        'price_field_id' => $priceField['id'],
+        'price_field_value_id' => $priceFieldValueId[2],
+        'label' => 'Child',
+        'contribution_id' => $contribution['id'],
+        'qty' => 1,
+        'unit_price' => 50,
+        'line_total' => 50,
+        'membership_type_id' => $membershipTypeID2,
+        'financial_type_id' => $financialTypeId,
+        'entity_table' => 'civicrm_membership',
+      ],
+    ];
+    $params[] = [
+      'contact_id' => $this->individualCreate(),
+      'membership_type_id' => $membershipTypeID2,
+      'contribution_recur_id' => $contributionRecur['id'],
+      'join_date' => date('Ymd', time()),
+      'start_date' => date('Ymd', time()),
+      'skipLineItem' => TRUE,
+      'end_date' => date('Ymd', strtotime('+1 year')),
+      'source' => 'Payment',
+      'line_items' => [
+        'price_field_id' => $priceField['id'],
+        'price_field_value_id' => $priceFieldValueId[2],
+        'label' => 'Child',
+        'contribution_id' => $contribution['id'],
+        'qty' => 1,
+        'membership_type_id' => $membershipTypeID2,
+        'unit_price' => 50,
+        'line_total' => 50,
+        'financial_type_id' => $financialTypeId,
+        'entity_table' => 'civicrm_membership',
+      ],
+    ];
+
+    foreach ($params as $key => $param) {
+      $membership = $this->callAPISuccess('membership', 'create', $param);
+      $param['line_items']['entity_id'] = $membership['id'];
+      $memPayments = new CRM_Member_BAO_MembershipPayment();
+      $paymentParams = [
+        'membership_id' => $membership['id'],
+        'contribution_id' => $contribution['id'],
+      ];
+      $memPayments->copyValues($paymentParams);
+      $memPayments->save();
+      $lineItemBAO = new CRM_Price_BAO_LineItem();
+      $lineItemBAO->copyValues($param['line_items']);
+      $lineItemBAO->save();
+    }
+    $this->callAPISuccess('contribution', 'repeattransaction', [
+      'original_contribution_id' => $contribution['id'],
+      'contribution_status_id' => 'Completed',
+      'trxn_id' => uniqid(),
+    ]);
+    $this->callAPISuccessGetCount('Contribution', [], 2);
+    $this->callAPISuccessGetCount('LineItem', [], 6);
+    $this->membershipTypeDelete(['id' => $membershipTypeID1]);
+    $this->membershipTypeDelete(['id' => $membershipTypeID2]);
+  }
+
 }
index 8517f568b914fbc7e7d809ccc9810f301210ab21..b1f064c4e3178540425bbb300bcc416a8559c1e9 100644 (file)
@@ -237,6 +237,39 @@ class CRM_Utils_JSTest extends CiviUnitTestCase {
     $this->assertEquals($expectedOutput, CRM_Utils_JS::decode($input));
   }
 
+  public static function encodeExamples() {
+    return [
+      [
+        ['a' => 'Apple', 'b' => 'Banana', 'c' => [0, -2, 3.15]],
+        "{a: 'Apple', b: 'Banana', c: [0, -2, 3.15]}",
+      ],
+      [
+        ['a' => ['foo', 'bar'], 'b' => ["'a'" => ['foo/bar&', 'bar(foo)'], 'b' => ['a' => ["fo\\\\'oo", '"bar"'], 'b' => []]]],
+        "{a: ['foo', 'bar'], b: {\"'a'\": ['foo/bar&', 'bar(foo)'], b: {a: ['fo\\\\\\\\\\'oo', '\"bar\"'], b: {}}}}",
+      ],
+      [TRUE, 'true'],
+      [' ', "' '"],
+      [FALSE, 'false'],
+      [NULL, 'null'],
+      ['true', "'true'"],
+      ['"false"', "'\"false\"'"],
+      ['0.5', "'0.5'"],
+      [0.5, '0.5'],
+      [[], "{}"],
+    ];
+  }
+
+  /**
+   * @param string $input
+   * @param string $expectedOutput
+   * @dataProvider encodeExamples
+   */
+  public function testEncode($input, $expectedOutput) {
+    $result = CRM_Utils_JS::encode($input);
+    $this->assertEquals($expectedOutput, $result);
+    $this->assertEquals($input, CRM_Utils_JS::decode($result));
+  }
+
   /**
    * @return array
    */
index 0b685ffe69109429942a3401c61fb2634e5ba516..8cc6355d740174084fb3ccc21fbff8027d7ad92c 100644 (file)
@@ -334,12 +334,6 @@ class CiviUnitTestCase extends PHPUnit\Framework\TestCase {
     // disable any left-over test extensions
     CRM_Core_DAO::executeQuery('DELETE FROM civicrm_extension WHERE full_name LIKE "test.%"');
 
-    $extensions = \CRM_Extension_System::singleton()->getManager();
-    $api4Status = $extensions->getStatus('org.civicrm.api4');
-    if ($api4Status != $extensions::STATUS_INSTALLED && $api4Status != $extensions::STATUS_UNKNOWN) {
-      $extensions->enable(['org.civicrm.api4']);
-    }
-
     // reset all the caches
     CRM_Utils_System::flushCache();
 
index 5a05bcabf9e7d7a82d579067ce68555b70292759..4c1fff3cd2570d698567df26adf1e7bb6dbe4e77 100644 (file)
@@ -24,8 +24,32 @@ if (CIVICRM_UF === 'UnitTests') {
   Civi\Test::headless()->apply();
 }
 
+spl_autoload_register(function($class) {
+  _phpunit_mockoloader('api\\v4\\', "tests/phpunit/api/v4/", $class);
+  _phpunit_mockoloader('Civi\\Api4\\', "tests/phpunit/api/v4/Mock/Api4/", $class);
+});
+
 // ------------------------------------------------------------------------------
 
+/**
+ * @param $prefix
+ * @param $base_dir
+ * @param $class
+ */
+function _phpunit_mockoloader($prefix, $base_dir, $class) {
+  $len = strlen($prefix);
+  if (strncmp($prefix, $class, $len) !== 0) {
+    return;
+  }
+
+  global $civicrm_root;
+  $relative_class = substr($class, $len);
+  $file = $civicrm_root . '/' . $base_dir . str_replace('\\', '/', $relative_class) . '.php';
+  if (file_exists($file)) {
+    require $file;
+  }
+}
+
 /**
  * Call the "cv" command.
  *
index fd0c260eb410a565fc41320f5f4ea32773fc05ca..c3bd0573abd8a20536a84e3742259563aca69ab6 100644 (file)
@@ -458,7 +458,7 @@ class api_v3_ActivityTest extends CiviUnitTestCase {
    * Test civicrm_activity_create() using example code.
    */
   public function testActivityCreateExample() {
-    require_once 'api/v3/examples/Activity/Create.php';
+    require_once 'api/v3/examples/Activity/Create.ex.php';
     $result = activity_create_example();
     $expectedResult = activity_create_expectedresult();
     // Compare everything *except* timestamps.
index 0de1e0b4c436cb052213faff009fbbcb8b67496e..be3c2059ecd7d5c98f88bf73b61aea3b03455fd9 100644 (file)
@@ -228,12 +228,46 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
     $this->callAPISuccessGetSingle('Contribution', ['is_test' => 1]);
   }
 
+  /**
+   * Test Creating a check contribution with original check_number field
+   */
+  public function testCreateCheckContribution() {
+    $params = $this->_params;
+    $params['contribution_check_number'] = 'bouncer';
+    $params['payment_instrument_id'] = 'Check';
+    $params['cancel_date'] = 'yesterday';
+    $params['receipt_date'] = 'yesterday';
+    $params['thankyou_date'] = 'yesterday';
+    $params['revenue_recognition_date'] = 'yesterday';
+    $params['amount_level'] = 'Unreasonable';
+    $params['cancel_reason'] = 'You lose sucker';
+    $params['creditnote_id'] = 'sudo rm -rf';
+    $params['tax_amount'] = '1';
+    $address = $this->callAPISuccess('Address', 'create', [
+      'street_address' => 'Knockturn Alley',
+      'contact_id' => $this->_individualId,
+      'location_type_id' => 'Home',
+    ]);
+    $params['address_id'] = $address['id'];
+    $contributionPage = $this->contributionPageCreate();
+    $params['contribution_page_id'] = $contributionPage['id'];
+    $params['campaign_id'] = $this->campaignCreate();
+    $contributionID = $this->contributionCreate($params);
+    $getResult = $this->callAPISuccess('Contribution', 'get', ['id' => $contributionID]);
+    $this->assertEquals('bouncer', $getResult['values'][$contributionID]['check_number']);
+    $entityFinancialTrxn = $this->callAPISuccess('EntityFinancialTrxn', 'get', ['entity_id' => $contributionID, 'entity_table' => 'civicrm_contribution']);
+    foreach ($entityFinancialTrxn['values'] as $eft) {
+      $financialTrxn = $this->callAPISuccess('FinancialTrxn', 'get', ['id' => $eft['financial_trxn_id']]);
+      $this->assertEquals('bouncer', $financialTrxn['values'][$financialTrxn['id']]['check_number']);
+    }
+  }
+
   /**
    * Test the 'return' param works for all fields.
    */
   public function testGetContributionReturnFunctionality() {
     $params = $this->_params;
-    $params['check_number'] = 'bouncer';
+    $params['contribution_check_number'] = 'bouncer';
     $params['payment_instrument_id'] = 'Check';
     $params['cancel_date'] = 'yesterday';
     $params['receipt_date'] = 'yesterday';
@@ -301,6 +335,11 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
       }
       $this->assertTrue((!empty($contribution[$returnField]) || $contribution[$returnField] === "0"), $returnField);
     }
+    $entityFinancialTrxn = $this->callAPISuccess('EntityFinancialTrxn', 'get', ['entity_id' => $contributionID, 'entity_table' => 'civicrm_contribution']);
+    foreach ($entityFinancialTrxn['values'] as $eft) {
+      $financialTrxn = $this->callAPISuccess('FinancialTrxn', 'get', ['id' => $eft['financial_trxn_id']]);
+      $this->assertEquals('bouncer', $financialTrxn['values'][$financialTrxn['id']]['check_number']);
+    }
   }
 
   /**
@@ -923,7 +962,7 @@ class api_v3_ContributionTest extends CiviUnitTestCase {
   public function testContributionCreateExample() {
     //make sure at least on page exists since there is a truncate in tear down
     $this->callAPISuccess('contribution_page', 'create', $this->_pageParams);
-    require_once 'api/v3/examples/Contribution/Create.php';
+    require_once 'api/v3/examples/Contribution/Create.ex.php';
     $result = contribution_create_example();
     $id = $result['id'];
     $expectedResult = contribution_create_expectedresult();
index 1e7ad9d728fabfda35872ed1fabdb6ff68d59a1b..86297dca0abb3b024566c160008b29c0132a1322 100644 (file)
@@ -206,7 +206,7 @@ class api_v3_CustomFieldTest extends CiviUnitTestCase {
   {
 
   $customGroup = $this->customGroupCreate('Individual','date_test_group',3);
-  require_once 'api/v3/examples/CustomField/Create.php';
+  require_once 'api/v3/examples/CustomField/Create.ex.php';
   $result = custom_field_create_example();
   $expectedResult = custom_field_create_expectedresult();
   $this->assertEquals($result,$expectedResult);
index f8e1d8bc2c9f349c6bff6d6e5d52cd91dc11e86d..6434ffbfd1abdf49f4333a6310d985f6ae539c19 100644 (file)
@@ -132,6 +132,16 @@ class api_v3_MailingTest extends CiviUnitTestCase {
     $this->assertTrue(isset($types['values']['traditional']));
   }
 
+  /**
+   * Check that default header+footer are available.
+   */
+  public function testHeaderFooterOptions() {
+    $headers = $this->callAPISuccess('Mailing', 'getoptions', ['field' => 'header']);
+    $this->assertTrue(in_array('Mailing Header', $headers['values']));
+    $footers = $this->callAPISuccess('Mailing', 'getoptions', ['field' => 'footer']);
+    $this->assertTrue(in_array('Mailing Footer', $footers['values']));
+  }
+
   /**
    * The `template_options` field should be treated a JSON object.
    *
index 4887d5f80d4490e14e1560b8dee0bb78574debc7..50bc41e38d118dc97f38e3963a6fe0bb45a5c705 100644 (file)
@@ -320,7 +320,7 @@ class api_v3_NoteTest extends CiviUnitTestCase {
  * Test civicrm note create() using example code.
  */
 function testNoteCreateExample() {
-  require_once 'api/v3/examples/Note/Create.php';
+  require_once 'api/v3/examples/Note/Create.ex.php';
   $result = Note_get_example();
   $expectedResult = Note_get_expectedresult();
   $this->assertEquals($result, $expectedResult);
index 27f8e8acade3adf1ff0ebfa8457c60ac6475debb..60ccd4e5ceacb8cf1607e4d1f7b92d6242637e00 100644 (file)
@@ -123,7 +123,7 @@ class api_v3_PaymentProcessorTest extends CiviUnitTestCase {
    * Test  using example code.
    */
   public function testPaymentProcessorCreateExample() {
-    require_once 'api/v3/examples/PaymentProcessor/Create.php';
+    require_once 'api/v3/examples/PaymentProcessor/Create.ex.php';
     $result = payment_processor_create_example();
     $expectedResult = payment_processor_create_expectedresult();
     $this->assertAPISuccess($result);
index 1087ba739770ee7cd4418f5b942f1e048fd7eea4..7913770d5de7f3512568f76141cc00fe7430bdc9 100644 (file)
@@ -90,7 +90,7 @@ class api_v3_PaymentProcessorTypeTest extends CiviUnitTestCase {
    * Test  using example code.
    */
   public function testPaymentProcessorTypeCreateExample() {
-    require_once 'api/v3/examples/PaymentProcessorType/Create.php';
+    require_once 'api/v3/examples/PaymentProcessorType/Create.ex.php';
     $result = payment_processor_type_create_example();
     $expectedResult = payment_processor_type_create_expectedresult();
     $this->assertAPISuccess($result);
index c0b18364ab738f04a125a8fcb74950a0e4d6826a..f71f28fed22f4dcbad9a551c14593417b489f64b 100644 (file)
@@ -124,7 +124,7 @@ class api_v3_RelationshipTypeTest extends CiviUnitTestCase {
    */
   public function testRelationshipTypeCreateExample($version) {
     $this->_apiversion = $version;
-    require_once 'api/v3/examples/RelationshipType/Create.php';
+    require_once 'api/v3/examples/RelationshipType/Create.ex.php';
     $result = relationship_type_create_example();
     $expectedResult = relationship_type_create_expectedresult();
     $this->assertAPISuccess($result);
index 8eb25dc38f847484a4a19ce29998672f7b506d50..b1d9bf3a329cf0fda23870c32a4b0350ff1a49e0 100644 (file)
@@ -162,7 +162,7 @@ class api_v3_TaxContributionPageTest extends CiviUnitTestCase {
     ];
     $result = $this->callAPISuccess('payment_processor', 'create', $paymentProceParams);
     $this->_ids['paymentProcessID'] = $result['id'];
-    require_once 'api/v3/examples/PaymentProcessor/Create.php';
+    require_once 'api/v3/examples/PaymentProcessor/Create.ex.php';
     $this->assertAPISuccess($result);
   }
 
index 3140685fcb1203c73a5cd32a376c7afd19dc9531..46c11e49b98c01c75526084550ef5258659ef9bc 100644 (file)
@@ -255,7 +255,7 @@ class api_v3_UFJoinTest extends CiviUnitTestCase {
    */
   public function testUFJoinCreateExample($version) {
     $this->_apiversion = $version;
-    require_once 'api/v3/examples/UFJoin/Create.php';
+    require_once 'api/v3/examples/UFJoin/Create.ex.php';
     $result = UF_join_create_example();
     $expectedResult = UF_join_create_expectedresult();
     $this->assertEquals($result, $expectedResult);
index 0874df677bdb03377980080ac4152d7a49275b63..e12a470b1b79f5a2aee0769be6ecf8adfe510265 100644 (file)
@@ -132,7 +132,7 @@ class api_v3_UFMatchTest extends CiviUnitTestCase {
    */
   public function testUFMatchGetExample($version) {
     $this->_apiversion = $version;
-    require_once 'api/v3/examples/UFMatch/Get.php';
+    require_once 'api/v3/examples/UFMatch/Get.ex.php';
     $result = UF_match_get_example();
     $expectedResult = UF_match_get_expectedresult();
     $this->assertEquals($result, $expectedResult);
diff --git a/tests/phpunit/api/v4/Action/BaseCustomValueTest.php b/tests/phpunit/api/v4/Action/BaseCustomValueTest.php
new file mode 100644 (file)
index 0000000..e75acdc
--- /dev/null
@@ -0,0 +1,66 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use api\v4\UnitTestCase;
+use api\v4\Traits\TableDropperTrait;
+
+abstract class BaseCustomValueTest extends UnitTestCase {
+
+  use \api\v4\Traits\OptionCleanupTrait {
+    setUp as setUpOptionCleanup;
+  }
+  use TableDropperTrait;
+
+  /**
+   * Set up baseline for testing
+   */
+  public function setUp() {
+    $this->setUpOptionCleanup();
+    $cleanup_params = [
+      'tablesToTruncate' => [
+        'civicrm_custom_group',
+        'civicrm_custom_field',
+      ],
+    ];
+
+    $this->dropByPrefix('civicrm_value_mycontact');
+    $this->cleanup($cleanup_params);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/BasicActionsTest.php b/tests/phpunit/api/v4/Action/BasicActionsTest.php
new file mode 100644 (file)
index 0000000..0f546d8
--- /dev/null
@@ -0,0 +1,218 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use api\v4\UnitTestCase;
+use Civi\Api4\MockBasicEntity;
+
+/**
+ * @group headless
+ */
+class BasicActionsTest extends UnitTestCase {
+
+  public function testCrud() {
+    MockBasicEntity::delete()->addWhere('id', '>', 0)->execute();
+
+    $id1 = MockBasicEntity::create()->addValue('foo', 'one')->execute()->first()['id'];
+
+    $result = MockBasicEntity::get()->execute();
+    $this->assertCount(1, $result);
+
+    $id2 = MockBasicEntity::create()->addValue('foo', 'two')->execute()->first()['id'];
+
+    $result = MockBasicEntity::get()->selectRowCount()->execute();
+    $this->assertEquals(2, $result->count());
+
+    MockBasicEntity::update()->addWhere('id', '=', $id2)->addValue('foo', 'new')->execute();
+
+    $result = MockBasicEntity::get()->addOrderBy('id', 'DESC')->setLimit(1)->execute();
+    $this->assertCount(1, $result);
+    $this->assertEquals('new', $result->first()['foo']);
+
+    $result = MockBasicEntity::save()
+      ->addRecord(['id' => $id1, 'foo' => 'one updated'])
+      ->addRecord(['id' => $id2])
+      ->addRecord(['foo' => 'three'])
+      ->addDefault('color', 'pink')
+      ->setReload(TRUE)
+      ->execute()
+      ->indexBy('id');
+
+    $this->assertEquals('new', $result[$id2]['foo']);
+    $this->assertEquals('three', $result->last()['foo']);
+    $this->assertCount(3, $result);
+    foreach ($result as $item) {
+      $this->assertEquals('pink', $item['color']);
+    }
+
+    $this->assertEquals('one updated', MockBasicEntity::get()->addWhere('id', '=', $id1)->execute()->first()['foo']);
+
+    MockBasicEntity::delete()->addWhere('id', '=', $id2);
+    $result = MockBasicEntity::get()->execute();
+    $this->assertEquals('one updated', $result->first()['foo']);
+  }
+
+  public function testReplace() {
+    MockBasicEntity::delete()->addWhere('id', '>', 0)->execute();
+
+    $objects = [
+      ['group' => 'one', 'color' => 'red'],
+      ['group' => 'one', 'color' => 'blue'],
+      ['group' => 'one', 'color' => 'green'],
+      ['group' => 'two', 'color' => 'orange'],
+    ];
+
+    foreach ($objects as &$object) {
+      $object['id'] = MockBasicEntity::create()->setValues($object)->execute()->first()['id'];
+    }
+
+    // Keep red, change blue, delete green, and add yellow
+    $replacements = [
+      ['color' => 'red', 'id' => $objects[0]['id']],
+      ['color' => 'not blue', 'id' => $objects[1]['id']],
+      ['color' => 'yellow'],
+    ];
+
+    MockBasicEntity::replace()->addWhere('group', '=', 'one')->setRecords($replacements)->execute();
+
+    $newObjects = MockBasicEntity::get()->addOrderBy('id', 'DESC')->execute()->indexBy('id');
+
+    $this->assertCount(4, $newObjects);
+
+    $this->assertEquals('yellow', $newObjects->first()['color']);
+
+    $this->assertEquals('not blue', $newObjects[$objects[1]['id']]['color']);
+
+    // Ensure group two hasn't been altered
+    $this->assertEquals('orange', $newObjects[$objects[3]['id']]['color']);
+    $this->assertEquals('two', $newObjects[$objects[3]['id']]['group']);
+  }
+
+  public function testBatchFrobnicate() {
+    MockBasicEntity::delete()->addWhere('id', '>', 0)->execute();
+
+    $objects = [
+      ['group' => 'one', 'color' => 'red', 'number' => 10],
+      ['group' => 'one', 'color' => 'blue', 'number' => 20],
+      ['group' => 'one', 'color' => 'green', 'number' => 30],
+      ['group' => 'two', 'color' => 'blue', 'number' => 40],
+    ];
+    foreach ($objects as &$object) {
+      $object['id'] = MockBasicEntity::create()->setValues($object)->execute()->first()['id'];
+    }
+
+    $result = MockBasicEntity::batchFrobnicate()->addWhere('color', '=', 'blue')->execute();
+    $this->assertEquals(2, count($result));
+    $this->assertEquals([400, 1600], \CRM_Utils_Array::collect('frobnication', (array) $result));
+  }
+
+  public function testGetFields() {
+    $getFields = MockBasicEntity::getFields()->execute()->indexBy('name');
+
+    $this->assertCount(6, $getFields);
+    $this->assertEquals('Id', $getFields['id']['title']);
+    // Ensure default data type is "String" when not specified
+    $this->assertEquals('String', $getFields['color']['data_type']);
+
+    // Getfields should default to loadOptions = false and reduce them to bool
+    $this->assertTrue($getFields['group']['options']);
+    $this->assertFalse($getFields['id']['options']);
+
+    // Now load options
+    $getFields = MockBasicEntity::getFields()
+      ->addWhere('name', '=', 'group')
+      ->setLoadOptions(TRUE)
+      ->execute()->indexBy('name');
+
+    $this->assertCount(1, $getFields);
+    $this->assertArrayHasKey('one', $getFields['group']['options']);
+  }
+
+  public function testItemsToGet() {
+    $get = MockBasicEntity::get()
+      ->addWhere('color', 'NOT IN', ['yellow'])
+      ->addWhere('color', 'IN', ['red', 'blue'])
+      ->addWhere('color', '!=', 'green')
+      ->addWhere('group', '=', 'one')
+      ->addWhere('size', 'LIKE', 'big')
+      ->addWhere('shape', 'LIKE', '%a');
+
+    $itemsToGet = new \ReflectionMethod($get, '_itemsToGet');
+    $itemsToGet->setAccessible(TRUE);
+
+    $this->assertEquals(['red', 'blue'], $itemsToGet->invoke($get, 'color'));
+    $this->assertEquals(['one'], $itemsToGet->invoke($get, 'group'));
+    $this->assertEquals(['big'], $itemsToGet->invoke($get, 'size'));
+    $this->assertEmpty($itemsToGet->invoke($get, 'shape'));
+    $this->assertEmpty($itemsToGet->invoke($get, 'weight'));
+  }
+
+  public function testFieldsToGet() {
+    $get = MockBasicEntity::get()
+      ->addWhere('color', '!=', 'green');
+
+    $isFieldSelected = new \ReflectionMethod($get, '_isFieldSelected');
+    $isFieldSelected->setAccessible(TRUE);
+
+    // If no "select" is set, should always return true
+    $this->assertTrue($isFieldSelected->invoke($get, 'color'));
+    $this->assertTrue($isFieldSelected->invoke($get, 'shape'));
+    $this->assertTrue($isFieldSelected->invoke($get, 'size'));
+
+    // With a non-empty "select" fieldsToSelect() will return fields needed to evaluate each clause.
+    $get->addSelect('id');
+    $this->assertTrue($isFieldSelected->invoke($get, 'color'));
+    $this->assertTrue($isFieldSelected->invoke($get, 'id'));
+    $this->assertFalse($isFieldSelected->invoke($get, 'shape'));
+    $this->assertFalse($isFieldSelected->invoke($get, 'size'));
+    $this->assertFalse($isFieldSelected->invoke($get, 'weight'));
+    $this->assertFalse($isFieldSelected->invoke($get, 'group'));
+
+    $get->addClause('OR', ['shape', '=', 'round'], ['AND', [['size', '=', 'big'], ['weight', '!=', 'small']]]);
+    $this->assertTrue($isFieldSelected->invoke($get, 'color'));
+    $this->assertTrue($isFieldSelected->invoke($get, 'id'));
+    $this->assertTrue($isFieldSelected->invoke($get, 'shape'));
+    $this->assertTrue($isFieldSelected->invoke($get, 'size'));
+    $this->assertTrue($isFieldSelected->invoke($get, 'weight'));
+    $this->assertFalse($isFieldSelected->invoke($get, 'group'));
+
+    $get->addOrderBy('group');
+    $this->assertTrue($isFieldSelected->invoke($get, 'group'));
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/BasicCustomFieldTest.php b/tests/phpunit/api/v4/Action/BasicCustomFieldTest.php
new file mode 100644 (file)
index 0000000..7542c10
--- /dev/null
@@ -0,0 +1,215 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\Contact;
+use Civi\Api4\CustomField;
+use Civi\Api4\CustomGroup;
+
+/**
+ * @group headless
+ */
+class BasicCustomFieldTest extends BaseCustomValueTest {
+
+  public function testWithSingleField() {
+
+    $customGroup = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', 'MyContactFields')
+      ->addValue('extends', 'Contact')
+      ->execute()
+      ->first();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'FavColor')
+      ->addValue('custom_group_id', $customGroup['id'])
+      ->addValue('html_type', 'Text')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    $contactId = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Johann')
+      ->addValue('last_name', 'Tester')
+      ->addValue('contact_type', 'Individual')
+      ->addValue('MyContactFields.FavColor', 'Red')
+      ->execute()
+      ->first()['id'];
+
+    $contact = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addSelect('first_name')
+      ->addSelect('MyContactFields.FavColor')
+      ->addWhere('id', '=', $contactId)
+      ->addWhere('MyContactFields.FavColor', '=', 'Red')
+      ->execute()
+      ->first();
+
+    $this->assertEquals('Red', $contact['MyContactFields.FavColor']);
+
+    Contact::update()
+      ->addWhere('id', '=', $contactId)
+      ->addValue('MyContactFields.FavColor', 'Blue')
+      ->execute();
+
+    $contact = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addSelect('MyContactFields.FavColor')
+      ->addWhere('id', '=', $contactId)
+      ->execute()
+      ->first();
+
+    $this->assertEquals('Blue', $contact['MyContactFields.FavColor']);
+  }
+
+  public function testWithTwoFields() {
+
+    $customGroup = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', 'MyContactFields')
+      ->addValue('extends', 'Contact')
+      ->execute()
+      ->first();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'FavColor')
+      ->addValue('custom_group_id', $customGroup['id'])
+      ->addValue('html_type', 'Text')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'FavFood')
+      ->addValue('custom_group_id', $customGroup['id'])
+      ->addValue('html_type', 'Text')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    $contactId1 = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Johann')
+      ->addValue('last_name', 'Tester')
+      ->addValue('MyContactFields.FavColor', 'Red')
+      ->addValue('MyContactFields.FavFood', 'Cherry')
+      ->execute()
+      ->first()['id'];
+
+    $contactId2 = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'MaryLou')
+      ->addValue('last_name', 'Tester')
+      ->addValue('MyContactFields.FavColor', 'Purple')
+      ->addValue('MyContactFields.FavFood', 'Grapes')
+      ->execute()
+      ->first()['id'];
+
+    $contact = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addSelect('first_name')
+      ->addSelect('MyContactFields.FavColor')
+      ->addSelect('MyContactFields.FavFood')
+      ->addWhere('id', '=', $contactId1)
+      ->addWhere('MyContactFields.FavColor', '=', 'Red')
+      ->addWhere('MyContactFields.FavFood', '=', 'Cherry')
+      ->execute()
+      ->first();
+
+    $this->assertArrayHasKey('MyContactFields.FavColor', $contact);
+    $this->assertEquals('Red', $contact['MyContactFields.FavColor']);
+
+    Contact::update()
+      ->addWhere('id', '=', $contactId1)
+      ->addValue('MyContactFields.FavColor', 'Blue')
+      ->execute();
+
+    $contact = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addSelect('MyContactFields.FavColor')
+      ->addWhere('id', '=', $contactId1)
+      ->execute()
+      ->first();
+
+    $this->assertEquals('Blue', $contact['MyContactFields.FavColor']);
+
+    $search = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addClause('OR', ['MyContactFields.FavColor', '=', 'Blue'], ['MyContactFields.FavFood', '=', 'Grapes'])
+      ->addSelect('id')
+      ->addOrderBy('id')
+      ->execute()
+      ->indexBy('id');
+
+    $this->assertEquals([$contactId1, $contactId2], array_keys((array) $search));
+
+    $search = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addClause('NOT', ['MyContactFields.FavColor', '=', 'Purple'], ['MyContactFields.FavFood', '=', 'Grapes'])
+      ->addSelect('id')
+      ->addOrderBy('id')
+      ->execute()
+      ->indexBy('id');
+
+    $this->assertNotContains($contactId2, array_keys((array) $search));
+
+    $search = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addClause('NOT', ['MyContactFields.FavColor', '=', 'Purple'], ['MyContactFields.FavFood', '=', 'Grapes'])
+      ->addSelect('id')
+      ->addOrderBy('id')
+      ->execute()
+      ->indexBy('id');
+
+    $this->assertContains($contactId1, array_keys((array) $search));
+    $this->assertNotContains($contactId2, array_keys((array) $search));
+
+    $search = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->setWhere([['NOT', ['OR', [['MyContactFields.FavColor', '=', 'Blue'], ['MyContactFields.FavFood', '=', 'Grapes']]]]])
+      ->addSelect('id')
+      ->addOrderBy('id')
+      ->execute()
+      ->indexBy('id');
+
+    $this->assertNotContains($contactId1, array_keys((array) $search));
+    $this->assertNotContains($contactId2, array_keys((array) $search));
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/ChainTest.php b/tests/phpunit/api/v4/Action/ChainTest.php
new file mode 100644 (file)
index 0000000..70b5c9d
--- /dev/null
@@ -0,0 +1,88 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class ChainTest extends UnitTestCase {
+
+  public function testGetActionsWithFields() {
+    $actions = \Civi\Api4\Activity::getActions()
+      ->addChain('fields', \Civi\Api4\Activity::getFields()->setAction('$name'), 'name')
+      ->execute()
+      ->indexBy('name');
+
+    $this->assertEquals('Array', $actions['getActions']['fields']['params']['data_type']);
+  }
+
+  public function testGetEntityWithActions() {
+    $entities = \Civi\Api4\Entity::get()
+      ->addSelect('name')
+      ->setChain([
+        'actions' => ['$name', 'getActions', ['select' => ['name']], 'name'],
+      ])
+      ->execute()
+      ->indexBy('name');
+
+    $this->assertArrayHasKey('replace', $entities['Contact']['actions']);
+    $this->assertArrayHasKey('getLinks', $entities['Entity']['actions']);
+    $this->assertArrayNotHasKey('replace', $entities['Entity']['actions']);
+  }
+
+  public function testContactCreateWithGroup() {
+    $firstName = uniqid('cwtf');
+    $lastName = uniqid('cwtl');
+
+    $contact = \Civi\Api4\Contact::create()
+      ->addValue('first_name', $firstName)
+      ->addValue('last_name', $lastName)
+      ->addChain('group', \Civi\Api4\Group::create()->addValue('title', '$display_name'), 0)
+      ->addChain('add_to_group', \Civi\Api4\GroupContact::create()->addValue('contact_id', '$id')->addValue('group_id', '$group.id'), 0)
+      ->addChain('check_group', \Civi\Api4\GroupContact::get()->addWhere('group_id', '=', '$group.id'))
+      ->execute()
+      ->first();
+
+    $this->assertCount(1, $contact['check_group']);
+    $this->assertEquals($contact['id'], $contact['check_group'][0]['contact_id']);
+    $this->assertEquals($contact['group']['id'], $contact['check_group'][0]['group_id']);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/ComplexQueryTest.php b/tests/phpunit/api/v4/Action/ComplexQueryTest.php
new file mode 100644 (file)
index 0000000..0f69cd2
--- /dev/null
@@ -0,0 +1,122 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use api\v4\UnitTestCase;
+use Civi\Api4\Activity;
+
+/**
+ * @group headless
+ *
+ * This class tests a series of complex query situations described in the
+ * initial APIv4 specification
+ */
+class ComplexQueryTest extends UnitTestCase {
+
+  public function setUpHeadless() {
+    $relatedTables = [
+      'civicrm_activity',
+      'civicrm_activity_contact',
+    ];
+    $this->cleanup(['tablesToTruncate' => $relatedTables]);
+    $this->loadDataSet('DefaultDataSet');
+
+    return parent::setUpHeadless();
+  }
+
+  /**
+   * Fetch all phone call activities
+   * Expects at least one activity loaded from the data set.
+   */
+  public function testGetAllHousingSupportActivities() {
+    $results = Activity::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('activity_type.name', '=', 'Phone Call')
+      ->execute();
+
+    $this->assertGreaterThan(0, count($results));
+  }
+
+  /**
+   * Fetch all activities with a blue tag; and return all tags on the activities
+   */
+  public function testGetAllTagsForBlueTaggedActivities() {
+
+  }
+
+  /**
+   * Fetch contacts named 'Bob' and all of their blue activities
+   */
+  public function testGetAllBlueActivitiesForBobs() {
+
+  }
+
+  /**
+   * Get all contacts in a zipcode and return their Home or Work email addresses
+   */
+  public function testGetHomeOrWorkEmailsForContactsWithZipcode() {
+
+  }
+
+  /**
+   * Fetch all activities where Bob is the assignee or source
+   */
+  public function testGetActivitiesWithBobAsAssigneeOrSource() {
+
+  }
+
+  /**
+   * Get all contacts which
+   * (a) have address in zipcode 94117 or 94118 or in city "San Francisco","LA"
+   * and
+   * (b) are not deceased and
+   * (c) have a custom-field "most_important_issue=Environment".
+   */
+  public function testAWholeLotOfConditions() {
+
+  }
+
+  /**
+   * Get participants who attended CiviCon 2012 but not CiviCon 2013.
+   * Return their name and email.
+   */
+  public function testGettingNameAndEmailOfAttendeesOfCiviCon2012Only() {
+
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/ContactApiKeyTest.php b/tests/phpunit/api/v4/Action/ContactApiKeyTest.php
new file mode 100644 (file)
index 0000000..a894fc1
--- /dev/null
@@ -0,0 +1,245 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\Contact;
+use Civi\Api4\Email;
+
+/**
+ * @group headless
+ */
+class ContactApiKeyTest extends \api\v4\UnitTestCase {
+
+  public function testGetApiKey() {
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviCRM', 'add contacts', 'edit api keys', 'view all contacts', 'edit all contacts'];
+    $key = uniqid();
+
+    $contact = Contact::create()
+      ->addValue('first_name', 'Api')
+      ->addValue('last_name', 'Key0')
+      ->addValue('api_key', $key)
+      ->addChain('email', Email::create()
+        ->addValue('contact_id', '$id')
+        ->addValue('email', 'test@key.get'),
+        0
+      )
+      ->execute()
+      ->first();
+
+    // With sufficient permission we should see the key
+    $result = Contact::get()
+      ->addWhere('id', '=', $contact['id'])
+      ->addSelect('api_key')
+      ->execute()
+      ->first();
+    $this->assertEquals($key, $result['api_key']);
+
+    // Can also be fetched via join
+    $email = Email::get()
+      ->addSelect('contact.api_key')
+      ->addWhere('id', '=', $contact['email']['id'])
+      ->execute()->first();
+    $this->assertEquals($key, $email['contact.api_key']);
+
+    // Remove permission and we should not see the key
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviCRM'];
+    $result = Contact::get()
+      ->addWhere('id', '=', $contact['id'])
+      ->addSelect('api_key')
+      ->execute()
+      ->first();
+    $this->assertTrue(empty($result['api_key']));
+
+    // Also not available via join
+    $email = Email::get()
+      ->addSelect('contact.api_key')
+      ->addWhere('id', '=', $contact['email']['id'])
+      ->execute()->first();
+    $this->assertTrue(empty($email['contact.api_key']));
+
+    $result = Contact::get()
+      ->addWhere('id', '=', $contact['id'])
+      ->execute()
+      ->first();
+    $this->assertTrue(empty($result['api_key']));
+  }
+
+  public function testCreateWithInsufficientPermissions() {
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviCRM', 'add contacts'];
+    $key = uniqid();
+
+    $error = '';
+    try {
+      Contact::create()
+        ->addValue('first_name', 'Api')
+        ->addValue('last_name', 'Key1')
+        ->addValue('api_key', $key)
+        ->execute()
+        ->first();
+    }
+    catch (\Exception $e) {
+      $error = $e->getMessage();
+    }
+    $this->assertContains('key', $error);
+  }
+
+  public function testUpdateApiKey() {
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviCRM', 'edit all contacts'];
+    $key = uniqid();
+
+    $contact = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Api')
+      ->addValue('last_name', 'Key2')
+      ->addValue('api_key', $key)
+      ->execute()
+      ->first();
+
+    $error = '';
+    try {
+      // Try to update the key without permissions; nothing should happen
+      Contact::update()
+        ->addWhere('id', '=', $contact['id'])
+        ->addValue('api_key', "NotAllowed")
+        ->execute();
+    }
+    catch (\Exception $e) {
+      $error = $e->getMessage();
+    }
+
+    $result = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('id', '=', $contact['id'])
+      ->addSelect('api_key')
+      ->execute()
+      ->first();
+
+    $this->assertContains('key', $error);
+
+    // Assert key is still the same
+    $this->assertEquals($result['api_key'], $key);
+
+    // Now we can update the key
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviCRM', 'administer CiviCRM', 'edit all contacts'];
+
+    Contact::update()
+      ->addWhere('id', '=', $contact['id'])
+      ->addValue('api_key', "IGotThePower!")
+      ->execute();
+
+    $result = Contact::get()
+      ->addWhere('id', '=', $contact['id'])
+      ->addSelect('api_key')
+      ->execute()
+      ->first();
+
+    // Assert key was updated
+    $this->assertEquals($result['api_key'], "IGotThePower!");
+  }
+
+  public function testUpdateOwnApiKey() {
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviCRM', 'edit own api keys', 'edit all contacts'];
+    $key = uniqid();
+
+    $contact = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Api')
+      ->addValue('last_name', 'Key3')
+      ->addValue('api_key', $key)
+      ->execute()
+      ->first();
+
+    $error = '';
+    try {
+      // Try to update the key without permissions; nothing should happen
+      Contact::update()
+        ->addWhere('id', '=', $contact['id'])
+        ->addValue('api_key', "NotAllowed")
+        ->execute();
+    }
+    catch (\Exception $e) {
+      $error = $e->getMessage();
+    }
+
+    $this->assertContains('key', $error);
+
+    $result = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('id', '=', $contact['id'])
+      ->addSelect('api_key')
+      ->execute()
+      ->first();
+
+    // Assert key is still the same
+    $this->assertEquals($result['api_key'], $key);
+
+    // Now we can update the key
+    \CRM_Core_Session::singleton()->set('userID', $contact['id']);
+
+    Contact::update()
+      ->addWhere('id', '=', $contact['id'])
+      ->addValue('api_key', "MyId!")
+      ->execute();
+
+    $result = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('id', '=', $contact['id'])
+      ->addSelect('api_key')
+      ->execute()
+      ->first();
+
+    // Assert key was updated
+    $this->assertEquals($result['api_key'], "MyId!");
+  }
+
+  public function testApiKeyWithGetFields() {
+    // With sufficient permissions the field should exist
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviCRM', 'edit api keys'];
+    $this->assertArrayHasKey('api_key', \civicrm_api4('Contact', 'getFields', [], 'name'));
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviCRM', 'administer CiviCRM'];
+    $this->assertArrayHasKey('api_key', \civicrm_api4('Contact', 'getFields', [], 'name'));
+
+    // Field hidden from non-privileged users...
+    \CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviCRM', 'edit own api keys'];
+    $this->assertArrayNotHasKey('api_key', \civicrm_api4('Contact', 'getFields', [], 'name'));
+
+    // ...unless you disable 'checkPermissions'
+    $this->assertArrayHasKey('api_key', \civicrm_api4('Contact', 'getFields', ['checkPermissions' => FALSE], 'name'));
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/ContactChecksumTest.php b/tests/phpunit/api/v4/Action/ContactChecksumTest.php
new file mode 100644 (file)
index 0000000..c47f92d
--- /dev/null
@@ -0,0 +1,91 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\Contact;
+
+/**
+ * @group headless
+ */
+class ContactChecksumTest extends \api\v4\UnitTestCase {
+
+  public function testGetChecksum() {
+    $contact = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Check')
+      ->addValue('last_name', 'Sum')
+      ->addChain('cs', Contact::getChecksum()->setContactId('$id')->setTtl(500), 0)
+      ->execute()
+      ->first();
+
+    $result = Contact::validateChecksum()
+      ->setContactId($contact['id'])
+      ->setChecksum($contact['cs']['checksum'])
+      ->execute()
+      ->first();
+
+    $this->assertTrue($result['valid']);
+  }
+
+  public function testValidateChecksum() {
+    $cid = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Checker')
+      ->addValue('last_name', 'Sum')
+      ->execute()
+      ->first()['id'];
+
+    $goodCs = \CRM_Contact_BAO_Contact_Utils::generateChecksum($cid, NULL, 500);
+    $badCs = \CRM_Contact_BAO_Contact_Utils::generateChecksum($cid, strtotime('now - 1 week'), 1);
+
+    $result1 = Contact::validateChecksum()
+      ->setContactId($cid)
+      ->setChecksum($goodCs)
+      ->execute()
+      ->first();
+    $this->assertTrue($result1['valid']);
+
+    $result2 = Contact::validateChecksum()
+      ->setContactId($cid)
+      ->setChecksum($badCs)
+      ->execute()
+      ->first();
+    $this->assertFalse($result2['valid']);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/ContactGetTest.php b/tests/phpunit/api/v4/Action/ContactGetTest.php
new file mode 100644 (file)
index 0000000..abdd077
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\Contact;
+
+/**
+ * @group headless
+ */
+class ContactGetTest extends \api\v4\UnitTestCase {
+
+  public function testGetDeletedContacts() {
+    $last_name = uniqid('deleteContactTest');
+
+    $bob = Contact::create()
+      ->setValues(['first_name' => 'Bob', 'last_name' => $last_name])
+      ->execute()->first();
+
+    $jan = Contact::create()
+      ->setValues(['first_name' => 'Jan', 'last_name' => $last_name])
+      ->execute()->first();
+
+    $del = Contact::create()
+      ->setValues(['first_name' => 'Del', 'last_name' => $last_name, 'is_deleted' => 1])
+      ->execute()->first();
+
+    // Deleted contacts are not fetched by default
+    $this->assertCount(2, Contact::get()->addWhere('last_name', '=', $last_name)->selectRowCount()->execute());
+
+    // You can search for them specifically
+    $contacts = Contact::get()->addWhere('last_name', '=', $last_name)->addWhere('is_deleted', '=', 1)->addSelect('id')->execute();
+    $this->assertEquals($del['id'], $contacts->first()['id']);
+
+    // Or by id
+    $this->assertCount(3, Contact::get()->addWhere('id', 'IN', [$bob['id'], $jan['id'], $del['id']])->selectRowCount()->execute());
+
+    // Putting is_deleted anywhere in the where clause will disable the default
+    $contacts = Contact::get()->addClause('OR', ['last_name', '=', $last_name], ['is_deleted', '=', 0])->addSelect('id')->execute();
+    $this->assertContains($del['id'], $contacts->column('id'));
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/CreateCustomValueTest.php b/tests/phpunit/api/v4/Action/CreateCustomValueTest.php
new file mode 100644 (file)
index 0000000..d36742a
--- /dev/null
@@ -0,0 +1,99 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\CustomField;
+use Civi\Api4\CustomGroup;
+use Civi\Api4\OptionGroup;
+use Civi\Api4\OptionValue;
+
+/**
+ * @group headless
+ */
+class CreateCustomValueTest extends BaseCustomValueTest {
+
+  public function testGetWithCustomData() {
+    $optionValues = ['r' => 'Red', 'g' => 'Green', 'b' => 'Blue'];
+
+    $customGroup = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', 'MyContactFields')
+      ->addValue('extends', 'Contact')
+      ->execute()
+      ->first();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'Color')
+      ->addValue('option_values', $optionValues)
+      ->addValue('custom_group_id', $customGroup['id'])
+      ->addValue('html_type', 'Select')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    $customField = CustomField::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('label', '=', 'Color')
+      ->execute()
+      ->first();
+
+    $this->assertNotNull($customField['option_group_id']);
+    $optionGroupId = $customField['option_group_id'];
+
+    $optionGroup = OptionGroup::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('id', '=', $optionGroupId)
+      ->execute()
+      ->first();
+
+    $this->assertEquals('Color', $optionGroup['title']);
+
+    $createdOptionValues = OptionValue::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('option_group_id', '=', $optionGroupId)
+      ->execute()
+      ->getArrayCopy();
+
+    $values = array_column($createdOptionValues, 'value');
+    $labels = array_column($createdOptionValues, 'label');
+    $createdOptionValues = array_combine($values, $labels);
+
+    $this->assertEquals($optionValues, $createdOptionValues);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/CreateWithOptionGroupTest.php b/tests/phpunit/api/v4/Action/CreateWithOptionGroupTest.php
new file mode 100644 (file)
index 0000000..3b860ec
--- /dev/null
@@ -0,0 +1,220 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\CustomField;
+use Civi\Api4\CustomGroup;
+use Civi\Api4\Contact;
+
+/**
+ * @group headless
+ */
+class CreateWithOptionGroupTest extends BaseCustomValueTest {
+
+  /**
+   * Remove the custom tables
+   */
+  public function setUp() {
+    $this->dropByPrefix('civicrm_value_financial');
+    $this->dropByPrefix('civicrm_value_favorite');
+    parent::setUp();
+  }
+
+  public function testGetWithCustomData() {
+    $group = uniqid('fava');
+    $colorField = uniqid('colora');
+    $foodField = uniqid('fooda');
+
+    $customGroupId = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', $group)
+      ->addValue('extends', 'Contact')
+      ->execute()
+      ->first()['id'];
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', $colorField)
+      ->addValue('name', $colorField)
+      ->addValue('option_values', ['r' => 'Red', 'g' => 'Green', 'b' => 'Blue'])
+      ->addValue('custom_group_id', $customGroupId)
+      ->addValue('html_type', 'Select')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', $foodField)
+      ->addValue('name', $foodField)
+      ->addValue('option_values', ['1' => 'Corn', '2' => 'Potatoes', '3' => 'Cheese'])
+      ->addValue('custom_group_id', $customGroupId)
+      ->addValue('html_type', 'Select')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    $customGroupId = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', 'FinancialStuff')
+      ->addValue('extends', 'Contact')
+      ->execute()
+      ->first()['id'];
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'Salary')
+      ->addValue('custom_group_id', $customGroupId)
+      ->addValue('html_type', 'Number')
+      ->addValue('data_type', 'Money')
+      ->execute();
+
+    Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Jerome')
+      ->addValue('last_name', 'Tester')
+      ->addValue('contact_type', 'Individual')
+      ->addValue("$group.$colorField", 'r')
+      ->addValue("$group.$foodField", '1')
+      ->addValue('FinancialStuff.Salary', 50000)
+      ->execute();
+
+    $result = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addSelect('first_name')
+      ->addSelect("$group.$colorField.label")
+      ->addSelect("$group.$foodField.label")
+      ->addSelect('FinancialStuff.Salary')
+      ->addWhere("$group.$foodField.label", 'IN', ['Corn', 'Potatoes'])
+      ->addWhere('FinancialStuff.Salary', '>', '10000')
+      ->execute()
+      ->first();
+
+    $this->assertEquals('Red', $result["$group.$colorField.label"]);
+    $this->assertEquals('Corn', $result["$group.$foodField.label"]);
+    $this->assertEquals(50000, $result['FinancialStuff.Salary']);
+  }
+
+  public function testWithCustomDataForMultipleContacts() {
+    $group = uniqid('favb');
+    $colorField = uniqid('colorb');
+    $foodField = uniqid('foodb');
+
+    $customGroupId = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', $group)
+      ->addValue('extends', 'Contact')
+      ->execute()
+      ->first()['id'];
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', $colorField)
+      ->addValue('name', $colorField)
+      ->addValue('option_values', ['r' => 'Red', 'g' => 'Green', 'b' => 'Blue'])
+      ->addValue('custom_group_id', $customGroupId)
+      ->addValue('html_type', 'Select')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', $foodField)
+      ->addValue('name', $foodField)
+      ->addValue('option_values', ['1' => 'Corn', '2' => 'Potatoes', '3' => 'Cheese'])
+      ->addValue('custom_group_id', $customGroupId)
+      ->addValue('html_type', 'Select')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    $customGroupId = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', 'FinancialStuff')
+      ->addValue('extends', 'Contact')
+      ->execute()
+      ->first()['id'];
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'Salary')
+      ->addValue('custom_group_id', $customGroupId)
+      ->addValue('html_type', 'Number')
+      ->addValue('data_type', 'Money')
+      ->execute();
+
+    Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Red')
+      ->addValue('last_name', 'Corn')
+      ->addValue('contact_type', 'Individual')
+      ->addValue("$group.$colorField", 'r')
+      ->addValue("$group.$foodField", '1')
+      ->addValue('FinancialStuff.Salary', 10000)
+      ->execute();
+
+    Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Blue')
+      ->addValue('last_name', 'Cheese')
+      ->addValue('contact_type', 'Individual')
+      ->addValue("$group.$colorField", 'b')
+      ->addValue("$group.$foodField", '3')
+      ->addValue('FinancialStuff.Salary', 500000)
+      ->execute();
+
+    $result = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addSelect('first_name')
+      ->addSelect('last_name')
+      ->addSelect("$group.$colorField.label")
+      ->addSelect("$group.$foodField.label")
+      ->addSelect('FinancialStuff.Salary')
+      ->addWhere("$group.$foodField.label", 'IN', ['Corn', 'Cheese'])
+      ->execute();
+
+    $blueCheese = NULL;
+    foreach ($result as $contact) {
+      if ($contact['first_name'] === 'Blue') {
+        $blueCheese = $contact;
+      }
+    }
+
+    $this->assertEquals('Blue', $blueCheese["$group.$colorField.label"]);
+    $this->assertEquals('Cheese', $blueCheese["$group.$foodField.label"]);
+    $this->assertEquals(500000, $blueCheese['FinancialStuff.Salary']);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/CurrentFilterTest.php b/tests/phpunit/api/v4/Action/CurrentFilterTest.php
new file mode 100644 (file)
index 0000000..0dcaf49
--- /dev/null
@@ -0,0 +1,106 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\Relationship;
+use api\v4\UnitTestCase;
+use Civi\Api4\Contact;
+
+/**
+ * @group headless
+ */
+class CurrentFilterTest extends UnitTestCase {
+
+  public function testCurrentRelationship() {
+    $cid1 = Contact::create()->addValue('first_name', 'Bob1')->execute()->first()['id'];
+    $cid2 = Contact::create()->addValue('first_name', 'Bob2')->execute()->first()['id'];
+
+    $current = Relationship::create()->setValues([
+      'relationship_type_id' => 1,
+      'contact_id_a' => $cid1,
+      'contact_id_b' => $cid2,
+      'end_date' => 'now + 1 week',
+    ])->execute()->first();
+    $indefinite = Relationship::create()->setValues([
+      'relationship_type_id' => 2,
+      'contact_id_a' => $cid1,
+      'contact_id_b' => $cid2,
+    ])->execute()->first();
+    $expiring = Relationship::create()->setValues([
+      'relationship_type_id' => 3,
+      'contact_id_a' => $cid1,
+      'contact_id_b' => $cid2,
+      'end_date' => 'now',
+    ])->execute()->first();
+    $past = Relationship::create()->setValues([
+      'relationship_type_id' => 3,
+      'contact_id_a' => $cid1,
+      'contact_id_b' => $cid2,
+      'end_date' => 'now - 1 week',
+    ])->execute()->first();
+    $inactive = Relationship::create()->setValues([
+      'relationship_type_id' => 4,
+      'contact_id_a' => $cid1,
+      'contact_id_b' => $cid2,
+      'is_active' => 0,
+    ])->execute()->first();
+
+    $getCurrent = (array) Relationship::get()->setCurrent(TRUE)->execute()->indexBy('id');
+    $notCurrent = (array) Relationship::get()->setCurrent(FALSE)->execute()->indexBy('id');
+    $getAll = (array) Relationship::get()->execute()->indexBy('id');
+
+    $this->assertArrayHasKey($current['id'], $getAll);
+    $this->assertArrayHasKey($indefinite['id'], $getAll);
+    $this->assertArrayHasKey($expiring['id'], $getAll);
+    $this->assertArrayHasKey($past['id'], $getAll);
+    $this->assertArrayHasKey($inactive['id'], $getAll);
+
+    $this->assertArrayHasKey($current['id'], $getCurrent);
+    $this->assertArrayHasKey($indefinite['id'], $getCurrent);
+    $this->assertArrayHasKey($expiring['id'], $getCurrent);
+    $this->assertArrayNotHasKey($past['id'], $getCurrent);
+    $this->assertArrayNotHasKey($inactive['id'], $getCurrent);
+
+    $this->assertArrayNotHasKey($current['id'], $notCurrent);
+    $this->assertArrayNotHasKey($indefinite['id'], $notCurrent);
+    $this->assertArrayNotHasKey($expiring['id'], $notCurrent);
+    $this->assertArrayHasKey($past['id'], $notCurrent);
+    $this->assertArrayHasKey($inactive['id'], $notCurrent);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/CustomValuePerformanceTest.php b/tests/phpunit/api/v4/Action/CustomValuePerformanceTest.php
new file mode 100644 (file)
index 0000000..8a15b02
--- /dev/null
@@ -0,0 +1,130 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\Contact;
+use Civi\Api4\CustomField;
+use Civi\Api4\CustomGroup;
+use api\v4\Traits\QueryCounterTrait;
+
+/**
+ * @group headless
+ */
+class CustomValuePerformanceTest extends BaseCustomValueTest {
+
+  use QueryCounterTrait;
+
+  public function testQueryCount() {
+
+    $this->markTestIncomplete();
+
+    $customGroupId = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', 'MyContactFields')
+      ->addValue('title', 'MyContactFields')
+      ->addValue('extends', 'Contact')
+      ->execute()
+      ->first()['id'];
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'FavColor')
+      ->addValue('custom_group_id', $customGroupId)
+      ->addValue('options', ['r' => 'Red', 'g' => 'Green', 'b' => 'Blue'])
+      ->addValue('html_type', 'Select')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'FavAnimal')
+      ->addValue('custom_group_id', $customGroupId)
+      ->addValue('html_type', 'Text')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'FavLetter')
+      ->addValue('custom_group_id', $customGroupId)
+      ->addValue('html_type', 'Text')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'FavFood')
+      ->addValue('custom_group_id', $customGroupId)
+      ->addValue('html_type', 'Text')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    $this->beginQueryCount();
+
+    Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Red')
+      ->addValue('last_name', 'Tester')
+      ->addValue('contact_type', 'Individual')
+      ->addValue('MyContactFields.FavColor', 'r')
+      ->addValue('MyContactFields.FavAnimal', 'Sheep')
+      ->addValue('MyContactFields.FavLetter', 'z')
+      ->addValue('MyContactFields.FavFood', 'Coconuts')
+      ->execute();
+
+    Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addSelect('display_name')
+      ->addSelect('MyContactFields.FavColor.label')
+      ->addSelect('MyContactFields.FavColor.weight')
+      ->addSelect('MyContactFields.FavColor.is_default')
+      ->addSelect('MyContactFields.FavAnimal')
+      ->addSelect('MyContactFields.FavLetter')
+      ->addWhere('MyContactFields.FavColor', '=', 'r')
+      ->addWhere('MyContactFields.FavFood', '=', 'Coconuts')
+      ->addWhere('MyContactFields.FavAnimal', '=', 'Sheep')
+      ->addWhere('MyContactFields.FavLetter', '=', 'z')
+      ->execute()
+      ->first();
+
+    // FIXME: This count is artificially high due to the line
+    // $this->entity = Tables::getBriefName(Tables::getClassForTable($targetTable));
+    // In class Joinable. TODO: Investigate why.
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/CustomValueTest.php b/tests/phpunit/api/v4/Action/CustomValueTest.php
new file mode 100644 (file)
index 0000000..f9e87e9
--- /dev/null
@@ -0,0 +1,227 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\CustomField;
+use Civi\Api4\CustomGroup;
+use Civi\Api4\CustomValue;
+use Civi\Api4\Contact;
+
+/**
+ * @group headless
+ */
+class CustomValueTest extends BaseCustomValueTest {
+
+  protected $contactID;
+
+  /**
+   * Test CustomValue::GetFields/Get/Create/Update/Replace/Delete
+   */
+  public function testCRUD() {
+    $optionValues = ['r' => 'Red', 'g' => 'Green', 'b' => 'Blue'];
+
+    $group = uniqid('groupc');
+    $colorField = uniqid('colorc');
+    $textField = uniqid('txt');
+
+    $customGroup = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', $group)
+      ->addValue('extends', 'Contact')
+      ->addValue('is_multiple', TRUE)
+      ->execute()
+      ->first();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', $colorField)
+      ->addValue('options', $optionValues)
+      ->addValue('custom_group_id', $customGroup['id'])
+      ->addValue('html_type', 'Select')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', $textField)
+      ->addValue('custom_group_id', $customGroup['id'])
+      ->addValue('html_type', 'Text')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    $this->contactID = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Johann')
+      ->addValue('last_name', 'Tester')
+      ->addValue('contact_type', 'Individual')
+      ->execute()
+      ->first()['id'];
+
+    // Retrieve and check the fields of CustomValue = Custom_$group
+    $fields = CustomValue::getFields($group)->execute();
+    $expectedResult = [
+      [
+        'custom_field_id' => 1,
+        'custom_group' => $group,
+        'name' => $colorField,
+        'title' => $colorField,
+        'entity' => "Custom_$group",
+        'data_type' => 'String',
+        'fk_entity' => NULL,
+      ],
+      [
+        'custom_field_id' => 2,
+        'custom_group' => $group,
+        'name' => $textField,
+        'title' => $textField,
+        'entity' => "Custom_$group",
+        'data_type' => 'String',
+        'fk_entity' => NULL,
+      ],
+      [
+        'name' => 'id',
+        'title' => ts('Custom Value ID'),
+        'entity' => "Custom_$group",
+        'data_type' => 'Integer',
+        'fk_entity' => NULL,
+      ],
+      [
+        'name' => 'entity_id',
+        'title' => ts('Entity ID'),
+        'entity' => "Custom_$group",
+        'data_type' => 'Integer',
+        'fk_entity' => 'Contact',
+      ],
+    ];
+
+    foreach ($expectedResult as $key => $field) {
+      foreach ($field as $attr => $value) {
+        $this->assertEquals($expectedResult[$key][$attr], $fields[$key][$attr]);
+      }
+    }
+
+    // CASE 1: Test CustomValue::create
+    // Create two records for a single contact and using CustomValue::get ensure that two records are created
+    CustomValue::create($group)
+      ->addValue($colorField, 'Green')
+      ->addValue("entity_id", $this->contactID)
+      ->execute();
+    CustomValue::create($group)
+      ->addValue($colorField, 'Red')
+      ->addValue("entity_id", $this->contactID)
+      ->execute();
+    // fetch custom values using API4 CustomValue::get
+    $result = CustomValue::get($group)->execute();
+
+    // check if two custom values are created
+    $this->assertEquals(2, count($result));
+    $expectedResult = [
+      [
+        'id' => 1,
+        $colorField => 'Green',
+        'entity_id' => $this->contactID,
+      ],
+      [
+        'id' => 2,
+        $colorField => 'Red',
+        'entity_id' => $this->contactID,
+      ],
+    ];
+    // match the data
+    foreach ($expectedResult as $key => $field) {
+      foreach ($field as $attr => $value) {
+        $this->assertEquals($expectedResult[$key][$attr], $result[$key][$attr]);
+      }
+    }
+
+    // CASE 2: Test CustomValue::update
+    // Update a records whose id is 1 and change the custom field (name = Color) value to 'White' from 'Green'
+    CustomValue::update($group)
+      ->addWhere("id", "=", 1)
+      ->addValue($colorField, 'White')
+      ->execute();
+
+    // ensure that the value is changed for id = 1
+    $color = CustomValue::get($group)
+      ->addWhere("id", "=", 1)
+      ->execute()
+      ->first()[$colorField];
+    $this->assertEquals('White', $color);
+
+    // CASE 3: Test CustomValue::replace
+    // create a second contact which will be used to replace the custom values, created earlier
+    $secondContactID = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Adam')
+      ->addValue('last_name', 'Tester')
+      ->addValue('contact_type', 'Individual')
+      ->execute()
+      ->first()['id'];
+    // Replace all the records which was created earlier with entity_id = first contact
+    //  with custom record [$colorField => 'Rainbow', 'entity_id' => $secondContactID]
+    CustomValue::replace($group)
+      ->setRecords([[$colorField => 'Rainbow', 'entity_id' => $secondContactID]])
+      ->addWhere('entity_id', '=', $this->contactID)
+      ->execute();
+
+    // Check the two records created earlier is replaced by new contact
+    $result = CustomValue::get($group)->execute();
+    $this->assertEquals(1, count($result));
+
+    $expectedResult = [
+      [
+        'id' => 3,
+        $colorField => 'Rainbow',
+        'entity_id' => $secondContactID,
+      ],
+    ];
+    foreach ($expectedResult as $key => $field) {
+      foreach ($field as $attr => $value) {
+        $this->assertEquals($expectedResult[$key][$attr], $result[$key][$attr]);
+      }
+    }
+
+    // CASE 4: Test CustomValue::delete
+    // There is only record left whose id = 3, delete that record on basis of criteria id = 3
+    CustomValue::delete($group)->addWhere("id", "=", 3)->execute();
+    $result = CustomValue::get($group)->execute();
+    // check that there are no custom values present
+    $this->assertEquals(0, count($result));
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/DateTest.php b/tests/phpunit/api/v4/Action/DateTest.php
new file mode 100644 (file)
index 0000000..a143068
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\Contact;
+use Civi\Api4\Relationship;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class DateTest extends UnitTestCase {
+
+  public function testRelationshipDate() {
+    $c1 = Contact::create()
+      ->addValue('first_name', 'c')
+      ->addValue('last_name', 'one')
+      ->execute()
+      ->first()['id'];
+    $c2 = Contact::create()
+      ->addValue('first_name', 'c')
+      ->addValue('last_name', 'two')
+      ->execute()
+      ->first()['id'];
+    $r = Relationship::create()
+      ->addValue('contact_id_a', $c1)
+      ->addValue('contact_id_b', $c2)
+      ->addValue('relationship_type_id', 1)
+      ->addValue('start_date', 'now')
+      ->addValue('end_date', 'now + 1 week')
+      ->execute()
+      ->first()['id'];
+    $result = Relationship::get()
+      ->addWhere('start_date', '=', 'now')
+      ->addWhere('end_date', '>', 'now + 1 day')
+      ->execute()
+      ->indexBy('id');
+    $this->assertArrayHasKey($r, $result);
+    $result = Relationship::get()
+      ->addWhere('start_date', '<', 'now')
+      ->execute()
+      ->indexBy('id');
+    $this->assertArrayNotHasKey($r, $result);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/EvaluateConditionTest.php b/tests/phpunit/api/v4/Action/EvaluateConditionTest.php
new file mode 100644 (file)
index 0000000..acb0dc8
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\MockBasicEntity;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class EvaluateConditionTest extends UnitTestCase {
+
+  public function testEvaluateCondition() {
+    $action = MockBasicEntity::get();
+    $reflection = new \ReflectionClass($action);
+    $method = $reflection->getMethod('evaluateCondition');
+    $method->setAccessible(TRUE);
+
+    $data = [
+      'nada' => 0,
+      'uno' => 1,
+      'dos' => 2,
+      'apple' => 'red',
+      'banana' => 'yellow',
+      'values' => ['one' => 1, 'two' => 2, 'three' => 3],
+    ];
+
+    $this->assertFalse($method->invoke($action, '$uno > $dos', $data));
+    $this->assertTrue($method->invoke($action, '$uno < $dos', $data));
+    $this->assertTrue($method->invoke($action, '$apple == "red" && $banana != "red"', $data));
+    $this->assertFalse($method->invoke($action, '$apple == "red" && $banana != "yellow"', $data));
+    $this->assertTrue($method->invoke($action, '$values.one == $uno', $data));
+    $this->assertTrue($method->invoke($action, '$values.one + $dos == $values.three', $data));
+    $this->assertTrue($method->invoke($action, 'empty($nada)', $data));
+    $this->assertFalse($method->invoke($action, 'empty($values)', $data));
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/ExtendFromIndividualTest.php b/tests/phpunit/api/v4/Action/ExtendFromIndividualTest.php
new file mode 100644 (file)
index 0000000..cee9a65
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\Contact;
+use Civi\Api4\CustomField;
+use Civi\Api4\CustomGroup;
+
+/**
+ * @group headless
+ */
+class ExtendFromIndividualTest extends BaseCustomValueTest {
+
+  public function testGetWithNonStandardExtends() {
+
+    $customGroup = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', 'MyContactFields')
+      // not Contact
+      ->addValue('extends', 'Individual')
+      ->execute()
+      ->first();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'FavColor')
+      ->addValue('custom_group_id', $customGroup['id'])
+      ->addValue('html_type', 'Text')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    $contactId = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Johann')
+      ->addValue('last_name', 'Tester')
+      ->addValue('contact_type', 'Individual')
+      ->addValue('MyContactFields.FavColor', 'Red')
+      ->execute()
+      ->first()['id'];
+
+    $contact = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addSelect('display_name')
+      ->addSelect('MyContactFields.FavColor')
+      ->addWhere('id', '=', $contactId)
+      ->execute()
+      ->first();
+
+    $this->assertEquals('Red', $contact['MyContactFields.FavColor']);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/FkJoinTest.php b/tests/phpunit/api/v4/Action/FkJoinTest.php
new file mode 100644 (file)
index 0000000..3e4217a
--- /dev/null
@@ -0,0 +1,110 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use api\v4\UnitTestCase;
+use Civi\Api4\Activity;
+use Civi\Api4\Contact;
+
+/**
+ * @group headless
+ */
+class FkJoinTest extends UnitTestCase {
+
+  public function setUpHeadless() {
+    $relatedTables = [
+      'civicrm_activity',
+      'civicrm_phone',
+      'civicrm_activity_contact',
+    ];
+    $this->cleanup(['tablesToTruncate' => $relatedTables]);
+    $this->loadDataSet('DefaultDataSet');
+
+    return parent::setUpHeadless();
+  }
+
+  /**
+   * Fetch all phone call activities. Expects a single activity
+   * loaded from the data set.
+   */
+  public function testThreeLevelJoin() {
+    $results = Activity::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('activity_type.name', '=', 'Phone Call')
+      ->execute();
+
+    $this->assertCount(1, $results);
+  }
+
+  public function testActivityContactJoin() {
+    $results = Activity::get()
+      ->setCheckPermissions(FALSE)
+      ->addSelect('assignees.id')
+      ->addSelect('assignees.first_name')
+      ->addSelect('assignees.display_name')
+      ->addWhere('assignees.first_name', '=', 'Phoney')
+      ->execute();
+
+    $firstResult = $results->first();
+
+    $this->assertCount(1, $results);
+    $this->assertTrue(is_array($firstResult['assignees']));
+
+    $firstAssignee = array_shift($firstResult['assignees']);
+    $this->assertEquals($firstAssignee['first_name'], 'Phoney');
+  }
+
+  public function testContactPhonesJoin() {
+    $testContact = $this->getReference('test_contact_1');
+    $testPhone = $this->getReference('test_phone_1');
+
+    $results = Contact::get()
+      ->setCheckPermissions(FALSE)
+      ->addSelect('phones.phone')
+      ->addWhere('id', '=', $testContact['id'])
+      ->addWhere('phones.location_type.name', '=', 'Home')
+      ->execute()
+      ->first();
+
+    $this->assertArrayHasKey('phones', $results);
+    $this->assertCount(1, $results['phones']);
+    $firstPhone = array_shift($results['phones']);
+    $this->assertEquals($testPhone['phone'], $firstPhone['phone']);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/GetExtraFieldsTest.php b/tests/phpunit/api/v4/Action/GetExtraFieldsTest.php
new file mode 100644 (file)
index 0000000..8557000
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use api\v4\UnitTestCase;
+use Civi\Api4\Contact;
+
+/**
+ * @group headless
+ */
+class GetExtraFieldsTest extends UnitTestCase {
+
+  public function testBAOFieldsWillBeReturned() {
+    $returnedFields = Contact::getFields()
+      ->execute()
+      ->getArrayCopy();
+
+    $baseFields = \CRM_Contact_BAO_Contact::fields();
+    $baseFieldNames = array_column($baseFields, 'name');
+    $returnedFieldNames = array_column($returnedFields, 'name');
+    $notReturned = array_diff($baseFieldNames, $returnedFieldNames);
+
+    $this->assertEmpty($notReturned);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/GetFromArrayTest.php b/tests/phpunit/api/v4/Action/GetFromArrayTest.php
new file mode 100644 (file)
index 0000000..eab416f
--- /dev/null
@@ -0,0 +1,198 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use api\v4\UnitTestCase;
+use Civi\Api4\MockArrayEntity;
+
+/**
+ * @group headless
+ */
+class GetFromArrayTest extends UnitTestCase {
+
+  public function testArrayGetWithLimit() {
+    $result = MockArrayEntity::get()
+      ->setOffset(2)
+      ->setLimit(2)
+      ->execute();
+    $this->assertEquals(3, $result[0]['field1']);
+    $this->assertEquals(4, $result[1]['field1']);
+    $this->assertEquals(2, count($result));
+  }
+
+  public function testArrayGetWithSort() {
+    $result = MockArrayEntity::get()
+      ->addOrderBy('field1', 'DESC')
+      ->execute();
+    $this->assertEquals([5, 4, 3, 2, 1], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addOrderBy('field5', 'DESC')
+      ->addOrderBy('field2', 'ASC')
+      ->execute();
+    $this->assertEquals([3, 2, 5, 4, 1], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addOrderBy('field3', 'ASC')
+      ->addOrderBy('field2', 'ASC')
+      ->execute();
+    $this->assertEquals([3, 1, 2, 5, 4], array_column((array) $result, 'field1'));
+  }
+
+  public function testArrayGetWithSelect() {
+    $result = MockArrayEntity::get()
+      ->addSelect('field1')
+      ->addSelect('field3')
+      ->setLimit(4)
+      ->execute();
+    $this->assertEquals([
+      [
+        'field1' => 1,
+        'field3' => NULL,
+      ],
+      [
+        'field1' => 2,
+        'field3' => 0,
+      ],
+      [
+        'field1' => 3,
+      ],
+      [
+        'field1' => 4,
+        'field3' => 1,
+      ],
+    ], (array) $result);
+  }
+
+  public function testArrayGetWithWhere() {
+    $result = MockArrayEntity::get()
+      ->addWhere('field2', '=', 'yack')
+      ->execute();
+    $this->assertEquals([2], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field5', '!=', 'banana')
+      ->addWhere('field3', 'IS NOT NULL')
+      ->execute();
+    $this->assertEquals([4, 5], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field1', '>=', '4')
+      ->execute();
+    $this->assertEquals([4, 5], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field1', '<', '2')
+      ->execute();
+    $this->assertEquals([1], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field2', 'LIKE', '%ra%')
+      ->execute();
+    $this->assertEquals([1, 3], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field3', 'IS NULL')
+      ->execute();
+    $this->assertEquals([1, 3], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field3', '=', '0')
+      ->execute();
+    $this->assertEquals([2], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field2', 'LIKE', '%ra')
+      ->execute();
+    $this->assertEquals([1], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field2', 'LIKE', 'ra')
+      ->execute();
+    $this->assertEquals(0, count($result));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field2', 'NOT LIKE', '%ra%')
+      ->execute();
+    $this->assertEquals([2, 4, 5], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field6', '=', '0')
+      ->execute();
+    $this->assertEquals([3, 4, 5], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field6', '=', 0)
+      ->execute();
+    $this->assertEquals([3, 4, 5], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field1', 'BETWEEN', [3, 5])
+      ->execute();
+    $this->assertEquals([3, 4, 5], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addWhere('field1', 'NOT BETWEEN', [3, 4])
+      ->execute();
+    $this->assertEquals([1, 2, 5], array_column((array) $result, 'field1'));
+  }
+
+  public function testArrayGetWithNestedWhereClauses() {
+    $result = MockArrayEntity::get()
+      ->addClause('OR', ['field2', 'LIKE', '%ra'], ['field2', 'LIKE', 'x ray'])
+      ->execute();
+    $this->assertEquals([1, 3], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addClause('OR', ['field2', '=', 'zebra'], ['field2', '=', 'yack'])
+      ->addClause('OR', ['field5', '!=', 'apple'], ['field3', 'IS NULL'])
+      ->execute();
+    $this->assertEquals([1, 2], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addClause('NOT', ['field2', '!=', 'yack'])
+      ->execute();
+    $this->assertEquals([2], array_column((array) $result, 'field1'));
+
+    $result = MockArrayEntity::get()
+      ->addClause('OR', ['field1', '=', 2], ['AND', [['field5', '=', 'apple'], ['field3', '=', 1]]])
+      ->execute();
+    $this->assertEquals([2, 4, 5], array_column((array) $result, 'field1'));
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/IndexTest.php b/tests/phpunit/api/v4/Action/IndexTest.php
new file mode 100644 (file)
index 0000000..ed27b9f
--- /dev/null
@@ -0,0 +1,83 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class IndexTest extends UnitTestCase {
+
+  public function testIndex() {
+    // Results indexed by name
+    $resultByName = civicrm_api4('Activity', 'getActions', [], 'name');
+    $this->assertInstanceOf('Civi\Api4\Generic\Result', $resultByName);
+    $this->assertEquals('get', $resultByName['get']['name']);
+
+    // Get result at index 0
+    $firstResult = civicrm_api4('Activity', 'getActions', [], 0);
+    $this->assertInstanceOf('Civi\Api4\Generic\Result', $firstResult);
+    $this->assertArrayHasKey('name', $firstResult);
+
+    $this->assertEquals($resultByName->first(), (array) $firstResult);
+  }
+
+  public function testBadIndexInt() {
+    $error = '';
+    try {
+      civicrm_api4('Activity', 'getActions', [], 99);
+    }
+    catch (\API_Exception $e) {
+      $error = $e->getMessage();
+    }
+    $this->assertContains('not found', $error);
+  }
+
+  public function testBadIndexString() {
+    $error = '';
+    try {
+      civicrm_api4('Activity', 'getActions', [], 'xyz');
+    }
+    catch (\API_Exception $e) {
+      $error = $e->getMessage();
+    }
+    $this->assertContains('not found', $error);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/NullValueTest.php b/tests/phpunit/api/v4/Action/NullValueTest.php
new file mode 100644 (file)
index 0000000..95fc845
--- /dev/null
@@ -0,0 +1,90 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\Contact;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class NullValueTest extends UnitTestCase {
+
+  public function setUpHeadless() {
+    $format = '{contact.first_name}{ }{contact.last_name}';
+    \Civi::settings()->set('display_name_format', $format);
+    return parent::setUpHeadless();
+  }
+
+  public function testStringNull() {
+    $contact = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Joseph')
+      ->addValue('last_name', 'null')
+      ->addValue('contact_type', 'Individual')
+      ->execute()
+      ->first();
+
+    $this->assertSame('Null', $contact['last_name']);
+    $this->assertSame('Joseph Null', $contact['display_name']);
+  }
+
+  public function testSettingToNull() {
+    $contact = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'ILoveMy')
+      ->addValue('last_name', 'LastName')
+      ->addValue('contact_type', 'Individual')
+      ->execute()
+      ->first();
+
+    $this->assertSame('ILoveMy LastName', $contact['display_name']);
+    $contactId = $contact['id'];
+
+    $contact = Contact::update()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('id', '=', $contactId)
+      ->addValue('last_name', NULL)
+      ->execute()
+      ->first();
+
+    $this->assertSame(NULL, $contact['last_name']);
+    $this->assertSame('ILoveMy', $contact['display_name']);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/ReplaceTest.php b/tests/phpunit/api/v4/Action/ReplaceTest.php
new file mode 100644 (file)
index 0000000..5e40602
--- /dev/null
@@ -0,0 +1,206 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\CustomField;
+use Civi\Api4\CustomGroup;
+use Civi\Api4\CustomValue;
+use Civi\Api4\Email;
+use api\v4\Traits\TableDropperTrait;
+use api\v4\UnitTestCase;
+use Civi\Api4\Contact;
+
+/**
+ * @group headless
+ */
+class ReplaceTest extends UnitTestCase {
+  use TableDropperTrait;
+
+  /**
+   * Set up baseline for testing
+   */
+  public function setUp() {
+    $tablesToTruncate = [
+      'civicrm_custom_group',
+      'civicrm_custom_field',
+      'civicrm_email',
+    ];
+    $this->dropByPrefix('civicrm_value_replacetest');
+    $this->cleanup(['tablesToTruncate' => $tablesToTruncate]);
+    parent::setUp();
+  }
+
+  public function testEmailReplace() {
+    $cid1 = Contact::create()
+      ->addValue('first_name', 'Lotsa')
+      ->addValue('last_name', 'Emails')
+      ->execute()
+      ->first()['id'];
+    $cid2 = Contact::create()
+      ->addValue('first_name', 'Notso')
+      ->addValue('last_name', 'Many')
+      ->execute()
+      ->first()['id'];
+    $e0 = Email::create()
+      ->setValues(['contact_id' => $cid2, 'email' => 'nosomany@example.com', 'location_type_id' => 1])
+      ->execute()
+      ->first()['id'];
+    $e1 = Email::create()
+      ->setValues(['contact_id' => $cid1, 'email' => 'first@example.com', 'location_type_id' => 1])
+      ->execute()
+      ->first()['id'];
+    $e2 = Email::create()
+      ->setValues(['contact_id' => $cid1, 'email' => 'second@example.com', 'location_type_id' => 1])
+      ->execute()
+      ->first()['id'];
+    $replacement = [
+      ['email' => 'firstedited@example.com', 'id' => $e1],
+      ['contact_id' => $cid1, 'email' => 'third@example.com', 'location_type_id' => 1],
+    ];
+    $replaced = Email::replace()
+      ->setRecords($replacement)
+      ->addWhere('contact_id', '=', $cid1)
+      ->execute();
+    // Should have saved 2 records
+    $this->assertEquals(2, $replaced->count());
+    // Should have deleted email2
+    $this->assertEquals([['id' => $e2]], $replaced->deleted);
+    // Verify contact now has the new email records
+    $results = Email::get()
+      ->addWhere('contact_id', '=', $cid1)
+      ->execute()
+      ->indexBy('id');
+    $this->assertEquals('firstedited@example.com', $results[$e1]['email']);
+    $this->assertEquals(2, $results->count());
+    $this->assertArrayNotHasKey($e2, (array) $results);
+    $this->assertArrayNotHasKey($e0, (array) $results);
+    unset($results[$e1]);
+    foreach ($results as $result) {
+      $this->assertEquals('third@example.com', $result['email']);
+    }
+    // Validate our other contact's email did not get deleted
+    $c2email = Email::get()
+      ->addWhere('contact_id', '=', $cid2)
+      ->execute()
+      ->first();
+    $this->assertEquals('nosomany@example.com', $c2email['email']);
+  }
+
+  public function testCustomValueReplace() {
+    $customGroup = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', 'replaceTest')
+      ->addValue('extends', 'Contact')
+      ->addValue('is_multiple', TRUE)
+      ->execute()
+      ->first();
+
+    CustomField::create()
+      ->addValue('label', 'Custom1')
+      ->addValue('custom_group_id', $customGroup['id'])
+      ->addValue('html_type', 'String')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'Custom2')
+      ->addValue('custom_group_id', $customGroup['id'])
+      ->addValue('html_type', 'String')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    $cid1 = Contact::create()
+      ->addValue('first_name', 'Lotsa')
+      ->addValue('last_name', 'Data')
+      ->execute()
+      ->first()['id'];
+    $cid2 = Contact::create()
+      ->addValue('first_name', 'Notso')
+      ->addValue('last_name', 'Much')
+      ->execute()
+      ->first()['id'];
+
+    // Contact 2 gets one row
+    CustomValue::create('replaceTest')
+      ->setCheckPermissions(FALSE)
+      ->addValue('Custom1', "2 1")
+      ->addValue('Custom2', "2 1")
+      ->addValue('entity_id', $cid2)
+      ->execute();
+
+    // Create 3 rows for contact 1
+    foreach ([1, 2, 3] as $i) {
+      CustomValue::create('replaceTest')
+        ->setCheckPermissions(FALSE)
+        ->addValue('Custom1', "1 $i")
+        ->addValue('Custom2', "1 $i")
+        ->addValue('entity_id', $cid1)
+        ->execute();
+    }
+
+    $cid1Records = CustomValue::get('replaceTest')
+      ->setCheckPermissions(FALSE)
+      ->addWhere('entity_id', '=', $cid1)
+      ->execute();
+
+    $this->assertCount(3, $cid1Records);
+    $this->assertCount(1, CustomValue::get('replaceTest')->setCheckPermissions(FALSE)->addWhere('entity_id', '=', $cid2)->execute());
+
+    $result = CustomValue::replace('replaceTest')
+      ->addWhere('entity_id', '=', $cid1)
+      ->addRecord(['Custom1' => 'new one', 'Custom2' => 'new two'])
+      ->addRecord(['id' => $cid1Records[0]['id'], 'Custom1' => 'changed one', 'Custom2' => 'changed two'])
+      ->execute();
+
+    $this->assertCount(2, $result);
+    $this->assertCount(2, $result->deleted);
+
+    $newRecords = CustomValue::get('replaceTest')
+      ->setCheckPermissions(FALSE)
+      ->addWhere('entity_id', '=', $cid1)
+      ->execute()
+      ->indexBy('id');
+
+    $this->assertEquals('new one', $newRecords->last()['Custom1']);
+    $this->assertEquals('new two', $newRecords->last()['Custom2']);
+    $this->assertEquals('changed one', $newRecords[$cid1Records[0]['id']]['Custom1']);
+    $this->assertEquals('changed two', $newRecords[$cid1Records[0]['id']]['Custom2']);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/RequiredFieldTest.php b/tests/phpunit/api/v4/Action/RequiredFieldTest.php
new file mode 100644 (file)
index 0000000..5be510b
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\Event;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class RequiredFieldTest extends UnitTestCase {
+
+  public function testRequired() {
+    $msg = '';
+    try {
+      Event::create()->execute();
+    }
+    catch (\API_Exception $e) {
+      $msg = $e->getMessage();
+    }
+    $this->assertEquals('Mandatory values missing from Api4 Event::create: title, event_type_id, start_date', $msg);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/UpdateContactTest.php b/tests/phpunit/api/v4/Action/UpdateContactTest.php
new file mode 100644 (file)
index 0000000..ab287aa
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\Contact;
+use api\v4\UnitTestCase;
+
+/**
+ * Class UpdateContactTest
+ * @package api\v4\Action
+ * @group headless
+ */
+class UpdateContactTest extends UnitTestCase {
+
+  public function testUpdateWithIdInWhere() {
+    $contactId = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Johann')
+      ->addValue('last_name', 'Tester')
+      ->addValue('contact_type', 'Individual')
+      ->execute()
+      ->first()['id'];
+
+    $contact = Contact::update()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('id', '=', $contactId)
+      ->addValue('first_name', 'Testy')
+      ->execute()
+      ->first();
+    $this->assertEquals('Testy', $contact['first_name']);
+    $this->assertEquals('Tester', $contact['last_name']);
+  }
+
+  public function testUpdateWithIdInValues() {
+    $contactId = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Bobby')
+      ->addValue('last_name', 'Tester')
+      ->addValue('contact_type', 'Individual')
+      ->execute()
+      ->first()['id'];
+
+    $contact = Contact::update()
+      ->setCheckPermissions(FALSE)
+      ->addValue('id', $contactId)
+      ->addValue('first_name', 'Billy')
+      ->execute();
+    $this->assertCount(1, $contact);
+    $this->assertEquals($contactId, $contact[0]['id']);
+    $this->assertEquals('Billy', $contact[0]['first_name']);
+    $this->assertEquals('Tester', $contact[0]['last_name']);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Action/UpdateCustomValueTest.php b/tests/phpunit/api/v4/Action/UpdateCustomValueTest.php
new file mode 100644 (file)
index 0000000..7da8640
--- /dev/null
@@ -0,0 +1,91 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Action;
+
+use Civi\Api4\Contact;
+use Civi\Api4\CustomField;
+use Civi\Api4\CustomGroup;
+use CRM_Core_BAO_CustomValueTable as CustomValueTable;
+
+/**
+ * @group headless
+ */
+class UpdateCustomValueTest extends BaseCustomValueTest {
+
+  public function testGetWithCustomData() {
+
+    $customGroup = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', 'MyContactFields')
+      ->addValue('extends', 'Contact')
+      ->execute()
+      ->first();
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'FavColor')
+      ->addValue('custom_group_id', $customGroup['id'])
+      ->addValue('html_type', 'Text')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    $contactId = Contact::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('first_name', 'Red')
+      ->addValue('last_name', 'Tester')
+      ->addValue('contact_type', 'Individual')
+      ->addValue('MyContactFields.FavColor', 'Red')
+      ->execute()
+      ->first()['id'];
+
+    Contact::update()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('id', '=', $contactId)
+      ->addValue('first_name', 'Red')
+      ->addValue('last_name', 'Tester')
+      ->addValue('contact_type', 'Individual')
+      ->addValue('MyContactFields.FavColor', 'Blue')
+      ->execute();
+
+    $result = CustomValueTable::getEntityValues($contactId, 'Contact');
+
+    $this->assertEquals(1, count($result));
+    $this->assertContains('Blue', $result);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/AllTests.php b/tests/phpunit/api/v4/AllTests.php
new file mode 100644 (file)
index 0000000..45aedb9
--- /dev/null
@@ -0,0 +1,103 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+// vim: set si ai expandtab tabstop=4 shiftwidth=4 softtabstop=4:
+
+/**
+ *  File for the api_v4_AllTests class
+ *
+ *  (PHP 5)
+ *
+ * @author Walt Haas <walt@dharmatech.org> (801) 534-1262
+ * @copyright Copyright CiviCRM LLC (C) 2009
+ * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html
+ *              GNU Affero General Public License version 3
+ * @version   $Id: AllTests.php 40328 2012-05-11 23:06:13Z allen $
+ * @package   CiviCRM
+ *
+ *   This file is part of CiviCRM
+ *
+ *   CiviCRM is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU Affero General Public License
+ *   as published by the Free Software Foundation; either version 3 of
+ *   the License, or (at your option) any later version.
+ *
+ *   CiviCRM is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU Affero General Public License for more details.
+ *
+ *   You should have received a copy of the GNU Affero General Public
+ *   License along with this program.  If not, see
+ *   <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ *  Class containing the APIv4 test suite
+ *
+ * @package   CiviCRM
+ */
+class api_v4_AllTests extends CiviTestSuite {
+  private static $instance = NULL;
+
+  /**
+   */
+  private static function getInstance() {
+    if (is_null(self::$instance)) {
+      self::$instance = new self();
+    }
+    return self::$instance;
+  }
+
+  /**
+   *  Build test suite dynamically.
+   */
+  public static function suite() {
+    $inst = self::getInstance();
+    return $inst->implSuite(__FILE__);
+  }
+
+}
+// class AllTests
+
+// -- set Emacs parameters --
+// Local variables:
+// mode: php;
+// tab-width: 4
+// c-basic-offset: 4
+// c-hanging-comment-ender-p: nil
+// indent-tabs-mode: nil
+// End:
diff --git a/tests/phpunit/api/v4/DataSets/ConformanceTest.json b/tests/phpunit/api/v4/DataSets/ConformanceTest.json
new file mode 100644 (file)
index 0000000..1028c5b
--- /dev/null
@@ -0,0 +1,42 @@
+{
+  "Contact": [
+    {
+      "first_name": "Janice",
+      "last_name": "Voss",
+      "contact_type": "Individual",
+      "@ref": "test_contact_1"
+    }
+  ],
+  "CustomGroup": [
+    {
+      "name": "MyFavoriteThings",
+      "extends": "Contact"
+    }
+  ],
+  "Event": [
+    {
+      "start_date": "20401010000000",
+      "title": "The Singularity",
+      "event_type_id": "major_historical_event"
+    }
+  ],
+  "Group": [
+    {
+      "name": "the_group",
+      "title": "The Group"
+    }
+  ],
+  "Mapping": [
+    {
+      "name": "the_mapping",
+      "mapping_type_id": "1"
+    }
+  ],
+  "Activity": [
+    {
+      "subject": "Test A Phone Activity",
+      "activity_type": "Phone Call",
+      "source_contact_id": "@ref test_contact_1.id"
+    }
+  ]
+}
diff --git a/tests/phpunit/api/v4/DataSets/DefaultDataSet.json b/tests/phpunit/api/v4/DataSets/DefaultDataSet.json
new file mode 100644 (file)
index 0000000..7d4a91b
--- /dev/null
@@ -0,0 +1,45 @@
+{
+  "Contact": [
+    {
+      "first_name": "Phoney",
+      "last_name": "Contact",
+      "contact_type": "Individual",
+      "@ref": "test_contact_1"
+    },
+    {
+      "first_name": "Second",
+      "last_name": "Test",
+      "contact_type": "Individual",
+      "@ref": "test_contact_2"
+    }
+  ],
+  "Activity": [
+    {
+      "subject": "Test Phone Activity",
+      "activity_type": "Phone Call",
+      "source_contact_id": "@ref test_contact_1.id"
+    },
+    {
+      "subject": "Another Activity",
+      "activity_type": "Meeting",
+      "source_contact_id": "@ref test_contact_1.id",
+      "assignee_contact_id": [
+        "@ref test_contact_1.id",
+        "@ref test_contact_2.id"
+      ]
+    }
+  ],
+  "Phone": [
+    {
+      "contact_id": "@ref test_contact_1.id",
+      "phone": "+35355439483",
+      "location_type_id": "1",
+      "@ref": "test_phone_1"
+    },
+    {
+      "contact_id": "@ref test_contact_1.id",
+      "phone": "+3538733439483",
+      "location_type_id": "2"
+    }
+  ]
+}
diff --git a/tests/phpunit/api/v4/DataSets/MultiContactMultiEmail.json b/tests/phpunit/api/v4/DataSets/MultiContactMultiEmail.json
new file mode 100644 (file)
index 0000000..ce3fbca
--- /dev/null
@@ -0,0 +1,42 @@
+{
+  "Contact": [
+    {
+      "first_name": "First",
+      "last_name": "Contact",
+      "contact_type": "Individual",
+      "@ref": "test_contact_1"
+    },
+    {
+      "first_name": "Second",
+      "last_name": "Contact",
+      "contact_type": "Individual",
+      "@ref": "test_contact_2"
+    }
+  ],
+  "Email": [
+    {
+      "contact_id": "@ref test_contact_1.id",
+      "email": "test_contact_one_home@fakedomain.com",
+      "location_type_id": 1,
+      "@ref": "test_email_1"
+    },
+    {
+      "contact_id": "@ref test_contact_1.id",
+      "email": "test_contact_one_work@fakedomain.com",
+      "location_type_id": 2,
+      "@ref": "test_email_2"
+    },
+    {
+      "contact_id": "@ref test_contact_2.id",
+      "email": "test_contact_two_home@fakedomain.com",
+      "location_type_id": 1,
+      "@ref": "test_email_3"
+    },
+    {
+      "contact_id": "@ref test_contact_2.id",
+      "email": "test_contact_two_work@fakedomain.com",
+      "location_type_id": 2,
+      "@ref": "test_email_4"
+    }
+  ]
+}
diff --git a/tests/phpunit/api/v4/DataSets/SingleContact.json b/tests/phpunit/api/v4/DataSets/SingleContact.json
new file mode 100644 (file)
index 0000000..73e7369
--- /dev/null
@@ -0,0 +1,81 @@
+{
+  "Contact": [
+    {
+      "first_name": "Single",
+      "last_name": "Contact",
+      "contact_type": "Individual",
+      "preferred_communication_method": "1",
+      "@ref": "test_contact_1"
+    }
+  ],
+  "Activity": [
+    {
+      "subject": "Won A Nobel Prize",
+      "activity_type": "Meeting",
+      "source_contact_id": "@ref test_contact_1.id",
+      "@ref": "test_activity_1"
+    },
+    {
+      "subject": "Cleaned The House",
+      "activity_type": "Meeting",
+      "source_contact_id": "@ref test_contact_1.id",
+      "assignee_contact_id": [
+        "@ref test_contact_1.id"
+      ],
+      "@ref": "test_activity_2"
+    }
+  ],
+  "Phone": [
+    {
+      "contact_id": "@ref test_contact_1.id",
+      "phone": "+1111111111111",
+      "location_type_id": 1
+    },
+    {
+      "contact_id": "@ref test_contact_1.id",
+      "phone": "+2222222222222",
+      "location_type_id": 2
+    }
+  ],
+  "Email": [
+    {
+      "contact_id": "@ref test_contact_1.id",
+      "email": "test_contact_home@fakedomain.com",
+      "location_type_id": 1
+    },
+    {
+      "contact_id": "@ref test_contact_1.id",
+      "email": "test_contact_work@fakedomain.com",
+      "location_type_id": 2
+    }
+  ],
+  "Address": [
+    {
+      "contact_id": "@ref test_contact_1.id",
+      "street_address": "123 Sesame St.",
+      "location_type_id": 1
+    }
+  ],
+  "Website": [
+    {
+      "contact_id": "@ref test_contact_1.id",
+      "url": "http://test.com",
+      "website_id": 1
+    }
+  ],
+  "OpenID": [
+    {
+      "contact_id": "@ref test_contact_1.id",
+      "openid": "123",
+      "allowed_to_login": 1,
+      "location_type_id": 1
+    }
+  ],
+  "IM": [
+    {
+      "contact_id": "@ref test_contact_1.id",
+      "name": "123",
+      "location_type_id": 1
+    }
+  ]
+}
diff --git a/tests/phpunit/api/v4/Entity/ConformanceTest.php b/tests/phpunit/api/v4/Entity/ConformanceTest.php
new file mode 100644 (file)
index 0000000..296368e
--- /dev/null
@@ -0,0 +1,283 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Entity;
+
+use Civi\Api4\Entity;
+use api\v4\Traits\TableDropperTrait;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class ConformanceTest extends UnitTestCase {
+
+  use TableDropperTrait;
+  use \api\v4\Traits\OptionCleanupTrait {
+    setUp as setUpOptionCleanup;
+  }
+
+  /**
+   * @var \api\v4\Service\TestCreationParameterProvider
+   */
+  protected $creationParamProvider;
+
+  /**
+   * Set up baseline for testing
+   */
+  public function setUp() {
+    $tablesToTruncate = [
+      'civicrm_custom_group',
+      'civicrm_custom_field',
+      'civicrm_group',
+      'civicrm_event',
+      'civicrm_participant',
+    ];
+    $this->dropByPrefix('civicrm_value_myfavorite');
+    $this->cleanup(['tablesToTruncate' => $tablesToTruncate]);
+    $this->setUpOptionCleanup();
+    $this->loadDataSet('ConformanceTest');
+    $this->creationParamProvider = \Civi::container()->get('test.param_provider');
+    parent::setUp();
+    // calculateTaxAmount() for contribution triggers a deprecation notice
+    \PHPUnit\Framework\Error\Deprecated::$enabled = FALSE;
+  }
+
+  public function getEntities() {
+    return Entity::get()->setCheckPermissions(FALSE)->execute()->column('name');
+  }
+
+  /**
+   * Fixme: This should use getEntities as a dataProvider but that fails for some reason
+   */
+  public function testConformance() {
+    $entities = $this->getEntities();
+    $this->assertNotEmpty($entities);
+
+    foreach ($entities as $data) {
+      $entity = $data;
+      $entityClass = 'Civi\Api4\\' . $entity;
+
+      $actions = $this->checkActions($entityClass);
+
+      // Go no further if it's not a CRUD entity
+      if (array_diff(['get', 'create', 'update', 'delete'], array_keys($actions))) {
+        continue;
+      }
+
+      $this->checkFields($entityClass, $entity);
+      $id = $this->checkCreation($entity, $entityClass);
+      $this->checkGet($entityClass, $id, $entity);
+      $this->checkGetCount($entityClass, $id, $entity);
+      $this->checkUpdateFailsFromCreate($entityClass, $id);
+      $this->checkWrongParamType($entityClass);
+      $this->checkDeleteWithNoId($entityClass);
+      $this->checkDeletion($entityClass, $id);
+      $this->checkPostDelete($entityClass, $id, $entity);
+    }
+  }
+
+  /**
+   * @param string $entityClass
+   * @param $entity
+   */
+  protected function checkFields($entityClass, $entity) {
+    $fields = $entityClass::getFields()
+      ->setCheckPermissions(FALSE)
+      ->setIncludeCustom(FALSE)
+      ->execute()
+      ->indexBy('name');
+
+    $errMsg = sprintf('%s is missing required ID field', $entity);
+    $subset = ['data_type' => 'Integer'];
+
+    $this->assertArraySubset($subset, $fields['id'], $errMsg);
+  }
+
+  /**
+   * @param string $entityClass
+   */
+  protected function checkActions($entityClass) {
+    $actions = $entityClass::getActions()
+      ->setCheckPermissions(FALSE)
+      ->execute()
+      ->indexBy('name');
+
+    $this->assertNotEmpty($actions);
+    return (array) $actions;
+  }
+
+  /**
+   * @param string $entity
+   * @param \Civi\Api4\Generic\AbstractEntity|string $entityClass
+   *
+   * @return mixed
+   */
+  protected function checkCreation($entity, $entityClass) {
+    $requiredParams = $this->creationParamProvider->getRequired($entity);
+    $createResult = $entityClass::create()
+      ->setValues($requiredParams)
+      ->setCheckPermissions(FALSE)
+      ->execute()
+      ->first();
+
+    $this->assertArrayHasKey('id', $createResult, "create missing ID");
+    $id = $createResult['id'];
+
+    $this->assertGreaterThanOrEqual(1, $id, "$entity ID not positive");
+
+    return $id;
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\AbstractEntity|string $entityClass
+   * @param int $id
+   */
+  protected function checkUpdateFailsFromCreate($entityClass, $id) {
+    $exceptionThrown = '';
+    try {
+      $entityClass::create()
+        ->setCheckPermissions(FALSE)
+        ->addValue('id', $id)
+        ->execute();
+    }
+    catch (\API_Exception $e) {
+      $exceptionThrown = $e->getMessage();
+    }
+    $this->assertContains('id', $exceptionThrown);
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\AbstractEntity|string $entityClass
+   * @param int $id
+   * @param string $entity
+   */
+  protected function checkGet($entityClass, $id, $entity) {
+    $getResult = $entityClass::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('id', '=', $id)
+      ->execute();
+
+    $errMsg = sprintf('Failed to fetch a %s after creation', $entity);
+    $this->assertEquals($id, $getResult->first()['id'], $errMsg);
+    $this->assertEquals(1, $getResult->count(), $errMsg);
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\AbstractEntity|string $entityClass
+   * @param int $id
+   * @param string $entity
+   */
+  protected function checkGetCount($entityClass, $id, $entity) {
+    $getResult = $entityClass::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('id', '=', $id)
+      ->selectRowCount()
+      ->execute();
+    $errMsg = sprintf('%s getCount failed', $entity);
+    $this->assertEquals(1, $getResult->count(), $errMsg);
+
+    $getResult = $entityClass::get()
+      ->setCheckPermissions(FALSE)
+      ->selectRowCount()
+      ->execute();
+    $errMsg = sprintf('%s getCount failed', $entity);
+    $this->assertGreaterThanOrEqual(1, $getResult->count(), $errMsg);
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\AbstractEntity|string $entityClass
+   */
+  protected function checkDeleteWithNoId($entityClass) {
+    $exceptionThrown = '';
+    try {
+      $entityClass::delete()
+        ->execute();
+    }
+    catch (\API_Exception $e) {
+      $exceptionThrown = $e->getMessage();
+    }
+    $this->assertContains('required', $exceptionThrown);
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\AbstractEntity|string $entityClass
+   */
+  protected function checkWrongParamType($entityClass) {
+    $exceptionThrown = '';
+    try {
+      $entityClass::get()
+        ->setCheckPermissions('nada')
+        ->execute();
+    }
+    catch (\API_Exception $e) {
+      $exceptionThrown = $e->getMessage();
+    }
+    $this->assertContains('checkPermissions', $exceptionThrown);
+    $this->assertContains('type', $exceptionThrown);
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\AbstractEntity|string $entityClass
+   * @param int $id
+   */
+  protected function checkDeletion($entityClass, $id) {
+    $deleteResult = $entityClass::delete()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('id', '=', $id)
+      ->execute();
+
+    // should get back an array of deleted id
+    $this->assertEquals([['id' => $id]], (array) $deleteResult);
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\AbstractEntity|string $entityClass
+   * @param int $id
+   * @param string $entity
+   */
+  protected function checkPostDelete($entityClass, $id, $entity) {
+    $getDeletedResult = $entityClass::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('id', '=', $id)
+      ->execute();
+
+    $errMsg = sprintf('Entity "%s" was not deleted', $entity);
+    $this->assertEquals(0, count($getDeletedResult), $errMsg);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Entity/ContactJoinTest.php b/tests/phpunit/api/v4/Entity/ContactJoinTest.php
new file mode 100644 (file)
index 0000000..31d870c
--- /dev/null
@@ -0,0 +1,138 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Entity;
+
+use Civi\Api4\Contact;
+use Civi\Api4\OptionValue;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class ContactJoinTest extends UnitTestCase {
+
+  public function setUpHeadless() {
+    $relatedTables = [
+      'civicrm_address',
+      'civicrm_email',
+      'civicrm_phone',
+      'civicrm_openid',
+      'civicrm_im',
+      'civicrm_website',
+      'civicrm_activity',
+      'civicrm_activity_contact',
+    ];
+
+    $this->cleanup(['tablesToTruncate' => $relatedTables]);
+    $this->loadDataSet('SingleContact');
+
+    return parent::setUpHeadless();
+  }
+
+  public function testContactJoin() {
+
+    $contact = $this->getReference('test_contact_1');
+    $entitiesToTest = ['Address', 'OpenID', 'IM', 'Website', 'Email', 'Phone'];
+
+    foreach ($entitiesToTest as $entity) {
+      $results = civicrm_api4($entity, 'get', [
+        'where' => [['contact_id', '=', $contact['id']]],
+        'select' => ['contact.display_name', 'contact.id'],
+      ]);
+      foreach ($results as $result) {
+        $this->assertEquals($contact['id'], $result['contact.id']);
+        $this->assertEquals($contact['display_name'], $result['contact.display_name']);
+      }
+    }
+  }
+
+  public function testJoinToPCMWillReturnArray() {
+    $contact = Contact::create()->setValues([
+      'preferred_communication_method' => [1, 2, 3],
+      'contact_type' => 'Individual',
+      'first_name' => 'Test',
+      'last_name' => 'PCM',
+    ])->execute()->first();
+
+    $fetchedContact = Contact::get()
+      ->addWhere('id', '=', $contact['id'])
+      ->addSelect('preferred_communication_method')
+      ->execute()
+      ->first();
+
+    $this->assertCount(3, $fetchedContact["preferred_communication_method"]);
+  }
+
+  public function testJoinToPCMOptionValueWillShowLabel() {
+    $options = OptionValue::get()
+      ->addWhere('option_group.name', '=', 'preferred_communication_method')
+      ->execute()
+      ->getArrayCopy();
+
+    $optionValues = array_column($options, 'value');
+    $labels = array_column($options, 'label');
+
+    $contact = Contact::create()->setValues([
+      'preferred_communication_method' => $optionValues,
+      'contact_type' => 'Individual',
+      'first_name' => 'Test',
+      'last_name' => 'PCM',
+    ])->execute()->first();
+
+    $contact2 = Contact::create()->setValues([
+      'preferred_communication_method' => $optionValues,
+      'contact_type' => 'Individual',
+      'first_name' => 'Test',
+      'last_name' => 'PCM2',
+    ])->execute()->first();
+
+    $contactIds = array_column([$contact, $contact2], 'id');
+
+    $fetchedContact = Contact::get()
+      ->addWhere('id', 'IN', $contactIds)
+      ->addSelect('preferred_communication_method.label')
+      ->execute()
+      ->first();
+
+    $preferredMethod = $fetchedContact['preferred_communication_method'];
+    $returnedLabels = array_column($preferredMethod, 'label');
+
+    $this->assertEquals($labels, $returnedLabels);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Entity/EntityTest.php b/tests/phpunit/api/v4/Entity/EntityTest.php
new file mode 100644 (file)
index 0000000..27a6f15
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Entity;
+
+use Civi\Api4\Entity;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class EntityTest extends UnitTestCase {
+
+  public function testEntityGet() {
+    $result = Entity::get()
+      ->setCheckPermissions(FALSE)
+      ->execute()
+      ->indexBy('name');
+    $this->assertArrayHasKey('Entity', $result,
+      "Entity::get missing itself");
+    $this->assertArrayHasKey('Participant', $result,
+      "Entity::get missing Participant");
+  }
+
+  public function testEntity() {
+    $result = Entity::getActions()
+      ->setCheckPermissions(FALSE)
+      ->execute()
+      ->indexBy('name');
+    $this->assertNotContains(
+      'create',
+      array_keys((array) $result),
+      "Entity entity has more than basic actions");
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Entity/ParticipantTest.php b/tests/phpunit/api/v4/Entity/ParticipantTest.php
new file mode 100644 (file)
index 0000000..e6ccc7c
--- /dev/null
@@ -0,0 +1,256 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Entity;
+
+use Civi\Api4\Participant;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class ParticipantTest extends UnitTestCase {
+
+  public function setUp() {
+    parent::setUp();
+    $cleanup_params = [
+      'tablesToTruncate' => [
+        'civicrm_event',
+        'civicrm_participant',
+      ],
+    ];
+    $this->cleanup($cleanup_params);
+  }
+
+  public function testGetActions() {
+    $result = Participant::getActions()
+      ->setCheckPermissions(FALSE)
+      ->execute()
+      ->indexBy('name');
+
+    $getParams = $result['get']['params'];
+    $whereDescription = 'Criteria for selecting items.';
+
+    $this->assertEquals(TRUE, $getParams['checkPermissions']['default']);
+    $this->assertEquals($whereDescription, $getParams['where']['description']);
+  }
+
+  public function testGet() {
+    $rows = $this->getRowCount('civicrm_participant');
+    if ($rows > 0) {
+      $this->markTestSkipped('Participant table must be empty');
+    }
+
+    // With no records:
+    $result = Participant::get()->setCheckPermissions(FALSE)->execute();
+    $this->assertEquals(0, $result->count(), "count of empty get is not 0");
+
+    // Check that the $result knows what the inputs were
+    $this->assertEquals('Participant', $result->entity);
+    $this->assertEquals('get', $result->action);
+    $this->assertEquals(4, $result->version);
+
+    // Create some test related records before proceeding
+    $participantCount = 20;
+    $contactCount = 7;
+    $eventCount = 5;
+
+    // All events will either have this number or one less because of the
+    // rotating participation creation method.
+    $expectedFirstEventCount = ceil($participantCount / $eventCount);
+
+    $dummy = [
+      'contacts' => $this->createEntity([
+        'type' => 'Individual',
+        'count' => $contactCount,
+        'seq' => 1,
+      ]),
+      'events' => $this->createEntity([
+        'type' => 'Event',
+        'count' => $eventCount,
+        'seq' => 1,
+      ]),
+      'sources' => ['Paddington', 'Springfield', 'Central'],
+    ];
+
+    // - create dummy participants record
+    for ($i = 0; $i < $participantCount; $i++) {
+      $dummy['participants'][$i] = $this->sample([
+        'type' => 'Participant',
+        'overrides' => [
+          'event_id' => $dummy['events'][$i % $eventCount]['id'],
+          'contact_id' => $dummy['contacts'][$i % $contactCount]['id'],
+          // 3 = number of sources
+          'source' => $dummy['sources'][$i % 3],
+        ],
+      ])['sample_params'];
+
+      Participant::create()
+        ->setValues($dummy['participants'][$i])
+        ->setCheckPermissions(FALSE)
+        ->execute();
+    }
+    $sqlCount = $this->getRowCount('civicrm_participant');
+    $this->assertEquals($participantCount, $sqlCount, "Unexpected count");
+
+    $firstEventId = $dummy['events'][0]['id'];
+    $secondEventId = $dummy['events'][1]['id'];
+    $firstContactId = $dummy['contacts'][0]['id'];
+
+    $firstOnlyResult = Participant::get()
+      ->setCheckPermissions(FALSE)
+      ->addClause('AND', ['event_id', '=', $firstEventId])
+      ->execute();
+
+    $this->assertEquals($expectedFirstEventCount, count($firstOnlyResult),
+      "count of first event is not $expectedFirstEventCount");
+
+    // get first two events using different methods
+    $firstTwo = Participant::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('event_id', 'IN', [$firstEventId, $secondEventId])
+      ->execute();
+
+    $firstResult = $result->first();
+
+    // verify counts
+    // count should either twice the first event count or one less
+    $this->assertLessThanOrEqual(
+      $expectedFirstEventCount * 2,
+      count($firstTwo),
+      "count is too high"
+    );
+
+    $this->assertGreaterThanOrEqual(
+      $expectedFirstEventCount * 2 - 1,
+      count($firstTwo),
+      "count is too low"
+    );
+
+    $firstParticipantResult = Participant::get()
+      ->setCheckPermissions(FALSE)
+      ->addWhere('event_id', '=', $firstEventId)
+      ->addWhere('contact_id', '=', $firstContactId)
+      ->execute();
+
+    $this->assertEquals(1, count($firstParticipantResult), "more than one registration");
+
+    $firstParticipantId = $firstParticipantResult->first()['id'];
+
+    // get a result which excludes $first_participant
+    $otherParticipantResult = Participant::get()
+      ->setCheckPermissions(FALSE)
+      ->setSelect(['id'])
+      ->addClause('NOT', [
+        ['event_id', '=', $firstEventId],
+        ['contact_id', '=', $firstContactId],
+      ])
+      ->execute()
+      ->indexBy('id');
+
+    // check alternate syntax for NOT
+    $otherParticipantResult2 = Participant::get()
+      ->setCheckPermissions(FALSE)
+      ->setSelect(['id'])
+      ->addClause('NOT', 'AND', [
+        ['event_id', '=', $firstEventId],
+        ['contact_id', '=', $firstContactId],
+      ])
+      ->execute()
+      ->indexBy('id');
+
+    $this->assertEquals($otherParticipantResult, $otherParticipantResult2);
+
+    $this->assertEquals($participantCount - 1,
+      count($otherParticipantResult),
+      "failed to exclude a single record on complex criteria");
+    // check the record we have excluded is the right one:
+
+    $this->assertFalse(
+      $otherParticipantResult->offsetExists($firstParticipantId),
+      'excluded wrong record');
+
+    // retrieve a participant record and update some records
+    $patchRecord = [
+      'source' => "not " . $firstResult['source'],
+    ];
+
+    Participant::update()
+      ->addWhere('event_id', '=', $firstEventId)
+      ->setCheckPermissions(FALSE)
+      ->setLimit(20)
+      ->setValues($patchRecord)
+      ->setCheckPermissions(FALSE)
+      ->execute();
+
+    // - delete some records
+    $secondEventId = $dummy['events'][1]['id'];
+    $deleteResult = Participant::delete()
+      ->addWhere('event_id', '=', $secondEventId)
+      ->setCheckPermissions(FALSE)
+      ->execute();
+    $expectedDeletes = [2, 7, 12, 17];
+    $this->assertEquals($expectedDeletes, array_column((array) $deleteResult, 'id'),
+      "didn't delete every second record as expected");
+
+    $sqlCount = $this->getRowCount('civicrm_participant');
+    $this->assertEquals(
+      $participantCount - count($expectedDeletes),
+      $sqlCount,
+      "records not gone from database after delete");
+
+    // Try creating is_test participants
+    foreach ($dummy['contacts'] as $contact) {
+      Participant::create()
+        ->addValue('is_test', 1)
+        ->addValue('contact_id', $contact['id'])
+        ->addValue('event_id', $secondEventId)
+        ->execute();
+    }
+
+    // By default is_test participants are hidden
+    $this->assertCount(0, Participant::get()->selectRowCount()->addWhere('event_id', '=', $secondEventId)->execute());
+
+    // Test records show up if you add is_test to the query
+    $testParticipants = Participant::get()->addWhere('event_id', '=', $secondEventId)->addWhere('is_test', '=', 1)->addSelect('id')->execute();
+    $this->assertCount($contactCount, $testParticipants);
+
+    // Or if you search by id
+    $this->assertCount(1, Participant::get()->selectRowCount()->addWhere('id', '=', $testParticipants->first()['id'])->execute());
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Entity/RouteTest.php b/tests/phpunit/api/v4/Entity/RouteTest.php
new file mode 100644 (file)
index 0000000..b9fc45a
--- /dev/null
@@ -0,0 +1,56 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Entity;
+
+use Civi\Api4\Route;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class RouteTest extends UnitTestCase {
+
+  public function testGet() {
+    $result = Route::get()->addWhere('path', '=', 'civicrm/admin')->execute();
+    $this->assertEquals(1, $result->count());
+
+    $result = Route::get()->addWhere('path', 'LIKE', 'civicrm/admin/%')->execute();
+    $this->assertGreaterThan(10, $result->count());
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Entity/SettingTest.php b/tests/phpunit/api/v4/Entity/SettingTest.php
new file mode 100644 (file)
index 0000000..00fc4ea
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Entity;
+
+use Civi\Api4\Setting;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class SettingTest extends UnitTestCase {
+
+  public function testSettingASetting() {
+    $setting = Setting::set()->addValue('menubar_position', 'above-crm-container')->setCheckPermissions(FALSE)->execute()->first();
+    $this->assertEquals('above-crm-container', $setting['value']);
+    $setting = Setting::get()->addSelect('menubar_position')->setCheckPermissions(FALSE)->execute()->first();
+    $this->assertEquals('above-crm-container', $setting['value']);
+
+    $setting = Setting::revert()->addSelect('menubar_position')->setCheckPermissions(FALSE)->execute()->indexBy('name')->column('value');
+    $this->assertEquals(['menubar_position' => 'over-cms-menu'], $setting);
+    $setting = civicrm_api4('Setting', 'get', ['select' => ['menubar_position'], 'checkPermissions' => FALSE], 0);
+    $this->assertEquals('over-cms-menu', $setting['value']);
+  }
+
+  public function testInvalidSetting() {
+    $message = '';
+    try {
+      Setting::set()->addValue('not_a_real_setting!', 'hello')->setCheckPermissions(FALSE)->execute();
+    }
+    catch (\API_Exception $e) {
+      $message = $e->getMessage();
+    }
+    $this->assertContains('setting', $message);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Mock/Api4/Action/MockArrayEntity/Get.php b/tests/phpunit/api/v4/Mock/Api4/Action/MockArrayEntity/Get.php
new file mode 100644 (file)
index 0000000..c18db65
--- /dev/null
@@ -0,0 +1,88 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4\Action\MockArrayEntity;
+
+/**
+ * This class demonstrates how the getRecords method of Basic\Get can be overridden.
+ */
+class Get extends \Civi\Api4\Generic\BasicGetAction {
+
+  public function getRecords() {
+    return [
+      [
+        'field1' => 1,
+        'field2' => 'zebra',
+        'field3' => NULL,
+        'field4' => [1, 2, 3],
+        'field5' => 'apple',
+      ],
+      [
+        'field1' => 2,
+        'field2' => 'yack',
+        'field3' => 0,
+        'field4' => [2, 3, 4],
+        'field5' => 'banana',
+        'field6' => '',
+      ],
+      [
+        'field1' => 3,
+        'field2' => 'x ray',
+        'field4' => [3, 4, 5],
+        'field5' => 'banana',
+        'field6' => 0,
+      ],
+      [
+        'field1' => 4,
+        'field2' => 'wildebeest',
+        'field3' => 1,
+        'field4' => [4, 5, 6],
+        'field5' => 'apple',
+        'field6' => '0',
+      ],
+      [
+        'field1' => 5,
+        'field2' => 'vole',
+        'field3' => 1,
+        'field4' => [4, 5, 6],
+        'field5' => 'apple',
+        'field6' => 0,
+      ],
+    ];
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Mock/Api4/MockArrayEntity.php b/tests/phpunit/api/v4/Mock/Api4/MockArrayEntity.php
new file mode 100644 (file)
index 0000000..12324c3
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+use Civi\Api4\Generic\BasicGetFieldsAction;
+
+/**
+ * MockArrayEntity entity.
+ *
+ * @method Generic\BasicGetAction get()
+ *
+ * @package Civi\Api4
+ */
+class MockArrayEntity extends Generic\AbstractEntity {
+
+  public static function getFields() {
+    return new BasicGetFieldsAction(static::class, __FUNCTION__, function() {
+      return [];
+    });
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Mock/Api4/MockBasicEntity.php b/tests/phpunit/api/v4/Mock/Api4/MockBasicEntity.php
new file mode 100644 (file)
index 0000000..30b2619
--- /dev/null
@@ -0,0 +1,136 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace Civi\Api4;
+
+use api\v4\Mock\MockEntityDataStorage;
+
+/**
+ * MockBasicEntity entity.
+ *
+ * @package Civi\Api4
+ */
+class MockBasicEntity extends Generic\AbstractEntity {
+
+  /**
+   * @return Generic\BasicGetFieldsAction
+   */
+  public static function getFields() {
+    return new Generic\BasicGetFieldsAction(static::class, __FUNCTION__, function() {
+      return [
+        [
+          'name' => 'id',
+          'type' => 'Integer',
+        ],
+        [
+          'name' => 'group',
+          'options' => [
+            'one' => 'One',
+            'two' => 'Two',
+          ],
+        ],
+        [
+          'name' => 'color',
+        ],
+        [
+          'name' => 'shape',
+        ],
+        [
+          'name' => 'size',
+        ],
+        [
+          'name' => 'weight',
+        ],
+      ];
+    });
+  }
+
+  /**
+   * @return Generic\BasicGetAction
+   */
+  public static function get() {
+    return new Generic\BasicGetAction('MockBasicEntity', __FUNCTION__, [MockEntityDataStorage::CLASS, 'get']);
+  }
+
+  /**
+   * @return Generic\BasicCreateAction
+   */
+  public static function create() {
+    return new Generic\BasicCreateAction(static::class, __FUNCTION__, [MockEntityDataStorage::CLASS, 'write']);
+  }
+
+  /**
+   * @return Generic\BasicSaveAction
+   */
+  public static function save() {
+    return new Generic\BasicSaveAction(self::getEntityName(), __FUNCTION__, 'id', [MockEntityDataStorage::CLASS, 'write']);
+  }
+
+  /**
+   * @return Generic\BasicUpdateAction
+   */
+  public static function update() {
+    return new Generic\BasicUpdateAction(self::getEntityName(), __FUNCTION__, 'id', [MockEntityDataStorage::CLASS, 'write']);
+  }
+
+  /**
+   * @return Generic\BasicBatchAction
+   */
+  public static function delete() {
+    return new Generic\BasicBatchAction('MockBasicEntity', __FUNCTION__, 'id', [MockEntityDataStorage::CLASS, 'delete']);
+  }
+
+  /**
+   * @return Generic\BasicBatchAction
+   */
+  public static function batchFrobnicate() {
+    return new Generic\BasicBatchAction('MockBasicEntity', __FUNCTION__, ['id', 'number'], function ($item) {
+      return [
+        'id' => $item['id'],
+        'frobnication' => $item['number'] * $item['number'],
+      ];
+    });
+  }
+
+  /**
+   * @return Generic\BasicReplaceAction
+   */
+  public static function replace() {
+    return new Generic\BasicReplaceAction('MockBasicEntity', __FUNCTION__);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Mock/MockEntityDataStorage.php b/tests/phpunit/api/v4/Mock/MockEntityDataStorage.php
new file mode 100644 (file)
index 0000000..6ab6d97
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Mock;
+
+/**
+ * Simple data backend for mock basic api.
+ */
+class MockEntityDataStorage {
+
+  private static $data = [];
+
+  private static $nextId = 1;
+
+  public static function get() {
+    return self::$data;
+  }
+
+  public static function write($record) {
+    if (empty($record['id'])) {
+      $record['id'] = self::$nextId++;
+      self::$data[$record['id']] = $record;
+    }
+    else {
+      self::$data[$record['id']] = $record + self::$data[$record['id']];
+    }
+    return $record;
+  }
+
+  public static function delete($record) {
+    unset(self::$data[$record['id']]);
+    return $record;
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Mock/MockV4ReflectionBase.php b/tests/phpunit/api/v4/Mock/MockV4ReflectionBase.php
new file mode 100644 (file)
index 0000000..a8a32fb
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Mock;
+
+/**
+ * Class TestV4ReflectionBase
+ *
+ * This is the base class.
+ *
+ * @internal
+ */
+class MockV4ReflectionBase {
+  /**
+   * This is the foo property.
+   *
+   * In general, you can do nothing with it.
+   *
+   * @var array
+   */
+  public $foo = [];
+
+}
diff --git a/tests/phpunit/api/v4/Mock/MockV4ReflectionChild.php b/tests/phpunit/api/v4/Mock/MockV4ReflectionChild.php
new file mode 100644 (file)
index 0000000..5ce88e7
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Mock;
+
+/**
+ * @inheritDoc
+ */
+class MockV4ReflectionChild extends MockV4ReflectionBase {
+  /**
+   * @var array
+   * @inheritDoc
+   *
+   * In the child class, foo has been barred.
+   */
+  public $foo = ['bar' => 1];
+
+}
diff --git a/tests/phpunit/api/v4/Mock/MockV4ReflectionGrandchild.php b/tests/phpunit/api/v4/Mock/MockV4ReflectionGrandchild.php
new file mode 100644 (file)
index 0000000..a481008
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Mock;
+
+/**
+ * Grandchild class
+ *
+ * This is an extended description.
+ *
+ * There is a line break in this description.
+ *
+ * @inheritdoc
+ */
+class MockV4ReflectionGrandchild extends MockV4ReflectionChild {
+
+}
diff --git a/tests/phpunit/api/v4/Query/Api4SelectQueryComplexJoinTest.php b/tests/phpunit/api/v4/Query/Api4SelectQueryComplexJoinTest.php
new file mode 100644 (file)
index 0000000..6b5acd0
--- /dev/null
@@ -0,0 +1,122 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Query;
+
+use Civi\Api4\Query\Api4SelectQuery;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class Api4SelectQueryComplexJoinTest extends UnitTestCase {
+
+  public function setUpHeadless() {
+    $relatedTables = [
+      'civicrm_address',
+      'civicrm_email',
+      'civicrm_phone',
+      'civicrm_openid',
+      'civicrm_im',
+      'civicrm_website',
+      'civicrm_activity',
+      'civicrm_activity_contact',
+    ];
+    $this->cleanup(['tablesToTruncate' => $relatedTables]);
+    $this->loadDataSet('SingleContact');
+    return parent::setUpHeadless();
+  }
+
+  public function testWithComplexRelatedEntitySelect() {
+    $query = new Api4SelectQuery('Contact', FALSE, civicrm_api4('Contact', 'getFields', ['includeCustom' => FALSE, 'checkPermissions' => FALSE, 'action' => 'get'], 'name'));
+    $query->select[] = 'id';
+    $query->select[] = 'display_name';
+    $query->select[] = 'phones.phone';
+    $query->select[] = 'emails.email';
+    $query->select[] = 'emails.location_type.name';
+    $query->select[] = 'created_activities.contact_id';
+    $query->select[] = 'created_activities.activity.subject';
+    $query->select[] = 'created_activities.activity.activity_type.name';
+    $query->where[] = ['first_name', '=', 'Single'];
+    $query->where[] = ['id', '=', $this->getReference('test_contact_1')['id']];
+    $results = $query->run();
+
+    $testActivities = [
+      $this->getReference('test_activity_1'),
+      $this->getReference('test_activity_2'),
+    ];
+    $activitySubjects = array_column($testActivities, 'subject');
+
+    $this->assertCount(1, $results);
+    $firstResult = array_shift($results);
+    $this->assertArrayHasKey('created_activities', $firstResult);
+    $firstCreatedActivity = array_shift($firstResult['created_activities']);
+    $this->assertArrayHasKey('activity', $firstCreatedActivity);
+    $firstActivity = $firstCreatedActivity['activity'];
+    $this->assertContains($firstActivity['subject'], $activitySubjects);
+    $this->assertArrayHasKey('activity_type', $firstActivity);
+    $activityType = $firstActivity['activity_type'];
+    $this->assertArrayHasKey('name', $activityType);
+  }
+
+  public function testWithSelectOfOrphanDeepValues() {
+    $query = new Api4SelectQuery('Contact', FALSE, civicrm_api4('Contact', 'getFields', ['includeCustom' => FALSE, 'checkPermissions' => FALSE, 'action' => 'get'], 'name'));
+    $query->select[] = 'id';
+    $query->select[] = 'first_name';
+    // emails not selected
+    $query->select[] = 'emails.location_type.name';
+    $results = $query->run();
+    $firstResult = array_shift($results);
+
+    $this->assertEmpty($firstResult['emails']);
+  }
+
+  public function testOrderDoesNotMatter() {
+    $query = new Api4SelectQuery('Contact', FALSE, civicrm_api4('Contact', 'getFields', ['includeCustom' => FALSE, 'checkPermissions' => FALSE, 'action' => 'get'], 'name'));
+    $query->select[] = 'id';
+    $query->select[] = 'first_name';
+    // before emails selection
+    $query->select[] = 'emails.location_type.name';
+    $query->select[] = 'emails.email';
+    $query->where[] = ['emails.email', 'IS NOT NULL'];
+    $results = $query->run();
+    $firstResult = array_shift($results);
+
+    $this->assertNotEmpty($firstResult['emails'][0]['location_type']['name']);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Query/Api4SelectQueryTest.php b/tests/phpunit/api/v4/Query/Api4SelectQueryTest.php
new file mode 100644 (file)
index 0000000..65d2317
--- /dev/null
@@ -0,0 +1,124 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Query;
+
+use Civi\Api4\Query\Api4SelectQuery;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class Api4SelectQueryTest extends UnitTestCase {
+
+  public function setUpHeadless() {
+    $relatedTables = [
+      'civicrm_address',
+      'civicrm_email',
+      'civicrm_phone',
+      'civicrm_openid',
+      'civicrm_im',
+      'civicrm_website',
+      'civicrm_activity',
+      'civicrm_activity_contact',
+    ];
+    $this->cleanup(['tablesToTruncate' => $relatedTables]);
+    $this->loadDataSet('DefaultDataSet');
+    $displayNameFormat = '{contact.first_name}{ }{contact.last_name}';
+    \Civi::settings()->set('display_name_format', $displayNameFormat);
+
+    return parent::setUpHeadless();
+  }
+
+  public function testWithSingleWhereJoin() {
+    $phoneNum = $this->getReference('test_phone_1')['phone'];
+
+    $query = new Api4SelectQuery('Contact', FALSE, civicrm_api4('Contact', 'getFields', ['includeCustom' => FALSE, 'checkPermissions' => FALSE, 'action' => 'get'], 'name'));
+    $query->where[] = ['phones.phone', '=', $phoneNum];
+    $results = $query->run();
+
+    $this->assertCount(1, $results);
+  }
+
+  public function testOneToManyJoin() {
+    $phoneNum = $this->getReference('test_phone_1')['phone'];
+
+    $query = new Api4SelectQuery('Contact', FALSE, civicrm_api4('Contact', 'getFields', ['includeCustom' => FALSE, 'checkPermissions' => FALSE, 'action' => 'get'], 'name'));
+    $query->select[] = 'id';
+    $query->select[] = 'first_name';
+    $query->select[] = 'phones.phone';
+    $query->where[] = ['phones.phone', '=', $phoneNum];
+    $results = $query->run();
+
+    $this->assertCount(1, $results);
+    $firstResult = array_shift($results);
+    $this->assertArrayHasKey('phones', $firstResult);
+    $firstPhone = array_shift($firstResult['phones']);
+    $this->assertEquals($phoneNum, $firstPhone['phone']);
+  }
+
+  public function testManyToOneJoin() {
+    $phoneNum = $this->getReference('test_phone_1')['phone'];
+    $contact = $this->getReference('test_contact_1');
+
+    $query = new Api4SelectQuery('Phone', FALSE, civicrm_api4('Phone', 'getFields', ['includeCustom' => FALSE, 'checkPermissions' => FALSE, 'action' => 'get'], 'name'));
+    $query->select[] = 'id';
+    $query->select[] = 'phone';
+    $query->select[] = 'contact.display_name';
+    $query->select[] = 'contact.first_name';
+    $query->where[] = ['phone', '=', $phoneNum];
+    $results = $query->run();
+
+    $this->assertCount(1, $results);
+    $firstResult = array_shift($results);
+    $this->assertEquals($contact['display_name'], $firstResult['contact.display_name']);
+  }
+
+  public function testOneToManyMultipleJoin() {
+    $query = new Api4SelectQuery('Contact', FALSE, civicrm_api4('Contact', 'getFields', ['includeCustom' => FALSE, 'checkPermissions' => FALSE, 'action' => 'get'], 'name'));
+    $query->select[] = 'id';
+    $query->select[] = 'first_name';
+    $query->select[] = 'phones.phone';
+    $query->where[] = ['first_name', '=', 'Phoney'];
+    $results = $query->run();
+    $result = array_pop($results);
+
+    $this->assertEquals('Phoney', $result['first_name']);
+    $this->assertCount(2, $result['phones']);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Query/OneToOneJoinTest.php b/tests/phpunit/api/v4/Query/OneToOneJoinTest.php
new file mode 100644 (file)
index 0000000..2fd0e0c
--- /dev/null
@@ -0,0 +1,79 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Query;
+
+use Civi\Api4\Contact;
+use api\v4\UnitTestCase;
+
+/**
+ * Class OneToOneJoinTest
+ * @package api\v4\Query
+ * @group headless
+ */
+class OneToOneJoinTest extends UnitTestCase {
+
+  public function testOneToOneJoin() {
+    $armenianContact = Contact::create()
+      ->addValue('first_name', 'Contact')
+      ->addValue('last_name', 'One')
+      ->addValue('contact_type', 'Individual')
+      ->addValue('preferred_language', 'hy_AM')
+      ->execute()
+      ->first();
+
+    $basqueContact = Contact::create()
+      ->addValue('first_name', 'Contact')
+      ->addValue('last_name', 'Two')
+      ->addValue('contact_type', 'Individual')
+      ->addValue('preferred_language', 'eu_ES')
+      ->execute()
+      ->first();
+
+    $contacts = Contact::get()
+      ->addWhere('id', 'IN', [$armenianContact['id'], $basqueContact['id']])
+      ->addSelect('preferred_language.label')
+      ->addSelect('last_name')
+      ->execute()
+      ->indexBy('last_name')
+      ->getArrayCopy();
+
+    $this->assertEquals($contacts['One']['preferred_language.label'], 'Armenian');
+    $this->assertEquals($contacts['Two']['preferred_language.label'], 'Basque');
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Query/OptionValueJoinTest.php b/tests/phpunit/api/v4/Query/OptionValueJoinTest.php
new file mode 100644 (file)
index 0000000..854383d
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Query;
+
+use Civi\Api4\Query\Api4SelectQuery;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class OptionValueJoinTest extends UnitTestCase {
+
+  public function setUpHeadless() {
+    $relatedTables = [
+      'civicrm_address',
+      'civicrm_email',
+      'civicrm_phone',
+      'civicrm_openid',
+      'civicrm_im',
+      'civicrm_website',
+      'civicrm_activity',
+      'civicrm_activity_contact',
+    ];
+
+    $this->cleanup(['tablesToTruncate' => $relatedTables]);
+    $this->loadDataSet('SingleContact');
+
+    return parent::setUpHeadless();
+  }
+
+  public function testCommunicationMethodJoin() {
+    $query = new Api4SelectQuery('Contact', FALSE, civicrm_api4('Contact', 'getFields', ['includeCustom' => FALSE, 'checkPermissions' => FALSE, 'action' => 'get'], 'name'));
+    $query->select[] = 'first_name';
+    $query->select[] = 'preferred_communication_method.label';
+    $query->where[] = ['preferred_communication_method', 'IS NOT NULL'];
+    $results = $query->run();
+    $first = array_shift($results);
+    $firstPreferredMethod = array_shift($first['preferred_communication_method']);
+
+    $this->assertEquals(
+      'Phone',
+      $firstPreferredMethod['label']
+    );
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Query/SelectQueryMultiJoinTest.php b/tests/phpunit/api/v4/Query/SelectQueryMultiJoinTest.php
new file mode 100644 (file)
index 0000000..f591373
--- /dev/null
@@ -0,0 +1,110 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Query;
+
+use Civi\Api4\Contact;
+use Civi\Api4\Email;
+use api\v4\UnitTestCase;
+
+/**
+ * Class SelectQueryMultiJoinTest
+ * @package api\v4\Query
+ * @group headless
+ */
+class SelectQueryMultiJoinTest extends UnitTestCase {
+
+  public function setUpHeadless() {
+    $this->cleanup(['tablesToTruncate' => ['civicrm_contact', 'civicrm_email']]);
+    $this->loadDataSet('MultiContactMultiEmail');
+    return parent::setUpHeadless();
+  }
+
+  public function testOneToManySelect() {
+    $results = Contact::get()
+      ->addSelect('emails.email')
+      ->execute()
+      ->indexBy('id')
+      ->getArrayCopy();
+
+    $firstContactId = $this->getReference('test_contact_1')['id'];
+    $secondContactId = $this->getReference('test_contact_2')['id'];
+
+    $firstContact = $results[$firstContactId];
+    $secondContact = $results[$secondContactId];
+    $firstContactEmails = array_column($firstContact['emails'], 'email');
+    $secondContactEmails = array_column($secondContact['emails'], 'email');
+
+    $expectedFirstEmails = [
+      'test_contact_one_home@fakedomain.com',
+      'test_contact_one_work@fakedomain.com',
+    ];
+    $expectedSecondEmails = [
+      'test_contact_two_home@fakedomain.com',
+      'test_contact_two_work@fakedomain.com',
+    ];
+
+    $this->assertEquals($expectedFirstEmails, $firstContactEmails);
+    $this->assertEquals($expectedSecondEmails, $secondContactEmails);
+  }
+
+  public function testManyToOneSelect() {
+    $results = Email::get()
+      ->addSelect('contact.display_name')
+      ->execute()
+      ->indexBy('id')
+      ->getArrayCopy();
+
+    $firstEmail = $this->getReference('test_email_1');
+    $secondEmail = $this->getReference('test_email_2');
+    $thirdEmail = $this->getReference('test_email_3');
+    $fourthEmail = $this->getReference('test_email_4');
+    $firstContactEmailIds = [$firstEmail['id'], $secondEmail['id']];
+    $secondContactEmailIds = [$thirdEmail['id'], $fourthEmail['id']];
+
+    foreach ($results as $id => $email) {
+      $displayName = $email['contact.display_name'];
+      if (in_array($id, $firstContactEmailIds)) {
+        $this->assertEquals('First Contact', $displayName);
+      }
+      elseif (in_array($id, $secondContactEmailIds)) {
+        $this->assertEquals('Second Contact', $displayName);
+      }
+    }
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Service/Schema/SchemaMapRealTableTest.php b/tests/phpunit/api/v4/Service/Schema/SchemaMapRealTableTest.php
new file mode 100644 (file)
index 0000000..f7e0ad6
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Service\Schema;
+
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class SchemaMapRealTableTest extends UnitTestCase {
+
+  public function testAutoloadWillPopulateTablesByDefault() {
+    $map = \Civi::container()->get('schema_map');
+    $this->assertNotEmpty($map->getTables());
+  }
+
+  public function testSimplePathWillExist() {
+    $map = \Civi::container()->get('schema_map');
+    $path = $map->getPath('civicrm_contact', 'emails');
+    $this->assertCount(1, $path);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Service/Schema/SchemaMapperTest.php b/tests/phpunit/api/v4/Service/Schema/SchemaMapperTest.php
new file mode 100644 (file)
index 0000000..5d33a07
--- /dev/null
@@ -0,0 +1,125 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Service\Schema;
+
+use Civi\Api4\Service\Schema\Joinable\Joinable;
+use Civi\Api4\Service\Schema\SchemaMap;
+use Civi\Api4\Service\Schema\Table;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class SchemaMapperTest extends UnitTestCase {
+
+  public function testWillHaveNoPathWithNoTables() {
+    $map = new SchemaMap();
+    $this->assertEmpty($map->getPath('foo', 'bar'));
+  }
+
+  public function testWillHavePathWithSingleJump() {
+    $phoneTable = new Table('civicrm_phone');
+    $locationTable = new Table('civicrm_location_type');
+    $link = new Joinable('civicrm_location_type', 'id', 'location');
+    $phoneTable->addTableLink('location_type_id', $link);
+
+    $map = new SchemaMap();
+    $map->addTables([$phoneTable, $locationTable]);
+
+    $this->assertNotEmpty($map->getPath('civicrm_phone', 'location'));
+  }
+
+  public function testWillHavePathWithDoubleJump() {
+    $activity = new Table('activity');
+    $activityContact = new Table('activity_contact');
+    $middleLink = new Joinable('activity_contact', 'activity_id');
+    $contactLink = new Joinable('contact', 'id');
+    $activity->addTableLink('id', $middleLink);
+    $activityContact->addTableLink('contact_id', $contactLink);
+
+    $map = new SchemaMap();
+    $map->addTables([$activity, $activityContact]);
+
+    $this->assertNotEmpty($map->getPath('activity', 'contact'));
+  }
+
+  public function testPathWithTripleJoin() {
+    $first = new Table('first');
+    $second = new Table('second');
+    $third = new Table('third');
+    $first->addTableLink('id', new Joinable('second', 'id'));
+    $second->addTableLink('id', new Joinable('third', 'id'));
+    $third->addTableLink('id', new Joinable('fourth', 'id'));
+
+    $map = new SchemaMap();
+    $map->addTables([$first, $second, $third]);
+
+    $this->assertNotEmpty($map->getPath('first', 'fourth'));
+  }
+
+  public function testCircularReferenceWillNotBreakIt() {
+    $contactTable = new Table('contact');
+    $carTable = new Table('car');
+    $carLink = new Joinable('car', 'id');
+    $ownerLink = new Joinable('contact', 'id');
+    $contactTable->addTableLink('car_id', $carLink);
+    $carTable->addTableLink('owner_id', $ownerLink);
+
+    $map = new SchemaMap();
+    $map->addTables([$contactTable, $carTable]);
+
+    $this->assertEmpty($map->getPath('contact', 'foo'));
+  }
+
+  public function testCannotGoOverJoinLimit() {
+    $first = new Table('first');
+    $second = new Table('second');
+    $third = new Table('third');
+    $fourth = new Table('fourth');
+    $first->addTableLink('id', new Joinable('second', 'id'));
+    $second->addTableLink('id', new Joinable('third', 'id'));
+    $third->addTableLink('id', new Joinable('fourth', 'id'));
+    $fourth->addTableLink('id', new Joinable('fifth', 'id'));
+
+    $map = new SchemaMap();
+    $map->addTables([$first, $second, $third, $fourth]);
+
+    $this->assertEmpty($map->getPath('first', 'fifth'));
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Service/TestCreationParameterProvider.php b/tests/phpunit/api/v4/Service/TestCreationParameterProvider.php
new file mode 100644 (file)
index 0000000..6a44e31
--- /dev/null
@@ -0,0 +1,179 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Service;
+
+use Civi\Api4\Service\Spec\FieldSpec;
+use Civi\Api4\Service\Spec\SpecGatherer;
+
+class TestCreationParameterProvider {
+
+  /**
+   * @var \Civi\Api4\Service\Spec\SpecGatherer
+   */
+  protected $gatherer;
+
+  /**
+   * @param \Civi\Api4\Service\Spec\SpecGatherer $gatherer
+   */
+  public function __construct(SpecGatherer $gatherer) {
+    $this->gatherer = $gatherer;
+  }
+
+  /**
+   * @param $entity
+   *
+   * @return array
+   */
+  public function getRequired($entity) {
+    $createSpec = $this->gatherer->getSpec($entity, 'create', FALSE);
+    $requiredFields = array_merge($createSpec->getRequiredFields(), $createSpec->getConditionalRequiredFields());
+
+    if ($entity === 'Contact') {
+      $requiredFields[] = $createSpec->getFieldByName('first_name');
+      $requiredFields[] = $createSpec->getFieldByName('last_name');
+    }
+
+    $requiredParams = [];
+    foreach ($requiredFields as $requiredField) {
+      $value = $this->getRequiredValue($requiredField);
+      $requiredParams[$requiredField->getName()] = $value;
+    }
+
+    unset($requiredParams['id']);
+
+    return $requiredParams;
+  }
+
+  /**
+   * Attempt to get a value using field option, defaults, FKEntity, or a random
+   * value based on the data type.
+   *
+   * @param \Civi\Api4\Service\Spec\FieldSpec $field
+   *
+   * @return mixed
+   * @throws \Exception
+   */
+  private function getRequiredValue(FieldSpec $field) {
+
+    if ($field->getOptions()) {
+      return $this->getOption($field);
+    }
+    elseif ($field->getDefaultValue()) {
+      return $field->getDefaultValue();
+    }
+    elseif ($field->getFkEntity()) {
+      return $this->getFkID($field, $field->getFkEntity());
+    }
+    elseif (in_array($field->getName(), ['entity_id', 'contact_id'])) {
+      return $this->getFkID($field, 'Contact');
+    }
+
+    $randomValue = $this->getRandomValue($field->getDataType());
+
+    if ($randomValue) {
+      return $randomValue;
+    }
+
+    throw new \Exception('Could not provide default value');
+  }
+
+  /**
+   * @param \Civi\Api4\Service\Spec\FieldSpec $field
+   *
+   * @return mixed
+   */
+  private function getOption(FieldSpec $field) {
+    $options = $field->getOptions();
+    return array_rand($options);
+  }
+
+  /**
+   * @param \Civi\Api4\Service\Spec\FieldSpec $field
+   * @param string $fkEntity
+   *
+   * @return mixed
+   * @throws \Exception
+   */
+  private function getFkID(FieldSpec $field, $fkEntity) {
+    $params = ['checkPermissions' => FALSE];
+    // Be predictable about what type of contact we select
+    if ($fkEntity === 'Contact') {
+      $params['where'] = [['contact_type', '=', 'Individual']];
+    }
+    $entityList = civicrm_api4($fkEntity, 'get', $params);
+    if ($entityList->count() < 1) {
+      $msg = sprintf('At least one %s is required in test', $fkEntity);
+      throw new \Exception($msg);
+    }
+
+    return $entityList->last()['id'];
+  }
+
+  /**
+   * @param $dataType
+   *
+   * @return int|null|string
+   */
+  private function getRandomValue($dataType) {
+    switch ($dataType) {
+      case 'Boolean':
+        return TRUE;
+
+      case 'Integer':
+        return rand(1, 2000);
+
+      case 'String':
+        return \CRM_Utils_String::createRandom(10, implode('', range('a', 'z')));
+
+      case 'Text':
+        return \CRM_Utils_String::createRandom(100, implode('', range('a', 'z')));
+
+      case 'Money':
+        return sprintf('%d.%2d', rand(0, 2000), rand(10, 99));
+
+      case 'Date':
+        return '20100102';
+
+      case 'Timestamp':
+        return 'now';
+    }
+
+    return NULL;
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Spec/RequestSpecTest.php b/tests/phpunit/api/v4/Spec/RequestSpecTest.php
new file mode 100644 (file)
index 0000000..4c1dc6e
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Spec;
+
+use Civi\Api4\Service\Spec\FieldSpec;
+use Civi\Api4\Service\Spec\RequestSpec;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class RequestSpecTest extends UnitTestCase {
+
+  public function testRequiredFieldFetching() {
+    $spec = new RequestSpec('Contact', 'get');
+    $requiredField = new FieldSpec('name', 'Contact');
+    $requiredField->setRequired(TRUE);
+    $nonRequiredField = new FieldSpec('age', 'Contact', 'Integer');
+    $nonRequiredField->setRequired(FALSE);
+    $spec->addFieldSpec($requiredField);
+    $spec->addFieldSpec($nonRequiredField);
+
+    $requiredFields = $spec->getRequiredFields();
+
+    $this->assertCount(1, $requiredFields);
+    $this->assertEquals('name', array_shift($requiredFields)->getName());
+  }
+
+  public function testGettingFieldNames() {
+    $spec = new RequestSpec('Contact', 'get');
+    $nameField = new FieldSpec('name', 'Contact');
+    $ageField = new FieldSpec('age', 'Contact', 'Integer');
+    $spec->addFieldSpec($nameField);
+    $spec->addFieldSpec($ageField);
+
+    $fieldNames = $spec->getFieldNames();
+
+    $this->assertCount(2, $fieldNames);
+    $this->assertEquals(['name', 'age'], $fieldNames);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Spec/SpecFormatterTest.php b/tests/phpunit/api/v4/Spec/SpecFormatterTest.php
new file mode 100644 (file)
index 0000000..f80b3da
--- /dev/null
@@ -0,0 +1,128 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Spec;
+
+use Civi\Api4\Service\Spec\CustomFieldSpec;
+use Civi\Api4\Service\Spec\FieldSpec;
+use Civi\Api4\Service\Spec\RequestSpec;
+use Civi\Api4\Service\Spec\SpecFormatter;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class SpecFormatterTest extends UnitTestCase {
+
+  public function testSpecToArray() {
+    $spec = new RequestSpec('Contact', 'get');
+    $fieldName = 'last_name';
+    $field = new FieldSpec($fieldName, 'Contact');
+    $spec->addFieldSpec($field);
+    $arraySpec = SpecFormatter::specToArray($spec->getFields());
+
+    $this->assertEquals('String', $arraySpec[$fieldName]['data_type']);
+  }
+
+  /**
+   * @dataProvider arrayFieldSpecProvider
+   *
+   * @param array $fieldData
+   * @param string $expectedName
+   * @param string $expectedType
+   */
+  public function testArrayToField($fieldData, $expectedName, $expectedType) {
+    $field = SpecFormatter::arrayToField($fieldData, 'TestEntity');
+
+    $this->assertEquals($expectedName, $field->getName());
+    $this->assertEquals($expectedType, $field->getDataType());
+  }
+
+  public function testCustomFieldWillBeReturned() {
+    $customGroupId = 1432;
+    $customFieldId = 3333;
+    $name = 'MyFancyField';
+
+    $data = [
+      'custom_group_id' => $customGroupId,
+      'custom_group.name' => 'my_group',
+      'id' => $customFieldId,
+      'name' => $name,
+      'data_type' => 'String',
+      'html_type' => 'Multi-Select',
+    ];
+
+    /** @var \Civi\Api4\Service\Spec\CustomFieldSpec $field */
+    $field = SpecFormatter::arrayToField($data, 'TestEntity');
+
+    $this->assertInstanceOf(CustomFieldSpec::class, $field);
+    $this->assertEquals('my_group', $field->getCustomGroupName());
+    $this->assertEquals($customFieldId, $field->getCustomFieldId());
+    $this->assertEquals(\CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND, $field->getSerialize());
+    $this->assertEquals('Select', $field->getInputType());
+    $this->assertTrue($field->getInputAttrs()['multiple']);
+  }
+
+  /**
+   * @return array
+   */
+  public function arrayFieldSpecProvider() {
+    return [
+      [
+        [
+          'name' => 'Foo',
+          'title' => 'Bar',
+          'type' => \CRM_Utils_Type::T_STRING,
+        ],
+        'Foo',
+        'String',
+      ],
+      [
+        [
+          'name' => 'MyField',
+          'title' => 'Bar',
+          'type' => \CRM_Utils_Type::T_STRING,
+          // this should take precedence
+          'data_type' => 'Boolean',
+        ],
+        'MyField',
+        'Boolean',
+      ],
+    ];
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Spec/SpecGathererTest.php b/tests/phpunit/api/v4/Spec/SpecGathererTest.php
new file mode 100644 (file)
index 0000000..368054a
--- /dev/null
@@ -0,0 +1,130 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Spec;
+
+use Civi\Api4\Service\Spec\FieldSpec;
+use Civi\Api4\Service\Spec\Provider\Generic\SpecProviderInterface;
+use Civi\Api4\Service\Spec\SpecGatherer;
+use api\v4\Traits\OptionCleanupTrait;
+use api\v4\UnitTestCase;
+use Civi\Api4\CustomField;
+use Civi\Api4\CustomGroup;
+use api\v4\Traits\TableDropperTrait;
+use Prophecy\Argument;
+
+/**
+ * @group headless
+ */
+class SpecGathererTest extends UnitTestCase {
+
+  use TableDropperTrait;
+  use OptionCleanupTrait;
+
+  public function setUpHeadless() {
+    $this->dropByPrefix('civicrm_value_favorite');
+    $this->cleanup([
+      'tablesToTruncate' => [
+        'civicrm_custom_group',
+        'civicrm_custom_field',
+      ],
+    ]);
+    return parent::setUpHeadless();
+  }
+
+  public function testBasicFieldsGathering() {
+    $gatherer = new SpecGatherer();
+    $specs = $gatherer->getSpec('Contact', 'get', FALSE);
+    $contactDAO = _civicrm_api3_get_DAO('Contact');
+    $contactFields = $contactDAO::fields();
+    $specFieldNames = $specs->getFieldNames();
+    $contactFieldNames = array_column($contactFields, 'name');
+
+    $this->assertEmpty(array_diff_key($contactFieldNames, $specFieldNames));
+  }
+
+  public function testWithSpecProvider() {
+    $gather = new SpecGatherer();
+
+    $provider = $this->prophesize(SpecProviderInterface::class);
+    $provider->applies('Contact', 'create')->willReturn(TRUE);
+    $provider->modifySpec(Argument::any())->will(function ($args) {
+      /** @var \Civi\Api4\Service\Spec\RequestSpec $spec */
+      $spec = $args[0];
+      $spec->addFieldSpec(new FieldSpec('foo', 'Contact'));
+    });
+    $gather->addSpecProvider($provider->reveal());
+
+    $spec = $gather->getSpec('Contact', 'create', FALSE);
+    $fieldNames = $spec->getFieldNames();
+
+    $this->assertContains('foo', $fieldNames);
+  }
+
+  public function testPseudoConstantOptionsWillBeAdded() {
+    $customGroupId = CustomGroup::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('name', 'FavoriteThings')
+      ->addValue('extends', 'Contact')
+      ->execute()
+      ->first()['id'];
+
+    $options = ['r' => 'Red', 'g' => 'Green', 'p' => 'Pink'];
+
+    CustomField::create()
+      ->setCheckPermissions(FALSE)
+      ->addValue('label', 'FavColor')
+      ->addValue('custom_group_id', $customGroupId)
+      ->addValue('option_values', $options)
+      ->addValue('html_type', 'Select')
+      ->addValue('data_type', 'String')
+      ->execute();
+
+    $gatherer = new SpecGatherer();
+    $spec = $gatherer->getSpec('Contact', 'get', TRUE);
+
+    $regularField = $spec->getFieldByName('contact_type');
+    $this->assertNotEmpty($regularField->getOptions());
+    $this->assertContains('Individual', $regularField->getOptions());
+
+    $customField = $spec->getFieldByName('FavoriteThings.FavColor');
+    $this->assertNotEmpty($customField->getOptions());
+    $this->assertContains('Green', $customField->getOptions());
+    $this->assertEquals('Pink', $customField->getOptions()['p']);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Traits/OptionCleanupTrait.php b/tests/phpunit/api/v4/Traits/OptionCleanupTrait.php
new file mode 100644 (file)
index 0000000..9c1ed5c
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+namespace api\v4\Traits;
+
+trait OptionCleanupTrait {
+
+  /**
+   * @var int
+   */
+  protected $optionGroupMaxId;
+
+  /**
+   * @var int
+   */
+  protected $optionValueMaxId;
+
+  public function setUp() {
+    $this->optionGroupMaxId = \CRM_Core_DAO::singleValueQuery('SELECT MAX(id) FROM civicrm_option_group');
+    $this->optionValueMaxId = \CRM_Core_DAO::singleValueQuery('SELECT MAX(id) FROM civicrm_option_value');
+  }
+
+  public function tearDown() {
+    if ($this->optionValueMaxId) {
+      \CRM_Core_DAO::executeQuery('DELETE FROM civicrm_option_value WHERE id > ' . $this->optionValueMaxId);
+    }
+    if ($this->optionGroupMaxId) {
+      \CRM_Core_DAO::executeQuery('DELETE FROM civicrm_option_group WHERE id > ' . $this->optionGroupMaxId);
+    }
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Traits/QueryCounterTrait.php b/tests/phpunit/api/v4/Traits/QueryCounterTrait.php
new file mode 100644 (file)
index 0000000..c8a8c04
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Traits;
+
+use CRM_Utils_Array as ArrayHelper;
+
+trait QueryCounterTrait {
+
+  /**
+   * @var int
+   */
+  protected $startCount = 0;
+
+  /**
+   * Start the query counter
+   */
+  protected function beginQueryCount() {
+    $this->startCount = $this->getCurrentGlobalQueryCount();
+  }
+
+  /**
+   * @return int
+   *   The number of queries since the counter was started
+   */
+  protected function getQueryCount() {
+    return $this->getCurrentGlobalQueryCount() - $this->startCount;
+  }
+
+  /**
+   * @return int
+   * @throws \Exception
+   */
+  private function getCurrentGlobalQueryCount() {
+    global $_DB_DATAOBJECT;
+
+    if (!$_DB_DATAOBJECT) {
+      throw new \Exception('Database object not set so cannot count queries');
+    }
+
+    return ArrayHelper::value('RESULTSEQ', $_DB_DATAOBJECT, 0);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Traits/TableDropperTrait.php b/tests/phpunit/api/v4/Traits/TableDropperTrait.php
new file mode 100644 (file)
index 0000000..91f5ccd
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Traits;
+
+trait TableDropperTrait {
+
+  /**
+   * @param $prefix
+   */
+  protected function dropByPrefix($prefix) {
+    $sql = "SELECT CONCAT( 'DROP TABLE ', GROUP_CONCAT(table_name) , ';' ) " .
+      "AS statement FROM information_schema.tables " .
+      "WHERE table_name LIKE '%s%%' AND table_schema = DATABASE();";
+    $sql = sprintf($sql, $prefix);
+    $dropTableQuery = \CRM_Core_DAO::executeQuery($sql);
+    $dropTableQuery->fetch();
+    $dropTableQuery = $dropTableQuery->statement;
+
+    if ($dropTableQuery) {
+      \CRM_Core_DAO::executeQuery($dropTableQuery);
+    }
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Traits/TestDataLoaderTrait.php b/tests/phpunit/api/v4/Traits/TestDataLoaderTrait.php
new file mode 100644 (file)
index 0000000..9692505
--- /dev/null
@@ -0,0 +1,104 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Traits;
+
+/**
+ * This probably should be a separate class
+ */
+trait TestDataLoaderTrait {
+
+  /**
+   * @var array
+   *   References to entities used for loading test data
+   */
+  protected $references;
+
+  /**
+   * Creates entities from a JSON data set
+   *
+   * @param $path
+   */
+  protected function loadDataSet($path) {
+    if (!file_exists($path)) {
+      $path = __DIR__ . '/../DataSets/' . $path . '.json';
+    }
+
+    $dataSet = json_decode(file_get_contents($path), TRUE);
+    foreach ($dataSet as $entityName => $entities) {
+      foreach ($entities as $entityValues) {
+
+        $entityValues = $this->replaceReferences($entityValues);
+
+        $params = ['values' => $entityValues, 'checkPermissions' => FALSE];
+        $result = civicrm_api4($entityName, 'create', $params);
+        if (isset($entityValues['@ref'])) {
+          $this->references[$entityValues['@ref']] = $result->first();
+        }
+      }
+    }
+  }
+
+  /**
+   * @param $name
+   *
+   * @return null|mixed
+   */
+  protected function getReference($name) {
+    return isset($this->references[$name]) ? $this->references[$name] : NULL;
+  }
+
+  /**
+   * @param array $entityValues
+   *
+   * @return array
+   */
+  private function replaceReferences($entityValues) {
+    foreach ($entityValues as $name => $value) {
+      if (is_array($value)) {
+        $entityValues[$name] = $this->replaceReferences($value);
+      }
+      elseif (substr($value, 0, 4) === '@ref') {
+        $referenceName = substr($value, 5);
+        list ($reference, $property) = explode('.', $referenceName);
+        $entityValues[$name] = $this->references[$reference][$property];
+      }
+    }
+    return $entityValues;
+  }
+
+}
diff --git a/tests/phpunit/api/v4/UnitTestCase.php b/tests/phpunit/api/v4/UnitTestCase.php
new file mode 100644 (file)
index 0000000..f0474b7
--- /dev/null
@@ -0,0 +1,276 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4;
+
+use api\v4\Traits\TestDataLoaderTrait;
+use Civi\Test\HeadlessInterface;
+use Civi\Test\TransactionalInterface;
+
+/**
+ * @group headless
+ */
+class UnitTestCase extends \PHPUnit\Framework\TestCase implements HeadlessInterface, TransactionalInterface {
+
+  use TestDataLoaderTrait;
+
+  /**
+   * @see CiviUnitTestCase
+   *
+   * @param string $name
+   * @param array $data
+   * @param string $dataName
+   */
+  public function __construct($name = NULL, array $data = [], $dataName = '') {
+    parent::__construct($name, $data, $dataName);
+    error_reporting(E_ALL & ~E_NOTICE);
+  }
+
+  public function setUpHeadless() {
+    return \Civi\Test::headless()->apply();
+  }
+
+  /**
+   * Tears down the fixture, for example, closes a network connection.
+   *
+   * This method is called after a test is executed.
+   */
+  public function tearDown() {
+    parent::tearDown();
+  }
+
+  /**
+   * Quick clean by emptying tables created for the test.
+   *
+   * @param array $params
+   */
+  public function cleanup($params) {
+    $params += [
+      'tablesToTruncate' => [],
+    ];
+    \CRM_Core_DAO::executeQuery("SET FOREIGN_KEY_CHECKS = 0;");
+    foreach ($params['tablesToTruncate'] as $table) {
+      \Civi::log()->info('truncating: ' . $table);
+      $sql = "TRUNCATE TABLE $table";
+      \CRM_Core_DAO::executeQuery($sql);
+    }
+    \CRM_Core_DAO::executeQuery("SET FOREIGN_KEY_CHECKS = 1;");
+  }
+
+  /**
+   * Quick record counter
+   *
+   * @param string $table_name
+   * @returns int record count
+   */
+  public function getRowCount($table_name) {
+    $sql = "SELECT count(id) FROM $table_name";
+    return (int) \CRM_Core_DAO::singleValueQuery($sql);
+  }
+
+  /**
+   * Create sample entities (using V3 for now).
+   *
+   * @param array $params
+   *   (type, seq, overrides, count)
+   * @return array
+   *   (either single, or array of array if count >1)
+   * @throws \CiviCRM_API3_Exception
+   * @throws \Exception
+   */
+  public static function createEntity($params) {
+    $params += [
+      'count' => 1,
+      'seq' => 0,
+    ];
+    $entities = [];
+    $entity = NULL;
+    for ($i = 0; $i < $params['count']; $i++) {
+      $params['seq']++;
+      $data = self::sample($params);
+      $api_params = ['sequential' => 1] + $data['sample_params'];
+      $result = civicrm_api3($data['entity'], 'create', $api_params);
+      if ($result['is_error']) {
+        throw new \Exception("creating $data[entity] failed");
+      }
+      $entity = $result['values'][0];
+      if (!($entity['id'] > 0)) {
+        throw new \Exception("created entity is malformed");
+      }
+      $entities[] = $entity;
+    }
+    return $params['count'] == 1 ? $entity : $entities;
+  }
+
+  /**
+   * Helper function for creating sample entities.
+   *
+   * Depending on the supplied sequence integer, plucks values from the dummy data.
+   * Constructs a foreign entity when an ID is required but isn't supplied in the overrides.
+   *
+   * Inspired by CiviUnitTestCase::
+   * @todo - extract this function to own class and share with CiviUnitTestCase?
+   * @param array $params
+   * - type: string roughly matching entity type
+   * - seq: (optional) int sequence number for the values of this type
+   * - overrides: (optional) array of fill in parameters
+   *
+   * @return array
+   *   - entity: string API entity type (usually the type supplied except for contact subtypes)
+   *   - sample_params: array API sample_params properties of sample entity
+   */
+  public static function sample($params) {
+    $params += [
+      'seq' => 0,
+      'overrides' => [],
+    ];
+    $type = $params['type'];
+    // sample data - if field is array then chosed based on `seq`
+    $sample_params = [];
+    if (in_array($type, ['Individual', 'Organization', 'Household'])) {
+      $sample_params['contact_type'] = $type;
+      $entity = 'Contact';
+    }
+    else {
+      $entity = $type;
+    }
+    // use the seq to pluck a set of params out
+    foreach (self::sampleData($type) as $key => $value) {
+      if (is_array($value)) {
+        $sample_params[$key] = $value[$params['seq'] % count($value)];
+      }
+      else {
+        $sample_params[$key] = $value;
+      }
+    }
+    if ($type == 'Individual') {
+      $sample_params['email'] = strtolower(
+        $sample_params['first_name'] . '_' . $sample_params['last_name'] . '@civicrm.org'
+      );
+      $sample_params['prefix_id'] = 3;
+      $sample_params['suffix_id'] = 3;
+    }
+    if (!count($sample_params)) {
+      throw new \Exception("unknown sample type: $type");
+    }
+    $sample_params = $params['overrides'] + $sample_params;
+    // make foreign enitiies if they haven't been supplied
+    foreach ($sample_params as $key => $value) {
+      if (substr($value, 0, 6) === 'dummy.') {
+        $foreign_entity = self::createEntity([
+          'type' => substr($value, 6),
+          'seq' => $params['seq'],
+        ]);
+        $sample_params[$key] = $foreign_entity['id'];
+      }
+    }
+    return compact("entity", "sample_params");
+  }
+
+  /**
+   * Provider of sample data.
+   *
+   * @return array
+   *   Array values represent a set of allowable items.
+   *   Strings in the form "dummy.Entity" require creating a foreign entity first.
+   */
+  public static function sampleData($type) {
+    $data = [
+      'Individual' => [
+        // The number of values in each list need to be coprime numbers to not have duplicates
+        'first_name' => ['Anthony', 'Joe', 'Terrence', 'Lucie', 'Albert', 'Bill', 'Kim'],
+        'middle_name' => ['J.', 'M.', 'P', 'L.', 'K.', 'A.', 'B.', 'C.', 'D', 'E.', 'Z.'],
+        'last_name' => ['Anderson', 'Miller', 'Smith', 'Collins', 'Peterson'],
+        'contact_type' => 'Individual',
+      ],
+      'Organization' => [
+        'organization_name' => [
+          'Unit Test Organization',
+          'Acme',
+          'Roberts and Sons',
+          'Cryo Space Labs',
+          'Sharper Pens',
+        ],
+      ],
+      'Household' => [
+        'household_name' => ['Unit Test household'],
+      ],
+      'Event' => [
+        'title' => 'Annual CiviCRM meet',
+        'summary' => 'If you have any CiviCRM related issues or want to track where CiviCRM is heading, Sign up now',
+        'description' => 'This event is intended to give brief idea about progess of CiviCRM and giving solutions to common user issues',
+        'event_type_id' => 1,
+        'is_public' => 1,
+        'start_date' => 20081021,
+        'end_date' => 20081023,
+        'is_online_registration' => 1,
+        'registration_start_date' => 20080601,
+        'registration_end_date' => 20081015,
+        'max_participants' => 100,
+        'event_full_text' => 'Sorry! We are already full',
+        'is_monetary' => 0,
+        'is_active' => 1,
+        'is_show_location' => 0,
+      ],
+      'Participant' => [
+        'event_id' => 'dummy.Event',
+        'contact_id' => 'dummy.Individual',
+        'status_id' => 2,
+        'role_id' => 1,
+        'register_date' => 20070219,
+        'source' => 'Wimbeldon',
+        'event_level' => 'Payment',
+      ],
+      'Contribution' => [
+        'contact_id' => 'dummy.Individual',
+        // donation, 2 = member, 3 = campaign contribution, 4=event
+        'financial_type_id' => 1,
+        'total_amount' => 7.3,
+      ],
+      'Activity' => [
+        //'activity_type_id' => 1,
+        'subject' => 'unit testing',
+        'source_contact_id' => 'dummy.Individual',
+      ],
+    ];
+    if ($type == 'Contact') {
+      $type = 'Individual';
+    }
+    return $data[$type];
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Utils/ArrayInsertionServiceTest.php b/tests/phpunit/api/v4/Utils/ArrayInsertionServiceTest.php
new file mode 100644 (file)
index 0000000..ef4168c
--- /dev/null
@@ -0,0 +1,102 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Utils;
+
+use Civi\Api4\Utils\ArrayInsertionUtil;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class ArrayInsertionServiceTest extends UnitTestCase {
+
+  public function testInsertWillWork() {
+    $arr = [];
+    $path = ['foo' => FALSE, 'bar' => FALSE];
+    $inserter = new ArrayInsertionUtil();
+    $inserter::insert($arr, $path, ['LALA']);
+
+    $expected = [
+      'foo' => [
+        'bar' => 'LALA',
+      ],
+    ];
+
+    $this->assertEquals($expected, $arr);
+  }
+
+  public function testInsertionOfContactEmailLocation() {
+    $contacts = [
+      [
+        'id' => 1,
+        'first_name' => 'Jim',
+      ],
+      [
+        'id' => 2,
+        'first_name' => 'Karen',
+      ],
+    ];
+    $emails = [
+      [
+        'email' => 'jim@jim.com',
+        'id' => 2,
+        '_parent_id' => 1,
+      ],
+    ];
+    $locationTypes = [
+      [
+        'name' => 'Home',
+        'id' => 3,
+        '_parent_id' => 2,
+      ],
+    ];
+
+    $emailPath = ['emails' => TRUE];
+    $locationPath = ['emails' => TRUE, 'location' => FALSE];
+    $inserter = new ArrayInsertionUtil();
+
+    foreach ($contacts as &$contact) {
+      $inserter::insert($contact, $emailPath, $emails);
+      $inserter::insert($contact, $locationPath, $locationTypes);
+    }
+
+    $locationType = $contacts[0]['emails'][0]['location']['name'];
+    $this->assertEquals('Home', $locationType);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/Utils/ReflectionUtilsTest.php b/tests/phpunit/api/v4/Utils/ReflectionUtilsTest.php
new file mode 100644 (file)
index 0000000..f1e9f4d
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | CiviCRM version 5                                                  |
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC (c) 2004-2019                                |
+ +--------------------------------------------------------------------+
+ | This file is a part of CiviCRM.                                    |
+ |                                                                    |
+ | CiviCRM is free software; you can copy, modify, and distribute it  |
+ | under the terms of the GNU Affero General Public License           |
+ | Version 3, 19 November 2007 and the CiviCRM Licensing Exception.   |
+ |                                                                    |
+ | CiviCRM is distributed in the hope that it will be useful, but     |
+ | WITHOUT ANY WARRANTY; without even the implied warranty of         |
+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.               |
+ | See the GNU Affero General Public License for more details.        |
+ |                                                                    |
+ | You should have received a copy of the GNU Affero General Public   |
+ | License and the CiviCRM Licensing Exception along                  |
+ | with this program; if not, contact CiviCRM LLC                     |
+ | at info[AT]civicrm[DOT]org. If you have questions about the        |
+ | GNU Affero General Public License or the licensing of CiviCRM,     |
+ | see the CiviCRM license FAQ at http://civicrm.org/licensing        |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC (c) 2004-2019
+ * $Id$
+ *
+ */
+
+
+namespace api\v4\Utils;
+
+use Civi\Api4\Utils\ReflectionUtils;
+use api\v4\Mock\MockV4ReflectionGrandchild;
+use api\v4\UnitTestCase;
+
+/**
+ * @group headless
+ */
+class ReflectionUtilsTest extends UnitTestCase {
+
+  /**
+   * Test that class annotations are returned across @inheritDoc
+   */
+  public function testGetDocBlockForClass() {
+    $grandChild = new MockV4ReflectionGrandchild();
+    $reflection = new \ReflectionClass($grandChild);
+    $doc = ReflectionUtils::getCodeDocs($reflection);
+
+    $this->assertEquals(TRUE, $doc['internal']);
+    $this->assertEquals('Grandchild class', $doc['description']);
+
+    $expectedComment = 'This is an extended description.
+
+There is a line break in this description.
+
+This is the base class.';
+
+    $this->assertEquals($expectedComment, $doc['comment']);
+  }
+
+  /**
+   * Test that property annotations are returned across @inheritDoc
+   */
+  public function testGetDocBlockForProperty() {
+    $grandChild = new MockV4ReflectionGrandchild();
+    $reflection = new \ReflectionClass($grandChild);
+    $doc = ReflectionUtils::getCodeDocs($reflection->getProperty('foo'), 'Property');
+
+    $this->assertEquals('This is the foo property.', $doc['description']);
+    $this->assertEquals("In the child class, foo has been barred.\n\nIn general, you can do nothing with it.", $doc['comment']);
+  }
+
+}
diff --git a/tests/phpunit/api/v4/services.xml b/tests/phpunit/api/v4/services.xml
new file mode 100644 (file)
index 0000000..3310b03
--- /dev/null
@@ -0,0 +1,10 @@
+<container xmlns="http://symfony.com/schema/dic/services"
+           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
+
+    <services>
+        <service id="test.param_provider" class="api\v4\Service\TestCreationParameterProvider">
+            <argument type="service" id="spec_gatherer"/>
+        </service>
+    </services>
+</container>
index 671c4d7440d1db693bf3cf10e732649efd912a69..2e682bc0db51253824050b4d71b2a6a467c760d8 100755 (executable)
@@ -50,7 +50,7 @@ array_shift($argv);
 // Convert class names to file names
 $CIVICRM_UF = 'UnitTests';
 foreach ($argv as $k => $v) {
-  if (preg_match('/^(CRM_|api_v3_|EnvTest|WebTest_|E2E_)/', $v)) {
+  if (preg_match('/^(CRM_|api_v3_|api_v4_|EnvTest|WebTest_|E2E_)/', $v)) {
     $argv[$k] = 'tests/phpunit/' . strtr($v, '_', '/') . '.php';
   }
   elseif (preg_match('/^Civi\\\\/', $v)) {
index 0ef0930f0a87702b6b5907387abfa703fafba538..e4f8a0eaeec44211cfe309d8c78d6adaeb7d3db9 100644 (file)
     <name>header_id</name>
     <title>Mailing Header</title>
     <type>int unsigned</type>
+    <pseudoconstant>
+      <table>civicrm_mailing_component</table>
+      <keyColumn>id</keyColumn>
+      <labelColumn>name</labelColumn>
+      <condition>component_type = "Header"</condition>
+    </pseudoconstant>
     <comment>FK to the header component.</comment>
   </field>
   <foreignKey>
     <name>footer_id</name>
     <title>Mailing Footer</title>
     <type>int unsigned</type>
+    <pseudoconstant>
+      <table>civicrm_mailing_component</table>
+      <keyColumn>id</keyColumn>
+      <labelColumn>name</labelColumn>
+      <condition>component_type = "Footer"</condition>
+    </pseudoconstant>
     <comment>FK to the footer component.</comment>
   </field>
   <foreignKey>
index 07319d16c481bc42dc1654e17044de03e14c44a7..d1ec1f8c76b458121a9e8f7461de9f5e3555ac62 100644 (file)
@@ -39,6 +39,8 @@
   </field>
   <field>
     <name>start_date</name>
+    <uniqueName>mailing_job_start_date</uniqueName>
+    <uniqueTitle>Mailing Start Date</uniqueTitle>
     <title>Mailing Job Start Date</title>
     <type>timestamp</type>
     <default>NULL</default>
index 4a39b8feb7236f1ba77a2f6aeb81118a96d1bb1a..82639e761e97f4a934c41b7de1edd845c7d86b57 100644 (file)
@@ -574,7 +574,8 @@ SET @devellastID:=LAST_INSERT_ID();
 INSERT INTO civicrm_navigation
 ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight )
 VALUES
-( @domainID, 'civicrm/api', '{ts escape="sql" skip="true"}API Explorer{/ts}','API Explorer', 'administer CiviCRM', '', @devellastID, '1', NULL, 1 ),
+( @domainID, 'civicrm/api', '{ts escape="sql" skip="true"}Api Explorer v3{/ts}', 'API Explorer', 'administer CiviCRM', '', @devellastID, '1', NULL, 1 ),
+( @domainID, 'civicrm/api4#/explorer', '{ts escape="sql" skip="true"}Api Explorer v4{/ts}', 'Api Explorer v4', 'administer CiviCRM', '', @devellastID, '1', NULL, 2 ),
 ( @domainID, 'https://civicrm.org/developer-documentation?src=iam', '{ts escape="sql" skip="true"}Developer Docs{/ts}', 'Developer Docs', 'administer CiviCRM', '', @devellastID, '1', NULL, 3 );
 
 INSERT INTO civicrm_navigation
index e6b00f4eb629de867cb13407d2acb887c2fa6e0f..5e17f30e9462f6e4804cf1fa578ee1257a03b845 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="iso-8859-1" ?>
 <version>
-  <version_no>5.18.beta1</version_no>
+  <version_no>5.19.alpha1</version_no>
 </version>