diff --git a/civicrm.php b/civicrm.php
index 5c0af9c323ce1637d3311b507462221ef911ba40..081a279f7c7874903c0f2c5a5d64162922793e59 100644
--- a/civicrm.php
+++ b/civicrm.php
@@ -2,7 +2,7 @@
 /**
  * Plugin Name: CiviCRM
  * Description: CiviCRM - Growing and Sustaining Relationships
- * Version: 5.53.0
+ * Version: 5.54.0
  * Requires at least: 4.9
  * Requires PHP:      7.2
  * Author: CiviCRM LLC
@@ -36,7 +36,7 @@ if (!defined('ABSPATH')) {
 }
 
 // Set version here: changing it forces Javascript and CSS to reload.
-define('CIVICRM_PLUGIN_VERSION', '5.53.0');
+define('CIVICRM_PLUGIN_VERSION', '5.54.0');
 
 // Store reference to this file.
 if (!defined('CIVICRM_PLUGIN_FILE')) {
diff --git a/civicrm/CRM/ACL/DAO/ACL.php b/civicrm/CRM/ACL/DAO/ACL.php
index 2d72b764b766c0331655856fe92785a305e960f1..4e17cbe9b0420f6e5c6b9ceba93736eff2a8fc6d 100644
--- a/civicrm/CRM/ACL/DAO/ACL.php
+++ b/civicrm/CRM/ACL/DAO/ACL.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/ACL/ACL.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:5245f10c478c4187d1fb420e76f2fd76)
+ * (GenCodeChecksum:0a22cb3cf4b7afd9d14928b0ace4f685)
  */
 
 /**
diff --git a/civicrm/CRM/ACL/DAO/ACLCache.php b/civicrm/CRM/ACL/DAO/ACLCache.php
index 100d028f8004cc6c35eb011ae0477ddd20be4ff9..6b488907a637ae2d1e51393f37893df6abac7105 100644
--- a/civicrm/CRM/ACL/DAO/ACLCache.php
+++ b/civicrm/CRM/ACL/DAO/ACLCache.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/ACL/ACLCache.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:329e9070bd70f3fb3d053eb731d1b266)
+ * (GenCodeChecksum:d7c69e5c465c096d3a8af87dbf2ae013)
  */
 
 /**
diff --git a/civicrm/CRM/ACL/DAO/ACLEntityRole.php b/civicrm/CRM/ACL/DAO/ACLEntityRole.php
index b88aceb5d6da054051254618ae8bdf1ecd8ecc42..d9179aecdf11c4853cde2679dbf7ac47b8c5f3d7 100644
--- a/civicrm/CRM/ACL/DAO/ACLEntityRole.php
+++ b/civicrm/CRM/ACL/DAO/ACLEntityRole.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/ACL/ACLEntityRole.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b7a657943e1cf6e84d93e4b729fe7d10)
+ * (GenCodeChecksum:01f4f5840cb225eaf6af724beae92056)
  */
 
 /**
diff --git a/civicrm/CRM/Activity/BAO/Activity.php b/civicrm/CRM/Activity/BAO/Activity.php
index 965e91d2912e2b1767fbe399c6d8f30a9c73c8f0..215ac3072f9cc63a8f8cb99343453ddb8eb49717 100644
--- a/civicrm/CRM/Activity/BAO/Activity.php
+++ b/civicrm/CRM/Activity/BAO/Activity.php
@@ -310,7 +310,7 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity {
       // CRM-8708, preserve case ID even though it's not part of the SQL model
       $activity->case_id = $params['case_id'];
     }
-    elseif (is_numeric($activity->id)) {
+    elseif ($action === 'edit' && CRM_Core_Component::isEnabled('CiviCase')) {
       // CRM-8708, preserve case ID even though it's not part of the SQL model
       $activity->case_id = CRM_Case_BAO_Case::getCaseIdByActivityId($activity->id);
     }
@@ -456,9 +456,10 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity {
     if (empty($params['skipRecentView'])) {
       $recentOther = [];
       if (!empty($params['case_id'])) {
-        $caseContactID = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_CaseContact', $params['case_id'], 'contact_id', 'case_id');
+        $caseId = CRM_Utils_Array::first((array) $params['case_id']);
+        $caseContactID = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_CaseContact', $caseId, 'contact_id', 'case_id');
         $url = CRM_Utils_System::url('civicrm/case/activity/view',
-          "reset=1&aid={$activity->id}&cid={$caseContactID}&caseID={$params['case_id']}&context=home"
+          "reset=1&aid={$activity->id}&cid={$caseContactID}&caseID={$caseId}&context=home"
         );
       }
       else {
@@ -521,37 +522,17 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity {
 
     CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush();
 
-    // if the subject contains a ‘[case #…]’ string, file that activity on the related case (CRM-5916)
-    $matches = [];
-    $subjectToMatch = $params['subject'] ?? '';
-    if (preg_match('/\[case #([0-9a-h]{7})\]/', $subjectToMatch, $matches)) {
-      $key = CRM_Core_DAO::escapeString(CIVICRM_SITE_KEY);
-      $hash = $matches[1];
-      $query = "SELECT id FROM civicrm_case WHERE SUBSTR(SHA1(CONCAT('$key', id)), 1, 7) = '" . CRM_Core_DAO::escapeString($hash) . "'";
-    }
-    elseif (preg_match('/\[case #(\d+)\]/', $subjectToMatch, $matches)) {
-      $query = "SELECT id FROM civicrm_case WHERE id = '" . CRM_Core_DAO::escapeString($matches[1]) . "'";
-    }
-    if (!empty($matches)) {
-      $caseParams = [
-        'activity_id' => $activity->id,
-        'case_id' => CRM_Core_DAO::singleValueQuery($query),
-      ];
-      if ($caseParams['case_id']) {
-        CRM_Case_BAO_Case::processCaseActivity($caseParams);
-      }
-      else {
-        self::logActivityAction($activity, "Case details for {$matches[1]} not found while recording an activity on case.");
-      }
+    // Add to case
+    if (isset($params['case_id'])) {
+      CRM_Case_BAO_Case::updateCaseActivity($activity->id, $params['case_id']);
     }
+
     CRM_Utils_Hook::post($action, 'Activity', $activity->id, $activity);
     return $result;
   }
 
   /**
-   * Create an activity.
-   *
-   * @todo elaborate on what this does.
+   * Adds an entry to the log table about an activity
    *
    * @param CRM_Activity_DAO_Activity $activity
    * @param string $logMessage
@@ -993,8 +974,8 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity {
    *   The array of contact details to send the email.
    * @param string $subject
    *   The subject of the message.
-   * @param $text
-   * @param $html
+   * @param string|null $text
+   * @param string|null $html
    * @param string $emailAddress
    *   Use this 'to' email address instead of the default Primary address.
    * @param int|null $userID
@@ -1296,7 +1277,7 @@ WHERE entity_id =%1 AND entity_table = %2";
    *
    * @param int $toID
    *   The contact id of the recipient.
-   * @param $tokenText
+   * @param string $tokenText
    * @param array $smsProviderParams
    *   The params used for sending sms.
    * @param int $activityID
@@ -1367,8 +1348,8 @@ WHERE entity_id =%1 AND entity_table = %2";
    *   The contact id of the recipient.
    * @param string $subject
    *   The subject of the message.
-   * @param $text_message
-   * @param $html_message
+   * @param string|null $text_message
+   * @param string|null $html_message
    * @param string $emailAddress
    *   Use this 'to' email address instead of the default Primary address.
    * @param int $activityID
@@ -1742,7 +1723,7 @@ WHERE      activity.id IN ($activityIds)";
   /**
    * Get all prior activities of currently viewed activity.
    *
-   * @param $activityID
+   * @param int $activityID
    *   Current activity id.
    * @param bool $onlyPriorRevisions
    *
diff --git a/civicrm/CRM/Activity/BAO/Query.php b/civicrm/CRM/Activity/BAO/Query.php
index 329be2021a47545e77750920babad709968fb6c1..d147c9fc6f3612381874c3aa17076aefde4b7895 100644
--- a/civicrm/CRM/Activity/BAO/Query.php
+++ b/civicrm/CRM/Activity/BAO/Query.php
@@ -167,7 +167,7 @@ class CRM_Activity_BAO_Query {
    * @throws \CRM_Core_Exception
    */
   public static function whereClauseSingle(&$values, &$query) {
-    list($name, $op, $value, $grouping) = $values;
+    [$name, $op, $value, $grouping] = $values;
 
     $fields = CRM_Activity_BAO_Activity::exportableFields();
     $fieldSpec = $query->getFieldSpec($name);
@@ -199,7 +199,7 @@ class CRM_Activity_BAO_Query {
 
       case 'activity_priority':
         $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("$name.label", $op, $value, 'String');
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Activity_DAO_Activity', $name, $value, $op);
+        [$op, $value] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Activity_DAO_Activity', $name, $value, $op);
         $query->_qill[$grouping][] = ts('%1 %2 %3', [
           1 => $fields[$name]['title'],
           2 => $op,
@@ -332,7 +332,7 @@ class CRM_Activity_BAO_Query {
       case 'source_contact_id':
         $columnName = strstr($name, '_id') ? 'id' : 'sort_name';
         $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("source_contact.{$columnName}", $op, $value, CRM_Utils_Type::typeToString($fields[$name]['type']));
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contact_DAO_Contact', $columnName, $value, $op);
+        [$op, $value] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contact_DAO_Contact', $columnName, $value, $op);
         $query->_qill[$grouping][] = ts('%1 %2 %3', [
           1 => $fields[$name]['title'],
           2 => $op,
@@ -344,8 +344,8 @@ class CRM_Activity_BAO_Query {
 
   /**
    * @param string $name
-   * @param $mode
-   * @param $side
+   * @param int $mode
+   * @param string $side
    *
    * @return null|string
    */
@@ -626,7 +626,7 @@ class CRM_Activity_BAO_Query {
    * @throws \CRM_Core_Exception
    */
   public static function whereClauseSingleActivityText(&$values, &$query) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
     $activityOptionValues = $query->getWhereValues('activity_option', $grouping);
     $activityOption = CRM_Utils_Array::value(2, $activityOptionValues, 6);
 
@@ -642,7 +642,7 @@ class CRM_Activity_BAO_Query {
     }
 
     $query->_where[$grouping][] = "( " . implode(' OR ', $clauses) . " )";
-    list($qillOp, $qillVal) = $query->buildQillForFieldValue(NULL, $name, $value, $op);
+    [$qillOp, $qillVal] = $query->buildQillForFieldValue(NULL, $name, $value, $op);
     $query->_qill[$grouping][] = ts("%1 %2 '%3'", [
       1 => $label,
       2 => $qillOp,
diff --git a/civicrm/CRM/Activity/DAO/Activity.php b/civicrm/CRM/Activity/DAO/Activity.php
index 834755f6089967890618477feab1ac7d76841402..8d6164047ea8677793c86e5ce01c949bddb8e434 100644
--- a/civicrm/CRM/Activity/DAO/Activity.php
+++ b/civicrm/CRM/Activity/DAO/Activity.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Activity/Activity.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:60c03ca565bfcb0379d4fe11bd8f7c10)
+ * (GenCodeChecksum:016e3be7b0f4a706b96d0c1e8523b25f)
  */
 
 /**
@@ -206,18 +206,22 @@ class CRM_Activity_DAO_Activity extends CRM_Core_DAO {
   public $relationship_id;
 
   /**
+   * Unused deprecated column.
+   *
    * @var bool|string
    *   (SQL type: tinyint)
    *   Note that values will be retrieved from the database as a string.
+   * @deprecated
    */
   public $is_current_revision;
 
   /**
-   * Activity ID of the first activity record in versioning chain.
+   * Unused deprecated column.
    *
    * @var int|string|null
    *   (SQL type: int unsigned)
    *   Note that values will be retrieved from the database as a string.
+   * @deprecated
    */
   public $original_id;
 
@@ -663,12 +667,10 @@ class CRM_Activity_DAO_Activity extends CRM_Core_DAO {
         'is_current_revision' => [
           'name' => 'is_current_revision',
           'type' => CRM_Utils_Type::T_BOOLEAN,
-          'title' => ts('Is this activity a current revision in versioning chain?'),
+          'title' => ts('Is current (unused)'),
+          'description' => ts('Unused deprecated column.'),
           'required' => TRUE,
-          'import' => TRUE,
           'where' => 'civicrm_activity.is_current_revision',
-          'headerPattern' => '/(is.)?(current.)?(revision|version(ing)?)/i',
-          'export' => TRUE,
           'default' => '1',
           'table_name' => 'civicrm_activity',
           'entity' => 'Activity',
@@ -679,8 +681,8 @@ class CRM_Activity_DAO_Activity extends CRM_Core_DAO {
         'original_id' => [
           'name' => 'original_id',
           'type' => CRM_Utils_Type::T_INT,
-          'title' => ts('Original Activity ID'),
-          'description' => ts('Activity ID of the first activity record in versioning chain.'),
+          'title' => ts('Original ID (unused)'),
+          'description' => ts('Unused deprecated column.'),
           'where' => 'civicrm_activity.original_id',
           'table_name' => 'civicrm_activity',
           'entity' => 'Activity',
diff --git a/civicrm/CRM/Activity/DAO/ActivityContact.php b/civicrm/CRM/Activity/DAO/ActivityContact.php
index 426e978adf4d7d4d7cc50c2243329a4fcfdc7d5c..d8c9b9b306e4e750374d0d8b279f616d1b9999a8 100644
--- a/civicrm/CRM/Activity/DAO/ActivityContact.php
+++ b/civicrm/CRM/Activity/DAO/ActivityContact.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Activity/ActivityContact.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:2e8b2b826a1e0f70d39ea967462796d4)
+ * (GenCodeChecksum:a9da0f47b1a82c3cdd7e7aa311f07191)
  */
 
 /**
diff --git a/civicrm/CRM/Activity/Import/Field.php b/civicrm/CRM/Activity/Import/Field.php
deleted file mode 100644
index b3d4cbed04d82746269f0097e262962ca42f4f3b..0000000000000000000000000000000000000000
--- a/civicrm/CRM/Activity/Import/Field.php
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
- */
-
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC https://civicrm.org/licensing
- */
-class CRM_Activity_Import_Field {
-
-  /**
-   * @var string
-   *   Name of the field
-   */
-  public $_name;
-
-  /**
-   * Title of the field to be used in display
-   * @var string
-   */
-  public $_title;
-
-  /**
-   * Type of field
-   * @var int
-   */
-  public $_type;
-
-  /**
-   * Is this field required
-   * @var bool
-   */
-  public $_required;
-
-  /**
-   * Data to be carried for use by a derived class
-   * @var object
-   */
-  public $_payload;
-
-  /**
-   * Regexp to match the CSV header of this column/field
-   * @var string
-   */
-  public $_headerPattern;
-
-  /**
-   * Regexp to match the pattern of data from various column/fields
-   * @var string
-   */
-  public $_dataPattern;
-
-  /**
-   * Value of this field
-   * @var string|null
-   */
-  public $_value;
-
-  /**
-   * @param string $name
-   * @param string $title
-   * @param int $type
-   * @param string $headerPattern
-   * @param string $dataPattern
-   */
-  public function __construct($name, $title, $type = CRM_Utils_Type::T_INT, $headerPattern = '//', $dataPattern = '//') {
-    $this->_name = $name;
-    $this->_title = $title;
-    $this->_type = $type;
-    $this->_headerPattern = $headerPattern;
-    $this->_dataPattern = $dataPattern;
-
-    $this->_value = NULL;
-  }
-
-  public function resetValue() {
-    $this->_value = NULL;
-  }
-
-  /**
-   * The value is in string format. convert the value to the type of this field
-   * and set the field value with the appropriate type
-   * @param string $value
-   */
-  public function setValue($value) {
-    $this->_value = $value;
-  }
-
-  /**
-   * @return bool
-   */
-  public function validate() {
-
-    if (CRM_Utils_System::isNull($this->_value)) {
-      return TRUE;
-    }
-    return TRUE;
-  }
-
-}
diff --git a/civicrm/CRM/Activity/Import/Form/MapField.php b/civicrm/CRM/Activity/Import/Form/MapField.php
index 7034eb898b7547b515aa5dcd1558bbfb0f9e05ba..6597972c63c966cc1dc8b7761c0d97a637efc6cf 100644
--- a/civicrm/CRM/Activity/Import/Form/MapField.php
+++ b/civicrm/CRM/Activity/Import/Form/MapField.php
@@ -46,9 +46,9 @@ class CRM_Activity_Import_Form_MapField extends CRM_Import_Form_MapField {
 
     $contactFieldsBelowWeightMessage = self::validateRequiredContactMatchFields('Individual', $importKeys);
     foreach ($requiredFields as $field => $title) {
-      if (!in_array($field, $importKeys)) {
+      if (!in_array($field, $importKeys, TRUE)) {
         if ($field === 'target_contact_id') {
-          if (!$contactFieldsBelowWeightMessage || in_array('external_identifier', $importKeys)) {
+          if (!$contactFieldsBelowWeightMessage || in_array('external_identifier', $importKeys, TRUE)) {
             continue;
           }
           $fieldMessage .= ts('Missing required contact matching fields.')
@@ -64,18 +64,16 @@ class CRM_Activity_Import_Form_MapField extends CRM_Import_Form_MapField {
   /**
    * Build the form object.
    *
-   * @throws \CiviCRM_API3_Exception
+   * @throws \CRM_Core_Exception
    */
-  public function buildQuickForm() {
-    $savedMappingID = (int) $this->getSubmittedValue('savedMapping');
-    $this->buildSavedMappingFields($savedMappingID);
+  public function buildQuickForm(): void {
+    $this->addSavedMappingFields();
     $this->addFormRule(['CRM_Activity_Import_Form_MapField', 'formRule']);
 
     //-------- end of saved mapping stuff ---------
 
     $defaults = [];
     $headerPatterns = $this->getHeaderPatterns();
-    $dataPatterns = $this->getDataPatterns();
     $fieldMappings = $this->getFieldMappings();
     $columnHeaders = $this->getColumnHeaders();
     $hasHeaders = $this->getSubmittedValue('skipColumnHeader');
@@ -112,9 +110,6 @@ class CRM_Activity_Import_Form_MapField extends CRM_Import_Form_MapField {
           if ($hasHeaders) {
             $defaults["mapper[$i]"] = [$this->defaultFromHeader($columnHeader, $headerPatterns)];
           }
-          else {
-            $defaults["mapper[$i]"] = [$this->defaultFromData($dataPatterns, $i)];
-          }
         }
         // End of load mapping.
       }
@@ -127,10 +122,6 @@ class CRM_Activity_Import_Form_MapField extends CRM_Import_Form_MapField {
             0,
           ];
         }
-        else {
-          // Otherwise guess the default from the form of the data
-          $defaults["mapper[$i]"] = [$this->defaultFromData($dataPatterns, $i), 0];
-        }
       }
 
       $sel->setOptions([$sel1]);
@@ -149,13 +140,11 @@ class CRM_Activity_Import_Form_MapField extends CRM_Import_Form_MapField {
    * @param array $fields
    *   Posted values of the form.
    *
-   * @return array
+   * @return array|bool
    *   list of errors to be posted back to the form
    */
-  public static function formRule($fields) {
+  public static function formRule(array $fields) {
     $errors = [];
-    // define so we avoid notices below
-    $errors['_qf_default'] = '';
 
     if (!array_key_exists('savedMapping', $fields)) {
       $importKeys = [];
@@ -167,32 +156,7 @@ class CRM_Activity_Import_Form_MapField extends CRM_Import_Form_MapField {
         $errors['_qf_default'] = $missingFields;
       }
     }
-
-    if (!empty($fields['saveMapping'])) {
-      $nameField = $fields['saveMappingName'] ?? NULL;
-      if (empty($nameField)) {
-        $errors['saveMappingName'] = ts('Name is required to save Import Mapping');
-      }
-      else {
-        if (CRM_Core_BAO_Mapping::checkMapping($nameField, CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_Mapping', 'mapping_type_id', 'Import Activity'))) {
-          $errors['saveMappingName'] = ts('Duplicate Import Mapping Name');
-        }
-      }
-    }
-
-    if (empty($errors['_qf_default'])) {
-      unset($errors['_qf_default']);
-    }
-    if (!empty($errors)) {
-      if (!empty($errors['saveMappingName'])) {
-        $_flag = 1;
-        $assignError = new CRM_Core_Page();
-        $assignError->assign('mappingDetailsError', $_flag);
-      }
-      return $errors;
-    }
-
-    return TRUE;
+    return $errors ?: TRUE;
   }
 
   /**
diff --git a/civicrm/CRM/Activity/Import/Parser/Activity.php b/civicrm/CRM/Activity/Import/Parser/Activity.php
index d45940f885e6ad34778ae278267595e4b2c0c173..50fe0d93a23b5c10d9e9c4625853dbda77d083c7 100644
--- a/civicrm/CRM/Activity/Import/Parser/Activity.php
+++ b/civicrm/CRM/Activity/Import/Parser/Activity.php
@@ -37,6 +37,7 @@ class CRM_Activity_Import_Parser_Activity extends CRM_Import_Parser {
         'id' => 'activity_import',
         'name' => 'activity_import',
         'label' => ts('Activity Import'),
+        'entity' => 'Activity',
       ],
     ];
   }
@@ -46,16 +47,6 @@ class CRM_Activity_Import_Parser_Activity extends CRM_Import_Parser {
    */
   public function init() {
     $this->setFieldMetadata();
-
-    foreach ($this->importableFieldsMetadata as $name => $field) {
-      $field['type'] = CRM_Utils_Array::value('type', $field, CRM_Utils_Type::T_INT);
-      $field['dataPattern'] = CRM_Utils_Array::value('dataPattern', $field, '//');
-      $field['headerPattern'] = CRM_Utils_Array::value('headerPattern', $field, '//');
-      if (!empty($field['custom_group_id'])) {
-        $field['title'] = $field["groupTitle"] . ' :: ' . $field["title"];
-      }
-      $this->addField($name, $field['title'], $field['type'], $field['headerPattern'], $field['dataPattern']);
-    }
   }
 
   /**
@@ -188,31 +179,7 @@ class CRM_Activity_Import_Parser_Activity extends CRM_Import_Parser {
    * @return array
    */
   protected function getRequiredFields(): array {
-    return [['activity_type_id' => ts('Activity Type'), 'activity_date_time' => ts('Activity Date')]];
-  }
-
-  /**
-   * @deprecated - these are just used in a couple of parent class functions now.
-   * @param string $name
-   * @param $title
-   * @param int $type
-   * @param string $headerPattern
-   * @param string $dataPattern
-   */
-  public function addField($name, $title, $type = CRM_Utils_Type::T_INT, $headerPattern = '//', $dataPattern = '//') {
-    if (empty($name)) {
-      $this->_fields['doNotImport'] = new CRM_Activity_Import_Field($name, $title, $type, $headerPattern, $dataPattern);
-    }
-    else {
-
-      $tempField = CRM_Contact_BAO_Contact::importableFields('Individual', NULL);
-      if (!array_key_exists($name, $tempField)) {
-        $this->_fields[$name] = new CRM_Activity_Import_Field($name, $title, $type, $headerPattern, $dataPattern);
-      }
-      else {
-        $this->_fields[$name] = new CRM_Contact_Import_Field($name, $title, $type, $headerPattern, $dataPattern, CRM_Utils_Array::value('hasLocationType', $tempField[$name]));
-      }
-    }
+    return [['activity_type_id', 'activity_date_time']];
   }
 
   /**
diff --git a/civicrm/CRM/Activity/Tokens.php b/civicrm/CRM/Activity/Tokens.php
index 21fcd840c6833c8f7a23cac8379823b48b5bd0ca..40d36e8218f1fc720bcdde5b7855a2438d0b7bbc 100644
--- a/civicrm/CRM/Activity/Tokens.php
+++ b/civicrm/CRM/Activity/Tokens.php
@@ -81,38 +81,11 @@ class CRM_Activity_Tokens extends CRM_Core_EntityTokens {
       parent::evaluateToken($row, $entity, $realField, $prefetch);
       $row->format('text/plain')->tokens($entity, $field, $row->tokens['activity'][$realField]);
     }
-    elseif ($field === 'case_id') {
-      // An activity can be linked to multiple cases so case_id is always an array.
-      // We just return the first case ID for the token.
-      // this weird hack might exist because apiv3 is weird &
-      $caseID = CRM_Core_DAO::singleValueQuery('SELECT case_id FROM civicrm_case_activity WHERE activity_id = %1 LIMIT 1', [1 => [$activityId, 'Integer']]);
-      $row->tokens($entity, $field, $caseID ?? '');
-    }
     else {
       parent::evaluateToken($row, $entity, $field, $prefetch);
     }
   }
 
-  /**
-   * Get tokens that are special or calculated for this entity.
-   *
-   * @return array|array[]
-   */
-  protected function getBespokeTokens(): array {
-    $tokens = [];
-    if (CRM_Core_Component::isEnabled('CiviCase')) {
-      $tokens['case_id'] = [
-        'title' => ts('Activity Case ID'),
-        'name' => 'case_id',
-        'type' => 'calculated',
-        'options' => NULL,
-        'data_type' => 'Integer',
-        'audience' => 'user',
-      ];
-    }
-    return $tokens;
-  }
-
   /**
    * Get fields historically not advertised for tokens.
    *
diff --git a/civicrm/CRM/Admin/Form/ContactType.php b/civicrm/CRM/Admin/Form/ContactType.php
index 386bd4785c49c0799a828d148a90ee53d7e0a327..676a7e4e9758e87781be8fa78f049e9808d8e4d3 100644
--- a/civicrm/CRM/Admin/Form/ContactType.php
+++ b/civicrm/CRM/Admin/Form/ContactType.php
@@ -20,6 +20,13 @@
  */
 class CRM_Admin_Form_ContactType extends CRM_Admin_Form {
 
+  public function preProcess(): void {
+    CRM_Utils_Request::retrieve('action', 'String', $this);
+    CRM_Utils_Request::retrieve('id', 'Positive', $this, FALSE, 0);
+    $this->set('BAOName', 'CRM_Contact_BAO_ContactType');
+    parent::preProcess();
+  }
+
   /**
    * Build the form object.
    */
diff --git a/civicrm/CRM/Admin/Form/ScheduleReminders.php b/civicrm/CRM/Admin/Form/ScheduleReminders.php
index 8a4e7385788d506cac1e3e4276c88a6634ce2907..4f4420b5a2f62414ff6675166daab83f7eae0d9a 100644
--- a/civicrm/CRM/Admin/Form/ScheduleReminders.php
+++ b/civicrm/CRM/Admin/Form/ScheduleReminders.php
@@ -158,7 +158,7 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form {
     $this->_freqUnits = CRM_Core_SelectValues::getRecurringFrequencyUnits();
 
     //reminder_interval
-    $this->add('number', 'start_action_offset', ts('When'), ['class' => 'six', 'min' => 0]);
+    $this->add('number', 'start_action_offset', ts('When (trigger date)'), ['class' => 'six', 'min' => 0]);
     $this->addRule('start_action_offset', ts('Value should be a positive number'), 'positiveInteger');
 
     $isActive = ts('Scheduled Reminder Active');
diff --git a/civicrm/CRM/Admin/Form/Setting/Case.php b/civicrm/CRM/Admin/Form/Setting/Case.php
index 6ab3a59dd823f41ab098284995cc2532b0a0bfaa..c952ac24d877fc6fbdc2e1dda0a77504d4d011b5 100644
--- a/civicrm/CRM/Admin/Form/Setting/Case.php
+++ b/civicrm/CRM/Admin/Form/Setting/Case.php
@@ -24,7 +24,6 @@ class CRM_Admin_Form_Setting_Case extends CRM_Admin_Form_Setting {
     'civicaseRedactActivityEmail' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
     'civicaseAllowMultipleClients' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
     'civicaseNaturalActivityTypeSort' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
-    'civicaseActivityRevisions' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
     'civicaseShowCaseActivities' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME,
   ];
 
diff --git a/civicrm/CRM/Admin/Form/Setting/Localization.php b/civicrm/CRM/Admin/Form/Setting/Localization.php
index d18e75ab718fdcd4bd03708e1873466056a3b6ca..c71256cf442a8e40a08c576e6dd73f28e8820ab9 100644
--- a/civicrm/CRM/Admin/Form/Setting/Localization.php
+++ b/civicrm/CRM/Admin/Form/Setting/Localization.php
@@ -15,6 +15,9 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\OptionGroup;
+use Civi\Api4\OptionValue;
+
 /**
  * This class generates form components for Localization.
  */
@@ -32,6 +35,7 @@ class CRM_Admin_Form_Setting_Localization extends CRM_Admin_Form_Setting {
     'inheritLocale' => CRM_Core_BAO_Setting::LOCALIZATION_PREFERENCES_NAME,
     'lcMessages' => CRM_Core_BAO_Setting::LOCALIZATION_PREFERENCES_NAME,
     'legacyEncoding' => CRM_Core_BAO_Setting::LOCALIZATION_PREFERENCES_NAME,
+    'partial_locales' => CRM_Core_BAO_Setting::LOCALIZATION_PREFERENCES_NAME,
     'format_locale' => CRM_Core_BAO_Setting::LOCALIZATION_PREFERENCES_NAME,
     'monetaryThousandSeparator' => CRM_Core_BAO_Setting::LOCALIZATION_PREFERENCES_NAME,
     'monetaryDecimalPoint' => CRM_Core_BAO_Setting::LOCALIZATION_PREFERENCES_NAME,
@@ -231,29 +235,45 @@ class CRM_Admin_Form_Setting_Localization extends CRM_Admin_Form_Setting {
    *
    * @param string[] $currencies array of currencies ['USD', 'CAD']
    * @param string $default default currency
+   *
+   * @throws \CRM_Core_Exception
    */
-  public static function updateEnabledCurrencies($currencies, $default) {
+  public static function updateEnabledCurrencies(array $currencies, string $default): void {
 
     // sort so that when we display drop down, weights have right value
     sort($currencies);
-
     // get labels for all the currencies
     $options = [];
 
     $currencySymbols = CRM_Admin_Form_Setting_Localization::getCurrencySymbols();
-    for ($i = 0; $i < count($currencies); $i++) {
+    foreach ($currencies as $i => $currency) {
       $options[] = [
-        'label' => $currencySymbols[$currencies[$i]],
-        'value' => $currencies[$i],
+        'label' => $currencySymbols[$currency],
+        'value' => $currency,
         'weight' => $i + 1,
         'is_active' => 1,
-        'is_default' => $currencies[$i] == $default,
+        'is_default' => $currency === $default,
       ];
     }
+    $optionGroupID = OptionGroup::get(FALSE)->addSelect('id')
+      ->addWhere('name', '=', 'currencies_enabled')
+      ->execute()->first()['id'];
+    // @TODO: This causes a problem in multilingual
+    // (https://github.com/civicrm/civicrm-core/pull/17228), but is needed in
+    // order to be able to remove currencies once added.
+    if (!CRM_Core_I18n::isMultiLingual()) {
+      CRM_Core_DAO::executeQuery("
+        DELETE
+        FROM civicrm_option_value
+        WHERE option_group_id = $optionGroupID
+      ");
+    }
 
-    $dontCare = NULL;
-    CRM_Core_OptionGroup::createAssoc('currencies_enabled', $options, $dontCare);
-
+    OptionValue::save(FALSE)
+      ->setRecords($options)
+      ->setDefaults(['is_active' => 1, 'option_group_id' => $optionGroupID])
+      ->setMatch(['option_group_id', 'value'])
+      ->execute();
   }
 
   /**
diff --git a/civicrm/CRM/Admin/Form/Setting/UF.php b/civicrm/CRM/Admin/Form/Setting/UF.php
index 54078cddc92203e510065cdb87ca7c8e61201a73..f6da3da6deb9f256527db3d4703ca14cbfa751d9 100644
--- a/civicrm/CRM/Admin/Form/Setting/UF.php
+++ b/civicrm/CRM/Admin/Form/Setting/UF.php
@@ -39,7 +39,7 @@ class CRM_Admin_Form_Setting_UF extends CRM_Admin_Form_Setting {
       ts('Settings - %1 Integration', [1 => $this->_uf])
     );
 
-    if ($this->_uf == 'WordPress') {
+    if ($this->_uf === 'WordPress') {
       $this->_settings['wpBasePage'] = CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME;
       $this->assign('wpBasePageEnabled', TRUE);
     }
@@ -50,7 +50,7 @@ class CRM_Admin_Form_Setting_UF extends CRM_Admin_Form_Setting {
     }
 
     // find out if drupal has its database prefixed
-    if ($this->_uf == 'Drupal8') {
+    if ($this->_uf === 'Drupal8') {
       $databases['default'] = Drupal\Core\Database\Database::getConnectionInfo('default');
     }
     else {
diff --git a/civicrm/CRM/Admin/Page/ContactType.php b/civicrm/CRM/Admin/Page/ContactType.php
index be396a9709fe51c42485da6bcc09806255e5a3d1..593c583f3c49face3f77d9bfac49ef55a88ffa90 100644
--- a/civicrm/CRM/Admin/Page/ContactType.php
+++ b/civicrm/CRM/Admin/Page/ContactType.php
@@ -50,7 +50,7 @@ class CRM_Admin_Page_ContactType extends CRM_Core_Page_Basic {
       self::$_links = [
         CRM_Core_Action::UPDATE => [
           'name' => ts('Edit'),
-          'url' => 'civicrm/admin/options/subtype',
+          'url' => 'civicrm/admin/options/subtype/edit',
           'qs' => 'action=update&id=%%id%%&reset=1',
           'title' => ts('Edit Contact Type'),
         ],
@@ -66,7 +66,7 @@ class CRM_Admin_Page_ContactType extends CRM_Core_Page_Basic {
         ],
         CRM_Core_Action::DELETE => [
           'name' => ts('Delete'),
-          'url' => 'civicrm/admin/options/subtype',
+          'url' => 'civicrm/admin/options/subtype/edit',
           'qs' => 'action=delete&id=%%id%%',
           'title' => ts('Delete Contact Type'),
         ],
@@ -81,7 +81,6 @@ class CRM_Admin_Page_ContactType extends CRM_Core_Page_Basic {
   public function run() {
     $action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 0);
     $this->assign('action', $action);
-    $id = CRM_Utils_Request::retrieve('id', 'Positive', $this, FALSE, 0);
     if (!$action) {
       $this->browse();
     }
diff --git a/civicrm/CRM/Admin/Page/PaymentProcessor.php b/civicrm/CRM/Admin/Page/PaymentProcessor.php
index 1fb115f8e81481eae5ef91e9edde405bcf61fd62..c0758c53375ea7af788367cdfe44dbf5c6818d3b 100644
--- a/civicrm/CRM/Admin/Page/PaymentProcessor.php
+++ b/civicrm/CRM/Admin/Page/PaymentProcessor.php
@@ -15,6 +15,8 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\PaymentProcessor;
+
 /**
  * Page for displaying list of payment processors.
  */
@@ -105,53 +107,43 @@ class CRM_Admin_Page_PaymentProcessor extends CRM_Core_Page_Basic {
    * Browse all payment processors.
    *
    * @param null $action
+   *
+   * @throws \API_Exception
    */
-  public function browse($action = NULL) {
-    // get all custom groups sorted by weight
-    $paymentProcessor = [];
-    $dao = new CRM_Financial_DAO_PaymentProcessor();
-    $dao->is_test = 0;
-    $dao->domain_id = CRM_Core_Config::domainID();
-    $dao->orderBy('name');
-    $dao->find();
-
-    while ($dao->fetch()) {
-      $paymentProcessor[$dao->id] = [];
-      CRM_Core_DAO::storeValues($dao, $paymentProcessor[$dao->id]);
-      $paymentProcessor[$dao->id]['payment_processor_type'] = CRM_Core_PseudoConstant::getLabel(
-        'CRM_Financial_DAO_PaymentProcessor', 'payment_processor_type_id', $dao->payment_processor_type_id
-      );
+  public function browse($action = NULL): void {
+    $paymentProcessors = PaymentProcessor::get(FALSE)
+      ->addWhere('is_test', '=', 0)
+      ->addWhere('domain_id', '=', CRM_Core_Config::domainID())
+      ->setSelect(['id', 'name', 'description', 'title', 'is_active', 'is_default', 'payment_processor_type_id:label'])
+      ->addOrderBy('name')->execute()->indexBy('id');
+
+    foreach ($paymentProcessors as $paymentProcessorID => $paymentProcessor) {
+      // Annoyingly Smarty can't handle the colon syntax (or a .)
+      $paymentProcessors[$paymentProcessorID]['payment_processor_type'] = $paymentProcessor['payment_processor_type_id:label'];
 
       // form all action links
       $action = array_sum(array_keys($this->links()));
+      $action -= $paymentProcessor['is_active'] ? CRM_Core_Action::ENABLE : CRM_Core_Action::DISABLE;
 
-      // update enable/disable links.
-      if ($dao->is_active) {
-        $action -= CRM_Core_Action::ENABLE;
-      }
-      else {
-        $action -= CRM_Core_Action::DISABLE;
-      }
-
-      $paymentProcessor[$dao->id]['action'] = CRM_Core_Action::formLink(self::links(), $action,
-        array('id' => $dao->id),
+      $paymentProcessors[$paymentProcessorID]['action'] = CRM_Core_Action::formLink($this->links(), $action,
+        ['id' => $paymentProcessorID],
         ts('more'),
         FALSE,
         'paymentProcessor.manage.action',
         'PaymentProcessor',
-        $dao->id
+        $paymentProcessorID
       );
-      $paymentProcessor[$dao->id]['financialAccount'] = CRM_Contribute_PseudoConstant::getRelationalFinancialAccount($dao->id, NULL, 'civicrm_payment_processor', 'financial_account_id.name');
+      $paymentProcessors[$paymentProcessorID]['financialAccount'] = CRM_Contribute_PseudoConstant::getRelationalFinancialAccount($paymentProcessorID, NULL, 'civicrm_payment_processor', 'financial_account_id.name');
 
       try {
-        $paymentProcessor[$dao->id]['test_id'] = CRM_Financial_BAO_PaymentProcessor::getTestProcessorId($dao->id);
+        $paymentProcessors[$paymentProcessorID]['test_id'] = CRM_Financial_BAO_PaymentProcessor::getTestProcessorId($paymentProcessorID);
       }
       catch (CiviCRM_API3_Exception $e) {
-        CRM_Core_Session::setStatus(ts('No test processor entry exists for %1. Not having a test entry for each processor could cause problems', [$dao->name]));
+        CRM_Core_Session::setStatus(ts('No test processor entry exists for %1. Not having a test entry for each processor could cause problems', [$paymentProcessor['name']]));
       }
     }
 
-    $this->assign('rows', $paymentProcessor);
+    $this->assign('rows', $paymentProcessors);
   }
 
   /**
diff --git a/civicrm/CRM/Api4/Page/AJAX.php b/civicrm/CRM/Api4/Page/AJAX.php
index 0aa40e94d9cdea315bd901f0dd25d5be63ce5b68..638d547624f07cb43f011bf05e6ffa6f68b841ed 100644
--- a/civicrm/CRM/Api4/Page/AJAX.php
+++ b/civicrm/CRM/Api4/Page/AJAX.php
@@ -40,7 +40,8 @@ class CRM_Api4_Page_AJAX extends CRM_Core_Page {
       CRM_Utils_System::civiExit();
     }
     if ($_SERVER['REQUEST_METHOD'] == 'GET' &&
-      strtolower(substr($this->urlPath[4], 0, 3)) != 'get') {
+      ($this->urlPath[4] !== 'autocomplete' && strtolower(substr($this->urlPath[4], 0, 3)) !== 'get')
+    ) {
       $response = [
         'error_code' => 400,
         'error_message' => "SECURITY: All requests that modify the database must be http POST, not GET.",
diff --git a/civicrm/CRM/Api4/Services.php b/civicrm/CRM/Api4/Services.php
index f5581efd0fadc7cce6289f6ee9c1e65624867e81..859f7ef9e677dd8e5976880df42394628ecace2d 100644
--- a/civicrm/CRM/Api4/Services.php
+++ b/civicrm/CRM/Api4/Services.php
@@ -16,7 +16,6 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
-use Civi\Core\Event\EventScanner;
 use Symfony\Component\DependencyInjection\Reference;
 use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
 use Symfony\Component\Config\FileLocator;
@@ -37,26 +36,6 @@ class CRM_Api4_Services {
       '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) {
-      $listenerMap = EventScanner::findListeners($container->findDefinition($subscriber)->getClass());
-      $dispatcher->addMethodCall('addSubscriberServiceMap', [$subscriber, $listenerMap]);
-    }
-
-    // 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)]
-      );
-    }
   }
 
   /**
diff --git a/civicrm/CRM/Batch/DAO/Batch.php b/civicrm/CRM/Batch/DAO/Batch.php
index 1175aa77ec97219514ff1679ef31a8a3a3deffbd..1c096a90a10904103af48af3d86b09b5fe4d6575 100644
--- a/civicrm/CRM/Batch/DAO/Batch.php
+++ b/civicrm/CRM/Batch/DAO/Batch.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Batch/Batch.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:d7bcbc183569fc9cc52260eef81e84ad)
+ * (GenCodeChecksum:2630e8583922614ba4eb782da52e7baa)
  */
 
 /**
diff --git a/civicrm/CRM/Batch/DAO/EntityBatch.php b/civicrm/CRM/Batch/DAO/EntityBatch.php
index 4d851f0ad1241de77dc4ae6686ce1c3e2cb18e3e..4f13bcb5ac0fccf7cab4aad038cf9ff621c8aa23 100644
--- a/civicrm/CRM/Batch/DAO/EntityBatch.php
+++ b/civicrm/CRM/Batch/DAO/EntityBatch.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Batch/EntityBatch.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:98d4fc139c4903eb67dadd5a5ea72f5e)
+ * (GenCodeChecksum:a090bcea16be870a70e62f7101f31ad6)
  */
 
 /**
diff --git a/civicrm/CRM/Campaign/BAO/Campaign.php b/civicrm/CRM/Campaign/BAO/Campaign.php
index e618542b4fb28d9718752266d1d8d83c5f171850..0174f2c5e3197567484084676689e8afa244f8f3 100644
--- a/civicrm/CRM/Campaign/BAO/Campaign.php
+++ b/civicrm/CRM/Campaign/BAO/Campaign.php
@@ -48,7 +48,7 @@ class CRM_Campaign_BAO_Campaign extends CRM_Campaign_DAO_Campaign {
       }
     }
 
-    /* @var \CRM_Campaign_DAO_Campaign $campaign */
+    /** @var \CRM_Campaign_DAO_Campaign $campaign */
     $campaign = self::writeRecord($params);
 
     /* Create the campaign group record */
diff --git a/civicrm/CRM/Campaign/BAO/Petition.php b/civicrm/CRM/Campaign/BAO/Petition.php
index 5d3d55a5f0a94420cd07fc877251afa7e95eaabc..d6e688b849dff8184d51aa117923a546be0171de 100644
--- a/civicrm/CRM/Campaign/BAO/Petition.php
+++ b/civicrm/CRM/Campaign/BAO/Petition.php
@@ -571,7 +571,7 @@ AND         tag_id = ( SELECT id FROM civicrm_tag WHERE name = %2 )";
           CRM_Core_BAO_MessageTemplate::sendTemplate(
             [
               'groupName' => 'msg_tpl_workflow_petition',
-              'valueName' => 'petition_sign',
+              'workflow' => 'petition_sign',
               'contactId' => $params['contactId'],
               'tplParams' => $tplParams,
               'from' => "\"{$domainEmailName}\" <{$domainEmailAddress}>",
@@ -628,7 +628,7 @@ AND         tag_id = ( SELECT id FROM civicrm_tag WHERE name = %2 )";
           CRM_Core_BAO_MessageTemplate::sendTemplate(
             [
               'groupName' => 'msg_tpl_workflow_petition',
-              'valueName' => 'petition_confirmation_needed',
+              'workflow' => 'petition_confirmation_needed',
               'contactId' => $params['contactId'],
               'tplParams' => $tplParams,
               'from' => "\"{$domainEmailName}\" <{$domainEmailAddress}>",
diff --git a/civicrm/CRM/Campaign/DAO/Campaign.php b/civicrm/CRM/Campaign/DAO/Campaign.php
index 58250dc3ca6dc428a3cde096d726dda753b1c218..fb781ba832def199c3f7b941db2b2b1515e1a3b7 100644
--- a/civicrm/CRM/Campaign/DAO/Campaign.php
+++ b/civicrm/CRM/Campaign/DAO/Campaign.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Campaign/Campaign.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ec15aa356537755e66854f7da660cee2)
+ * (GenCodeChecksum:177e90ca0a120079f9c24a612a0105ad)
  */
 
 /**
diff --git a/civicrm/CRM/Campaign/DAO/CampaignGroup.php b/civicrm/CRM/Campaign/DAO/CampaignGroup.php
index 48351d8be0f60005732a03b1e33e2ade09e27c44..6b59d2100498a4d859502ad0a831e895f90a696c 100644
--- a/civicrm/CRM/Campaign/DAO/CampaignGroup.php
+++ b/civicrm/CRM/Campaign/DAO/CampaignGroup.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Campaign/CampaignGroup.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:2f82c00377ac107ef95474e340b596d7)
+ * (GenCodeChecksum:888e22b2d65bc717c633ef88371fe72a)
  */
 
 /**
diff --git a/civicrm/CRM/Campaign/DAO/Survey.php b/civicrm/CRM/Campaign/DAO/Survey.php
index 594c5ab5ea0cfa0ce66cd100bc0630e980005719..9be5cdacda2e95d540cb758a59f3d4c6afbc8113 100644
--- a/civicrm/CRM/Campaign/DAO/Survey.php
+++ b/civicrm/CRM/Campaign/DAO/Survey.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Campaign/Survey.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4718703121139e11dd903b604879b125)
+ * (GenCodeChecksum:a1ef28075a016cc4640a3d5090b13f34)
  */
 
 /**
diff --git a/civicrm/CRM/Campaign/Form/Petition.php b/civicrm/CRM/Campaign/Form/Petition.php
index 021b4785d5f0547151cb3f81becb785a245ac2f1..934779f7ed8f4296755624119840a8517b75e042 100644
--- a/civicrm/CRM/Campaign/Form/Petition.php
+++ b/civicrm/CRM/Campaign/Form/Petition.php
@@ -237,9 +237,9 @@ class CRM_Campaign_Form_Petition extends CRM_Core_Form {
 
   /**
    * Global validation rules for the form.
-   * @param $fields
+   * @param array $fields
    * @param $files
-   * @param $form
+   * @param CRM_Core_Form $form
    * @return array|bool
    */
   public static function formRule($fields, $files, $form) {
diff --git a/civicrm/CRM/Campaign/Form/Task/Reserve.php b/civicrm/CRM/Campaign/Form/Task/Reserve.php
index a1988f6e6e5f2048ccf2ef997acf1d99bf5a5ba4..01cc566f9c8adfa224d9a9ece6d85f60e1ec44a5 100644
--- a/civicrm/CRM/Campaign/Form/Task/Reserve.php
+++ b/civicrm/CRM/Campaign/Form/Task/Reserve.php
@@ -285,7 +285,7 @@ class CRM_Campaign_Form_Task_Reserve extends CRM_Campaign_Form_Task {
   }
 
   /**
-   * @param $contactIds
+   * @param array $contactIds
    *
    * @return array
    */
diff --git a/civicrm/CRM/Campaign/Info.php b/civicrm/CRM/Campaign/Info.php
index 37986540ddff8ad9221f2d3c9d7dfb994b32a6a3..6727a595d4996fc52e1fdf3fd8901cddcea74ef5 100644
--- a/civicrm/CRM/Campaign/Info.php
+++ b/civicrm/CRM/Campaign/Info.php
@@ -139,7 +139,7 @@ class CRM_Campaign_Info extends CRM_Core_Component_Info {
 
   /**
    * add shortcut to Create New.
-   * @param $shortCuts
+   * @param array $shortCuts
    */
   public function creatNewShortcut(&$shortCuts) {
     if (CRM_Core_Permission::check('manage campaign') ||
diff --git a/civicrm/CRM/Case/BAO/Case.php b/civicrm/CRM/Case/BAO/Case.php
index b2a0db357b9aa570c8a1ca0af80cd540874df229..c45b8dffd30615c1e271ef3fa64f6e019162653f 100644
--- a/civicrm/CRM/Case/BAO/Case.php
+++ b/civicrm/CRM/Case/BAO/Case.php
@@ -19,7 +19,7 @@
 /**
  * This class contains the functions for Case Management.
  */
-class CRM_Case_BAO_Case extends CRM_Case_DAO_Case {
+class CRM_Case_BAO_Case extends CRM_Case_DAO_Case implements \Civi\Core\HookInterface {
 
   /**
    * Static field for all the case information that we can potentially export.
@@ -58,6 +58,44 @@ class CRM_Case_BAO_Case extends CRM_Case_DAO_Case {
     return $result;
   }
 
+  /**
+   * @param \Civi\Core\Event\PostEvent $e
+   */
+  public static function on_hook_civicrm_post(\Civi\Core\Event\PostEvent $e): void {
+    // FIXME: The EventScanner ought to skip over disabled components when registering HookInterface
+    if (!CRM_Core_Component::isEnabled('CiviCase')) {
+      return;
+    }
+    if ($e->entity === 'Activity' && in_array($e->action, ['create', 'edit'])) {
+      /** @var CRM_Activity_DAO_Activity $activity */
+      $activity = $e->object;
+
+      // If subject contains a ‘[case #…]’ string, file activity on the related case (CRM-5916)
+      $matches = [];
+      $subjectToMatch = $activity->subject ?? '';
+      if (preg_match('/\[case #([0-9a-h]{7})\]/', $subjectToMatch, $matches)) {
+        $key = CRM_Core_DAO::escapeString(CIVICRM_SITE_KEY);
+        $hash = $matches[1];
+        $query = "SELECT id FROM civicrm_case WHERE SUBSTR(SHA1(CONCAT('$key', id)), 1, 7) = '" . CRM_Core_DAO::escapeString($hash) . "'";
+      }
+      elseif (preg_match('/\[case #(\d+)\]/', $subjectToMatch, $matches)) {
+        $query = "SELECT id FROM civicrm_case WHERE id = '" . CRM_Core_DAO::escapeString($matches[1]) . "'";
+      }
+      if (!empty($matches)) {
+        $caseParams = [
+          'activity_id' => $activity->id,
+          'case_id' => CRM_Core_DAO::singleValueQuery($query),
+        ];
+        if ($caseParams['case_id']) {
+          CRM_Case_BAO_Case::processCaseActivity($caseParams);
+        }
+        else {
+          CRM_Activity_BAO_Activity::logActivityAction($activity, "Case details for {$matches[1]} not found while recording an activity on case.");
+        }
+      }
+    }
+  }
+
   /**
    * Takes an associative array and creates a case object.
    *
@@ -112,14 +150,11 @@ class CRM_Case_BAO_Case extends CRM_Case_DAO_Case {
   }
 
   /**
-   * Process case activity add/delete
-   * takes an associative array and
-   *
-   * @param array $params
-   *   (reference ) an assoc array of name/value pairs.
+   * Add a CaseActivity record (skip if already exists).
    *
+   * @param array{activity_id: int, case_id: int} $params
    */
-  public static function processCaseActivity(&$params) {
+  public static function processCaseActivity(array $params): void {
     $caseActivityDAO = new CRM_Case_DAO_CaseActivity();
     $caseActivityDAO->activity_id = $params['activity_id'];
     $caseActivityDAO->case_id = $params['case_id'];
@@ -128,6 +163,26 @@ class CRM_Case_BAO_Case extends CRM_Case_DAO_Case {
     $caseActivityDAO->save();
   }
 
+  /**
+   * Associate an activity with 0 or more cases.
+   *
+   * @param int $activityId
+   * @param array|int $caseIds
+   */
+  public static function updateCaseActivity(int $activityId, $caseIds): void {
+    $actionName = empty($caseIds) ? 'delete' : 'replace';
+    $action = \Civi\Api4\CaseActivity::$actionName(FALSE)
+      ->addWhere('activity_id', '=', $activityId);
+
+    if (!empty($caseIds)) {
+      foreach ((array) $caseIds as $caseId) {
+        $action->addRecord(['case_id' => $caseId]);
+      }
+    }
+
+    $action->execute();
+  }
+
   /**
    * Get the case subject for Activity.
    *
@@ -278,22 +333,27 @@ WHERE civicrm_case.id = %1";
    * Look up a case using an activity ID.
    *
    * @param int $activityId
+   * @param bool $getSingle
    *
-   * @return int|null, case ID
+   * @return array|int|null
    */
-  public static function getCaseIdByActivityId($activityId) {
+  public static function getCaseIdByActivityId($activityId, $getSingle = TRUE) {
     $originalId = CRM_Core_DAO::singleValueQuery(
       'SELECT original_id FROM civicrm_activity WHERE id = %1',
       ['1' => [$activityId, 'Integer']]
     );
-    $caseId = CRM_Core_DAO::singleValueQuery(
+    $caseIds = [];
+    $query = CRM_Core_DAO::executeQuery(
       'SELECT case_id FROM civicrm_case_activity WHERE activity_id in (%1,%2)',
       [
         '1' => [$activityId, 'Integer'],
-        '2' => [$originalId ? $originalId : $activityId, 'Integer'],
+        '2' => [$originalId ?: $activityId, 'Integer'],
       ]
     );
-    return $caseId;
+    while ($query->fetch()) {
+      $caseIds[] = $query->case_id;
+    }
+    return $getSingle ? CRM_Utils_Array::first($caseIds) : $caseIds;
   }
 
   /**
@@ -1337,10 +1397,10 @@ HERESQL;
 
       $displayName = $info['display_name'] ?? NULL;
 
-      list($result[CRM_Utils_Array::value('contact_id', $info)], $subject, $message, $html) = CRM_Core_BAO_MessageTemplate::sendTemplate(
+      [$result[CRM_Utils_Array::value('contact_id', $info)], $subject, $message, $html] = CRM_Core_BAO_MessageTemplate::sendTemplate(
         [
           'groupName' => 'msg_tpl_workflow_case',
-          'valueName' => 'case_activity',
+          'workflow' => 'case_activity',
           'contactId' => $info['contact_id'] ?? NULL,
           'tplParams' => $tplParams,
           'from' => $receiptFrom,
@@ -1374,15 +1434,6 @@ HERESQL;
 
     if (!empty($recordedActivityParams)) {
       $activity = CRM_Activity_BAO_Activity::create($recordedActivityParams);
-
-      //create case_activity record if its case activity.
-      if ($caseId) {
-        $caseParams = [
-          'activity_id' => $activity->id,
-          'case_id' => $caseId,
-        ];
-        self::processCaseActivity($caseParams);
-      }
     }
 
     return $result;
@@ -1546,7 +1597,7 @@ HERESQL;
           $groupInfo['title'] = $results['title'];
           $params = [['group', '=', $groupInfo['id'], 0, 0]];
           $return = ['contact_id' => 1, 'sort_name' => 1, 'display_name' => 1, 'email' => 1, 'phone' => 1];
-          list($globalContacts) = CRM_Contact_BAO_Query::apiQuery($params, $return, NULL, $sort, $offset, $rowCount, TRUE, $returnOnlyCount, FALSE);
+          [$globalContacts] = CRM_Contact_BAO_Query::apiQuery($params, $return, NULL, $sort, $offset, $rowCount, TRUE, $returnOnlyCount, FALSE);
 
           if ($returnOnlyCount) {
             return $globalContacts;
@@ -3023,13 +3074,13 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')';
         'record_type_id' => 'Activity Source',
         'return' => 'contact_id',
       ]);
-      list($name, $address) = CRM_Contact_BAO_Contact_Location::getEmailDetails($sourceContactId);
+      [$name, $address] = CRM_Contact_BAO_Contact_Location::getEmailDetails($sourceContactId);
     }
 
     // If 'From' email address not found for Source Activity Contact then
     //   fetch the email from domain or logged in user.
     if (empty($address)) {
-      list($name, $address) = CRM_Core_BAO_Domain::getDefaultReceiptFrom();
+      [$name, $address] = CRM_Core_BAO_Domain::getDefaultReceiptFrom();
     }
 
     return "$name <$address>";
diff --git a/civicrm/CRM/Case/DAO/Case.php b/civicrm/CRM/Case/DAO/Case.php
index 55a008310501f65894c7801d51a4e4af26dcf86b..d361768e8bafe4a4df00afec57f765c9bdaa9af4 100644
--- a/civicrm/CRM/Case/DAO/Case.php
+++ b/civicrm/CRM/Case/DAO/Case.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Case/Case.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:cc7bc9034e7487e1913aa45fc4c119b8)
+ * (GenCodeChecksum:c319c7a1e16e3a2dadb8b2049bd00398)
  */
 
 /**
diff --git a/civicrm/CRM/Case/DAO/CaseActivity.php b/civicrm/CRM/Case/DAO/CaseActivity.php
index bfb3a04997b9cae0a184f6d2b96494a66c49f619..7536a7d3ef346dd907f0686753e54c8aa8ce97d8 100644
--- a/civicrm/CRM/Case/DAO/CaseActivity.php
+++ b/civicrm/CRM/Case/DAO/CaseActivity.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Case/CaseActivity.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:473d4047af6f44f1082795d38ef3ff4d)
+ * (GenCodeChecksum:02a39b6a4bf7478c67f79af913ba41c6)
  */
 
 /**
diff --git a/civicrm/CRM/Case/DAO/CaseContact.php b/civicrm/CRM/Case/DAO/CaseContact.php
index b7950e90c84c145cd3ec5ada3ed7a6fc78857c4e..d74da96f19a532fd2b68be84967880c5652814e2 100644
--- a/civicrm/CRM/Case/DAO/CaseContact.php
+++ b/civicrm/CRM/Case/DAO/CaseContact.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Case/CaseContact.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:92ba2cdb76569cdd69d488e73c495374)
+ * (GenCodeChecksum:4f8e7ac63bb770f81fc83288904ded4d)
  */
 
 /**
diff --git a/civicrm/CRM/Case/DAO/CaseType.php b/civicrm/CRM/Case/DAO/CaseType.php
index 53b1a88e0b34ee831ec240843f33682deb9118ec..d868c02b4cf0592184be3604e6965a2b3a6ba128 100644
--- a/civicrm/CRM/Case/DAO/CaseType.php
+++ b/civicrm/CRM/Case/DAO/CaseType.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Case/CaseType.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:92eb680369ce37591734a961f22ce831)
+ * (GenCodeChecksum:37c56727b3c487cfa8d4c7aea9dd74bd)
  */
 
 /**
diff --git a/civicrm/CRM/Case/Info.php b/civicrm/CRM/Case/Info.php
index 582fdd07e5350904930ff6630bd58d5d24d507aa..d657e50d4ec56f67616be2834fa0a7590ab9c0a7 100644
--- a/civicrm/CRM/Case/Info.php
+++ b/civicrm/CRM/Case/Info.php
@@ -196,7 +196,7 @@ class CRM_Case_Info extends CRM_Core_Component_Info {
 
   /**
    * add shortcut to Create New.
-   * @param $shortCuts
+   * @param array $shortCuts
    */
   public function creatNewShortcut(&$shortCuts) {
     if (CRM_Core_Permission::check('access all cases and activities') ||
diff --git a/civicrm/CRM/Case/ManagedEntities.php b/civicrm/CRM/Case/ManagedEntities.php
index be0d846cb169b0f80bf60f9832feec09ae79c959..4f253e430efe3ffd5c55086217cef8315c5b6af3 100644
--- a/civicrm/CRM/Case/ManagedEntities.php
+++ b/civicrm/CRM/Case/ManagedEntities.php
@@ -90,7 +90,7 @@ class CRM_Case_ManagedEntities {
       if (!in_array($actType, $validActTypes)) {
         $result[] = $managed;
       }
-      elseif ($me->get($managed['module'], $managed['name'])) {
+      elseif (self::getManagedEntity($managed['module'], $managed['name'])) {
         $result[] = $managed;
       }
     }
@@ -154,7 +154,7 @@ class CRM_Case_ManagedEntities {
       if (!in_array($relType, $validRelTypes)) {
         $result[] = $managed;
       }
-      elseif ($me->get($managed['module'], $managed['name'])) {
+      elseif (self::getManagedEntity($managed['module'], $managed['name'])) {
         $result[] = $managed;
       }
     }
@@ -162,4 +162,32 @@ class CRM_Case_ManagedEntities {
     return $result;
   }
 
+  /**
+   * Read a managed entity using APIv3.
+   *
+   * @param string $moduleName
+   *   The name of the module which declared entity.
+   * @param string $managedName
+   *   The symbolic name of the entity.
+   * @return array|NULL
+   *   API representation, or NULL if the entity does not exist
+   */
+  private static function getManagedEntity($moduleName, $managedName) {
+    $dao = new CRM_Core_DAO_Managed();
+    $dao->module = $moduleName;
+    $dao->name = $managedName;
+    $result = NULL;
+    if ($dao->find(TRUE)) {
+      $params = [
+        'id' => $dao->entity_id,
+      ];
+      try {
+        $result = civicrm_api3($dao->entity_type, 'getsingle', $params);
+      }
+      catch (Exception $e) {
+      }
+    }
+    return $result;
+  }
+
 }
diff --git a/civicrm/CRM/Case/Page/AJAX.php b/civicrm/CRM/Case/Page/AJAX.php
index dcb75c10ff8874d59ec2c0c18c12cc36775d0379..21e78f82a781d32baa65bb84043518214578e146 100644
--- a/civicrm/CRM/Case/Page/AJAX.php
+++ b/civicrm/CRM/Case/Page/AJAX.php
@@ -65,17 +65,10 @@ class CRM_Case_Page_AJAX {
     $activityParams['status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_status_id', 'Completed');
     $activityParams['case_id'] = $caseId;
     $activityParams['is_auto'] = 0;
-    $activityParams['subject'] = 'Change Case Tags';
+    $activityParams['subject'] = ts('Change Case Tags');
 
     $activity = CRM_Activity_BAO_Activity::create($activityParams);
 
-    $caseParams = [
-      'activity_id' => $activity->id,
-      'case_id' => $caseId,
-    ];
-
-    CRM_Case_BAO_Case::processCaseActivity($caseParams);
-
     echo 'true';
     CRM_Utils_System::civiExit();
   }
@@ -138,16 +131,9 @@ class CRM_Case_Page_AJAX {
     $activityParams['status_id'] = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_status_id', 'Completed');
     $activityParams['case_id'] = $caseId;
     $activityParams['is_auto'] = 0;
-    $activityParams['subject'] = 'Client Added To Case';
+    $activityParams['subject'] = ts('Client Added To Case');
 
     $activity = CRM_Activity_BAO_Activity::create($activityParams);
-
-    $caseParams = [
-      'activity_id' => $activity->id,
-      'case_id' => $caseId,
-    ];
-
-    CRM_Case_BAO_Case::processCaseActivity($caseParams);
     CRM_Utils_JSON::output(TRUE);
   }
 
@@ -183,6 +169,10 @@ class CRM_Case_Page_AJAX {
 
     $allCases = !empty($params['all']);
 
+    if ($params['type'] === 'recent' && empty($params['sortBy'])) {
+      $params['sortBy'] = 'date DESC';
+    }
+
     $cases = CRM_Case_BAO_Case::getCases($allCases, $params);
 
     $casesDT = [
diff --git a/civicrm/CRM/Case/XMLProcessor.php b/civicrm/CRM/Case/XMLProcessor.php
index 9f9ef223e919dde93635b6ee81c06f5eab48f313..eb7036848b462c70df599ebcff82f67109f70d18 100644
--- a/civicrm/CRM/Case/XMLProcessor.php
+++ b/civicrm/CRM/Case/XMLProcessor.php
@@ -16,16 +16,6 @@
  */
 class CRM_Case_XMLProcessor {
 
-  /**
-   * FIXME: This does *NOT* belong in a static property, but we're too late in
-   * the 4.5-cycle to do the necessary cleanup.
-   *
-   * Format is [int $id => string $relTypeCname].
-   *
-   * @var array|null
-   */
-  public static $activityTypes = NULL;
-
   /**
    * @param $caseType
    *
@@ -61,22 +51,6 @@ class CRM_Case_XMLProcessor {
     return $caseType;
   }
 
-  /**
-   * @deprecated
-   *
-   * @param bool $indexName
-   * @param bool $all
-   *
-   * @return array
-   */
-  public static function &allActivityTypes($indexName = TRUE, $all = FALSE) {
-    CRM_Core_Error::deprecatedFunctionWarning('CRM_Case_PseudoConstant::caseActivityType');
-    if (self::$activityTypes === NULL) {
-      self::$activityTypes = CRM_Case_PseudoConstant::caseActivityType($indexName, $all);
-    }
-    return self::$activityTypes;
-  }
-
   /**
    * Get all relationship type display labels (not machine names)
    *
@@ -122,7 +96,6 @@ class CRM_Case_XMLProcessor {
    * FIXME: This should not exist
    */
   public static function flushStaticCaches() {
-    self::$activityTypes = NULL;
     unset(Civi::$statics[__CLASS__]['reltypes']);
   }
 
diff --git a/civicrm/CRM/Case/XMLProcessor/Process.php b/civicrm/CRM/Case/XMLProcessor/Process.php
index 2e3463d54bd921d06d29f4bd1444da497aebfad5..21a83ab5e5c099df88ca1eae55697adc0227711a 100644
--- a/civicrm/CRM/Case/XMLProcessor/Process.php
+++ b/civicrm/CRM/Case/XMLProcessor/Process.php
@@ -171,7 +171,7 @@ class CRM_Case_XMLProcessor_Process extends CRM_Case_XMLProcessor {
     $result = [];
     foreach ($caseRolesXML as $caseRoleXML) {
       foreach ($caseRoleXML->RelationshipType as $relationshipTypeXML) {
-        list($relationshipTypeID,) = $this->locateNameOrLabel($relationshipTypeXML);
+        [$relationshipTypeID] = $this->locateNameOrLabel($relationshipTypeXML);
         if ($relationshipTypeID === FALSE) {
           continue;
         }
@@ -330,7 +330,7 @@ class CRM_Case_XMLProcessor_Process extends CRM_Case_XMLProcessor {
 
     if (!empty($caseTypeXML->CaseRoles) && $caseTypeXML->CaseRoles->RelationshipType) {
       foreach ($caseTypeXML->CaseRoles->RelationshipType as $relTypeXML) {
-        list(, $relationshipTypeMachineName) = $this->locateNameOrLabel($relTypeXML);
+        [, $relationshipTypeMachineName] = $this->locateNameOrLabel($relTypeXML);
         $result[] = $relationshipTypeMachineName;
       }
     }
@@ -511,7 +511,7 @@ AND        a.is_deleted = 0
       if (!$activityDate) {
         $activityDate = $params['activity_date_time'];
       }
-      list($activity_date, $activity_time) = CRM_Utils_Date::setDateDefaults($activityDate);
+      [$activity_date, $activity_time] = CRM_Utils_Date::setDateDefaults($activityDate);
       $activityDateTime = CRM_Utils_Date::processDate($activity_date, $activity_time);
       //add reference offset to date.
       if ((int) $activityTypeXML->reference_offset) {
@@ -540,13 +540,6 @@ AND        a.is_deleted = 0
     if (!$activity) {
       throw new CRM_Core_Exception('Unable to create Activity');
     }
-
-    // create case activity record
-    $caseParams = [
-      'activity_id' => $activity->id,
-      'case_id' => $params['caseID'],
-    ];
-    CRM_Case_BAO_Case::processCaseActivity($caseParams);
     return TRUE;
   }
 
@@ -628,7 +621,7 @@ AND        a.is_deleted = 0
     $targetContactId = is_array($activityParams['target_contact_id'])
       ? CRM_Utils_Array::first($activityParams['target_contact_id'])
       : $activityParams['target_contact_id'];
-    list($relTypeId, $a, $b) = explode('_', $activityTypeXML->default_assignee_relationship);
+    [$relTypeId, $a, $b] = explode('_', $activityTypeXML->default_assignee_relationship);
 
     $params = [
       'relationship_type_id' => $relTypeId,
diff --git a/civicrm/CRM/Contact/BAO/Contact.php b/civicrm/CRM/Contact/BAO/Contact.php
index 95243b29bbc3c3cb944af1afe4dc61860c9b8320..087e4d9e519d084119ed9e916054db1d0b777975 100644
--- a/civicrm/CRM/Contact/BAO/Contact.php
+++ b/civicrm/CRM/Contact/BAO/Contact.php
@@ -9,6 +9,8 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Token\TokenProcessor;
+
 /**
  *
  * @package CRM
@@ -2725,64 +2727,55 @@ LEFT JOIN civicrm_email    ON ( civicrm_contact.id = civicrm_email.contact_id )
    * @param \CRM_Contact_DAO_Contact $contact
    *   Contact object after save.
    */
-  public static function processGreetings(&$contact) {
-
-    $emailGreetingString = self::getTemplateForGreeting('email_greeting', $contact);
-    $postalGreetingString = self::getTemplateForGreeting('postal_greeting', $contact);
-    $addresseeString = self::getTemplateForGreeting('addressee', $contact);
-    //@todo this function does a lot of unnecessary loading.
-    // ensureGreetingParamsAreSet now makes sure that the contact is
-    // loaded and using updateGreetingsOnTokenFieldChange
-    // allows us the possibility of only doing an update if required.
-
-    // The contact object has not always required the
-    // fields that are required to calculate greetings
-    // so we need to retrieve it again.
+  public static function processGreetings(CRM_Contact_DAO_Contact $contact): void {
+
+    $greetings = array_filter([
+      'email_greeting_display' => self::getTemplateForGreeting('email_greeting', $contact),
+      'postal_greeting_display' => self::getTemplateForGreeting('postal_greeting', $contact),
+      'addressee_display' => self::getTemplateForGreeting('addressee', $contact),
+    ]);
+    // A DAO fetch here is more efficient than looking up
+    // values in the token processor - this may be substantially improved by
+    // https://github.com/civicrm/civicrm-core/pull/24294 and
+    // https://github.com/civicrm/civicrm-core/pull/24156 and could be re-tested
+    // in future but tests also 'expect' it to be populated.
     if ($contact->_query !== FALSE) {
       $contact->find(TRUE);
     }
-
-    // store object values to an array
-    $contactDetails = [];
-    CRM_Core_DAO::storeValues($contact, $contactDetails);
-    $contactDetails = [[$contact->id => $contactDetails]];
-
-    $updateQueryString = [];
-
-    if ($emailGreetingString) {
-      CRM_Contact_BAO_Contact_Utils::processGreetingTemplate($emailGreetingString,
-        $contactDetails,
-        $contact->id,
-        'CRM_Contact_BAO_Contact'
-      );
-      $emailGreetingString = CRM_Core_DAO::escapeString(CRM_Utils_String::stripSpaces($emailGreetingString));
-      $updateQueryString[] = " email_greeting_display = '$emailGreetingString'";
-    }
-
-    if ($postalGreetingString) {
-      CRM_Contact_BAO_Contact_Utils::processGreetingTemplate($postalGreetingString,
-        $contactDetails,
-        $contact->id,
-        'CRM_Contact_BAO_Contact'
-      );
-      $postalGreetingString = CRM_Core_DAO::escapeString(CRM_Utils_String::stripSpaces($postalGreetingString));
-      $updateQueryString[] = " postal_greeting_display = '$postalGreetingString'";
+    // We can't use the DAO store method as it filters out NULL keys.
+    // Leaving NULL keys in is important as the token processor will
+    // do DB lookups to find the data if the keys are not set.
+    // We could just about skip this & just cast to an array - except create
+    // adds in `phone` and `email`
+    // in a weird & likely obsolete way....
+    $contactArray = array_intersect_key((array) $contact, $contact->fields());
+    // blech
+    $contactArray = array_map(function($v) {
+      return $v === 'null' ? NULL : $v;
+    }, $contactArray);
+    $tokenProcessor = new TokenProcessor(\Civi::dispatcher(), [
+      'smarty' => TRUE,
+      'class' => __CLASS__,
+      'schema' => ['contactId'],
+    ]);
+    $tokenProcessor->addRow(['contactId' => $contact->id, 'contact' => (array) $contactArray]);
+    foreach ($greetings as $greetingKey => $greetingString) {
+      $tokenProcessor->addMessage($greetingKey, $greetingString, 'text/plain');
     }
 
-    if ($addresseeString) {
-      CRM_Contact_BAO_Contact_Utils::processGreetingTemplate($addresseeString,
-        $contactDetails,
-        $contact->id,
-        'CRM_Contact_BAO_Contact'
-      );
-      $addresseeString = CRM_Core_DAO::escapeString(CRM_Utils_String::stripSpaces($addresseeString));
-      $updateQueryString[] = " addressee_display = '$addresseeString'";
+    $tokenProcessor->evaluate();
+    $row = $tokenProcessor->getRow(0);
+    foreach ($greetings as $greetingKey => $greetingString) {
+      $parsedGreeting = CRM_Core_DAO::escapeString(CRM_Utils_String::stripSpaces($row->render($greetingKey)));
+      // Check to see if the parsed greeting already matches what is stored in the database. If it is different add in update Query
+      if ($contactArray[$greetingKey] !== $parsedGreeting) {
+        $updateQueryString[] = " $greetingKey = '$parsedGreeting'";
+      }
     }
 
     if (!empty($updateQueryString)) {
       $updateQueryString = implode(',', $updateQueryString);
-      $queryString = "UPDATE civicrm_contact SET $updateQueryString WHERE id = {$contact->id}";
-      CRM_Core_DAO::executeQuery($queryString);
+      CRM_Core_DAO::executeQuery("UPDATE civicrm_contact SET $updateQueryString WHERE id = {$contact->id}");
     }
   }
 
@@ -3485,11 +3478,29 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id )
     $dedupeParams['rule'] = $rule;
     $dedupeParams['rule_group_id'] = $ruleGroupID;
     $dedupeParams['excluded_contact_ids'] = $excludedContactIDs;
-    $dedupeResults['ids'] = [];
-    $dedupeResults['handled'] = FALSE;
+    return self::findDuplicates($dedupeParams, $contextParams ?: []);
+  }
+
+  /**
+   * @param array $dedupeParams
+   * @param array $contextParams
+   * @return array
+   * @throws CRM_Core_Exception
+   */
+  public static function findDuplicates(array $dedupeParams, array $contextParams = []): array {
+    $dedupeResults = [
+      'ids' => [],
+      'handled' => FALSE,
+    ];
     CRM_Utils_Hook::findDuplicates($dedupeParams, $dedupeResults, $contextParams);
     if (!$dedupeResults['handled']) {
-      $dedupeResults['ids'] = CRM_Dedupe_Finder::dupesByParams($dedupeParams, $contactType, $rule, $excludedContactIDs, $ruleGroupID);
+      $dedupeParams += [
+        'contact_type' => NULL,
+        'rule' => NULL,
+        'rule_group_id' => NULL,
+        'excluded_contact_ids' => [],
+      ];
+      $dedupeResults['ids'] = CRM_Dedupe_Finder::dupesByParams($dedupeParams, $dedupeParams['contact_type'], $dedupeParams['rule'], $dedupeParams['excluded_contact_ids'], $dedupeParams['rule_group_id']);
     }
     return $dedupeResults['ids'] ?? [];
   }
diff --git a/civicrm/CRM/Contact/BAO/ContactType.php b/civicrm/CRM/Contact/BAO/ContactType.php
index d9bb3e1b2f4c900ce51642cc07723e6b5fb1bfdb..dcf4150abde944428764b5968503f3d54c6cc106 100644
--- a/civicrm/CRM/Contact/BAO/ContactType.php
+++ b/civicrm/CRM/Contact/BAO/ContactType.php
@@ -658,7 +658,7 @@ WHERE contact_sub_type LIKE '%{$subType}%'";
   }
 
   /**
-   * @param $contactType
+   * @param string $contactType
    * @param int $contactId
    *
    * @return bool
@@ -695,7 +695,7 @@ WHERE contact_sub_type LIKE '%{$subType}%'";
   /**
    * @todo what does this function do?
    * @param int $contactId
-   * @param $contactType
+   * @param string $contactType
    *
    * @return bool
    */
@@ -886,4 +886,24 @@ WHERE ($subtypeClause)";
     return $contactTypes;
   }
 
+  /**
+   * @param string $entityName
+   * @param string $action
+   * @param array $record
+   * @param $userID
+   * @return bool
+   * @see CRM_Core_DAO::checkAccess
+   */
+  public static function _checkAccess(string $entityName, string $action, array $record, $userID): bool {
+    // Only records with a parent may be deleted
+    if ($action === 'delete') {
+      if (!array_key_exists('parent_id', $record)) {
+        $record['parent_id'] = CRM_Core_DAO::getFieldValue(parent::class, $record['id'], 'parent_id');
+      }
+      return (bool) $record['parent_id'];
+    }
+    // Gatekeeper permissions suffice for everything else
+    return TRUE;
+  }
+
 }
diff --git a/civicrm/CRM/Contact/BAO/Group.php b/civicrm/CRM/Contact/BAO/Group.php
index b7e0397610de9bb8fd177f23778a723f822cf7af..665b7f997302a771957d7e5a65273d20ac705bf7 100644
--- a/civicrm/CRM/Contact/BAO/Group.php
+++ b/civicrm/CRM/Contact/BAO/Group.php
@@ -180,7 +180,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group {
   public static function getMember($groupID, $useCache = TRUE, $limit = 0) {
     $params = [['group', '=', $groupID, 0, 0]];
     $returnProperties = ['contact_id'];
-    list($contacts) = CRM_Contact_BAO_Query::apiQuery($params, $returnProperties, NULL, NULL, 0, $limit, $useCache);
+    [$contacts] = CRM_Contact_BAO_Query::apiQuery($params, $returnProperties, NULL, NULL, 0, $limit, $useCache);
 
     $aMembers = [];
     foreach ($contacts as $contact) {
@@ -316,6 +316,22 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group {
     return $permissions;
   }
 
+  /**
+   * @inheritDoc
+   */
+  public function addSelectWhereClause() {
+    $clauses = [];
+    if (!CRM_Core_Permission::check([['edit all contacts', 'view all contacts']])) {
+      $allGroups = CRM_Core_PseudoConstant::allGroup(NULL, FALSE);
+      // FIXME: TableName 'civicrm_saved_search' seems wrong but is consistent with self::checkPermission
+      $allowedGroups = \CRM_ACL_API::group(CRM_ACL_API::VIEW, NULL, 'civicrm_saved_search', $allGroups);
+      $groupsIn = $allowedGroups ? implode(',', $allowedGroups) : '0';
+      $clauses['id'][] = "IN ($groupsIn)";
+    }
+    CRM_Utils_Hook::selectWhereClause($this, $clauses);
+    return $clauses;
+  }
+
   /**
    * Create a new group.
    *
@@ -1411,4 +1427,34 @@ WHERE {$whereClause}";
     return reset($parentArray);
   }
 
+  /**
+   * @param string $entityName
+   * @param string $action
+   * @param array $record
+   * @param $userID
+   * @return bool
+   * @see CRM_Core_DAO::checkAccess
+   */
+  public static function _checkAccess(string $entityName, string $action, array $record, $userID): bool {
+    switch ($action) {
+      case 'create':
+        $groupType = (array) ($record['group_type:name'] ?? []);
+        // If not already in :name format, transform to name
+        foreach ((array) ($record['group_type'] ?? []) as $typeId) {
+          $groupType[] = CRM_Core_PseudoConstant::getName(self::class, 'group_type', $typeId);
+        }
+        if ($groupType === ['Mailing List']) {
+          // If it's only a Mailing List, edit groups OR create mailings will work
+          return CRM_Core_Permission::check(['access CiviCRM', ['edit groups', 'access CiviMail', 'create mailings']], $userID);
+        }
+        else {
+          return CRM_Core_Permission::check(['access CiviCRM', 'edit groups'], $userID);
+        }
+
+      default:
+        // All other actions just rely on gatekeeper permissions
+        return TRUE;
+    }
+  }
+
 }
diff --git a/civicrm/CRM/Contact/BAO/GroupContact.php b/civicrm/CRM/Contact/BAO/GroupContact.php
index 8580a787d3c48a6130b4cd9f934c236033c24477..fb0c083a386f7eacb948e33ae63b4bbb0ab22620 100644
--- a/civicrm/CRM/Contact/BAO/GroupContact.php
+++ b/civicrm/CRM/Contact/BAO/GroupContact.php
@@ -20,6 +20,7 @@ use Civi\Core\HookInterface;
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact implements HookInterface {
+  use CRM_Contact_AccessTrait;
 
   /**
    * Deprecated add function
diff --git a/civicrm/CRM/Contact/BAO/GroupContactCache.php b/civicrm/CRM/Contact/BAO/GroupContactCache.php
index 21e606fe2e1296bf8c0c33552a4a59da13720a07..306cfcb553f3c231e6635e22ae7445043d1b4a31 100644
--- a/civicrm/CRM/Contact/BAO/GroupContactCache.php
+++ b/civicrm/CRM/Contact/BAO/GroupContactCache.php
@@ -521,7 +521,7 @@ ORDER BY   gc.contact_id, g.children
     if (empty($apiParams['limit']) && empty($apiParams['offset'])) {
       unset($apiParams['orderBy']);
     }
-    /* @var $api \Civi\Api4\Generic\DAOGetAction */
+    /** @var \Civi\Api4\Generic\DAOGetAction $api */
     $api = Request::create($savedSearch['api_entity'], 'get', $apiParams);
     $query = new Api4SelectQuery($api);
     $query->forceSelectId = FALSE;
@@ -660,7 +660,7 @@ ORDER BY   gc.contact_id, g.children
    *
    * Do not call this outside of core tested code - it WILL change.
    *
-   * @param array[int] $groupIDs
+   * @param int[] $groupIDs
    * @param string $temporaryTable
    *
    * @throws \API_Exception
diff --git a/civicrm/CRM/Contact/BAO/Individual.php b/civicrm/CRM/Contact/BAO/Individual.php
index 409c2ee0573a17c44c4ff89cd831481cc68ad385..43ea780a7ade8996b1e23c8ff18422cf72113743 100644
--- a/civicrm/CRM/Contact/BAO/Individual.php
+++ b/civicrm/CRM/Contact/BAO/Individual.php
@@ -343,53 +343,6 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact {
     return $contact;
   }
 
-  /**
-   * Regenerates display_name for contacts with given prefixes/suffixes.
-   *
-   * @param array $ids
-   *   The array with the prefix/suffix id governing which contacts to regenerate.
-   * @param int $action
-   *   The action describing whether prefix/suffix was UPDATED or DELETED.
-   */
-  public static function updateDisplayNames(&$ids, $action) {
-    // get the proper field name (prefix_id or suffix_id) and its value
-    $fieldName = '';
-    foreach ($ids as $key => $value) {
-      switch ($key) {
-        case 'individualPrefix':
-          $fieldName = 'prefix_id';
-          $fieldValue = $value;
-          break 2;
-
-        case 'individualSuffix':
-          $fieldName = 'suffix_id';
-          $fieldValue = $value;
-          break 2;
-      }
-    }
-    if ($fieldName == '') {
-      return;
-    }
-
-    // query for the affected individuals
-    $fieldValue = CRM_Utils_Type::escape($fieldValue, 'Integer');
-    $contact = new CRM_Contact_BAO_Contact();
-    $contact->$fieldName = $fieldValue;
-    $contact->find();
-
-    // iterate through the affected individuals and rebuild their display_names
-    while ($contact->fetch()) {
-      $contact = new CRM_Contact_BAO_Contact();
-      $contact->id = $contact->contact_id;
-      if ($action == CRM_Core_Action::DELETE) {
-        $contact->$fieldName = 'NULL';
-        $contact->save();
-      }
-      $contact->display_name = $contact->displayName();
-      $contact->save();
-    }
-  }
-
   /**
    * Creates display name.
    *
diff --git a/civicrm/CRM/Contact/BAO/ProximityQuery.php b/civicrm/CRM/Contact/BAO/ProximityQuery.php
index f4a671b807d57c756b1a97e48df78a8ad72329d2..e69fb7c11f7db4ac9be0969447a81739bf07d521 100644
--- a/civicrm/CRM/Contact/BAO/ProximityQuery.php
+++ b/civicrm/CRM/Contact/BAO/ProximityQuery.php
@@ -175,8 +175,8 @@ class CRM_Contact_BAO_ProximityQuery {
   public static function where($latitude, $longitude, $distance, $tablePrefix = 'civicrm_address') {
     self::initialize();
 
-    list($minLongitude, $maxLongitude) = self::earthLongitudeRange($longitude, $latitude, $distance);
-    list($minLatitude, $maxLatitude) = self::earthLatitudeRange($longitude, $latitude, $distance);
+    [$minLongitude, $maxLongitude] = self::earthLongitudeRange($longitude, $latitude, $distance);
+    [$minLatitude, $maxLatitude] = self::earthLatitudeRange($longitude, $latitude, $distance);
 
     // DONT consider NAN values (which is returned by rad2deg php function)
     // for checking BETWEEN geo_code's criteria as it throws obvious 'NAN' field not found DB: Error
@@ -218,7 +218,7 @@ ACOS(
    * @throws Exception
    */
   public static function process(&$query, &$values) {
-    list($name, $op, $distance, $grouping, $wildcard) = $values;
+    [$name, $op, $distance, $grouping, $wildcard] = $values;
 
     // also get values array for all address related info
     $proximityVars = [
diff --git a/civicrm/CRM/Contact/BAO/Query.php b/civicrm/CRM/Contact/BAO/Query.php
index 20a918c3b8e2be1a370ef97e625c983c7f8f9bcc..3200224475c82aa54a6880e8be4e43d48e441f05 100644
--- a/civicrm/CRM/Contact/BAO/Query.php
+++ b/civicrm/CRM/Contact/BAO/Query.php
@@ -789,7 +789,7 @@ class CRM_Contact_BAO_Query {
           }
         }
         elseif (isset($field['where'])) {
-          list($tableName, $fieldName) = explode('.', $field['where'], 2);
+          [$tableName, $fieldName] = explode('.', $field['where'], 2);
           if (isset($tableName)) {
             if (!empty(self::$_dependencies[$tableName])) {
               $this->_tables['civicrm_address'] = 1;
@@ -1095,7 +1095,7 @@ class CRM_Contact_BAO_Query {
         if ((in_array($elementCmpName, self::$_locationSpecificFields) || !empty($addressCustomFieldIds))
           && !in_array($elementCmpName, ['email', 'phone', 'im', 'openid'])
         ) {
-          list($aName, $addressJoin) = $this->addAddressTable($name, $lCond);
+          [$aName, $addressJoin] = $this->addAddressTable($name, $lCond);
           $locationTypeJoin[$tName] = " ( $aName.location_type_id = $ltName.id ) ";
           $processed[$aName] = 1;
         }
@@ -1103,7 +1103,7 @@ class CRM_Contact_BAO_Query {
         $cond = $elementType = '';
         if (strpos($elementName, '-') !== FALSE) {
           // this is either phone, email or IM
-          list($elementName, $elementType) = explode('-', $elementName);
+          [$elementName, $elementType] = explode('-', $elementName);
 
           if (($elementName != 'phone') && ($elementName != 'im')) {
             $cond = self::getPrimaryCondition($elementType);
@@ -1186,7 +1186,7 @@ class CRM_Contact_BAO_Query {
         }
 
         if ($field && isset($field['where'])) {
-          list($tableName, $fieldName) = explode('.', $field['where'], 2);
+          [$tableName, $fieldName] = explode('.', $field['where'], 2);
           $pf = substr($tableName, 8);
           $tName = $name . '-' . $pf . $elementType;
           if (isset($tableName)) {
@@ -1445,7 +1445,7 @@ class CRM_Contact_BAO_Query {
     else {
       if (!empty($this->_paramLookup['group'])) {
 
-        list($name, $op, $value, $grouping, $wildcard) = $this->_paramLookup['group'][0];
+        [$name, $op, $value, $grouping, $wildcard] = $this->_paramLookup['group'][0];
 
         if (is_array($value) && in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
           $this->_paramLookup['group'][0][1] = key($value);
@@ -1560,7 +1560,7 @@ class CRM_Contact_BAO_Query {
    */
   public static function fixDateValues($relative, &$from, &$to) {
     if ($relative) {
-      list($from, $to) = CRM_Utils_Date::getFromTo($relative, $from, $to);
+      [$from, $to] = CRM_Utils_Date::getFromTo($relative, $from, $to);
     }
   }
 
@@ -2061,7 +2061,7 @@ class CRM_Contact_BAO_Query {
         if ($this->_params[$id][0] == 'id' || $this->_params[$id][0] == 'contact_id') {
           $this->_where[0][] = self::buildClause("contact_a.id", $this->_params[$id][1], $this->_params[$id][2]);
           $field = $this->_fields['id'] ?? NULL;
-          list($qillop, $qillVal) = CRM_Contact_BAO_Query::buildQillForFieldValue(
+          [$qillop, $qillVal] = CRM_Contact_BAO_Query::buildQillForFieldValue(
             'CRM_Contact_BAO_Contact',
             "contact_a.id",
             $this->_params[$id][2],
@@ -2190,7 +2190,7 @@ class CRM_Contact_BAO_Query {
 
       $this->_where[$grouping][] = self::buildClause($where, $op, $value);
       $this->_tables[$aName] = $this->_whereTables[$aName] = 1;
-      list($qillop, $qillVal) = self::buildQillForFieldValue('CRM_Core_DAO_Address', "state_province_id", $value, $op);
+      [$qillop, $qillVal] = self::buildQillForFieldValue('CRM_Core_DAO_Address', "state_province_id", $value, $op);
       $this->_qill[$grouping][] = ts("%1 %2 %3", [1 => $field['title'], 2 => $qillop, 3 => $qillVal]);
     }
     elseif (!empty($field['pseudoconstant'])) {
@@ -2221,7 +2221,7 @@ class CRM_Contact_BAO_Query {
       $this->_where[$grouping][] = self::buildClause($where, $op, $value, 'Positive');
       $this->_tables[$aName] = $this->_whereTables[$aName] = 1;
 
-      list($qillop, $qillVal) = CRM_Contact_BAO_Query::buildQillForFieldValue(NULL, $name, $value, $op);
+      [$qillop, $qillVal] = CRM_Contact_BAO_Query::buildQillForFieldValue(NULL, $name, $value, $op);
       $this->_qill[$grouping][] = ts("%1 %2 %3", [1 => $field['title'], 2 => $qillop, 3 => $qillVal]);
     }
     elseif ($name === 'world_region') {
@@ -2296,7 +2296,7 @@ class CRM_Contact_BAO_Query {
         $type = CRM_Utils_Type::typeToString($field['type']);
       }
 
-      list($tableName, $fieldName) = explode('.', $field['where'], 2);
+      [$tableName, $fieldName] = explode('.', $field['where'], 2);
 
       if (isset($locType[1]) &&
         is_numeric($locType[1])
@@ -2304,7 +2304,7 @@ class CRM_Contact_BAO_Query {
         $setTables = FALSE;
 
         //get the location name
-        list($tName, $fldName) = self::getLocationTableName($field['where'], $locType);
+        [$tName, $fldName] = self::getLocationTableName($field['where'], $locType);
         $fieldName = "`$tName`.$fldName";
 
         // we set both _tables & whereTables because whereTables doesn't seem to do what the name implies it should
@@ -2320,7 +2320,7 @@ class CRM_Contact_BAO_Query {
         }
       }
 
-      list($qillop, $qillVal) = self::buildQillForFieldValue(NULL, $field['title'], $value, $op);
+      [$qillop, $qillVal] = self::buildQillForFieldValue(NULL, $field['title'], $value, $op);
       $this->_qill[$grouping][] = ts("%1 %2 %3", [
         1 => $field['title'],
         2 => $qillop,
@@ -2359,7 +2359,7 @@ class CRM_Contact_BAO_Query {
     }
 
     if ($setTables && isset($field['where'])) {
-      list($tableName, $fieldName) = explode('.', $field['where'], 2);
+      [$tableName, $fieldName] = explode('.', $field['where'], 2);
       if (isset($tableName)) {
         $this->_tables[$tableName] = 1;
         $this->_whereTables[$tableName] = 1;
@@ -2376,7 +2376,7 @@ class CRM_Contact_BAO_Query {
    */
   public static function getLocationTableName(&$where, &$locType) {
     if (isset($locType[1]) && is_numeric($locType[1])) {
-      list($tbName, $fldName) = explode(".", $where);
+      [$tbName, $fldName] = explode(".", $where);
 
       //get the location name
       $locationType = CRM_Core_DAO_Address::buildOptions('location_type_id', 'validate');
@@ -2833,7 +2833,7 @@ class CRM_Contact_BAO_Query {
    * @param array $values
    */
   public function deletedContacts($values) {
-    list($_, $_, $value, $grouping, $_) = $values;
+    [$_, $_, $value, $grouping, $_] = $values;
     if ($value) {
       // *prepend* to the relevant grouping as this is quite an important factor
       array_unshift($this->_qill[$grouping], ts('Search in Trash'));
@@ -2848,7 +2848,7 @@ class CRM_Contact_BAO_Query {
    * @throws \CRM_Core_Exception
    */
   public function contactType(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     $subTypes = [];
     $clause = [];
@@ -2868,7 +2868,7 @@ class CRM_Contact_BAO_Query {
           $subType = NULL;
           $contactType = $k;
           if (strpos($k, CRM_Core_DAO::VALUE_SEPARATOR)) {
-            list($contactType, $subType) = explode(CRM_Core_DAO::VALUE_SEPARATOR, $k, 2);
+            [$contactType, $subType] = explode(CRM_Core_DAO::VALUE_SEPARATOR, $k, 2);
           }
 
           if (!empty($subType)) {
@@ -2913,7 +2913,7 @@ class CRM_Contact_BAO_Query {
    * @param array $values
    */
   public function contactSubType(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
     $this->includeContactSubTypes($value, $grouping, $op);
   }
 
@@ -2966,7 +2966,7 @@ class CRM_Contact_BAO_Query {
    * @throws \Exception
    */
   public function group($values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     // If the $value is in OK (operator as key) array format we need to extract the key as operator and value first
     if (is_array($value) && in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
@@ -3097,7 +3097,7 @@ class CRM_Contact_BAO_Query {
       $this->_where[$grouping][] = ' ( ' . implode($and, $groupClause) . ' ) ';
     }
 
-    list($qillop, $qillVal) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contact_DAO_Group', 'id', $value, $op);
+    [$qillop, $qillVal] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contact_DAO_Group', 'id', $value, $op);
     $this->_qill[$grouping][] = ts("Group(s) %1 %2", [1 => $qillop, 2 => $qillVal]);
     if (strpos($op, 'NULL') === FALSE) {
       $this->_qill[$grouping][] = ts("Group Status %1", [1 => implode(' ' . ts('or') . ' ', $this->getSelectedGroupStatuses($grouping))]);
@@ -3194,7 +3194,7 @@ WHERE  $smartGroupClause
    * @param $values
    */
   public function ufUser(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     if ($value == 1) {
       $this->_tables['civicrm_uf_match'] = $this->_whereTables['civicrm_uf_match'] = ' INNER JOIN civicrm_uf_match ON civicrm_uf_match.contact_id = contact_a.id ';
@@ -3217,7 +3217,7 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   public function tagSearch(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     $op = "LIKE";
     $value = "%{$value}%";
@@ -3282,7 +3282,7 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   public function tag(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     // API/Search Builder format array(operator => array(values))
     if (is_array($value)) {
@@ -3307,7 +3307,7 @@ WHERE  $smartGroupClause
       }
     }
 
-    list($qillop, $qillVal) = self::buildQillForFieldValue('CRM_Core_DAO_EntityTag', "tag_id", $value, $op, ['onlyActive' => FALSE]);
+    [$qillop, $qillVal] = self::buildQillForFieldValue('CRM_Core_DAO_EntityTag', "tag_id", $value, $op, ['onlyActive' => FALSE]);
 
     // implode array, then remove all spaces
     $value = str_replace(' ', '', implode(',', (array) $value));
@@ -3383,7 +3383,7 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   public function notes(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     $noteOptionValues = $this->getWhereValues('note_option', $grouping);
     $noteOption = CRM_Utils_Array::value('2', $noteOptionValues, '6');
@@ -3417,7 +3417,7 @@ WHERE  $smartGroupClause
       $label = $label ? ts('Note: Body and Subject') : ts('Note: Subject Only');
     }
     $this->_where[$grouping][] = "( " . implode(' OR ', $clauses) . " )";
-    list($qillOp, $qillVal) = self::buildQillForFieldValue(NULL, $name, $n, $op);
+    [$qillOp, $qillVal] = self::buildQillForFieldValue(NULL, $name, $n, $op);
     $this->_qill[$grouping][] = ts("%1 %2 %3", [1 => $label, 2 => $qillOp, 3 => $qillVal]);
   }
 
@@ -3457,7 +3457,7 @@ WHERE  $smartGroupClause
    * @param array $values
    */
   public function sortName(&$values) {
-    list($fieldName, $op, $value, $grouping, $wildcard) = $values;
+    [$fieldName, $op, $value, $grouping, $wildcard] = $values;
 
     // handle IS NULL / IS NOT NULL / IS EMPTY / IS NOT EMPTY
     if ($this->nameNullOrEmptyOp($fieldName, $op, $grouping)) {
@@ -3531,10 +3531,10 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   public function greetings(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
     $name .= '_display';
 
-    list($qillop, $qillVal) = CRM_Contact_BAO_Query::buildQillForFieldValue(NULL, $name, $value, $op);
+    [$qillop, $qillVal] = CRM_Contact_BAO_Query::buildQillForFieldValue(NULL, $name, $value, $op);
     $this->_qill[$grouping][] = ts('Greeting %1 %2', [1 => $qillop, 2 => $qillVal]);
     $this->_where[$grouping][] = self::buildClause("contact_a.{$name}", $op, $value, 'String');
   }
@@ -3548,7 +3548,7 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   protected function email(&$values, $isForcePrimaryOnly) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
     $this->_tables['civicrm_email'] = $this->_whereTables['civicrm_email'] = 1;
 
     // CRM-18147: for Contact's GET API, email fieldname got appended with its entity as in {$apiEntiy}_{$name}
@@ -3595,7 +3595,7 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   public function phone_numeric(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
     // Strip non-numeric characters; allow wildcards
     $number = preg_replace('/[^\d%]/', '', $value);
     if ($number) {
@@ -3617,7 +3617,7 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   public function phone_option_group($values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
     $option = ($name == 'phone_phone_type_id' ? 'phone_type_id' : 'location_type_id');
     $options = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Phone', $option);
     $optionName = $options[$value];
@@ -3634,7 +3634,7 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   public function street_address(&$values) {
-    list($name, $op, $value, $grouping) = $values;
+    [$name, $op, $value, $grouping] = $values;
 
     if (!$op) {
       $op = 'LIKE';
@@ -3667,7 +3667,7 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   public function street_number(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     if (!$op) {
       $op = '=';
@@ -3698,7 +3698,7 @@ WHERE  $smartGroupClause
    * @param array $values
    */
   public function sortByCharacter(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     $name = trim($value);
     $cond = " contact_a.sort_name LIKE '" . CRM_Core_DAO::escapeWildCardString($name) . "%'";
@@ -3739,7 +3739,7 @@ WHERE  $smartGroupClause
       return;
     }
 
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     // Handle numeric postal code range searches properly by casting the column as numeric
     if (is_numeric($value)) {
@@ -3783,7 +3783,7 @@ WHERE  $smartGroupClause
    * @return string
    */
   public function locationType(&$values, $status = NULL) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     if (is_array($value)) {
       $this->_where[$grouping][] = 'civicrm_address.location_type_id IN (' . implode(',', $value) . ')';
@@ -3815,7 +3815,7 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   public function country(&$values, $fromStateProvince = TRUE) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     if (!$fromStateProvince) {
       $stateValues = $this->getWhereValues('state_province', $grouping);
@@ -3832,7 +3832,7 @@ WHERE  $smartGroupClause
       $this->_whereTables['civicrm_address'] = 1;
 
       $countryClause = self::buildClause('civicrm_address.country_id', $op, $value, 'Positive');
-      list($qillop, $qillVal) = CRM_Contact_BAO_Query::buildQillForFieldValue(NULL, 'country_id', $value, $op);
+      [$qillop, $qillVal] = CRM_Contact_BAO_Query::buildQillForFieldValue(NULL, 'country_id', $value, $op);
       $countryQill = ts("%1 %2 %3", [1 => 'Country', 2 => $qillop, 3 => $qillVal]);
 
       if (!$fromStateProvince) {
@@ -3863,7 +3863,7 @@ WHERE  $smartGroupClause
    * @return string
    */
   public function county(&$values, $status = NULL) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     if (!is_array($value)) {
       // force the county to be an array
@@ -3933,14 +3933,14 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   public function stateProvince(&$values, $status = NULL) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     $stateClause = self::buildClause('civicrm_address.state_province_id', $op, $value, 'Positive');
     $this->_tables['civicrm_address'] = 1;
     $this->_whereTables['civicrm_address'] = 1;
 
     $countryValues = $this->getWhereValues('country', $grouping);
-    list($countryClause, $countryQill) = $this->country($countryValues, TRUE);
+    [$countryClause, $countryQill] = $this->country($countryValues, TRUE);
     if ($countryClause) {
       $clause = "( $stateClause AND $countryClause )";
     }
@@ -3949,7 +3949,7 @@ WHERE  $smartGroupClause
     }
 
     $this->_where[$grouping][] = $clause;
-    list($qillop, $qillVal) = self::buildQillForFieldValue('CRM_Core_DAO_Address', "state_province_id", $value, $op);
+    [$qillop, $qillVal] = self::buildQillForFieldValue('CRM_Core_DAO_Address', "state_province_id", $value, $op);
     if (!$status) {
       $this->_qill[$grouping][] = ts("State/Province %1 %2 %3", [1 => $qillop, 2 => $qillVal, 3 => $countryQill]);
     }
@@ -3964,7 +3964,7 @@ WHERE  $smartGroupClause
    * @param array $values
    */
   public function changeLog(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     $targetName = $this->getWhereValues('changed_by', $grouping);
     if (!$targetName) {
@@ -3978,7 +3978,7 @@ WHERE  $smartGroupClause
     $this->_tables['civicrm_log'] = $this->_whereTables['civicrm_log'] = 1;
     $fieldTitle = ts('Altered By');
 
-    list($qillop, $qillVal) = self::buildQillForFieldValue(NULL, 'changed_by', $name, 'LIKE');
+    [$qillop, $qillVal] = self::buildQillForFieldValue(NULL, 'changed_by', $name, 'LIKE');
     $this->_qill[$grouping][] = ts("%1 %2 '%3'", [
       1 => $fieldTitle,
       2 => $qillop,
@@ -4017,7 +4017,7 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   public function demographics(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     if (($name == 'age_low') || ($name == 'age_high')) {
       $this->ageRangeQueryBuilder($values,
@@ -4044,7 +4044,7 @@ WHERE  $smartGroupClause
    * @param $values
    */
   public function privacy(&$values) {
-    list($name, $op, $value, $grouping) = $values;
+    [$name, $op, $value, $grouping] = $values;
     if (is_array($value)) {
       if (in_array(key($value), CRM_Core_DAO::acceptedSQLOperators(), TRUE)) {
         $op = key($value);
@@ -4063,7 +4063,7 @@ WHERE  $smartGroupClause
    * @param $values
    */
   public function privacyOptions($values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     if (empty($value) || !is_array($value)) {
       return;
@@ -4106,7 +4106,7 @@ WHERE  $smartGroupClause
    * @throws \CRM_Core_Exception
    */
   public function preferredCommunication(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     if (!is_array($value)) {
       $value = str_replace(['(', ')'], '', explode(",", $value));
@@ -4115,7 +4115,7 @@ WHERE  $smartGroupClause
       $op = key($value);
       $value = $value[$op];
     }
-    list($qillop, $qillVal) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contact_DAO_Contact', $name, $value, $op);
+    [$qillop, $qillVal] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contact_DAO_Contact', $name, $value, $op);
 
     if (self::caseImportant($op)) {
       $value = implode("[[:cntrl:]]|[[:cntrl:]]", (array) $value);
@@ -4133,7 +4133,7 @@ WHERE  $smartGroupClause
    * @param array $values
    */
   public function relationship(&$values) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
     if ($this->_relationshipValuesAdded) {
       return;
     }
@@ -4545,7 +4545,7 @@ civicrm_relationship.start_date > {$today}
    */
   public static function getQuery($params = NULL, $returnProperties = NULL, $count = FALSE) {
     $query = new CRM_Contact_BAO_Query($params, $returnProperties);
-    list($select, $from, $where, $having) = $query->query();
+    [$select, $from, $where, $having] = $query->query();
     $groupBy = ($query->_useGroupBy) ? 'GROUP BY contact_a.id' : '';
 
     $query = "$select $from $where $groupBy $having";
@@ -4617,7 +4617,7 @@ civicrm_relationship.start_date > {$today}
     // note : this modifies _fromClause and _simpleFromClause
     $query->includePseudoFieldsJoin($sort);
 
-    list($select, $from, $where, $having) = $query->query($count);
+    [$select, $from, $where, $having] = $query->query($count);
 
     if (!empty($query->_permissionWhereClause)) {
       if (!empty($query->_permissionFromClause) && !stripos($from, 'aclContactCache')) {
@@ -4720,7 +4720,7 @@ civicrm_relationship.start_date > {$today}
     $customFieldName = self::getCustomFieldName($fieldName);
 
     if (substr($fieldName, -9, 9) == '_relative') {
-      list($from, $to) = CRM_Utils_Date::getFromTo($values, NULL, NULL);
+      [$from, $to] = CRM_Utils_Date::getFromTo($values, NULL, NULL);
     }
     else {
       if ($fieldName == $customFieldName . '_to' && !empty($formValues[$customFieldName . '_from'])) {
@@ -4732,7 +4732,7 @@ civicrm_relationship.start_date > {$today}
       $to = $formValues[$customFieldName . '_to'] ?? NULL;
 
       if (self::isCustomDateField($customFieldName)) {
-        list($from, $to) = CRM_Utils_Date::getFromTo(NULL, $from, $to);
+        [$from, $to] = CRM_Utils_Date::getFromTo(NULL, $from, $to);
       }
     }
 
@@ -4843,7 +4843,7 @@ civicrm_relationship.start_date > {$today}
       $groupBy = array_map('trim', (array) $groupBy);
       $aggregateFunctions = '/(ROUND|AVG|COUNT|GROUP_CONCAT|SUM|MAX|MIN|IF)[[:blank:]]*\(/i';
       foreach ($selectClauses as $key => &$val) {
-        list($selectColumn, $alias) = array_pad(preg_split('/ as /i', $val), 2, NULL);
+        [$selectColumn, $alias] = array_pad(preg_split('/ as /i', $val), 2, NULL);
         // append ANY_VALUE() keyword
         if (!in_array($selectColumn, $groupBy) && preg_match($aggregateFunctions, trim($selectColumn)) !== 1) {
           $val = ($aggregateFunction == 'GROUP_CONCAT') ?
@@ -4906,7 +4906,7 @@ civicrm_relationship.start_date > {$today}
           }
         }
         else {
-          list($selectColumn, $alias) = array_pad($aliasArray, 2, NULL);
+          [$selectColumn, $alias] = array_pad($aliasArray, 2, NULL);
           $dateRegex = '/^(DATE_FORMAT|DATE_ADD|CASE)/i';
           $tableName = current(explode('.', $selectColumn));
           $primaryKey = "{$tableName}.id";
@@ -5020,7 +5020,7 @@ civicrm_relationship.start_date > {$today}
     CRM_Utils_Type::validateAll($cids, 'Positive');
     $this->_includeContactIds = $includeContactIds;
     $onlyDeleted = in_array(['deleted_contacts', '=', '1', '0', '0'], $this->_params);
-    list($select, $from, $where) = $this->query(FALSE, FALSE, FALSE, $onlyDeleted);
+    [$select, $from, $where] = $this->query(FALSE, FALSE, FALSE, $onlyDeleted);
     $select .= sprintf(", (%s) AS _wgt", $this->createSqlCase('contact_a.id', $cids));
     $where .= sprintf(' AND contact_a.id IN (%s)', implode(',', $cids));
     $order = 'ORDER BY _wgt';
@@ -5132,7 +5132,7 @@ civicrm_relationship.start_date > {$today}
    * @throws \CRM_Core_Exception
    */
   public function summaryContribution($context = NULL) {
-    list($innerselect, $from, $where, $having) = $this->query(TRUE);
+    [$innerselect, $from, $where, $having] = $this->query(TRUE);
     if (!empty($this->_permissionFromClause) && !stripos($from, 'aclContactCache')) {
       $from .= " $this->_permissionFromClause";
     }
@@ -5297,7 +5297,7 @@ civicrm_relationship.start_date > {$today}
     $highDBFieldName = NULL
   ) {
     // @todo - remove dateFormat - pretty sure it's never passed in...
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
     if ($name !== $fieldName && $name !== "{$fieldName}_low" && $name !== "{$fieldName}_high") {
       CRM_Core_Error::deprecatedFunctionWarning('Date query builder called unexpectedly');
       return;
@@ -5436,7 +5436,7 @@ civicrm_relationship.start_date > {$today}
     $dbFieldName, $fieldTitle,
     $options = NULL
   ) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     if ($name == "{$fieldName}_low" ||
       $name == "{$fieldName}_high"
@@ -5518,7 +5518,7 @@ civicrm_relationship.start_date > {$today}
     $dbFieldName, $fieldTitle,
     $options = NULL
   ) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     $asofDateValues = $this->getWhereValues("{$fieldName}_asof_date", $grouping);
     // will be treated as current day
@@ -5807,7 +5807,7 @@ AND   displayRelType.is_active = 1
 ";
       }
       else {
-        list($relType, $dirOne, $dirTwo) = explode('_', $this->_displayRelationshipType);
+        [$relType, $dirOne, $dirTwo] = explode('_', $this->_displayRelationshipType);
         if ($dirOne == 'a') {
           $relationshipTypeLabel = $rTypes[$relType]['label_a_b'];
           $qcache['from'] .= "
@@ -5928,7 +5928,7 @@ AND   displayRelType.is_active = 1
       'addressee',
     ];
 
-    list($tableName, $fieldName) = explode('.', $field['where'], 2);
+    [$tableName, $fieldName] = explode('.', $field['where'], 2);
     if ($tableName == 'civicrm_contact') {
       $wc = "contact_a.$fieldName";
     }
@@ -5953,7 +5953,7 @@ AND   displayRelType.is_active = 1
       $field['name'] = $name;
     }
 
-    list($qillop, $qillVal) = CRM_Contact_BAO_Query::buildQillForFieldValue($daoName, $field['name'], $value, $op);
+    [$qillop, $qillVal] = CRM_Contact_BAO_Query::buildQillForFieldValue($daoName, $field['name'], $value, $op);
     $this->_qill[$grouping][] = ts("%1 %2 %3", [1 => $label, 2 => $qillop, 3 => $qillVal]);
     $this->_where[$grouping][] = self::buildClause($wc, $op, $value, $dataType);
   }
@@ -6286,7 +6286,7 @@ AND   displayRelType.is_active = 1
    * @return string
    */
   public static function getQillValue($daoName, string $name, $value, $op, string $label) {
-    list($op, $value) = self::buildQillForFieldValue($daoName, $name, $value, $op);
+    [$op, $value] = self::buildQillForFieldValue($daoName, $name, $value, $op);
     return ts('%1 %2 %3', [1 => $label, 2 => $op, 3 => $value]);
   }
 
@@ -6535,7 +6535,7 @@ AND   displayRelType.is_active = 1
    */
   public function setQillAndWhere($name, $op, $value, $grouping, $field) {
     $this->_where[$grouping][] = self::buildClause("contact_a.{$name}", $op, $value);
-    list($qillop, $qillVal) = CRM_Contact_BAO_Query::buildQillForFieldValue(NULL, $name, $value, $op);
+    [$qillop, $qillVal] = CRM_Contact_BAO_Query::buildQillForFieldValue(NULL, $name, $value, $op);
     $this->_qill[$grouping][] = ts("%1 %2 %3", [
       1 => $field['title'],
       2 => $qillop,
@@ -6877,7 +6877,7 @@ AND   displayRelType.is_active = 1
     //CRM-15967
     $this->includePseudoFieldsJoin($sort);
 
-    list($select, $from, $where, $having) = $this->query($count, $sortByChar, $groupContacts, $onlyDeleted);
+    [$select, $from, $where, $having] = $this->query($count, $sortByChar, $groupContacts, $onlyDeleted);
 
     if ($additionalWhereClause) {
       $where = $where . ' AND ' . $additionalWhereClause;
@@ -7229,7 +7229,7 @@ AND   displayRelType.is_active = 1
    * @return string
    */
   public function getQillForField($name, $value, $op, $fieldSpec = [], $labelOverride = NULL): string {
-    list($qillop, $qillVal) = CRM_Contact_BAO_Query::buildQillForFieldValue($fieldSpec['bao'] ?? NULL, $name, $value, $op);
+    [$qillop, $qillVal] = CRM_Contact_BAO_Query::buildQillForFieldValue($fieldSpec['bao'] ?? NULL, $name, $value, $op);
     return (string) ts("%1 %2 %3", [
       1 => $labelOverride ?? $fieldSpec['title'],
       2 => $qillop,
diff --git a/civicrm/CRM/Contact/BAO/Relationship.php b/civicrm/CRM/Contact/BAO/Relationship.php
index 46e1794613a9865c213028866b83aa62a866b82b..92bdbddf198707adbeaa8efef31e65b5532c13e5 100644
--- a/civicrm/CRM/Contact/BAO/Relationship.php
+++ b/civicrm/CRM/Contact/BAO/Relationship.php
@@ -245,7 +245,7 @@ class CRM_Contact_BAO_Relationship extends CRM_Contact_DAO_Relationship {
     // explode the string with _ to get the relationship type id
     // and to know which contact has to be inserted in
     // contact_id_a and which one in contact_id_b
-    list($relationshipTypeID) = explode('_', $relationshipTypes);
+    [$relationshipTypeID] = explode('_', $relationshipTypes);
 
     $relationship = new CRM_Contact_BAO_Relationship();
     if (!empty($params['id'])) {
@@ -833,7 +833,7 @@ class CRM_Contact_BAO_Relationship extends CRM_Contact_DAO_Relationship {
    */
   public static function checkDuplicateRelationship($params, $id, $contactId = 0, $relationshipId = 0) {
     $relationshipTypeId = $params['relationship_type_id'] ?? NULL;
-    list($type) = explode('_', $relationshipTypeId);
+    [$type] = explode('_', $relationshipTypeId);
 
     $queryString = "
 SELECT id
@@ -1203,10 +1203,10 @@ LEFT JOIN  civicrm_country ON (civicrm_address.country_id = civicrm_country.id)
       return $values;
     }
 
-    list($select1, $from1, $where1) = self::makeURLClause($contactId, $status, $numRelationship,
+    [$select1, $from1, $where1] = self::makeURLClause($contactId, $status, $numRelationship,
       $count, $relationshipId, 'a_b', $params
     );
-    list($select2, $from2, $where2) = self::makeURLClause($contactId, $status, $numRelationship,
+    [$select2, $from2, $where2] = self::makeURLClause($contactId, $status, $numRelationship,
       $count, $relationshipId, 'b_a', $params
     );
 
@@ -1551,7 +1551,7 @@ LEFT JOIN  civicrm_country ON (civicrm_address.country_id = civicrm_country.id)
         $relTypeIds = [];
         if ($action & CRM_Core_Action::DELETE) {
           // @todo don't return relTypeId here - but it seems to be used later in a cryptic way (hint cryptic is not a complement).
-          list($relTypeId, $isDeletable) = self::isInheritedMembershipInvalidated($membershipValues, $values, $cid);
+          [$relTypeId, $isDeletable] = self::isInheritedMembershipInvalidated($membershipValues, $values, $cid);
           if ($isDeletable) {
             CRM_Member_BAO_Membership::deleteRelatedMemberships($membershipValues['owner_membership_id'], $membershipValues['contact_id']);
           }
diff --git a/civicrm/CRM/Contact/BAO/SearchCustom.php b/civicrm/CRM/Contact/BAO/SearchCustom.php
index 8d913e4eaca21e09c37c03012bbef4924e5bfeea..f945abb91a63bc40f2ab70b077fb1b4c15599b8e 100644
--- a/civicrm/CRM/Contact/BAO/SearchCustom.php
+++ b/civicrm/CRM/Contact/BAO/SearchCustom.php
@@ -90,7 +90,7 @@ class CRM_Contact_BAO_SearchCustom {
    * @throws CRM_Core_Exception
    */
   public static function customClass($csID, $ssID) {
-    list($customSearchID, $customSearchClass, $formValues) = self::details($csID, $ssID);
+    [$customSearchID, $customSearchClass, $formValues] = self::details($csID, $ssID);
 
     if (!$customSearchID) {
       throw new CRM_Core_Exception('Could not resolve custom search ID');
@@ -124,7 +124,7 @@ class CRM_Contact_BAO_SearchCustom {
     $values = explode("\n", $args);
     $formValues = [];
     foreach ($values as $value) {
-      list($n, $v) = CRM_Utils_System::explode('=', $value, 2);
+      [$n, $v] = CRM_Utils_System::explode('=', $value, 2);
       if (!empty($v)) {
         $formValues[$n] = $v;
       }
diff --git a/civicrm/CRM/Contact/DAO/ACLContactCache.php b/civicrm/CRM/Contact/DAO/ACLContactCache.php
index f477d8fe358afd37283d6b6acf1b01890c9e8e2a..8a8b0717cd829e946737e9763b5bb8b8bc306804 100644
--- a/civicrm/CRM/Contact/DAO/ACLContactCache.php
+++ b/civicrm/CRM/Contact/DAO/ACLContactCache.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/ACLContactCache.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b9913f6181f2b09c71b99f8c41d65c1b)
+ * (GenCodeChecksum:eb8442b2c3e45f1312675606b362b18c)
  */
 
 /**
diff --git a/civicrm/CRM/Contact/DAO/Contact.php b/civicrm/CRM/Contact/DAO/Contact.php
index 790dce543b51c191fd61500adbb2af06174cba31..ff31535268931a471e83371f9a5739a0f5c9a5af 100644
--- a/civicrm/CRM/Contact/DAO/Contact.php
+++ b/civicrm/CRM/Contact/DAO/Contact.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/Contact.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:6c4b31481898fef1b087265d096c65f6)
+ * (GenCodeChecksum:8cdd2fa476983d8770b53cc7665586cf)
  */
 
 /**
@@ -209,11 +209,12 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO {
   public $preferred_language;
 
   /**
-   * What is the preferred mode of sending an email.
+   * Deprecated setting for text vs html mailings
    *
    * @var string|null
    *   (SQL type: varchar(8))
    *   Note that values will be retrieved from the database as a string.
+   * @deprecated
    */
   public $preferred_mail_format;
 
@@ -473,6 +474,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO {
    * @var string|null
    *   (SQL type: varchar(255))
    *   Note that values will be retrieved from the database as a string.
+   * @deprecated
    */
   public $user_unique_id;
 
@@ -602,6 +604,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO {
             'table' => 'civicrm_contact_type',
             'keyColumn' => 'name',
             'labelColumn' => 'label',
+            'iconColumn' => 'icon',
             'condition' => 'parent_id IS NULL',
           ],
           'readonly' => TRUE,
@@ -630,6 +633,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO {
             'table' => 'civicrm_contact_type',
             'keyColumn' => 'name',
             'labelColumn' => 'label',
+            'iconColumn' => 'icon',
             'condition' => 'parent_id IS NOT NULL',
           ],
           'add' => '1.5',
@@ -957,7 +961,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO {
           'name' => 'preferred_mail_format',
           'type' => CRM_Utils_Type::T_STRING,
           'title' => ts('Preferred Mail Format'),
-          'description' => ts('What is the preferred mode of sending an email.'),
+          'description' => ts('Deprecated setting for text vs html mailings'),
           'maxlength' => 8,
           'size' => CRM_Utils_Type::EIGHT,
           'import' => FALSE,
@@ -1635,6 +1639,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO {
           'html' => [
             'label' => ts("Created Date"),
           ],
+          'readonly' => TRUE,
           'add' => '4.3',
         ],
         'modified_date' => [
diff --git a/civicrm/CRM/Contact/DAO/ContactType.php b/civicrm/CRM/Contact/DAO/ContactType.php
index 07b52112416df37fa18cda2845d83e4e93be08cb..6d795d0493f058fc61e7938f73b259e41ddd2a14 100644
--- a/civicrm/CRM/Contact/DAO/ContactType.php
+++ b/civicrm/CRM/Contact/DAO/ContactType.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/ContactType.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c2f6858290ecb933caba200b565c69bd)
+ * (GenCodeChecksum:9858d69cd4bfdc5a3ce45c77eecd1145)
  */
 
 /**
@@ -30,6 +30,17 @@ class CRM_Contact_DAO_ContactType extends CRM_Core_DAO {
    */
   public static $_log = FALSE;
 
+  /**
+   * Paths for accessing this entity in the UI.
+   *
+   * @var string[]
+   */
+  protected static $_paths = [
+    'add' => 'civicrm/admin/options/subtype/edit?action=add&reset=1',
+    'update' => 'civicrm/admin/options/subtype/edit?action=update&id=[id]&reset=1',
+    'delete' => 'civicrm/admin/options/subtype/edit?action=delete&id=[id]&reset=1',
+  ];
+
   /**
    * Contact Type ID
    *
diff --git a/civicrm/CRM/Contact/DAO/DashboardContact.php b/civicrm/CRM/Contact/DAO/DashboardContact.php
index b8881db880a7c021f2acafe1025cf6b7b0792016..d4db708aa162b2c642047f4fc4943b18cabbc20b 100644
--- a/civicrm/CRM/Contact/DAO/DashboardContact.php
+++ b/civicrm/CRM/Contact/DAO/DashboardContact.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/DashboardContact.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:fd3f7ea02b93c0dd3ecd46fb757bc2a3)
+ * (GenCodeChecksum:bc5a3583e578fe1763a5d84f53d9eeb2)
  */
 
 /**
diff --git a/civicrm/CRM/Contact/DAO/Group.php b/civicrm/CRM/Contact/DAO/Group.php
index 2f203b3f8984052a4d5aba54677f788e7ee334cc..52962b3c987dc041068abee8e2dde9122020dd88 100644
--- a/civicrm/CRM/Contact/DAO/Group.php
+++ b/civicrm/CRM/Contact/DAO/Group.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/Group.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:8b5d08ec2b844a6b9167fa80a590a58c)
+ * (GenCodeChecksum:dce2e006de620411cc951a09c3bb2af0)
  */
 
 /**
diff --git a/civicrm/CRM/Contact/DAO/GroupContact.php b/civicrm/CRM/Contact/DAO/GroupContact.php
index 316309dc7f030b61519066afbec4abdafc6a04e1..babf7493028362334f9d9b8e452f2bd18e71d1c5 100644
--- a/civicrm/CRM/Contact/DAO/GroupContact.php
+++ b/civicrm/CRM/Contact/DAO/GroupContact.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/GroupContact.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f7c8513020809cc974eec784b983a75d)
+ * (GenCodeChecksum:d4b46670649effbeca66bba75801f34c)
  */
 
 /**
diff --git a/civicrm/CRM/Contact/DAO/GroupContactCache.php b/civicrm/CRM/Contact/DAO/GroupContactCache.php
index f07f6f1d342c48236827f7d5c9f612ce9d09a05b..b1c12af9b64ea2b1f6a8063bdffb152ec102c7b9 100644
--- a/civicrm/CRM/Contact/DAO/GroupContactCache.php
+++ b/civicrm/CRM/Contact/DAO/GroupContactCache.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/GroupContactCache.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:06473218afb38f81fefca8e3e1a351e1)
+ * (GenCodeChecksum:abfe1f6d7cf6304a37d55830b42f7568)
  */
 
 /**
diff --git a/civicrm/CRM/Contact/DAO/GroupNesting.php b/civicrm/CRM/Contact/DAO/GroupNesting.php
index bdb20df7e648e4009f46c489ff37ad94151126de..91aac95120e08f0047a524086890bffe47d0ed4a 100644
--- a/civicrm/CRM/Contact/DAO/GroupNesting.php
+++ b/civicrm/CRM/Contact/DAO/GroupNesting.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/GroupNesting.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f93c2699304caa24bcb30d71891621ad)
+ * (GenCodeChecksum:249c9ae9496b3b49a431b6d1ebdc782a)
  */
 
 /**
diff --git a/civicrm/CRM/Contact/DAO/GroupOrganization.php b/civicrm/CRM/Contact/DAO/GroupOrganization.php
index 9415570b03b757690d233171e8e7ebfb35d096bc..af54612700ed7d37355fa99767779290c67f57cf 100644
--- a/civicrm/CRM/Contact/DAO/GroupOrganization.php
+++ b/civicrm/CRM/Contact/DAO/GroupOrganization.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/GroupOrganization.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0058d88ce8ce0b5a017cfd91b1adc430)
+ * (GenCodeChecksum:eeb960d8967f2b21967fd64d2e4e52ab)
  */
 
 /**
diff --git a/civicrm/CRM/Contact/DAO/Relationship.php b/civicrm/CRM/Contact/DAO/Relationship.php
index 5fa79cb93bdd62b34503c5e9b96accfecc0519c2..4804d026a74e5ceb123f2eba1aaad21de963dcec 100644
--- a/civicrm/CRM/Contact/DAO/Relationship.php
+++ b/civicrm/CRM/Contact/DAO/Relationship.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/Relationship.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:3c7051137838e12caf53b96b8c369f2b)
+ * (GenCodeChecksum:337542bdfe9cbc0452666705b8078e8b)
  */
 
 /**
diff --git a/civicrm/CRM/Contact/DAO/RelationshipCache.php b/civicrm/CRM/Contact/DAO/RelationshipCache.php
index 36fbb031720d8e0101987fd32c9b64f1a5660a3d..c1ddd69b816a920040c1c87a90e83e2483d09b05 100644
--- a/civicrm/CRM/Contact/DAO/RelationshipCache.php
+++ b/civicrm/CRM/Contact/DAO/RelationshipCache.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/RelationshipCache.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:637d262d0fe18e30673e5d1b1317e4aa)
+ * (GenCodeChecksum:3f113a0869fa2a649d0e6044a8e59572)
  */
 
 /**
@@ -305,6 +305,7 @@ class CRM_Contact_DAO_RelationshipCache extends CRM_Core_DAO {
           'bao' => 'CRM_Contact_BAO_RelationshipCache',
           'localizable' => 0,
           'html' => [
+            'type' => 'Select',
             'label' => ts("Relationship to contact"),
           ],
           'pseudoconstant' => [
@@ -345,6 +346,7 @@ class CRM_Contact_DAO_RelationshipCache extends CRM_Core_DAO {
           'bao' => 'CRM_Contact_BAO_RelationshipCache',
           'localizable' => 0,
           'html' => [
+            'type' => 'Select',
             'label' => ts("Relationship from contact"),
           ],
           'pseudoconstant' => [
@@ -419,6 +421,7 @@ class CRM_Contact_DAO_RelationshipCache extends CRM_Core_DAO {
           'FKClassName' => 'CRM_Case_DAO_Case',
           'component' => 'CiviCase',
           'html' => [
+            'type' => 'EntityRef',
             'label' => ts("Case"),
           ],
           'readonly' => TRUE,
diff --git a/civicrm/CRM/Contact/DAO/RelationshipType.php b/civicrm/CRM/Contact/DAO/RelationshipType.php
index 0104b22e2ecc13754ddfc31be715762e3bf2e3d8..c5ce8a75cf24876aa56ebbd89aa5d818f4b63098 100644
--- a/civicrm/CRM/Contact/DAO/RelationshipType.php
+++ b/civicrm/CRM/Contact/DAO/RelationshipType.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/RelationshipType.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f420b1007ffa4e74cd3e23e34133f170)
+ * (GenCodeChecksum:88fd0251d3164ad9917e6ca7eef858fe)
  */
 
 /**
diff --git a/civicrm/CRM/Contact/DAO/SavedSearch.php b/civicrm/CRM/Contact/DAO/SavedSearch.php
index 2a7ff17ee31754861cec0573170520b00336f8f1..00da28b0454558b6fa2c7117c0a5c77f40e11e33 100644
--- a/civicrm/CRM/Contact/DAO/SavedSearch.php
+++ b/civicrm/CRM/Contact/DAO/SavedSearch.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/SavedSearch.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:463e44ca73e5b034502fcc1605f5a9c2)
+ * (GenCodeChecksum:b3d3b267309f4b11cd3960f4df2bca20)
  */
 
 /**
diff --git a/civicrm/CRM/Contact/DAO/SubscriptionHistory.php b/civicrm/CRM/Contact/DAO/SubscriptionHistory.php
index 712ff231815a79f39f00f879a665e5d12f595be7..c1186708f32473fc9a43ccad41431f23205244fb 100644
--- a/civicrm/CRM/Contact/DAO/SubscriptionHistory.php
+++ b/civicrm/CRM/Contact/DAO/SubscriptionHistory.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contact/SubscriptionHistory.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:fd8cbc2ef621cc092f3f91c1f0f749d4)
+ * (GenCodeChecksum:352df636d72c00072ade0a93fe8ce181)
  */
 
 /**
diff --git a/civicrm/CRM/Contact/Form/Contact.php b/civicrm/CRM/Contact/Form/Contact.php
index 1fac598d16b00d60b50590c738359893493a355b..e714c484a31716e9d6dd52fddb4f3e581d580e78 100644
--- a/civicrm/CRM/Contact/Form/Contact.php
+++ b/civicrm/CRM/Contact/Form/Contact.php
@@ -126,19 +126,6 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
     return 'create';
   }
 
-  /**
-   * Get any smarty elements that may not be present in the form.
-   *
-   * To make life simpler for smarty we ensure they are set to null
-   * rather than unset. This is done at the last minute when $this
-   * is converted to an array to be assigned to the form.
-   *
-   * @return array
-   */
-  public function getOptionalSmartyElements(): array {
-    return ['group'];
-  }
-
   /**
    * Build all the data structures needed to build the form.
    */
@@ -957,6 +944,8 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form {
     if (array_key_exists('CommunicationPreferences', $this->_editOptions)) {
       // this is a chekbox, so mark false if we dont get a POST value
       $params['is_opt_out'] = CRM_Utils_Array::value('is_opt_out', $params, FALSE);
+
+      CRM_Utils_Array::formatArrayKeys($params['preferred_communication_method']);
     }
 
     // process shared contact address.
diff --git a/civicrm/CRM/Contact/Form/DedupeRules.php b/civicrm/CRM/Contact/Form/DedupeRules.php
index c63935739c3afa66848cd0a349df555bfed9d4c0..7c2040631f325538415ed5d8b9fb457a829aa1e5 100644
--- a/civicrm/CRM/Contact/Form/DedupeRules.php
+++ b/civicrm/CRM/Contact/Form/DedupeRules.php
@@ -213,24 +213,14 @@ UPDATE civicrm_dedupe_rule_group
       CRM_Core_DAO::executeQuery($query, $queryParams);
     }
 
-    $rgDao = new CRM_Dedupe_DAO_DedupeRuleGroup();
-    if ($this->_action & CRM_Core_Action::UPDATE) {
-      $rgDao->id = $this->_rgid;
-    }
-
-    $rgDao->title = $values['title'];
-    $rgDao->is_reserved = CRM_Utils_Array::value('is_reserved', $values, FALSE);
-    $rgDao->used = $values['used'];
-    $rgDao->contact_type = $this->_contactType;
-    $rgDao->threshold = $values['threshold'];
-    $rgDao->save();
-
-    // make sure name is set only during insert
-    if ($this->_action & CRM_Core_Action::ADD) {
-      // generate name based on title
-      $rgDao->name = CRM_Utils_String::titleToVar($values['title']) . "_{$rgDao->id}";
-      $rgDao->save();
-    }
+    $rgDao = CRM_Dedupe_BAO_DedupeRuleGroup::writeRecord([
+      'id' => $this->_rgid,
+      'contact_type' => $this->_contactType,
+      'title' => $values['title'],
+      'is_reserved' => $values['is_reserved'] ?? FALSE,
+      'used' => $values['used'],
+      'threshold' => $values['threshold'],
+    ]);
 
     // lets skip updating of fields for reserved dedupe group
     if (!empty($this->_defaults['is_reserved'])) {
diff --git a/civicrm/CRM/Contact/Form/Domain.php b/civicrm/CRM/Contact/Form/Domain.php
index 75065706800da0d51a54a8bd548ec01c1b8448ce..fd938776f060ea1f6b1aff0f71f556d1c80c8afd 100644
--- a/civicrm/CRM/Contact/Form/Domain.php
+++ b/civicrm/CRM/Contact/Form/Domain.php
@@ -48,25 +48,17 @@ class CRM_Contact_Form_Domain extends CRM_Core_Form {
    */
   protected $_locationDefaults = [];
 
-  /**
-   * How many locationBlocks should we display?
-   *
-   * @var int
-   * @const
-   */
-  const LOCATION_BLOCKS = 1;
-
   /**
    * Explicitly declare the entity api name.
    */
-  public function getDefaultEntity() {
+  public function getDefaultEntity(): string {
     return 'Domain';
   }
 
   /**
    * Explicitly declare the form context.
    */
-  public function getDefaultContext() {
+  public function getDefaultContext(): string {
     return 'create';
   }
 
@@ -121,13 +113,17 @@ class CRM_Contact_Form_Domain extends CRM_Core_Form {
 
   /**
    * Build the form object.
+   *
+   * @throws \CiviCRM_API3_Exception
    */
-  public function buildQuickForm() {
+  public function buildQuickForm(): void {
     $this->addField('name', ['label' => ts('Organization Name')], TRUE);
     $this->addField('description', ['label' => ts('Description'), 'size' => 30]);
 
     //build location blocks.
-    CRM_Contact_Form_Location::buildQuickForm($this);
+    CRM_Contact_Form_Edit_Address::buildQuickForm($this, 1);
+    CRM_Contact_Form_Edit_Email::buildQuickForm($this, 1);
+    CRM_Contact_Form_Edit_Phone::buildQuickForm($this, 1);
 
     $this->addButtons([
       [
diff --git a/civicrm/CRM/Contact/Form/Edit/Email.php b/civicrm/CRM/Contact/Form/Edit/Email.php
index 0808b5b0555ccb214da8dc69181698f1f069585a..db08baa6b79ea891fa522b5f8ee284b01b5398e5 100644
--- a/civicrm/CRM/Contact/Form/Edit/Email.php
+++ b/civicrm/CRM/Contact/Form/Edit/Email.php
@@ -33,6 +33,7 @@ class CRM_Contact_Form_Edit_Email {
   public static function buildQuickForm(&$form, $blockCount = NULL, $blockEdit = FALSE) {
     // passing this via the session is AWFUL. we need to fix this
     if (!$blockCount) {
+      CRM_Core_Error::deprecatedWarning('pass in blockCount');
       $blockId = ($form->get('Email_Block_Count')) ? $form->get('Email_Block_Count') : 1;
     }
     else {
@@ -83,21 +84,6 @@ class CRM_Contact_Form_Edit_Email {
       }
 
       $form->addElement('radio', "email[$blockId][is_primary]", '', '', '1', $js);
-      // Only display the signature fields if this contact has a CMS account
-      // because they can only send email if they have access to the CRM
-      $isAddSignatureFields = $form instanceof \CRM_Contact_Form_Contact && !empty($form->_contactId);
-      $form->assign('isAddSignatureFields', $isAddSignatureFields);
-      if ($isAddSignatureFields) {
-        $ufID = CRM_Core_BAO_UFMatch::getUFId($form->_contactId);
-        if ($ufID) {
-          $form->add('textarea', "email[$blockId][signature_text]", ts('Signature (Text)'),
-            ['rows' => 2, 'cols' => 40]
-          );
-          $form->add('wysiwyg', "email[$blockId][signature_html]", ts('Signature (HTML)'),
-            ['rows' => 2, 'cols' => 40]
-          );
-        }
-      }
     }
   }
 
diff --git a/civicrm/CRM/Contact/Form/Location.php b/civicrm/CRM/Contact/Form/Location.php
index 519593c08fc564795afa446153f94c783d786627..222cd29f9ace08fee3990b18f037b5cb700372f8 100644
--- a/civicrm/CRM/Contact/Form/Location.php
+++ b/civicrm/CRM/Contact/Form/Location.php
@@ -85,10 +85,33 @@ class CRM_Contact_Form_Location {
           $generateAjaxRequest++;
           $ajaxRequestBlocks[$blockName][$instance] = TRUE;
         }
+        switch ($blockName) {
+          case 'Email':
+            // setDefaults uses this to tell which instance
+            $form->set('Email_Block_Count', $instance);
+            CRM_Contact_Form_Edit_Email::buildQuickForm($form, $instance);
+            // Only display the signature fields if this contact has a CMS account
+            // because they can only send email if they have access to the CRM
+            $ufID = $form->_contactId && CRM_Core_BAO_UFMatch::getUFId($form->_contactId);
+            $form->assign('isAddSignatureFields', (bool) $ufID);
+            if ($ufID) {
+              $form->add('textarea', "email[$instance][signature_text]", ts('Signature (Text)'),
+                ['rows' => 2, 'cols' => 40]
+              );
+              $form->add('wysiwyg', "email[$instance][signature_html]", ts('Signature (HTML)'),
+                ['rows' => 2, 'cols' => 40]
+              );
+            }
+            break;
+
+          default:
+            // @todo This pattern actually adds complexity compared to filling out a switch statement
+            // for the limited number of blocks - as we also have to receive the block count
+            $form->set($blockName . '_Block_Count', $instance);
+            $formName = 'CRM_Contact_Form_Edit_' . $blockName;
+            $formName::buildQuickForm($form);
+        }
 
-        $form->set($blockName . '_Block_Count', $instance);
-        $formName = 'CRM_Contact_Form_Edit_' . $blockName;
-        $formName::buildQuickForm($form);
       }
     }
 
diff --git a/civicrm/CRM/Contact/Form/Relationship.php b/civicrm/CRM/Contact/Form/Relationship.php
index fae9c92d4346fc39e46c551803fd0ca9c9f7ffd3..6203c629e6283aec4750eba112c033e814e5e609 100644
--- a/civicrm/CRM/Contact/Form/Relationship.php
+++ b/civicrm/CRM/Contact/Form/Relationship.php
@@ -523,7 +523,7 @@ class CRM_Contact_Form_Relationship extends CRM_Core_Form {
    * @throws \CRM_Core_Exception
    */
   private function updateAction($params) {
-    list($params, $_) = $this->preparePostProcessParameters($params);
+    [$params, $_] = $this->preparePostProcessParameters($params);
     try {
       civicrm_api3('relationship', 'create', $params);
     }
@@ -544,7 +544,7 @@ class CRM_Contact_Form_Relationship extends CRM_Core_Form {
    * @throws \CRM_Core_Exception
    */
   private function createAction($params) {
-    list($params, $primaryContactLetter) = $this->preparePostProcessParameters($params);
+    [$params, $primaryContactLetter] = $this->preparePostProcessParameters($params);
 
     $outcome = CRM_Contact_BAO_Relationship::createMultiple($params, $primaryContactLetter);
 
@@ -564,7 +564,7 @@ class CRM_Contact_Form_Relationship extends CRM_Core_Form {
    */
   private function preparePostProcessParameters($values) {
     $params = $values;
-    list($relationshipTypeId, $a, $b) = explode('_', $params['relationship_type_id']);
+    [$relationshipTypeId, $a, $b] = explode('_', $params['relationship_type_id']);
 
     $params['relationship_type_id'] = $relationshipTypeId;
     $params['contact_id_' . $a] = $this->_contactId;
diff --git a/civicrm/CRM/Contact/Form/Search/Builder.php b/civicrm/CRM/Contact/Form/Search/Builder.php
index 312a01b41ece8d73d4dddcf7f698f9e7fd699b83..4441dd702c24611f0e93ffa76eb76da638cda8cc 100644
--- a/civicrm/CRM/Contact/Form/Search/Builder.php
+++ b/civicrm/CRM/Contact/Form/Search/Builder.php
@@ -113,7 +113,7 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
       $mappingId = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_SavedSearch', $this->_ssID, 'mapping_id');
     }
 
-    CRM_Core_BAO_Mapping::buildMappingForm($this, $mappingId, $this->_columnCount, $this->_blockCount);
+    $this->buildMappingForm($this, $mappingId, $this->_columnCount, $this->_blockCount);
 
     parent::buildQuickForm();
   }
@@ -178,7 +178,7 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
         else {
           if (substr($v[0], 0, 7) == 'custom_') {
             // Get rid of appended location type id
-            list($fieldKey) = explode('-', $v[0]);
+            [$fieldKey] = explode('-', $v[0]);
             $type = $fields[$fieldKey]['data_type'];
 
             // hack to handle custom data of type state and country
@@ -513,4 +513,499 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search {
     return $val;
   }
 
+  /**
+   * Build the mapping form for Search Builder.
+   *
+   * @param CRM_Core_Form $form
+   * @param int $mappingId
+   * @param int $columnNo
+   * @param int $blockCount
+   *   (no of blocks shown).
+   */
+  private function buildMappingForm(&$form, $mappingId, $columnNo, $blockCount) {
+
+    $hasLocationTypes = [];
+    $hasRelationTypes = [];
+
+    $columnCount = $columnNo;
+    $form->addElement('xbutton', 'addBlock', ts('Also include contacts where'),
+      [
+        'type' => 'submit',
+        'class' => 'submit-link',
+        'value' => 1,
+      ]
+    );
+
+    $contactTypes = CRM_Contact_BAO_ContactType::basicTypes();
+    $fields = CRM_Core_BAO_Mapping::getBasicFields('Search Builder');
+
+    // Unset groups, tags, notes for component export
+    foreach (array_keys($fields) as $type) {
+      CRM_Utils_Array::remove($fields[$type], 'groups', 'tags', 'notes');
+    }
+    // Build the common contact fields array.
+    $fields['Contact'] = [];
+    foreach ($fields[$contactTypes[0]] as $key => $value) {
+      // If a field exists across all contact types, move it to the "Contact" selector
+      $ubiquitious = TRUE;
+      foreach ($contactTypes as $type) {
+        if (!isset($fields[$type][$key])) {
+          $ubiquitious = FALSE;
+        }
+      }
+      if ($ubiquitious) {
+        $fields['Contact'][$key] = $value;
+        foreach ($contactTypes as $type) {
+          unset($fields[$type][$key]);
+        }
+      }
+    }
+    if (array_key_exists('note', $fields['Contact'])) {
+      $noteTitle = $fields['Contact']['note']['title'];
+      $fields['Contact']['note']['title'] = $noteTitle . ': ' . ts('Body and Subject');
+      $fields['Contact']['note_body'] = ['title' => $noteTitle . ': ' . ts('Body Only'), 'name' => 'note_body'];
+      $fields['Contact']['note_subject'] = [
+        'title' => $noteTitle . ': ' . ts('Subject Only'),
+        'name' => 'note_subject',
+      ];
+    }
+
+    // add component fields
+    $compArray = CRM_Core_BAO_Mapping::addComponentFields($fields, 'Search Builder', NULL);
+
+    foreach ($fields as $key => $value) {
+
+      foreach ($value as $key1 => $value1) {
+        //CRM-2676, replacing the conflict for same custom field name from different custom group.
+        $customGroupName = CRM_Core_BAO_Mapping::getCustomGroupName($key1);
+
+        if ($customGroupName) {
+          $relatedMapperFields[$key][$key1] = $mapperFields[$key][$key1] = $customGroupName . ': ' . $value1['title'];
+        }
+        else {
+          $relatedMapperFields[$key][$key1] = $mapperFields[$key][$key1] = $value1['title'];
+        }
+        if (isset($value1['hasLocationType'])) {
+          $hasLocationTypes[$key][$key1] = $value1['hasLocationType'];
+        }
+
+        if (isset($value1['hasRelationType'])) {
+          $hasRelationTypes[$key][$key1] = $value1['hasRelationType'];
+          unset($relatedMapperFields[$key][$key1]);
+        }
+      }
+
+      if (isset($relatedMapperFields[$key]['related'])) {
+        unset($relatedMapperFields[$key]['related']);
+      }
+    }
+
+    $locationTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id');
+
+    $defaultLocationType = CRM_Core_BAO_LocationType::getDefault();
+
+    // FIXME: dirty hack to make the default option show up first.  This
+    // avoids a mozilla browser bug with defaults on dynamically constructed
+    // selector widgets.
+    if ($defaultLocationType) {
+      $defaultLocation = $locationTypes[$defaultLocationType->id];
+      unset($locationTypes[$defaultLocationType->id]);
+      $locationTypes = [$defaultLocationType->id => $defaultLocation] + $locationTypes;
+    }
+
+    $locationTypes = [' ' => ts('Primary')] + $locationTypes;
+
+    // since we need a hierarchical list to display contact types & subtypes,
+    // this is what we going to display in first selector
+    $contactTypeSelect = CRM_Contact_BAO_ContactType::getSelectElements(FALSE, FALSE);
+    $contactTypeSelect = ['Contact' => ts('Contacts')] + $contactTypeSelect;
+
+    $sel1 = ['' => ts('- select record type -')] + $contactTypeSelect + $compArray;
+
+    foreach ($sel1 as $key => $sel) {
+      if ($key) {
+        // sort everything BUT the contactType which is sorted separately by
+        // an initial commit of CRM-13278 (check ksort above)
+        if (!in_array($key, $contactTypes)) {
+          asort($mapperFields[$key]);
+        }
+        $sel2[$key] = ['' => ts('- select field -')] + $mapperFields[$key];
+      }
+    }
+
+    $sel3[''] = NULL;
+    $sel5[''] = NULL;
+    $phoneTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Phone', 'phone_type_id');
+    $imProviders = CRM_Core_PseudoConstant::get('CRM_Core_DAO_IM', 'provider_id');
+    asort($phoneTypes);
+
+    foreach ($sel1 as $k => $sel) {
+      if ($k) {
+        foreach ($locationTypes as $key => $value) {
+          if (trim($key) != '') {
+            $sel4[$k]['phone'][$key] = &$phoneTypes;
+            $sel4[$k]['im'][$key] = &$imProviders;
+          }
+        }
+      }
+    }
+
+    foreach ($sel1 as $k => $sel) {
+      if ($k) {
+        foreach ($mapperFields[$k] as $key => $value) {
+          if (isset($hasLocationTypes[$k][$key])) {
+            $sel3[$k][$key] = $locationTypes;
+          }
+          else {
+            $sel3[$key] = NULL;
+          }
+        }
+      }
+    }
+
+    // Array for core fields and relationship custom data
+    $relationshipTypes = CRM_Contact_BAO_Relationship::getContactRelationshipType(NULL, NULL, NULL, NULL, TRUE);
+
+    //special fields that have location, hack for primary location
+    $specialFields = [
+      'street_address',
+      'supplemental_address_1',
+      'supplemental_address_2',
+      'supplemental_address_3',
+      'city',
+      'postal_code',
+      'postal_code_suffix',
+      'geo_code_1',
+      'geo_code_2',
+      'state_province',
+      'country',
+      'phone',
+      'email',
+      'im',
+    ];
+
+    if (isset($mappingId)) {
+      list($mappingName, $mappingContactType, $mappingLocation, $mappingPhoneType, $mappingImProvider,
+        $mappingRelation, $mappingOperator, $mappingValue
+        ) = $this->getMappingFields($mappingId);
+
+      $blkCnt = count($mappingName);
+      if ($blkCnt >= $blockCount) {
+        $blockCount = $blkCnt + 1;
+      }
+      for ($x = 1; $x < $blockCount; $x++) {
+        if (isset($mappingName[$x])) {
+          $colCnt = count($mappingName[$x]);
+          if ($colCnt >= $columnCount[$x]) {
+            $columnCount[$x] = $colCnt;
+          }
+        }
+      }
+    }
+
+    $form->_blockCount = $blockCount;
+    $form->_columnCount = $columnCount;
+
+    $form->set('blockCount', $form->_blockCount);
+    $form->set('columnCount', $form->_columnCount);
+
+    $defaults = $noneArray = $nullArray = [];
+
+    for ($x = 1; $x < $blockCount; $x++) {
+
+      for ($i = 0; $i < $columnCount[$x]; $i++) {
+
+        $sel = &$form->addElement('hierselect', "mapper[$x][$i]", ts('Mapper for Field %1', [1 => $i]), NULL);
+        $jsSet = FALSE;
+
+        if (isset($mappingId)) {
+          [$mappingName, $defaults, $noneArray, $jsSet] = $this->loadSavedMapping($mappingLocation, $x, $i, $mappingName, $mapperFields, $mappingContactType, $mappingRelation, $specialFields, $mappingPhoneType, $defaults, $noneArray, $mappingImProvider, $mappingOperator, $mappingValue);
+        }
+        //Fix for Search Builder
+        $j = 4;
+
+        $formValues = $form->exportValues();
+        if (!$jsSet) {
+          if (empty($formValues)) {
+            // Incremented length for third select box(relationship type)
+            for ($k = 1; $k < $j; $k++) {
+              $noneArray[] = [$x, $i, $k];
+            }
+          }
+          else {
+            if (!empty($formValues['mapper'][$x])) {
+              foreach ($formValues['mapper'][$x] as $value) {
+                for ($k = 1; $k < $j; $k++) {
+                  if (!isset($formValues['mapper'][$x][$i][$k]) ||
+                    (!$formValues['mapper'][$x][$i][$k])
+                  ) {
+                    $noneArray[] = [$x, $i, $k];
+                  }
+                  else {
+                    $nullArray[] = [$x, $i, $k];
+                  }
+                }
+              }
+            }
+            else {
+              for ($k = 1; $k < $j; $k++) {
+                $noneArray[] = [$x, $i, $k];
+              }
+            }
+          }
+        }
+        //Fix for Search Builder
+        $sel->setOptions([$sel1, $sel2, $sel3, $sel4]);
+
+        //CRM -2292, restricted array set
+        $operatorArray = ['' => ts('-operator-')] + CRM_Core_SelectValues::getSearchBuilderOperators();
+
+        $form->add('select', "operator[$x][$i]", '', $operatorArray);
+        $form->add('text', "value[$x][$i]", '');
+      }
+
+      $form->addElement('xbutton', "addMore[$x]", ts('Another search field'), [
+        'type' => 'submit',
+        'class' => 'submit-link',
+        'value' => 1,
+      ]);
+    }
+    //end of block for
+
+    $js = "<script type='text/javascript'>\n";
+    $formName = "document.Builder";
+    if (!empty($nullArray)) {
+      $js .= "var nullArray = [";
+      $elements = [];
+      $seen = [];
+      foreach ($nullArray as $element) {
+        $key = "{$element[0]}, {$element[1]}, {$element[2]}";
+        if (!isset($seen[$key])) {
+          $elements[] = "[$key]";
+          $seen[$key] = 1;
+        }
+      }
+      $js .= implode(', ', $elements);
+      $js .= "]";
+      $js .= "
+                for (var i=0;i<nullArray.length;i++) {
+                    if ( {$formName}['mapper['+nullArray[i][0]+']['+nullArray[i][1]+']['+nullArray[i][2]+']'] ) {
+                        {$formName}['mapper['+nullArray[i][0]+']['+nullArray[i][1]+']['+nullArray[i][2]+']'].style.display = '';
+                    }
+                }
+";
+    }
+    if (!empty($noneArray)) {
+      $js .= "var noneArray = [";
+      $elements = [];
+      $seen = [];
+      foreach ($noneArray as $element) {
+        $key = "{$element[0]}, {$element[1]}, {$element[2]}";
+        if (!isset($seen[$key])) {
+          $elements[] = "[$key]";
+          $seen[$key] = 1;
+        }
+      }
+      $js .= implode(', ', $elements);
+      $js .= "]";
+      $js .= "
+                for (var i=0;i<noneArray.length;i++) {
+                    if ( {$formName}['mapper['+noneArray[i][0]+']['+noneArray[i][1]+']['+noneArray[i][2]+']'] ) {
+  {$formName}['mapper['+noneArray[i][0]+']['+noneArray[i][1]+']['+noneArray[i][2]+']'].style.display = 'none';
+                    }
+                }
+";
+    }
+    $js .= "</script>\n";
+
+    $form->assign('initHideBoxes', $js);
+    $form->assign('columnCount', $columnCount);
+    $form->assign('blockCount', $blockCount);
+    $form->setDefaults($defaults);
+
+    $form->setDefaultAction('refresh');
+  }
+
+  /**
+   * Load saved mapping.
+   *
+   * @param $mappingLocation
+   * @param int $x
+   * @param int $i
+   * @param $mappingName
+   * @param $mapperFields
+   * @param $mappingContactType
+   * @param $mappingRelation
+   * @param array $specialFields
+   * @param $mappingPhoneType
+   * @param $phoneType
+   * @param array $defaults
+   * @param array $noneArray
+   * @param $imProvider
+   * @param $mappingImProvider
+   * @param $mappingOperator
+   * @param $mappingValue
+   *
+   * @return array
+   */
+  protected function loadSavedMapping($mappingLocation, int $x, int $i, $mappingName, $mapperFields, $mappingContactType, $mappingRelation, array $specialFields, $mappingPhoneType, array $defaults, array $noneArray, $mappingImProvider, $mappingOperator, $mappingValue) {
+    $jsSet = FALSE;
+    $locationId = $mappingLocation[$x][$i] ?? 0;
+    if (isset($mappingName[$x][$i])) {
+      if (is_array($mapperFields[$mappingContactType[$x][$i]])) {
+
+        if (isset($mappingRelation[$x][$i])) {
+          $relLocationId = $mappingLocation[$x][$i] ?? 0;
+          if (!$relLocationId && in_array($mappingName[$x][$i], $specialFields)) {
+            $relLocationId = " ";
+          }
+
+          $relPhoneType = $mappingPhoneType[$x][$i] ?? NULL;
+
+          $defaults["mapper[$x][$i]"] = [
+            $mappingContactType[$x][$i],
+            $mappingRelation[$x][$i],
+            $locationId,
+            $phoneType,
+            $mappingName[$x][$i],
+            $relLocationId,
+            $relPhoneType,
+          ];
+
+          if (!$locationId) {
+            $noneArray[] = [$x, $i, 2];
+          }
+          if (!$phoneType && !$imProvider) {
+            $noneArray[] = [$x, $i, 3];
+          }
+          if (!$mappingName[$x][$i]) {
+            $noneArray[] = [$x, $i, 4];
+          }
+          if (!$relLocationId) {
+            $noneArray[] = [$x, $i, 5];
+          }
+          if (!$relPhoneType) {
+            $noneArray[] = [$x, $i, 6];
+          }
+          $noneArray[] = [$x, $i, 2];
+        }
+        else {
+          $phoneType = $mappingPhoneType[$x][$i] ?? NULL;
+          $imProvider = $mappingImProvider[$x][$i] ?? NULL;
+          if (!$locationId && in_array($mappingName[$x][$i], $specialFields)) {
+            $locationId = " ";
+          }
+
+          $defaults["mapper[$x][$i]"] = [
+            $mappingContactType[$x][$i],
+            $mappingName[$x][$i],
+            $locationId,
+            $phoneType,
+          ];
+          if (!$mappingName[$x][$i]) {
+            $noneArray[] = [$x, $i, 1];
+          }
+          if (!$locationId) {
+            $noneArray[] = [$x, $i, 2];
+          }
+          if (!$phoneType && !$imProvider) {
+            $noneArray[] = [$x, $i, 3];
+          }
+
+          $noneArray[] = [$x, $i, 4];
+          $noneArray[] = [$x, $i, 5];
+          $noneArray[] = [$x, $i, 6];
+        }
+
+        $jsSet = TRUE;
+
+        if (CRM_Utils_Array::value($i, CRM_Utils_Array::value($x, $mappingOperator))) {
+          $defaults["operator[$x][$i]"] = $mappingOperator[$x][$i] ?? NULL;
+        }
+
+        if (isset($mappingValue[$x][$i])) {
+          $defaults["value[$x][$i]"] = $mappingValue[$x][$i] ?? NULL;
+        }
+      }
+    }
+    return [$mappingName, $defaults, $noneArray, $jsSet];
+  }
+
+  /**
+   * Get the mapping fields.
+   *
+   * @param int $mappingId
+   *   Mapping id.
+   *
+   * @param bool $addPrimary
+   *   Add the key 'Primary' when the field is a location field AND there is
+   *   no location type (meaning Primary)?
+   *
+   * @return array
+   *   array of mapping fields
+   */
+  private function getMappingFields($mappingId, $addPrimary = FALSE) {
+    //mapping is to be loaded from database
+    $mapping = new CRM_Core_DAO_MappingField();
+    $mapping->mapping_id = $mappingId;
+    $mapping->orderBy('column_number');
+    $mapping->find();
+
+    $mappingName = $mappingLocation = $mappingContactType = $mappingPhoneType = [];
+    $mappingImProvider = $mappingRelation = $mappingOperator = $mappingValue = $mappingWebsiteType = [];
+    while ($mapping->fetch()) {
+      $mappingName[$mapping->grouping][$mapping->column_number] = $mapping->name;
+      $mappingContactType[$mapping->grouping][$mapping->column_number] = $mapping->contact_type;
+
+      if (!empty($mapping->location_type_id)) {
+        $mappingLocation[$mapping->grouping][$mapping->column_number] = $mapping->location_type_id;
+      }
+      elseif ($addPrimary) {
+        if (CRM_Contact_BAO_Contact::isFieldHasLocationType($mapping->name)) {
+          $mappingLocation[$mapping->grouping][$mapping->column_number] = ts('Primary');
+        }
+        else {
+          $mappingLocation[$mapping->grouping][$mapping->column_number] = NULL;
+        }
+      }
+
+      if (!empty($mapping->phone_type_id)) {
+        $mappingPhoneType[$mapping->grouping][$mapping->column_number] = $mapping->phone_type_id;
+      }
+
+      // get IM service provider type id from mapping fields
+      if (!empty($mapping->im_provider_id)) {
+        $mappingImProvider[$mapping->grouping][$mapping->column_number] = $mapping->im_provider_id;
+      }
+
+      if (!empty($mapping->website_type_id)) {
+        $mappingWebsiteType[$mapping->grouping][$mapping->column_number] = $mapping->website_type_id;
+      }
+
+      if (!empty($mapping->relationship_type_id)) {
+        $mappingRelation[$mapping->grouping][$mapping->column_number] = "{$mapping->relationship_type_id}_{$mapping->relationship_direction}";
+      }
+
+      if (!empty($mapping->operator)) {
+        $mappingOperator[$mapping->grouping][$mapping->column_number] = $mapping->operator;
+      }
+
+      if (isset($mapping->value)) {
+        $mappingValue[$mapping->grouping][$mapping->column_number] = $mapping->value;
+      }
+    }
+
+    return [
+      $mappingName,
+      $mappingContactType,
+      $mappingLocation,
+      $mappingPhoneType,
+      $mappingImProvider,
+      $mappingRelation,
+      $mappingOperator,
+      $mappingValue,
+      $mappingWebsiteType,
+    ];
+  }
+
 }
diff --git a/civicrm/CRM/Contact/Form/Search/Criteria.php b/civicrm/CRM/Contact/Form/Search/Criteria.php
index 7ebaa89e9002dba07154e155fc10ef37da66cc6e..1dda83c0cd0efa4ade317f26bf5e84dc88b9f270 100644
--- a/civicrm/CRM/Contact/Form/Search/Criteria.php
+++ b/civicrm/CRM/Contact/Form/Search/Criteria.php
@@ -315,7 +315,11 @@ class CRM_Contact_Form_Search_Criteria {
     foreach (self::getFilteredSearchFieldMetadata('basic') as $fieldName => $field) {
       $searchFields[$fieldName] = $field;
     }
-    $form->assign('basicSearchFields', array_merge(self::getBasicSearchFields(), $searchFields));
+    $fields = array_merge(self::getBasicSearchFields(), $searchFields);
+    foreach ($fields as $index => $field) {
+      $fields[$index] = array_merge(['class' => '', 'is_custom' => FALSE, 'template' => '', 'help' => '', 'description' => ''], $field);
+    }
+    $form->assign('basicSearchFields', $fields);
   }
 
   /**
diff --git a/civicrm/CRM/Contact/Import/Field.php b/civicrm/CRM/Contact/Import/Field.php
deleted file mode 100644
index 20d75656f9b1a52e0d37aeae4d14acc5a2fa8200..0000000000000000000000000000000000000000
--- a/civicrm/CRM/Contact/Import/Field.php
+++ /dev/null
@@ -1,188 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
- */
-
-/**
- * Class CRM_Contact_Import_Field
- */
-class CRM_Contact_Import_Field {
-
-  /**
-   * #@+
-   * @var string
-   */
-
-  /**
-   * Name of the field
-   * @var string
-   */
-  public $_name;
-
-  /**
-   * Title of the field to be used in display
-   * @var string
-   */
-  public $_title;
-
-  /**
-   * Type of field
-   * @var int
-   */
-  public $_type;
-
-  /**
-   * Is this field required
-   * @var bool
-   */
-  public $_required;
-
-  /**
-   * Data to be carried for use by a derived class
-   * @var object
-   */
-  public $_payload;
-
-  /**
-   * Regexp to match the CSV header of this column/field
-   * @var string
-   */
-  public $_columnPattern;
-
-  /**
-   * Regexp to match the pattern of data from various column/fields
-   * @var string
-   */
-  public $_dataPattern;
-
-  /**
-   * Regexp to match the pattern of header from various column/fields
-   * @var string
-   */
-  public $_headerPattern;
-
-  /**
-   * Location type
-   * @var int
-   */
-  public $_hasLocationType;
-
-  /**
-   * Does this field have a phone type
-   * @var string
-   */
-  public $_phoneType;
-
-  /**
-   * Value of this field
-   * @var string|null
-   */
-  public $_value;
-
-  /**
-   * Does this field have a relationship info
-   * @var string
-   */
-  public $_related;
-
-  /**
-   * Does this field have a relationship Contact Type
-   * @var string
-   */
-  public $_relatedContactType;
-
-  /**
-   * Does this field have a relationship Contact Details
-   * @var string
-   */
-  public $_relatedContactDetails;
-
-  /**
-   * Does this field have a related Contact info of Location Type
-   * @var int
-   */
-  public $_relatedContactLocType;
-
-  /**
-   * Does this field have a related Contact info of Phone Type
-   * @var string
-   */
-  public $_relatedContactPhoneType;
-
-  /**
-   * @param string $name
-   * @param string $title
-   * @param int $type
-   * @param string $columnPattern
-   * @param string $dataPattern
-   * @param null $hasLocationType
-   * @param null $phoneType
-   * @param null $related
-   * @param null $relatedContactType
-   * @param null $relatedContactDetails
-   * @param null $relatedContactLocType
-   * @param null $relatedContactPhoneType
-   */
-  public function __construct($name, $title, $type = CRM_Utils_Type::T_INT, $columnPattern = '//', $dataPattern = '//', $hasLocationType = NULL, $phoneType = NULL, $related = NULL, $relatedContactType = NULL, $relatedContactDetails = NULL, $relatedContactLocType = NULL, $relatedContactPhoneType = NULL) {
-    $this->_name = $name;
-    $this->_title = $title;
-    $this->_type = $type;
-    $this->_columnPattern = $columnPattern;
-    $this->_dataPattern = $dataPattern;
-    $this->_hasLocationType = $hasLocationType;
-    $this->_phoneType = $phoneType;
-    $this->_related = $related;
-    $this->_relatedContactType = $relatedContactType;
-    $this->_relatedContactDetails = $relatedContactDetails;
-    $this->_relatedContactLocType = $relatedContactLocType;
-    $this->_relatedContactPhoneType = $relatedContactPhoneType;
-
-    $this->_value = NULL;
-  }
-
-  public function resetValue() {
-    $this->_value = NULL;
-  }
-
-  /**
-   * The value is in string format.
-   *
-   * Convert the value to the type of this field
-   * and set the field value with the appropriate type
-   *
-   * @param string $value
-   */
-  public function setValue($value) {
-    $this->_value = $value;
-  }
-
-  /**
-   * Validate something we didn't document.
-   *
-   * @return bool
-   */
-  public function validate() {
-    //  echo $this->_value."===========<br>";
-    $message = '';
-
-    if ($this->_value === NULL) {
-      return TRUE;
-    }
-
-    //     Commented due to bug CRM-150, internationalization/wew.
-    //         if ( $this->_name == 'phone' ) {
-    //            return CRM_Utils_Rule::phone( $this->_value );
-    //         }
-
-    if ($this->_name == 'email') {
-      return CRM_Utils_Rule::email($this->_value);
-    }
-  }
-
-}
diff --git a/civicrm/CRM/Contact/Import/Form/DataSource.php b/civicrm/CRM/Contact/Import/Form/DataSource.php
index bd71da375ca03c8412f449bd1dd0a3b72b78d6dd..068450aba52f02b9ea91a7bc3349512f12351dcc 100644
--- a/civicrm/CRM/Contact/Import/Form/DataSource.php
+++ b/civicrm/CRM/Contact/Import/Form/DataSource.php
@@ -106,16 +106,16 @@ class CRM_Contact_Import_Form_DataSource extends CRM_Import_Form_DataSource {
     // contact types option
     $contactTypeOptions = $contactTypeAttributes = [];
     if (CRM_Contact_BAO_ContactType::isActive('Individual')) {
-      $contactTypeOptions[CRM_Import_Parser::CONTACT_INDIVIDUAL] = ts('Individual');
-      $contactTypeAttributes[CRM_Import_Parser::CONTACT_INDIVIDUAL] = $js;
+      $contactTypeOptions['Individual'] = ts('Individual');
+      $contactTypeAttributes['Individual'] = $js;
     }
     if (CRM_Contact_BAO_ContactType::isActive('Household')) {
-      $contactTypeOptions[CRM_Import_Parser::CONTACT_HOUSEHOLD] = ts('Household');
-      $contactTypeAttributes[CRM_Import_Parser::CONTACT_HOUSEHOLD] = $js;
+      $contactTypeOptions['Household'] = ts('Household');
+      $contactTypeAttributes['Household'] = $js;
     }
     if (CRM_Contact_BAO_ContactType::isActive('Organization')) {
-      $contactTypeOptions[CRM_Import_Parser::CONTACT_ORGANIZATION] = ts('Organization');
-      $contactTypeAttributes[CRM_Import_Parser::CONTACT_ORGANIZATION] = $js;
+      $contactTypeOptions['Organization'] = ts('Organization');
+      $contactTypeAttributes['Organization'] = $js;
     }
     $this->addRadio('contactType', ts('Contact Type'), $contactTypeOptions, [], NULL, FALSE, $contactTypeAttributes);
 
@@ -162,7 +162,7 @@ class CRM_Contact_Import_Form_DataSource extends CRM_Import_Form_DataSource {
     $defaults = [
       'dataSource' => $this->getDefaultDataSource(),
       'onDuplicate' => CRM_Import_Parser::DUPLICATE_SKIP,
-      'contactType' => CRM_Import_Parser::CONTACT_INDIVIDUAL,
+      'contactType' => 'Individual',
       'fieldSeparator' => CRM_Core_Config::singleton()->fieldSeparator,
       'disableUSPS' => TRUE,
     ];
@@ -186,7 +186,6 @@ class CRM_Contact_Import_Form_DataSource extends CRM_Import_Form_DataSource {
     // @todo - this params are being set here because they were / possibly still
     // are in some places being accessed by forms later in the flow
     // ie CRM_Contact_Import_Form_MapField, CRM_Contact_Import_Form_Preview
-    // or CRM_Contact_Import_Form_Summary using `$this->get()
     // which was the old way of saving values submitted on this form such that
     // the other forms could access them. Now they should use
     // `getSubmittedValue` or simply not get them if the only
diff --git a/civicrm/CRM/Contact/Import/Form/MapField.php b/civicrm/CRM/Contact/Import/Form/MapField.php
index 4c24a7edff16f673a6e05f546d4655feffb16df3..8f3198da79d8b9aa21a85806afa73f99999900ca 100644
--- a/civicrm/CRM/Contact/Import/Form/MapField.php
+++ b/civicrm/CRM/Contact/Import/Form/MapField.php
@@ -112,8 +112,7 @@ class CRM_Contact_Import_Form_MapField extends CRM_Import_Form_MapField {
    * @throws \CRM_Core_Exception
    */
   public function buildQuickForm() {
-    $savedMappingID = (int) $this->getSubmittedValue('savedMapping');
-    $this->buildSavedMappingFields($savedMappingID);
+    $this->addSavedMappingFields();
 
     $this->addFormRule(['CRM_Contact_Import_Form_MapField', 'formRule']);
 
@@ -273,7 +272,7 @@ class CRM_Contact_Import_Form_MapField extends CRM_Import_Form_MapField {
     //used to warn for mismatch column count or mismatch mapping
     CRM_Core_Session::singleton()->setStatus(NULL);
     $processor = new CRM_Import_ImportProcessor();
-    $processor->setMappingID($savedMappingID);
+    $processor->setMappingID((int) $this->getSubmittedValue('savedMapping'));
     $processor->setFormName($formName);
     $processor->setMetadata($this->getContactImportMetadata());
     $processor->setContactTypeByConstant($this->getSubmittedValue('contactType'));
@@ -309,12 +308,6 @@ class CRM_Contact_Import_Form_MapField extends CRM_Import_Form_MapField {
             ];
           }
         }
-        else {
-          // Otherwise guess the default from the form of the data
-          $defaults["mapper[$i]"] = [
-            $this->defaultFromData($this->getDataPatterns(), $i),
-          ];
-        }
         $last_key = array_key_last($defaults["mapper[$i]"]) ?? 0;
       }
       // Call swapOptions on the deepest select element to hide the empty select lists above it.
@@ -339,28 +332,16 @@ class CRM_Contact_Import_Form_MapField extends CRM_Import_Form_MapField {
    * @param array $fields
    *   Posted values of the form.
    *
-   * @return array|true
+   * @return array|bool
    *   list of errors to be posted back to the form
    */
-  public static function formRule($fields) {
-    $errors = [];
-    if (!empty($fields['saveMapping'])) {
-      $nameField = $fields['saveMappingName'] ?? NULL;
-      if (empty($nameField)) {
-        $errors['saveMappingName'] = ts('Name is required to save Import Mapping');
-      }
-      else {
-        $mappingTypeId = CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_Mapping', 'mapping_type_id', 'Import Contact');
-        if (CRM_Core_BAO_Mapping::checkMapping($nameField, $mappingTypeId)) {
-          $errors['saveMappingName'] = ts('Duplicate Import Mapping Name');
-        }
-      }
-    }
-    $template = CRM_Core_Smarty::singleton();
+  public static function formRule(array $fields) {
     if (!empty($fields['saveMapping'])) {
-      $template->assign('isCheked', TRUE);
+      // todo - this is non-sensical - sane js is better. PR to fix got stale but
+      // is here https://github.com/civicrm/civicrm-core/pull/23950
+      CRM_Core_Smarty::singleton()->assign('isCheked', TRUE);
     }
-    return empty($errors) ? TRUE : $errors;
+    return TRUE;
   }
 
   /**
@@ -460,17 +441,6 @@ class CRM_Contact_Import_Form_MapField extends CRM_Import_Form_MapField {
     return ((int) $this->getSubmittedValue('onDuplicate')) === CRM_Import_Parser::DUPLICATE_NOCHECK;
   }
 
-  /**
-   * Did the user specify duplicates should be skipped and not imported.
-   *
-   * @return bool
-   *
-   * @throws \CRM_Core_Exception
-   */
-  private function isSkipDuplicates(): bool {
-    return ((int) $this->getSubmittedValue('onDuplicate')) === CRM_Import_Parser::DUPLICATE_SKIP;
-  }
-
   /**
    * Get the fields to be highlighted in the UI.
    *
@@ -511,7 +481,7 @@ class CRM_Contact_Import_Form_MapField extends CRM_Import_Form_MapField {
    */
   private function isLocationTypeRequired($name): bool {
     if (!isset(Civi::$statics[__CLASS__]['location_fields'])) {
-      Civi::$statics[__CLASS__]['location_fields'] = (new CRM_Contact_Import_Parser_Contact())->setUserJobID($this->getUserJobID())->getSelectTypes();
+      Civi::$statics[__CLASS__]['location_fields'] = (new CRM_Contact_Import_Parser_Contact())->setUserJobID($this->getUserJobID())->getFieldsWhichSupportLocationTypes();
     }
     return (bool) (Civi::$statics[__CLASS__]['location_fields'][$name] ?? FALSE);
   }
diff --git a/civicrm/CRM/Contact/Import/Form/Preview.php b/civicrm/CRM/Contact/Import/Form/Preview.php
index 28b219647772a85166ad54621b27c6dc5ccb324e..e651cf78bf3c3912cd3c35b5b7974b76188e1f1a 100644
--- a/civicrm/CRM/Contact/Import/Form/Preview.php
+++ b/civicrm/CRM/Contact/Import/Form/Preview.php
@@ -59,7 +59,7 @@ class CRM_Contact_Import_Form_Preview extends CRM_Import_Form_Preview {
       ]);
     }
 
-    $this->addFormRule(array('CRM_Contact_Import_Form_Preview', 'formRule'), $this);
+    $this->addFormRule(['CRM_Contact_Import_Form_Preview', 'formRule'], $this);
 
     parent::buildQuickForm();
   }
@@ -82,11 +82,11 @@ class CRM_Contact_Import_Form_Preview extends CRM_Import_Form_Preview {
 
     if (!empty($fields['newTagName'])) {
       if (!CRM_Utils_Rule::objectExists(trim($fields['newTagName']),
-        array('CRM_Core_DAO_Tag')
+        ['CRM_Core_DAO_Tag']
       )
       ) {
         $errors['newTagName'] = ts('Tag \'%1\' already exists.',
-          array(1 => $fields['newTagName'])
+          [1 => $fields['newTagName']]
         );
         $invalidTagName = TRUE;
       }
@@ -95,17 +95,17 @@ class CRM_Contact_Import_Form_Preview extends CRM_Import_Form_Preview {
     if (!empty($fields['newGroupName'])) {
       $title = trim($fields['newGroupName']);
       $name = CRM_Utils_String::titleToVar($title);
-      $query = 'select count(*) from civicrm_group where name like %1 OR title like %2';
+      $query = 'SELECT COUNT(*) FROM civicrm_group WHERE name LIKE %1 OR title LIKE %2';
       $grpCnt = CRM_Core_DAO::singleValueQuery(
         $query,
-        array(
-          1 => array($name, 'String'),
-          2 => array($title, 'String'),
-        )
+        [
+          1 => [$name, 'String'],
+          2 => [$title, 'String'],
+        ]
       );
       if ($grpCnt) {
         $invalidGroupName = TRUE;
-        $errors['newGroupName'] = ts('Group \'%1\' already exists.', array(1 => $fields['newGroupName']));
+        $errors['newGroupName'] = ts('Group \'%1\' already exists.', [1 => $fields['newGroupName']]);
       }
     }
 
@@ -129,7 +129,11 @@ class CRM_Contact_Import_Form_Preview extends CRM_Import_Form_Preview {
       // preserving is which groups were created vs already existed.
       $summaryInfo['groups'][$groupID] = [
         'url' => CRM_Utils_System::url('civicrm/group/search', 'reset=1&force=1&context=smog&gid=' . $groupID),
-        'name' => Group::get(FALSE)->addWhere('id', '=', $groupID)->addSelect('name')->execute()->first()['name'],
+        'name' => Group::get(FALSE)
+          ->addWhere('id', '=', $groupID)
+          ->addSelect('name')
+          ->execute()
+          ->first()['name'],
         'new' => FALSE,
         'added' => 0,
         'notAdded' => 0,
@@ -159,7 +163,11 @@ class CRM_Contact_Import_Form_Preview extends CRM_Import_Form_Preview {
       // preserving is which tags were created vs already existed.
       $summaryInfo['tags'][$tagID] = [
         'url' => CRM_Utils_System::url('civicrm/contact/search', 'reset=1&force=1&context=smog&id=' . $tagID),
-        'name' => Tag::get(FALSE)->addWhere('id', '=', $tagID)->addSelect('name')->execute()->first()['name'],
+        'name' => Tag::get(FALSE)
+          ->addWhere('id', '=', $tagID)
+          ->addSelect('name')
+          ->execute()
+          ->first()['name'],
         'new' => TRUE,
         'added' => 0,
         'notAdded' => 0,
@@ -181,7 +189,10 @@ class CRM_Contact_Import_Form_Preview extends CRM_Import_Form_Preview {
       ];
     }
     // Store the actions to take on each row & the data to present at the end to the userJob.
-    $this->updateUserJobMetadata('post_actions', ['group' => $groupsToAddTo, 'tag' => $tagsToAdd]);
+    $this->updateUserJobMetadata('post_actions', [
+      'group' => $groupsToAddTo,
+      'tag' => $tagsToAdd,
+    ]);
     $this->updateUserJobMetadata('summary_info', $summaryInfo);
 
     // If ACL applies to the current user, update cache before running the import.
diff --git a/civicrm/CRM/Contact/Import/Form/Summary.php b/civicrm/CRM/Contact/Import/Form/Summary.php
index d8efd8ab365e91f011b471271d82ed673e5c6f84..bae571b67338074b28acba7ecc643d74397c7beb 100644
--- a/civicrm/CRM/Contact/Import/Form/Summary.php
+++ b/civicrm/CRM/Contact/Import/Form/Summary.php
@@ -20,7 +20,7 @@ use Civi\Api4\UserJob;
 /**
  * This class summarizes the import results.
  */
-class CRM_Contact_Import_Form_Summary extends CRM_Import_Form_Summary {
+class CRM_Contact_Import_Form_Summary extends CRM_Import_Forms {
 
   /**
    * Set variables up before form is built.
@@ -28,7 +28,7 @@ class CRM_Contact_Import_Form_Summary extends CRM_Import_Form_Summary {
    * @throws \API_Exception
    * @throws \CRM_Core_Exception
    */
-  public function preProcess() {
+  public function preProcess(): void {
     $userJobID = CRM_Utils_Request::retrieve('user_job_id', 'String', $this, TRUE);
     $userJob = UserJob::get(TRUE)->addWhere('id', '=', $userJobID)->addSelect('metadata', 'job_type:label')->execute()->first();
     $this->setTitle($userJob['job_type:label']);
@@ -54,4 +54,57 @@ class CRM_Contact_Import_Form_Summary extends CRM_Import_Form_Summary {
     $session->pushUserContext(CRM_Utils_System::url('civicrm/import/contact', 'reset=1'));
   }
 
+  /**
+   * Assign the relevant smarty variables.
+   *
+   * @throws \API_Exception
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  protected function assignOutputURLs(): void {
+    $this->assign('outputUnavailable', FALSE);
+    try {
+      $this->assign('totalRowCount', $this->getRowCount());
+      $this->assign('validRowCount', $this->getRowCount(CRM_Import_Parser::VALID) + $this->getRowCount(CRM_Import_Parser::UNPARSED_ADDRESS_WARNING));
+      $this->assign('invalidRowCount', $this->getRowCount(CRM_Import_Parser::ERROR));
+      $this->assign('duplicateRowCount', $this->getRowCount(CRM_Import_Parser::DUPLICATE));
+      $this->assign('unMatchCount', $this->getRowCount(CRM_Import_Parser::NO_MATCH));
+      $this->assign('validSoftCreditRowCount', $this->getRowCount(CRM_Contribute_Import_Parser_Contribution::SOFT_CREDIT));
+      $this->assign('invalidSoftCreditRowCount', $this->getRowCount(CRM_Contribute_Import_Parser_Contribution::SOFT_CREDIT_ERROR));
+      $this->assign('validPledgePaymentRowCount', $this->getRowCount(CRM_Contribute_Import_Parser_Contribution::PLEDGE_PAYMENT));
+      $this->assign('invalidPledgePaymentRowCount', $this->getRowCount(CRM_Contribute_Import_Parser_Contribution::PLEDGE_PAYMENT_ERROR));
+      $this->assign('unparsedAddressCount', $this->getRowCount(CRM_Import_Parser::UNPARSED_ADDRESS_WARNING));
+      $this->assign('downloadDuplicateRecordsUrl', $this->getDownloadURL(CRM_Import_Parser::DUPLICATE));
+      $this->assign('downloadErrorRecordsUrl', $this->getDownloadURL(CRM_Import_Parser::ERROR));
+      $this->assign('downloadMismatchRecordsUrl', $this->getDownloadURL(CRM_Import_Parser::NO_MATCH));
+      $this->assign('downloadAddressRecordsUrl', $this->getDownloadURL(CRM_Import_Parser::UNPARSED_ADDRESS_WARNING));
+      $this->assign('downloadPledgePaymentErrorRecordsUrl', $this->getDownloadURL(CRM_Contribute_Import_Parser_Contribution::PLEDGE_PAYMENT_ERROR));
+      $this->assign('downloadSoftCreditErrorRecordsUrl', $this->getDownloadURL(CRM_Contribute_Import_Parser_Contribution::SOFT_CREDIT_ERROR));
+      $this->assign('trackingSummary', $this->getTrackingSummary());
+
+      $userJobID = CRM_Utils_Request::retrieve('user_job_id', 'String', $this, TRUE);
+      $userJob = UserJob::get(TRUE)
+        ->addWhere('id', '=', $userJobID)
+        ->execute()
+        ->first();
+      $onDuplicate = (int) $userJob['metadata']['submitted_values']['onDuplicate'];
+      $this->assign('dupeError', FALSE);
+      if ($onDuplicate === CRM_Import_Parser::DUPLICATE_UPDATE) {
+        $dupeActionString = ts('These records have been updated with the imported data.');
+      }
+      elseif ($onDuplicate === CRM_Import_Parser::DUPLICATE_FILL) {
+        $dupeActionString = ts('These records have been filled in with the imported data.');
+      }
+      else {
+        // Skip by default.
+        $dupeActionString = ts('These records have not been imported.');
+        $this->assign('dupeError', TRUE);
+      }
+      $this->assign('dupeActionString', $dupeActionString);
+    }
+    catch (CRM_Import_Exception_ImportTableUnavailable $e) {
+      $this->assign('outputUnavailable', TRUE);
+    }
+  }
+
 }
diff --git a/civicrm/CRM/Contact/Import/ImportJob.php b/civicrm/CRM/Contact/Import/ImportJob.php
deleted file mode 100644
index a61ec1899022faa90e61b66ead1e043038f42624..0000000000000000000000000000000000000000
--- a/civicrm/CRM/Contact/Import/ImportJob.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
- */
-
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC https://civicrm.org/licensing
- */
-
-/**
- * This class acts like a psuedo-BAO for transient import job tables.
- */
-class CRM_Contact_Import_ImportJob {
-
-  protected $_onDuplicate;
-  protected $_dedupe;
-  protected $_newGroupName;
-  protected $_groups;
-  protected $_allGroups;
-  protected $_newTagName;
-  protected $_tag;
-
-  protected $_mapper;
-  protected $_mapperKeys = [];
-  protected $_mapFields;
-
-  /**
-   * @var CRM_Contact_Import_Parser_Contact
-   */
-  protected $_parser;
-
-  protected $_userJobID;
-
-  /**
-   * Has the job completed.
-   *
-   * @return bool
-   */
-  public function isComplete(): bool {
-    return $this->_parser->isComplete();
-  }
-
-  /**
-   * @param array $params
-   */
-  public function setJobParams(&$params) {
-    foreach ($params as $param => $value) {
-      $fldName = "_$param";
-      $this->$fldName = $value;
-    }
-  }
-
-  /**
-   * @param CRM_Core_Form $form
-   * @param int $timeout
-   */
-  public function runImport(&$form, $timeout = 55) {
-    $mapper = $this->_mapper;
-    foreach ($mapper as $key => $value) {
-      $this->_mapperKeys[$key] = $mapper[$key][0] ?? NULL;
-    }
-
-  }
-
-  /**
-   * @param $form
-   */
-  public function setFormVariables($form) {
-    $this->_parser->set($form, CRM_Import_Parser::MODE_IMPORT);
-  }
-
-}
diff --git a/civicrm/CRM/Contact/Import/MetadataTrait.php b/civicrm/CRM/Contact/Import/MetadataTrait.php
index 368df0e11a937353f26eafd0f2897fe1b2b58b59..132782496b8fcb29a5bc757bb72d6c5146a3a0ad 100644
--- a/civicrm/CRM/Contact/Import/MetadataTrait.php
+++ b/civicrm/CRM/Contact/Import/MetadataTrait.php
@@ -79,21 +79,15 @@ trait CRM_Contact_Import_MetadataTrait {
   /**
    * Get an array of header patterns for importable keys.
    *
+   * We should do this work on the form layer.
+   *
+   * @deprecated
    * @return array
    */
   public function getHeaderPatterns(): array {
     return CRM_Utils_Array::collect('headerPattern', $this->getContactImportMetadata());
   }
 
-  /**
-   * Get an array of header patterns for importable keys.
-   *
-   * @return array
-   */
-  public function getDataPatterns(): array {
-    return CRM_Utils_Array::collect('dataPattern', $this->getContactImportMetadata());
-  }
-
   /**
    * Get an array of header patterns for importable keys.
    *
diff --git a/civicrm/CRM/Contact/Import/Parser.php b/civicrm/CRM/Contact/Import/Parser.php
new file mode 100644
index 0000000000000000000000000000000000000000..c863e5f40c741039710e0d00493eee1425874f63
--- /dev/null
+++ b/civicrm/CRM/Contact/Import/Parser.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * Temporary file to ensure the old file does not linger on Joomla installs
+ * who usually fail to delete files. The old file will cause an error if present.
+ * TODO: Implement proper Joomla-deletion support. For partial support:
+ * @see CRM_Utils_Check_Component_Source
+ */
+class CRM_Contact_Import_Parser {
+}
diff --git a/civicrm/CRM/Contact/Import/Parser/Contact.php b/civicrm/CRM/Contact/Import/Parser/Contact.php
index b85f3c5afc43e022372c9c0dd800f0482264b8b7..48169889fa47ee2b03c1fcdf96f790e2db3c4bf3 100644
--- a/civicrm/CRM/Contact/Import/Parser/Contact.php
+++ b/civicrm/CRM/Contact/Import/Parser/Contact.php
@@ -28,7 +28,6 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
 
   use CRM_Contact_Import_MetadataTrait;
 
-  protected $_mapperKeys = [];
   protected $_allExternalIdentifiers = [];
 
   /**
@@ -80,9 +79,6 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
     // Force re-load of user job.
     unset($this->userJob);
     $this->setFieldMetadata();
-    foreach ($this->getImportableFieldsMetadata() as $name => $field) {
-      $this->addField($name, $field['title'], CRM_Utils_Array::value('type', $field), CRM_Utils_Array::value('headerPattern', $field), CRM_Utils_Array::value('dataPattern', $field), CRM_Utils_Array::value('hasLocationType', $field));
-    }
   }
 
   /**
@@ -100,6 +96,7 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
         'id' => 'contact_import',
         'name' => 'contact_import',
         'label' => ts('Contact Import'),
+        'entity' => 'Contact',
       ],
     ];
   }
@@ -138,14 +135,8 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
    *
    * @param array $values
    *   The array of values belonging to this line.
-   *
-   * @return bool
-   *   the result of this processing
-   *
-   * @throws \CRM_Core_Exception
-   * @throws \API_Exception
    */
-  public function import($values) {
+  public function import(array $values): void {
     $rowNumber = (int) $values[array_key_last($values)];
 
     // Put this here for now since we're gettting run by a job and need to
@@ -182,9 +173,6 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
         $hookParams = [
           'contactID' => $contactID,
           'importID' => $currentImportID,
-          'importTempTable' => $this->_tableName,
-          'fieldHeaders' => $this->_mapperKeys,
-          'fields' => $this->_activeFields,
         ];
         CRM_Utils_Hook::import('Contact', 'process', $this, $hookParams);
       }
@@ -210,13 +198,7 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
     }
     catch (CRM_Core_Exception $e) {
       $this->setImportStatus($rowNumber, $this->getStatus($e->getErrorCode()), $e->getMessage());
-      return FALSE;
-    }
-    // We can probably stop catching this once https://github.com/civicrm/civicrm-core/pull/23471
-    // is merged - testImportParserWithExternalIdForRelationship will confirm....
-    catch (CiviCRM_API3_Exception $e) {
-      $this->setImportStatus($rowNumber, $this->getStatus($e->getErrorCode()), $e->getMessage());
-      return FALSE;
+      return;
     }
     $extraFields = ['related_contact_created' => 0, 'related_contact_matched' => 0];
     foreach ($relatedContacts as $outcome) {
@@ -228,7 +210,6 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
       }
     }
     $this->setImportStatus($rowNumber, $this->getStatus(CRM_Import_Parser::VALID), $this->getSuccessMessage(), $contactID, $extraFields, array_merge(array_keys($relatedContacts), [$contactID]));
-    return CRM_Import_Parser::VALID;
   }
 
   /**
@@ -1009,10 +990,6 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
       else {
         $getValue = CRM_Utils_Array::retrieveValueRecursive($contact, $key);
       }
-      if ($key == 'contact_source') {
-        $params['source'] = $params[$key];
-        unset($params[$key]);
-      }
 
       if ($modeFill && isset($getValue)) {
         unset($params[$key]);
@@ -1073,7 +1050,7 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
    *
    * @param array $params
    * @param int|null $extIDMatch
-   * @param int|null $dedupeRuleID
+   * @param int|string $dedupeRuleID
    *
    * @return int|null
    *   IDs of a possible.
@@ -1081,21 +1058,19 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
    * @throws \CRM_Core_Exception
    * @throws \CiviCRM_API3_Exception
    */
-  protected function getPossibleContactMatch(array $params, ?int $extIDMatch, ?int $dedupeRuleID): ?int {
-    $checkParams = ['check_permissions' => FALSE, 'match' => $params, 'dedupe_rule_id' => $dedupeRuleID];
-    $possibleMatches = civicrm_api3('Contact', 'duplicatecheck', $checkParams);
+  protected function getPossibleContactMatch(array $params, ?int $extIDMatch, $dedupeRuleID): ?int {
+    $possibleMatches = $this->getPossibleMatchesByDedupeRule($params, $dedupeRuleID, FALSE);
     if (!$extIDMatch) {
-      if (count($possibleMatches['values']) === 1) {
-        return array_key_last($possibleMatches['values']);
+      if (count($possibleMatches) === 1) {
+        return array_key_last($possibleMatches);
       }
-      if (count($possibleMatches['values']) > 1) {
-        throw new CRM_Core_Exception(ts('Record duplicates multiple contacts: ') . implode(',', array_keys($possibleMatches['values'])), CRM_Import_Parser::ERROR);
-
+      if (count($possibleMatches) > 1) {
+        throw new CRM_Core_Exception(ts('Record duplicates multiple contacts: ') . implode(',', array_keys($possibleMatches)), CRM_Import_Parser::ERROR);
       }
       return NULL;
     }
-    if ($possibleMatches['count']) {
-      if (array_key_exists($extIDMatch, $possibleMatches['values'])) {
+    if (count($possibleMatches) > 0) {
+      if (array_key_exists($extIDMatch, $possibleMatches)) {
         return $extIDMatch;
       }
       throw new CRM_Core_Exception(ts('Matching this contact based on the de-dupe rule would cause an external ID conflict'), CRM_Import_Parser::ERROR);
@@ -1110,35 +1085,6 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
     $this->setImportableFieldsMetadata($this->getContactImportMetadata());
   }
 
-  /**
-   * @param string $name
-   * @param $title
-   * @param int $type
-   * @param string $headerPattern
-   * @param string $dataPattern
-   * @param bool $hasLocationType
-   */
-  public function addField(
-    $name, $title, $type = CRM_Utils_Type::T_INT,
-    $headerPattern = '//', $dataPattern = '//',
-    $hasLocationType = FALSE
-  ) {
-    $this->_fields[$name] = new CRM_Contact_Import_Field($name, $title, $type, $headerPattern, $dataPattern, $hasLocationType);
-    if (empty($name)) {
-      $this->_fields['doNotImport'] = new CRM_Contact_Import_Field($name, $title, $type, $headerPattern, $dataPattern, $hasLocationType);
-    }
-  }
-
-  /**
-   * Store parser values.
-   *
-   * @param CRM_Core_Session $store
-   *
-   * @param int $mode
-   */
-  public function set($store, $mode = self::MODE_SUMMARY) {
-  }
-
   /**
    * Format contact parameters.
    *
@@ -1658,48 +1604,6 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
     return $relatedContacts;
   }
 
-  /**
-   * Look up for an existing contact with the given external_identifier.
-   *
-   * If the identifier is found on a deleted contact then it is not a match
-   * but it must be removed from that contact to allow the new contact to
-   * have that external_identifier.
-   *
-   * @param string|null $externalIdentifier
-   * @param string $contactType
-   *
-   * @return int|null
-   *
-   * @throws \CRM_Core_Exception
-   * @throws \CiviCRM_API3_Exception
-   */
-  protected function lookupExternalIdentifier(?string $externalIdentifier, string $contactType): ?int {
-    if (!$externalIdentifier) {
-      return NULL;
-    }
-    // Check for any match on external id, deleted or otherwise.
-    $foundContact = civicrm_api3('Contact', 'get', [
-      'external_identifier' => $externalIdentifier,
-      'showAll' => 'all',
-      'sequential' => TRUE,
-      'return' => ['id', 'contact_is_deleted', 'contact_type'],
-    ]);
-    if (empty($foundContact['id'])) {
-      return NULL;
-    }
-    if (!empty($foundContact['values'][0]['contact_is_deleted'])) {
-      // If the contact is deleted, update external identifier to be blank
-      // to avoid key error from MySQL.
-      $params = ['id' => $foundContact['id'], 'external_identifier' => ''];
-      civicrm_api3('Contact', 'create', $params);
-      return NULL;
-    }
-    if ($foundContact['values'][0]['contact_type'] !== $contactType) {
-      throw new CRM_Core_Exception('Mismatched contact Types', CRM_Import_Parser::NO_MATCH);
-    }
-    return (int) $foundContact['id'];
-  }
-
   /**
    * Lookup the contact's contact ID.
    *
@@ -1714,27 +1618,13 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
    * @throws \Civi\API\Exception\UnauthorizedException
    */
   protected function lookupContactID(array $params, bool $isMainContact): ?int {
-    $extIDMatch = $this->lookupExternalIdentifier($params['external_identifier'] ?? NULL, $params['contact_type']);
     $contactID = !empty($params['id']) ? (int) $params['id'] : NULL;
-    //check if external identifier exists in database
-    if ($extIDMatch && $contactID && $extIDMatch !== $contactID) {
-      throw new CRM_Core_Exception(ts('Existing external ID does not match the imported contact ID.'), CRM_Import_Parser::ERROR);
-    }
+    $extIDMatch = $this->lookupExternalIdentifier($params['external_identifier'] ?? NULL, $params['contact_type'], $contactID);
     if ($extIDMatch && $isMainContact && ($this->isSkipDuplicates() || $this->isIgnoreDuplicates())) {
       throw new CRM_Core_Exception(ts('External ID already exists in Database.'), CRM_Import_Parser::DUPLICATE);
     }
     if ($contactID) {
-      $existingContact = Contact::get(FALSE)
-        ->addWhere('id', '=', $contactID)
-        // Don't auto-filter deleted - people use import to undelete.
-        ->addWhere('is_deleted', 'IN', [0, 1])
-        ->addSelect('contact_type')->execute()->first();
-      if (empty($existingContact['id'])) {
-        throw new CRM_Core_Exception('No contact found for this contact ID:' . $params['id'], CRM_Import_Parser::NO_MATCH);
-      }
-      if ($existingContact['contact_type'] !== $params['contact_type']) {
-        throw new CRM_Core_Exception('Mismatched contact Types', CRM_Import_Parser::NO_MATCH);
-      }
+      $this->validateContactID($contactID, $params['contact_type']);
       return $contactID;
     }
     // Time to see if we can find an existing contact ID to make this an update
@@ -1888,7 +1778,7 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser {
   }
 
   /**
-   * @param $outcome
+   * @param int|null|string $outcome
    *
    * @return string
    */
diff --git a/civicrm/CRM/Contact/Page/AJAX.php b/civicrm/CRM/Contact/Page/AJAX.php
index 0b4531f1e11430ba9b6c7ad76440900ad2b835e8..dfe05659bcd4c156999a1cef5584dffbbdba748c 100644
--- a/civicrm/CRM/Contact/Page/AJAX.php
+++ b/civicrm/CRM/Contact/Page/AJAX.php
@@ -221,7 +221,7 @@ class CRM_Contact_Page_AJAX {
 
     $ret = ['is_error' => 0];
 
-    list($relTypeId, $b, $a) = explode('_', $relType);
+    [$relTypeId, $b, $a] = explode('_', $relType);
 
     if ($relationshipID && $originalCid) {
       CRM_Case_BAO_Case::endCaseRole($caseID, $a, $originalCid, $relTypeId);
@@ -362,7 +362,7 @@ class CRM_Contact_Page_AJAX {
       $rowCount = Civi::settings()->get('search_autocomplete_count');
 
       // add acl clause here
-      list($aclFrom, $aclWhere) = CRM_Contact_BAO_Contact_Permission::cacheClause('cc');
+      [$aclFrom, $aclWhere] = CRM_Contact_BAO_Contact_Permission::cacheClause('cc');
       if ($aclWhere) {
         $aclWhere = "AND {$aclWhere}";
       }
@@ -426,7 +426,7 @@ LIMIT {$rowCount}
       $rowCount = (int) CRM_Utils_Request::retrieveValue('rowcount', 'Integer', 20, FALSE, 'GET');
 
       // add acl clause here
-      list($aclFrom, $aclWhere) = CRM_Contact_BAO_Contact_Permission::cacheClause('cc');
+      [$aclFrom, $aclWhere] = CRM_Contact_BAO_Contact_Permission::cacheClause('cc');
       if ($aclWhere) {
         $aclWhere = " AND $aclWhere";
       }
@@ -483,22 +483,7 @@ LIMIT {$offset}, {$rowCount}
   }
 
   public static function buildDedupeRules() {
-    $parent = CRM_Utils_Request::retrieve('parentId', 'Positive');
-
-    switch ($parent) {
-      case 1:
-        $contactType = 'Individual';
-        break;
-
-      case 2:
-        $contactType = 'Household';
-        break;
-
-      case 4:
-        $contactType = 'Organization';
-        break;
-    }
-
+    $contactType = CRM_Utils_Request::retrieve('parentId', 'Positive');
     $dedupeRules = CRM_Dedupe_BAO_DedupeRuleGroup::getByType($contactType);
 
     CRM_Utils_JSON::output($dedupeRules);
diff --git a/civicrm/CRM/Contact/Selector.php b/civicrm/CRM/Contact/Selector.php
index 872004d4757ee9d2bd5f69332dbcb6627114fc13..c5d8f8d26de0ea7ca7d78150e88c9170a0f46348 100644
--- a/civicrm/CRM/Contact/Selector.php
+++ b/civicrm/CRM/Contact/Selector.php
@@ -248,7 +248,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se
    * @return array
    */
   public static function &links() {
-    list($context, $contextMenu, $key) = func_get_args();
+    [$context, $contextMenu, $key] = func_get_args();
     $extraParams = ($key) ? "&key={$key}" : NULL;
     $searchContext = ($context) ? "&context=$context" : NULL;
 
@@ -413,7 +413,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se
             !in_array($name, $skipFields)
           ) {
             if (strpos($name, '-') !== FALSE) {
-              list($fieldName, $lType, $type) = CRM_Utils_System::explode('-', $name, 3);
+              [$fieldName, $lType, $type] = CRM_Utils_System::explode('-', $name, 3);
 
               if ($lType == 'Primary') {
                 $locationTypeName = 1;
@@ -477,7 +477,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se
 
       foreach ($properties as $prop) {
         if (strpos($prop, '-')) {
-          list($loc, $fld, $phoneType) = CRM_Utils_System::explode('-', $prop, 3);
+          [$loc, $fld, $phoneType] = CRM_Utils_System::explode('-', $prop, 3);
           $title = $this->_query->_fields[$fld]['title'];
           if (trim($phoneType) && !is_numeric($phoneType) && strtolower($phoneType) != $fld) {
             $title .= "-{$phoneType}";
@@ -602,7 +602,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se
           !in_array($key, $skipFields)
         ) {
           if (strpos($key, '-') !== FALSE) {
-            list($fieldName, $id, $type) = CRM_Utils_System::explode('-', $key, 3);
+            [$fieldName, $id, $type] = CRM_Utils_System::explode('-', $key, 3);
 
             if ($id == 'Primary') {
               $locationTypeName = 1;
@@ -715,7 +715,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se
           $row[$property] = $websiteUrl;
         }
         elseif (strpos($property, '-email') !== FALSE) {
-          list($locType) = explode("-email", $property);
+          [$locType] = explode("-email", $property);
           $onholdProperty = "{$locType}-on_hold";
 
           $row[$property] = $result->$property ?? NULL;
diff --git a/civicrm/CRM/Contact/StateMachine/Search.php b/civicrm/CRM/Contact/StateMachine/Search.php
index 12cf525f85e9dfd5297706d3734d654ca7310a04..5d952a0a13449bf5d4ba207643cc122d18b37260 100644
--- a/civicrm/CRM/Contact/StateMachine/Search.php
+++ b/civicrm/CRM/Contact/StateMachine/Search.php
@@ -35,20 +35,20 @@ class CRM_Contact_StateMachine_Search extends CRM_Core_StateMachine {
     $this->_pages = [];
     if ($action == CRM_Core_Action::ADVANCED) {
       $this->_pages['CRM_Contact_Form_Search_Advanced'] = NULL;
-      list($task, $result) = $this->taskName($controller, 'Advanced');
+      [$task, $result] = $this->taskName($controller, 'Advanced');
     }
     elseif ($action == CRM_Core_Action::PROFILE) {
       $this->_pages['CRM_Contact_Form_Search_Builder'] = NULL;
-      list($task, $result) = $this->taskName($controller, 'Builder');
+      [$task, $result] = $this->taskName($controller, 'Builder');
     }
     // @todo - this 'should' be removable but it's getting to this controller, for now
     elseif ($action == CRM_Core_Action::COPY) {
       $this->_pages['CRM_Contact_Form_Search_Custom'] = NULL;
-      list($task, $result) = $this->taskName($controller, 'Custom');
+      [$task, $result] = $this->taskName($controller, 'Custom');
     }
     else {
       $this->_pages['CRM_Contact_Form_Search_Basic'] = NULL;
-      list($task, $result) = $this->taskName($controller, 'Basic');
+      [$task, $result] = $this->taskName($controller, 'Basic');
     }
     $this->_task = $task;
     if (is_array($task)) {
diff --git a/civicrm/CRM/Contact/Task.php b/civicrm/CRM/Contact/Task.php
index 5db37ba3e0d9644ee4c30278872d929b9e6276e2..4a6989bd070c198225df7b73051922d5d19a1937 100644
--- a/civicrm/CRM/Contact/Task.php
+++ b/civicrm/CRM/Contact/Task.php
@@ -96,6 +96,8 @@ class CRM_Contact_Task extends CRM_Core_Task {
         self::RECORD_CONTACTS => [
           'title' => ts('Add activity'),
           'class' => 'CRM_Activity_Form_Activity',
+          'icon' => 'fa-tasks',
+          'url' => 'civicrm/task/add-activity?action=add&context=search',
         ],
         self::SAVE_SEARCH => [
           'title' => ts('Group - create smart group'),
diff --git a/civicrm/CRM/Contact/Tokens.php b/civicrm/CRM/Contact/Tokens.php
index 731b2f330ceb8e8d689690e34c44ba9c83e3cf49..2c6bf924c9208bf81f0f8fd5d1e3bb255abcc719 100644
--- a/civicrm/CRM/Contact/Tokens.php
+++ b/civicrm/CRM/Contact/Tokens.php
@@ -330,10 +330,13 @@ class CRM_Contact_Tokens extends CRM_Core_EntityTokens {
    *
    * @param \Civi\Token\TokenRow $row
    * @param string $field
+   *
    * @return string|int
+   * @throws \CRM_Core_Exception
    */
   protected function getFieldValue(TokenRow $row, string $field) {
     $entityName = 'contact';
+    $contact = $row->context['contact'];
     if (isset($this->getDeprecatedTokens()[$field])) {
       // Check the non-deprecated location first, fall back to deprecated
       // this is important for the greetings because - they are weird in the query object.
@@ -347,13 +350,23 @@ class CRM_Contact_Tokens extends CRM_Core_EntityTokens {
     }
 
     foreach ($possibilities as $possibility) {
-      if (isset($row->context[$entityName][$possibility])) {
-        return $row->context[$entityName][$possibility];
+      if (isset($contact[$possibility])) {
+        return $contact[$possibility];
+      }
+      if ($this->isPseudoField($possibility)) {
+        // If we have a name or label field & already have the id loaded then we can
+        // evaluate from that rather than query again.
+        $split = explode(':', $possibility);
+        if (array_key_exists($split[0], $contact)) {
+          return $row->context['contact'][$possibility] = $this->getPseudoValue($split[0], $split[1], $contact[$split[0]]);
+        }
       }
     }
+
     $contactID = $this->getFieldValue($row, 'id');
     if ($contactID) {
-      $row->context['contact'] = array_merge($this->getContact($contactID, $this->activeTokens), $row->context['contact']);
+      $missingFields = array_diff_key(array_fill_keys($this->activeTokens, TRUE), $contact);
+      $row->context['contact'] = array_merge($this->getContact($contactID, array_keys($missingFields)), $contact);
       if (isset($row->context[$entityName][$field])) {
         return $row->context[$entityName][$field];
       }
@@ -486,71 +499,6 @@ class CRM_Contact_Tokens extends CRM_Core_EntityTokens {
     return $contact;
   }
 
-  /**
-   * Get the array of the return fields from 'get all'.
-   *
-   * This is the list from the BAO_Query object but copied
-   * here to be 'frozen in time'. The goal is to map to apiv4
-   * and stop using the legacy call to load the contact.
-   *
-   * @return array
-   */
-  protected function getAllContactReturnFields(): array {
-    return [
-      'image_URL' => 1,
-      'legal_identifier' => 1,
-      'external_identifier' => 1,
-      'contact_type' => 1,
-      'contact_sub_type' => 1,
-      'sort_name' => 1,
-      'display_name' => 1,
-      'preferred_mail_format' => 1,
-      'nick_name' => 1,
-      'first_name' => 1,
-      'middle_name' => 1,
-      'last_name' => 1,
-      'prefix_id' => 1,
-      'suffix_id' => 1,
-      'formal_title' => 1,
-      'communication_style_id' => 1,
-      'birth_date' => 1,
-      'gender_id' => 1,
-      'street_address' => 1,
-      'supplemental_address_1' => 1,
-      'supplemental_address_2' => 1,
-      'supplemental_address_3' => 1,
-      'city' => 1,
-      'postal_code' => 1,
-      'postal_code_suffix' => 1,
-      'state_province' => 1,
-      'country' => 1,
-      'world_region' => 1,
-      'geo_code_1' => 1,
-      'geo_code_2' => 1,
-      'email' => 1,
-      'on_hold' => 1,
-      'phone' => 1,
-      'im' => 1,
-      'household_name' => 1,
-      'organization_name' => 1,
-      'deceased_date' => 1,
-      'is_deceased' => 1,
-      'job_title' => 1,
-      'legal_name' => 1,
-      'sic_code' => 1,
-      'current_employer' => 1,
-      'do_not_email' => 1,
-      'do_not_mail' => 1,
-      'do_not_sms' => 1,
-      'do_not_phone' => 1,
-      'do_not_trade' => 1,
-      'is_opt_out' => 1,
-      'contact_is_deleted' => 1,
-      'preferred_communication_method' => 1,
-      'preferred_language' => 1,
-    ];
-  }
-
   /**
    * These tokens still work but we don't advertise them.
    *
diff --git a/civicrm/CRM/Contribute/BAO/Contribution.php b/civicrm/CRM/Contribute/BAO/Contribution.php
index ccd3b85223da4ff3d6dc3b844fa750e0c15e110a..e534cac54f7203ca7abe19512e06073821bc4a57 100644
--- a/civicrm/CRM/Contribute/BAO/Contribution.php
+++ b/civicrm/CRM/Contribute/BAO/Contribution.php
@@ -693,11 +693,12 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution im
    *
    * @param string $contactType
    * @param bool $status
-   *
+   * @deprecated
    * @return array
    *   array of importable Fields
    */
   public static function &importableFields($contactType = 'Individual', $status = TRUE) {
+    CRM_Core_Error::deprecatedFunctionWarning('api');
     if (!self::$_importableFields) {
       if (!self::$_importableFields) {
         self::$_importableFields = [];
@@ -1828,7 +1829,16 @@ LEFT JOIN  civicrm_contribution contribution ON ( componentPayment.contribution_
 
     $contribution = new CRM_Contribute_BAO_Contribution();
     $contribution->id = $ids['contribution'];
-    $contribution->find();
+    $contribution->find(TRUE);
+
+    if (empty($contribution->_component)) {
+      if (!empty($ids['event'])) {
+        $contribution->_component = 'event';
+      }
+      else {
+        $contribution->_component = strtolower(CRM_Utils_Array::value('component', $input, 'contribute'));
+      }
+    }
 
     $contribution->loadRelatedObjects($input, $ids);
 
@@ -2112,7 +2122,8 @@ LEFT JOIN  civicrm_contribution contribution ON ( componentPayment.contribution_
       SELECT contribution.id
       FROM civicrm_contribution contribution INNER JOIN civicrm_contribution_soft softContribution
       ON ( contribution.id = softContribution.contribution_id )
-      WHERE contribution.is_test = 0 AND contribution.is_template != '1' AND softContribution.contact_id = {$contactId} ";
+      WHERE contribution.is_test = 0 AND contribution.is_template != '1' AND softContribution.contact_id = {$contactId}
+      $additionalWhere ";
     $query = "SELECT count( x.id ) count FROM ( ";
     $query .= $contactContributionsSQL;
 
@@ -2324,20 +2335,6 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
     // 4) make ->_relatedObjects protected
     // 5) hone up the individual functions to not use rely on this having been called
     // 6) deprecate like mad
-    if (empty($this->_component)) {
-      if (!empty($ids['event'])) {
-        $this->_component = 'event';
-      }
-      else {
-        $this->_component = strtolower(CRM_Utils_Array::value('component', $input, 'contribute'));
-      }
-    }
-
-    // If the object is not fully populated then make sure it is - this is a more about legacy paths & cautious
-    // refactoring than anything else, and has unit test coverage.
-    if (empty($this->financial_type_id)) {
-      $this->find(TRUE);
-    }
 
     $paymentProcessorID = CRM_Utils_Array::value('payment_processor_id', $input, CRM_Utils_Array::value(
       'paymentProcessor',
@@ -2437,13 +2434,14 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
   }
 
   /**
-   * Create array of message information - ie. return html version, txt version, to field
+   * Create array of message information - ie. return html version, txt
+   * version, to field
    *
    * @param array $input
    *   Incoming information.
-   *   - is_recur - should this be treated as recurring (not sure why you wouldn't
-   *    just check presence of recur object but maintaining legacy approach
-   *    to be careful)
+   *   - is_recur - should this be treated as recurring (not sure why you
+   *   wouldn't just check presence of recur object but maintaining legacy
+   *   approach to be careful)
    * @param array $ids
    *   IDs of related objects.
    * @param array $values
@@ -2451,18 +2449,33 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac
    *   This is augmented by values 'gathered' by gatherMessageValues
    * @param bool $returnMessageText
    *   Distinguishes between whether to send message or return.
-   *   message text. We are working towards this function ALWAYS returning message text & calling
-   *   function doing emails / pdfs with it
+   *   message text. We are working towards this function ALWAYS returning
+   *   message text & calling function doing emails / pdfs with it
    *
    * @return array
    *   messages
-   * @throws Exception
+   * @throws \CRM_Core_Exception
    */
   public function composeMessageArray(&$input, &$ids, &$values, $returnMessageText = TRUE) {
     $ids = array_merge(self::getComponentDetails($this->id), $ids);
     if (empty($ids['contact']) && isset($this->contact_id)) {
       $ids['contact'] = $this->contact_id;
     }
+
+    if (empty($this->_component)) {
+      if (!empty($ids['event'])) {
+        $this->_component = 'event';
+      }
+      else {
+        $this->_component = strtolower(CRM_Utils_Array::value('component', $input, 'contribute'));
+      }
+    }
+
+    // If the object is not fully populated then make sure it is - this is a more about legacy paths & cautious
+    // refactoring than anything else, and has unit test coverage.
+    if (empty($this->financial_type_id)) {
+      $this->find(TRUE);
+    }
     $this->loadRelatedObjects($input, $ids);
 
     if (empty($this->_component)) {
diff --git a/civicrm/CRM/Contribute/BAO/Contribution/Utils.php b/civicrm/CRM/Contribute/BAO/Contribution/Utils.php
index b34b1e7dafa28140c83bacce5a94259978193674..c14439d7ab29c032d6ea1f6c228e45d5c81bceb4 100644
--- a/civicrm/CRM/Contribute/BAO/Contribution/Utils.php
+++ b/civicrm/CRM/Contribute/BAO/Contribution/Utils.php
@@ -22,7 +22,7 @@ class CRM_Contribute_BAO_Contribution_Utils {
    * @param int $param
    *   Year.
    *
-   * @return array
+   * @return array|null
    *   associated array
    */
   public static function contributionChartMonthly($param) {
@@ -61,7 +61,7 @@ INNER JOIN   civicrm_contact AS contact ON ( contact.id = contrib.contact_id )
   /**
    * Get the contribution details by year.
    *
-   * @return array
+   * @return array|null
    *   associated array
    */
   public static function contributionChartYearly() {
diff --git a/civicrm/CRM/Contribute/BAO/ContributionPage.php b/civicrm/CRM/Contribute/BAO/ContributionPage.php
index 3b18216f3b96b92e9a8fc5039faf8bc7215a26b6..2303e6e94614d578f9f4fd167fc80d6061464e20 100644
--- a/civicrm/CRM/Contribute/BAO/ContributionPage.php
+++ b/civicrm/CRM/Contribute/BAO/ContributionPage.php
@@ -259,13 +259,7 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
     }
 
     if ($isTest && !empty($params['custom_post_id'])) {
-      $params['custom_post_id'][] = [
-        'contribution_test',
-        '=',
-        1,
-        0,
-        0,
-      ];
+      $params['custom_post_id'][] = ['contribution_test', '=', 1, 0, 0];
     }
 
     if (!$returnMessageText && !empty($gIds)) {
@@ -323,7 +317,7 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
             $userID = $values['related_contact'] ?? NULL;
           }
         }
-        list($values['customPost_grouptitle'], $values['customPost']) = self::getProfileNameAndFields($postID, $userID, $params['custom_post_id']);
+        [$values['customPost_grouptitle'], $values['customPost']] = self::getProfileNameAndFields($postID, $userID, $params['custom_post_id']);
       }
       // Assign honoree values for the receipt. But first, stop any leaks from
       // previously assigned values.
@@ -396,7 +390,7 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
       // signs up. Is used for cases like - on behalf of
       // contribution / signup ..etc
       if (array_key_exists('related_contact', $values)) {
-        list($ccDisplayName, $ccEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($values['related_contact']);
+        [$ccDisplayName, $ccEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($values['related_contact']);
         $ccMailId = "{$ccDisplayName} <{$ccEmail}>";
 
         //@todo - this is the only place in this function where  $values is altered - but I can't find any evidence it is used
@@ -424,7 +418,7 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
       ];
 
       if ($returnMessageText) {
-        list($sent, $subject, $message, $html) = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
+        [$sent, $subject, $message, $html] = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
         return [
           'subject' => $subject,
           'body' => $message,
@@ -434,7 +428,7 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
       }
 
       if (empty($values['receipt_from_name']) && empty($values['receipt_from_name'])) {
-        list($values['receipt_from_name'], $values['receipt_from_email']) = CRM_Core_BAO_Domain::getNameAndEmail();
+        [$values['receipt_from_name'], $values['receipt_from_email']] = CRM_Core_BAO_Domain::getNameAndEmail();
       }
 
       if ($values['is_email_receipt']) {
@@ -448,13 +442,13 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
           $sendTemplateParams['isEmailPdf'] = TRUE;
           $sendTemplateParams['contributionId'] = $values['contribution_id'];
         }
-        list($sent, $subject, $message) = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
+        [$sent, $subject, $message] = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
       }
 
       // send duplicate alert, if dupe match found during on-behalf-of processing.
       if (!empty($values['onbehalf_dupe_alert'])) {
         $sendTemplateParams['groupName'] = 'msg_tpl_workflow_contribution';
-        $sendTemplateParams['valueName'] = 'contribution_dupalert';
+        $sendTemplateParams['workflow'] = 'contribution_dupalert';
         $sendTemplateParams['from'] = ts('Automatically Generated') . " <{$values['receipt_from_email']}>";
         $sendTemplateParams['toName'] = $values['receipt_from_name'] ?? NULL;
         $sendTemplateParams['toEmail'] = $values['receipt_from_email'] ?? NULL;
@@ -554,7 +548,7 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
       [$displayName, $email] = CRM_Contact_BAO_Contact_Location::getEmailDetails($contribution['contact_id'], FALSE);
       $templatesParams = [
         'groupName' => 'msg_tpl_workflow_contribution',
-        'valueName' => 'contribution_recurring_notify',
+        'workflow' => 'contribution_recurring_notify',
         'contactId' => $contribution['contact_id'],
         'tplParams' => [
           'recur_frequency_interval' => $recur->frequency_interval,
@@ -591,7 +585,7 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
         $template->assign('updateSubscriptionUrl', $url);
       }
 
-      list($sent) = CRM_Core_BAO_MessageTemplate::sendTemplate($templatesParams);
+      [$sent] = CRM_Core_BAO_MessageTemplate::sendTemplate($templatesParams);
 
       if ($sent) {
         CRM_Core_Error::debug_log_message('Success: mail sent for recurring notification.');
@@ -622,7 +616,7 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio
    * @param array|null $fieldTypes
    */
   public static function buildCustomDisplay($gid, $name, $cid, &$template, &$params, $fieldTypes = NULL) {
-    list($groupTitle, $values) = self::getProfileNameAndFields($gid, $cid, $params, $fieldTypes);
+    [$groupTitle, $values] = self::getProfileNameAndFields($gid, $cid, $params, $fieldTypes);
     if (!empty($values)) {
       $template->assign($name, $values);
     }
diff --git a/civicrm/CRM/Contribute/BAO/ContributionSoft.php b/civicrm/CRM/Contribute/BAO/ContributionSoft.php
index 56f52515501da09451ba410747028d7a836a6a45..14c833c002743866d47de4b315420d1d53dcdd4d 100644
--- a/civicrm/CRM/Contribute/BAO/ContributionSoft.php
+++ b/civicrm/CRM/Contribute/BAO/ContributionSoft.php
@@ -10,6 +10,7 @@
  */
 
 use Civi\Api4\Contribution;
+use Civi\Api4\ContributionSoft;
 
 /**
  *
@@ -198,45 +199,33 @@ class CRM_Contribute_BAO_ContributionSoft extends CRM_Contribute_DAO_Contributio
    */
   public static function getSoftContributionTotals($contact_id, $isTest = 0) {
 
-    $whereClause = "AND cc.cancel_date IS NULL";
+    $contributionSofts = ContributionSoft::get()
+      ->addSelect('currency', 'SUM(amount) AS SUM_amount', 'AVG(amount) AS AVG_amount', 'COUNT(id) AS COUNT_id')
+      ->setGroupBy([
+        'currency',
+      ])
+      ->addWhere('contact_id', '=', $contact_id)
+      ->addWhere('contribution_id.is_test', '=', $isTest);
 
-    $query = "
-    SELECT SUM(amount) as amount, AVG(total_amount) as average, cc.currency
-    FROM civicrm_contribution_soft  ccs
-      LEFT JOIN civicrm_contribution cc ON ccs.contribution_id = cc.id
-    WHERE cc.is_test = %2 AND ccs.contact_id = %1 {$whereClause}
-    GROUP BY currency";
-
-    $params = [
-      1 => [$contact_id, 'Integer'],
-      2 => [$isTest, 'Integer'],
-    ];
-
-    $cs = CRM_Core_DAO::executeQuery($query, $params);
+    $contributionSoftsNoCancel = $contributionSofts->addWhere('contribution_id.cancel_date', 'IS NULL')->execute();
+    $contributionSoftsYesCancel = $contributionSofts->addWhere('contribution_id.cancel_date', 'IS NOT NULL')->execute();
 
     $count = $countCancelled = 0;
     $amount = $average = $cancelAmount = [];
 
-    while ($cs->fetch()) {
-      if ($cs->amount > 0) {
-        $count++;
-        $amount[] = CRM_Utils_Money::format($cs->amount, $cs->currency);
-        $average[] = CRM_Utils_Money::format($cs->average, $cs->currency);
-      }
+    foreach ($contributionSoftsNoCancel as $csByCurrency) {
+      $count += $csByCurrency['COUNT_id'];
+      $amount[] = CRM_Utils_Money::format($csByCurrency['SUM_amount'], $csByCurrency['currency']);
+      $average[] = CRM_Utils_Money::format($csByCurrency['AVG_amount'], $csByCurrency['currency']);
     }
 
     //to get cancel amount
-    $cancelAmountWhereClause = "AND cc.cancel_date IS NOT NULL";
-    $query = str_replace($whereClause, $cancelAmountWhereClause, $query);
-    $cancelAmountSQL = CRM_Core_DAO::executeQuery($query, $params);
-    while ($cancelAmountSQL->fetch()) {
-      if ($cancelAmountSQL->amount > 0) {
-        $countCancelled++;
-        $cancelAmount[] = CRM_Utils_Money::format($cancelAmountSQL->amount, $cancelAmountSQL->currency);
-      }
+    foreach ($contributionSoftsYesCancel as $csByCurrency) {
+      $countCancelled += $csByCurrency['COUNT_id'];
+      $amount[] = CRM_Utils_Money::format($csByCurrency['SUM_amount'], $csByCurrency['currency']);
     }
 
-    if ($count > 0 || $countCancelled > 0) {
+    if ($contributionSoftsNoCancel->rowCount || $contributionSoftsYesCancel->rowCount) {
       return [
         $count,
         $countCancelled,
@@ -361,8 +350,11 @@ class CRM_Contribute_BAO_ContributionSoft extends CRM_Contribute_DAO_Contributio
    *
    * @return array
    *   Associated array of soft contributions
+   *
+   * @throws \API_Exception
+   * @throws \CRM_Core_Exception
    */
-  public static function getSoftContributionSelector($params) {
+  public static function getSoftContributionSelector($params): array {
     $isTest = 0;
     if (!empty($params['isTest'])) {
       $isTest = $params['isTest'];
@@ -373,12 +365,7 @@ class CRM_Contribute_BAO_ContributionSoft extends CRM_Contribute_DAO_Contributio
     $params['sort'] = $params['sortBy'] ?? NULL;
     $contactId = $params['cid'];
 
-    $filter = NULL;
-    if ($params['context'] === 'membership' && !empty($params['entityID']) && $contactId) {
-      $filter = " AND cc.id IN (SELECT contribution_id FROM civicrm_membership_payment WHERE membership_id = {$params['entityID']})";
-    }
-
-    $softCreditList = self::getSoftContributionList($contactId, $filter, $isTest, $params);
+    $softCreditList = self::getSoftContributionList($contactId, $params['entityID'] ?? NULL, $isTest, $params);
 
     $softCreditListDT = [];
     $softCreditListDT['data'] = array_values($softCreditList);
@@ -393,15 +380,26 @@ class CRM_Contribute_BAO_ContributionSoft extends CRM_Contribute_DAO_Contributio
    *
    * @param int $contact_id
    *   Contact id.
-   * @param string $filter
+   * @param ?int $membershipID
    * @param int $isTest
    *   Additional filter criteria, later used in where clause.
-   * @param array $dTParams
+   * @param null $dTParams
    *
    * @return array
-   * @throws \CRM_Core_Exception
+   *
+   * @throws \API_Exception
    */
-  public static function getSoftContributionList($contact_id, $filter = NULL, $isTest = 0, &$dTParams = NULL) {
+  public static function getSoftContributionList($contact_id, ?int $membershipID = NULL, $isTest = 0, &$dTParams = NULL): array {
+    // This is necessary for dataTables sorting.
+    $dataTableMapping = [
+      'sct_label' => 'soft_credit_type_id:label',
+      'contributor_name' => 'contact.sort_name',
+      'financial_type' => 'contribution_id.financial_type_id:label',
+      'contribution_status' => 'contribution_id.contribution_status_id:label',
+      'receive_date' => 'contribution.receive_date',
+      'pcp_title' => 'pcp_id.title',
+      'amount' => 'amount',
+    ];
     $config = CRM_Core_Config::singleton();
     $links = [
       CRM_Core_Action::VIEW => [
@@ -411,91 +409,64 @@ class CRM_Contribute_BAO_ContributionSoft extends CRM_Contribute_DAO_Contributio
         'title' => ts('View related contribution'),
       ],
     ];
-    $orderBy = 'cc.receive_date DESC';
-    if (!empty($dTParams['sort'])) {
-      $orderBy = $dTParams['sort'];
+
+    $contributionSofts = ContributionSoft::get()
+      ->addSelect('*', 'contribution_id.receive_date', 'contribution_id.contact_id', 'contribution_id.contact_id.display_name', 'soft_credit_type_id:label', 'contribution_id.contribution_status_id:label', 'contribution_id.financial_type_id:label', 'pcp_id.title')
+      ->addWhere('contact_id', '=', $contact_id)
+      ->addWhere('contribution_id.is_test', '=', $isTest);
+
+    if ($membershipID) {
+      $contributionSofts->addJoin('LineItem', 'INNER', NULL,
+        ['lineitem.contribution_id', '=', 'contribution_id'],
+        ['lineitem.entity_id', '=', $membershipID],
+        ['lineitem.entity_table', '=', '"civicrm_membership"']
+      );
     }
-    $limit = '';
+
     if (!empty($dTParams['rowCount']) && $dTParams['rowCount'] > 0) {
-      $limit = " LIMIT {$dTParams['offset']}, {$dTParams['rowCount']} ";
+      $contributionSofts
+        ->setLimit($dTParams['rowCount'])
+        ->setOffset($dTParams['offset'] ?? 0);
     }
-    $softOgId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'soft_credit_type', 'id', 'name');
-    $statusOgId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'contribution_status', 'id', 'name');
-
-    $query = '
-    SELECT SQL_CALC_FOUND_ROWS ccs.id, ccs.amount as amount,
-           ccs.contribution_id,
-           ccs.pcp_id,
-           ccs.pcp_display_in_roll,
-           ccs.pcp_roll_nickname,
-           ccs.pcp_personal_note,
-           ccs.soft_credit_type_id,
-           sov.label as sct_label,
-           cc.receive_date,
-           cc.contact_id as contributor_id,
-           cc.contribution_status_id as contribution_status_id,
-           cov.label as contribution_status,
-           cp.title as pcp_title,
-           cc.currency,
-           contact.display_name as contributor_name,
-           cct.name as financial_type
-    FROM civicrm_contribution_soft ccs
-      LEFT JOIN civicrm_contribution cc
-            ON ccs.contribution_id = cc.id
-      LEFT JOIN civicrm_pcp cp
-            ON ccs.pcp_id = cp.id
-      LEFT JOIN civicrm_contact contact ON
-      ccs.contribution_id = cc.id AND cc.contact_id = contact.id
-      LEFT JOIN civicrm_financial_type cct ON cc.financial_type_id = cct.id
-      LEFT JOIN civicrm_option_value sov ON sov.option_group_id = %3 AND ccs.soft_credit_type_id = sov.value
-      LEFT JOIN civicrm_option_value cov ON cov.option_group_id = %4 AND cc.contribution_status_id = cov.value
-    ';
-
-    $where = "
-      WHERE cc.is_test = %2 AND ccs.contact_id = %1";
-    if ($filter) {
-      $where .= $filter;
-    }
-
-    $query .= "{$where} ORDER BY {$orderBy} {$limit}";
 
-    $params = [
-      1 => [$contact_id, 'Integer'],
-      2 => [$isTest, 'Integer'],
-      3 => [$softOgId, 'Integer'],
-      4 => [$statusOgId, 'Integer'],
-    ];
-    $cs = CRM_Core_DAO::executeQuery($query, $params);
+    if (!empty($dTParams['sort'])) {
+      [$sortField, $direction] = explode(' ', $dTParams['sort']);
+      $contributionSofts->addOrderBy($dataTableMapping[$sortField] ?: $sortField, strtoupper($direction));
+    }
+    else {
+      $contributionSofts->addOrderBy('contribution_id.receive_date', 'DESC');
+    }
+    $contributionSofts = $contributionSofts->execute();
 
-    $dTParams['total'] = CRM_Core_DAO::singleValueQuery('SELECT FOUND_ROWS()');
+    $dTParams['total'] = $contributionSofts->rowCount;
     $result = [];
-    while ($cs->fetch()) {
-      $result[$cs->id]['amount'] = Civi::format()->money($cs->amount, $cs->currency);
-      $result[$cs->id]['currency'] = $cs->currency;
-      $result[$cs->id]['contributor_id'] = $cs->contributor_id;
-      $result[$cs->id]['contribution_id'] = $cs->contribution_id;
-      $result[$cs->id]['contributor_name'] = CRM_Utils_System::href(
-        $cs->contributor_name,
+    foreach ($contributionSofts as $cs) {
+      $result[$cs['id']]['amount'] = Civi::format()->money($cs['amount'], $cs['currency']);
+      $result[$cs['id']]['currency'] = $cs['currency'];
+      $result[$cs['id']]['contributor_id'] = $cs['contribution_id.contact_id'];
+      $result[$cs['id']]['contribution_id'] = $cs['contribution_id'];
+      $result[$cs['id']]['contributor_name'] = CRM_Utils_System::href(
+        $cs['contribution_id.contact_id.display_name'],
         'civicrm/contact/view',
-        "reset=1&cid={$cs->contributor_id}"
+        "reset=1&cid={$cs['contribution_id.contact_id']}"
       );
-      $result[$cs->id]['financial_type'] = $cs->financial_type;
-      $result[$cs->id]['receive_date'] = CRM_Utils_Date::customFormat($cs->receive_date, $config->dateformatDatetime);
-      $result[$cs->id]['pcp_id'] = $cs->pcp_id;
-      $result[$cs->id]['pcp_title'] = ($cs->pcp_title) ? $cs->pcp_title : 'n/a';
-      $result[$cs->id]['pcp_display_in_roll'] = $cs->pcp_display_in_roll;
-      $result[$cs->id]['pcp_roll_nickname'] = $cs->pcp_roll_nickname;
-      $result[$cs->id]['pcp_personal_note'] = $cs->pcp_personal_note;
-      $result[$cs->id]['contribution_status'] = $cs->contribution_status;
-      $result[$cs->id]['sct_label'] = $cs->sct_label;
+      $result[$cs['id']]['financial_type'] = $cs['contribution_id.financial_type_id:label'];
+      $result[$cs['id']]['receive_date'] = CRM_Utils_Date::customFormat($cs['contribution_id.receive_date'], $config->dateformatDatetime);
+      $result[$cs['id']]['pcp_id'] = $cs['pcp_id'];
+      $result[$cs['id']]['pcp_title'] = ($cs['pcp_id.title'] ?? 'n/a');
+      $result[$cs['id']]['pcp_display_in_roll'] = $cs['pcp_display_in_roll'];
+      $result[$cs['id']]['pcp_roll_nickname'] = $cs['pcp_roll_nickname'];
+      $result[$cs['id']]['pcp_personal_note'] = $cs['pcp_personal_note'];
+      $result[$cs['id']]['contribution_status'] = $cs['contribution_id.contribution_status_id:label'];
+      $result[$cs['id']]['sct_label'] = $cs['soft_credit_type_id:label'];
       $replace = [
-        'contributionid' => $cs->contribution_id,
-        'contactId' => $cs->contributor_id,
+        'contributionid' => $cs['contribution_id'],
+        'contactId' => $cs['contribution_id.contact_id'],
       ];
-      $result[$cs->id]['links'] = CRM_Core_Action::formLink($links, NULL, $replace);
+      $result[$cs['id']]['links'] = CRM_Core_Action::formLink($links, NULL, $replace);
 
       if ($isTest) {
-        $result[$cs->id]['contribution_status'] = CRM_Core_TestEntity::appendTestText($result[$cs->id]['contribution_status']);
+        $result[$cs['id']]['contribution_status'] = CRM_Core_TestEntity::appendTestText($result[$cs['id']]['contribution_status']);
       }
     }
     return $result;
@@ -666,7 +637,7 @@ class CRM_Contribute_BAO_ContributionSoft extends CRM_Contribute_DAO_Contributio
       $domainValues = CRM_Core_BAO_Domain::getNameAndEmail();
       $sendTemplateParams = [
         'groupName' => 'msg_tpl_workflow_contribution',
-        'valueName' => 'pcp_owner_notify',
+        'workflow' => 'pcp_owner_notify',
         'contactId' => $contributionSoft['contact_id'],
         'toEmail' => $ownerEmail,
         'toName' => $ownerName,
@@ -678,4 +649,13 @@ class CRM_Contribute_BAO_ContributionSoft extends CRM_Contribute_DAO_Contributio
     }
   }
 
+  /**
+   * @inheritDoc
+   */
+  public function addSelectWhereClause(): array {
+    $clauses['contribution_id'] = CRM_Utils_SQL::mergeSubquery('Contribution');
+    CRM_Utils_Hook::selectWhereClause($this, $clauses);
+    return $clauses;
+  }
+
 }
diff --git a/civicrm/CRM/Contribute/BAO/Query.php b/civicrm/CRM/Contribute/BAO/Query.php
index 8f3ebd68e755f4b3cc6833c625796d615d1f6684..5654fabb0215603546748bde798e029437d2af75 100644
--- a/civicrm/CRM/Contribute/BAO/Query.php
+++ b/civicrm/CRM/Contribute/BAO/Query.php
@@ -126,7 +126,7 @@ class CRM_Contribute_BAO_Query extends CRM_Core_BAO_Query {
    * @throws \CRM_Core_Exception
    */
   public static function whereClauseSingle(&$values, &$query) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     $quoteValue = NULL;
     $fields = self::getFields();
@@ -243,7 +243,7 @@ class CRM_Contribute_BAO_Query extends CRM_Core_BAO_Query {
         $dataType = !empty($fields[$qillName]['type']) ? CRM_Utils_Type::typeToString($fields[$qillName]['type']) : 'String';
 
         $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_contribution.$name", $op, $value, $dataType);
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_Contribution', $name, $value, $op, $pseudoExtraParam);
+        [$op, $value] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_Contribution', $name, $value, $op, $pseudoExtraParam);
         if (!($name == 'id' && $value == 0)) {
           $query->_qill[$grouping][] = ts('%1 %2 %3', [1 => $fields[$qillName]['title'], 2 => $op, 3 => $value]);
         }
@@ -265,7 +265,7 @@ class CRM_Contribute_BAO_Query extends CRM_Core_BAO_Query {
         $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_contribution_soft.$name",
           $op, $value, CRM_Utils_Type::typeToString($fields[$qillName]['type'])
         );
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_ContributionSoft', $name, $value, $op);
+        [$op, $value] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_ContributionSoft', $name, $value, $op);
         $query->_qill[$grouping][] = ts('%1 %2 %3', [1 => $fields[$qillName]['title'], 2 => $op, 3 => $value]);
         $query->_tables['civicrm_contribution_soft'] = $query->_whereTables['civicrm_contribution_soft'] = 1;
         return;
@@ -382,7 +382,7 @@ class CRM_Contribute_BAO_Query extends CRM_Core_BAO_Query {
 
       case 'contribution_recur_contribution_status_id':
         $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_contribution_recur.contribution_status_id", $op, $value, 'String');
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_ContributionRecur', 'contribution_status_id', $value, $op, $pseudoExtraParam);
+        [$op, $value] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_ContributionRecur', 'contribution_status_id', $value, $op, $pseudoExtraParam);
         $query->_qill[$grouping][] = ts("Recurring Contribution Status %1 '%2'", [1 => $op, 2 => $value]);
         $query->_tables['civicrm_contribution_recur'] = $query->_whereTables['civicrm_contribution_recur'] = 1;
         return;
@@ -421,7 +421,7 @@ class CRM_Contribute_BAO_Query extends CRM_Core_BAO_Query {
         return;
 
       case 'contribution_batch_id':
-        list($qillOp, $qillValue) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Batch_BAO_EntityBatch', 'batch_id', $value, $op);
+        [$qillOp, $qillValue] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Batch_BAO_EntityBatch', 'batch_id', $value, $op);
         $query->_qill[$grouping][] = ts('Batch Name %1 %2', [1 => $qillOp, 2 => $qillValue]);
         $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_entity_batch.batch_id', $op, $value);
         $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
@@ -432,7 +432,7 @@ class CRM_Contribute_BAO_Query extends CRM_Core_BAO_Query {
       case 'contribution_product_id':
         // CRM-16713 - contribution search by premiums on 'Find Contribution' form.
         $qillName = $name;
-        list($operator, $productValue) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_Product', $name, $value, $op);
+        [$operator, $productValue] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_Product', $name, $value, $op);
         $query->_qill[$grouping][] = ts('%1 %2 %3', [1 => $fields[$qillName]['title'], 2 => $operator, 3 => $productValue]);
         $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_product.id", $op, $value);
         $query->_tables['civicrm_product'] = $query->_whereTables['civicrm_product'] = 1;
@@ -447,7 +447,7 @@ class CRM_Contribute_BAO_Query extends CRM_Core_BAO_Query {
         $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_financial_trxn.card_type_id', $op, $value);
         $query->_tables['civicrm_financial_trxn'] = $query->_whereTables['civicrm_financial_trxn'] = 1;
         $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Financial_DAO_FinancialTrxn', 'card_type_id', $value, $op);
+        [$op, $value] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Financial_DAO_FinancialTrxn', 'card_type_id', $value, $op);
         $query->_qill[$grouping][] = ts('Card Type %1 %2', [1 => $op, 2 => $value]);
         return;
 
@@ -455,7 +455,7 @@ class CRM_Contribute_BAO_Query extends CRM_Core_BAO_Query {
         $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause('civicrm_financial_trxn.pan_truncation', $op, $value);
         $query->_tables['civicrm_financial_trxn'] = $query->_whereTables['civicrm_financial_trxn'] = 1;
         $query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Financial_DAO_FinancialTrxn', 'pan_truncation', $value, $op);
+        [$op, $value] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Financial_DAO_FinancialTrxn', 'pan_truncation', $value, $op);
         $query->_qill[$grouping][] = ts('Card Number %1 %2', [1 => $op, 2 => $value]);
         return;
 
@@ -477,7 +477,7 @@ class CRM_Contribute_BAO_Query extends CRM_Core_BAO_Query {
 
         $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($whereTable['where'], $op, $value, $dataType);
         $query->_qill[$grouping][] = "$whereTable[title] $op $quoteValue";
-        list($tableName) = explode('.', $whereTable['where'], 2);
+        [$tableName] = explode('.', $whereTable['where'], 2);
         $query->_tables[$tableName] = $query->_whereTables[$tableName] = 1;
         if ($tableName === 'civicrm_contribution_product') {
           $query->_tables['civicrm_product'] = $query->_whereTables['civicrm_product'] = 1;
@@ -493,7 +493,7 @@ class CRM_Contribute_BAO_Query extends CRM_Core_BAO_Query {
    * Get from clause.
    *
    * @param string $name
-   * @param string $mode
+   * @param int $mode
    * @param string $side
    *
    * @return NULL|string
diff --git a/civicrm/CRM/Contribute/DAO/Contribution.php b/civicrm/CRM/Contribute/DAO/Contribution.php
index 0630d3bc7c9fc7042fb0ec4ed217f2312ac26063..fba625f9a2c2502944060c18cfc7f14a96c3f693 100644
--- a/civicrm/CRM/Contribute/DAO/Contribution.php
+++ b/civicrm/CRM/Contribute/DAO/Contribution.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/Contribution.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0f869aa62eb1a94aedf6009a988cf01d)
+ * (GenCodeChecksum:919cb2c352b7004cf0dbb421e2e2d62f)
  */
 
 /**
diff --git a/civicrm/CRM/Contribute/DAO/ContributionPage.php b/civicrm/CRM/Contribute/DAO/ContributionPage.php
index 803443f7832d8d0ec6e36d56fab758b3dd192de1..cd874ebc31f1f408ff7c7b01eb5142cc5dc99123 100644
--- a/civicrm/CRM/Contribute/DAO/ContributionPage.php
+++ b/civicrm/CRM/Contribute/DAO/ContributionPage.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/ContributionPage.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:7419936ebe47d1c999473be6571682e7)
+ * (GenCodeChecksum:fb3ee613fb452993c05d137ac9b236d1)
  */
 
 /**
diff --git a/civicrm/CRM/Contribute/DAO/ContributionProduct.php b/civicrm/CRM/Contribute/DAO/ContributionProduct.php
index 562d28f386e06ee18f65fb82f3f41342a046acfc..1b86bc3ebc550c4934782da8c781069239673f5f 100644
--- a/civicrm/CRM/Contribute/DAO/ContributionProduct.php
+++ b/civicrm/CRM/Contribute/DAO/ContributionProduct.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/ContributionProduct.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:55d9ad3d7acb1129577589352f6010cd)
+ * (GenCodeChecksum:bac613347143b990a5f73567acd845e0)
  */
 
 /**
diff --git a/civicrm/CRM/Contribute/DAO/ContributionRecur.php b/civicrm/CRM/Contribute/DAO/ContributionRecur.php
index 7ac2191332f9a95488a8992f54a8bafa92269f39..6b2d79edae7bf567249cdcd733322855eec0b50b 100644
--- a/civicrm/CRM/Contribute/DAO/ContributionRecur.php
+++ b/civicrm/CRM/Contribute/DAO/ContributionRecur.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/ContributionRecur.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:caadace3dd39c9bcc5f340bd9ff4da95)
+ * (GenCodeChecksum:50c44d12fc9c64c4dcd9c78df1d314cd)
  */
 
 /**
diff --git a/civicrm/CRM/Contribute/DAO/ContributionSoft.php b/civicrm/CRM/Contribute/DAO/ContributionSoft.php
index 98294b9d6cf7d65192073806255175f7f3e8ebad..a6b14055e2a8b931dac8f9a4904774f1a651d4b6 100644
--- a/civicrm/CRM/Contribute/DAO/ContributionSoft.php
+++ b/civicrm/CRM/Contribute/DAO/ContributionSoft.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/ContributionSoft.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:9d890f5a0f0efc24ce1adaf5c84ac54e)
+ * (GenCodeChecksum:f5efcd2fc648f295e9c9f8ce6dbc5994)
  */
 
 /**
diff --git a/civicrm/CRM/Contribute/DAO/Premium.php b/civicrm/CRM/Contribute/DAO/Premium.php
index 437a2e22b73ed863d015ec360d387c8eb5e771cf..9084c436a7c92bc5fbd0a1b818e9a65c1a1b3b90 100644
--- a/civicrm/CRM/Contribute/DAO/Premium.php
+++ b/civicrm/CRM/Contribute/DAO/Premium.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/Premium.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4fc24f46e0da197aafb4399dd0965aa4)
+ * (GenCodeChecksum:b9ad8bd1ae2ab323070563a87ada3037)
  */
 
 /**
diff --git a/civicrm/CRM/Contribute/DAO/PremiumsProduct.php b/civicrm/CRM/Contribute/DAO/PremiumsProduct.php
index 7e68aed24512ff8f1f08bacf9470281ad1d1c4f9..84e4e2e41693212e82059da397d9bae533fde4d6 100644
--- a/civicrm/CRM/Contribute/DAO/PremiumsProduct.php
+++ b/civicrm/CRM/Contribute/DAO/PremiumsProduct.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/PremiumsProduct.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:46c21503a7dd4e0e8dc4b2221ae8bd0a)
+ * (GenCodeChecksum:d7eaac6f5bee5c01e31825ff68bf8a26)
  */
 
 /**
diff --git a/civicrm/CRM/Contribute/DAO/Product.php b/civicrm/CRM/Contribute/DAO/Product.php
index 70b7ddee7cf75a9bba945a855d4ecdfa4645c8fd..7099021aba44434a2d071f086e64d79396145e69 100644
--- a/civicrm/CRM/Contribute/DAO/Product.php
+++ b/civicrm/CRM/Contribute/DAO/Product.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/Product.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:91d2e693a0c58cadf111686646d057d6)
+ * (GenCodeChecksum:f90cdc40f03902b6d56e3696d31176ef)
  */
 
 /**
diff --git a/civicrm/CRM/Contribute/DAO/Widget.php b/civicrm/CRM/Contribute/DAO/Widget.php
index 3881be8636e372c6eded705d8f8227597bd003c5..b9831526eb0d4fe8b63cd224b34aaa210da6f5b7 100644
--- a/civicrm/CRM/Contribute/DAO/Widget.php
+++ b/civicrm/CRM/Contribute/DAO/Widget.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Contribute/Widget.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:8327209557468328fd4ec358866fdab0)
+ * (GenCodeChecksum:761ac45df6470b9de84e001b5443d9f6)
  */
 
 /**
diff --git a/civicrm/CRM/Contribute/Form/CancelSubscription.php b/civicrm/CRM/Contribute/Form/CancelSubscription.php
index 529de295e0936dd21163b4ef23d92f202b92895b..281b372683adbd559081f16f2794dc0af44797b6 100644
--- a/civicrm/CRM/Contribute/Form/CancelSubscription.php
+++ b/civicrm/CRM/Contribute/Form/CancelSubscription.php
@@ -263,7 +263,7 @@ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_Contrib
         $sendTemplateParams
           = [
             'groupName' => $this->_mode == 'auto_renew' ? 'msg_tpl_workflow_membership' : 'msg_tpl_workflow_contribution',
-            'valueName' => $this->_mode == 'auto_renew' ? 'membership_autorenew_cancelled' : 'contribution_recurring_cancelled',
+            'workflow' => $this->_mode == 'auto_renew' ? 'membership_autorenew_cancelled' : 'contribution_recurring_cancelled',
             'contactId' => $this->getSubscriptionDetails()->contact_id,
             'tplParams' => $tplParams,
             'tokenContext' => ['contribution_recurId' => $this->getContributionRecurID()],
diff --git a/civicrm/CRM/Contribute/Form/Contribution.php b/civicrm/CRM/Contribute/Form/Contribution.php
index b8ef62d7fcbf54c39c5e5eb84805068466a8a6f7..2c2aaa30681178b7fab1a58c00ff87808eb9b4c5 100644
--- a/civicrm/CRM/Contribute/Form/Contribution.php
+++ b/civicrm/CRM/Contribute/Form/Contribution.php
@@ -1243,7 +1243,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
    * @throws \CRM_Core_Exception
    * @throws \CiviCRM_API3_Exception
    */
-  protected function processFormContribution(
+  private function processFormContribution(
     $params,
     $result,
     $contributionParams,
@@ -1257,10 +1257,8 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP
     $contactID = $contributionParams['contact_id'];
 
     $isEmailReceipt = !empty($form->_values['is_email_receipt']);
-    $isSeparateMembershipPayment = !empty($params['separate_membership_payment']);
     $pledgeID = !empty($params['pledge_id']) ? $params['pledge_id'] : $form->_values['pledge_id'] ?? NULL;
-    if (!$isSeparateMembershipPayment && !empty($form->_values['pledge_block_id']) &&
-      (!empty($params['is_pledge']) || $pledgeID)) {
+    if ((!empty($params['is_pledge']) || $pledgeID)) {
       $isPledge = TRUE;
     }
     else {
diff --git a/civicrm/CRM/Contribute/Form/ContributionCharts.php b/civicrm/CRM/Contribute/Form/ContributionCharts.php
index 33822e5063eb4dea10915947d9f8830f0bd66c0a..5b2005f7464186e9cd1dfa89799ee1113ed8c166 100644
--- a/civicrm/CRM/Contribute/Form/ContributionCharts.php
+++ b/civicrm/CRM/Contribute/Form/ContributionCharts.php
@@ -118,7 +118,7 @@ class CRM_Contribute_Form_ContributionCharts extends CRM_Core_Form {
     $chartInfoYearly = CRM_Contribute_BAO_Contribution_Utils::contributionChartYearly();
 
     //get the years.
-    $this->_years = $chartInfoYearly['By Year'];
+    $this->_years = $chartInfoYearly['By Year'] ?? [];
     $hasContributions = FALSE;
     if (is_array($chartInfoYearly)) {
       $hasContributions = TRUE;
diff --git a/civicrm/CRM/Contribute/Form/Task/Invoice.php b/civicrm/CRM/Contribute/Form/Task/Invoice.php
index 0451bd6c8936da700d7e4097230e8af437893a67..94c6433252cbe50e308e3dd758c2c2c53e5fde7a 100644
--- a/civicrm/CRM/Contribute/Form/Task/Invoice.php
+++ b/civicrm/CRM/Contribute/Form/Task/Invoice.php
@@ -15,6 +15,7 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\Contact;
 use Civi\Api4\Email;
 
 /**
@@ -207,12 +208,25 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
    *   Associated array of submitted values.
    * @param array $contactIds
    *   Contact Id.
+   *
+   * @throws \API_Exception
    */
   public static function printPDF($contribIDs, &$params, $contactIds) {
     // get all the details needed to generate a invoice
     $messageInvoice = [];
+    $isCreatePDF = FALSE;
+    if (!empty($params['output']) &&
+      ($params['output'] === 'pdf_invoice' || $params['output'] === 'pdf_receipt')
+    ) {
+      $isCreatePDF = TRUE;
+    }
+
     $invoiceTemplate = CRM_Core_Smarty::singleton();
-    $invoiceElements = CRM_Contribute_Form_Task_PDF::getElements($contribIDs, $params, $contactIds);
+    $invoiceElements = CRM_Contribute_Form_Task_PDF::getElements($contribIDs, $params, $contactIds, $isCreatePDF);
+    $elementDetails = $invoiceElements['details'];
+    $excludedContactIDs = $invoiceElements['excludeContactIds'];
+    $suppressedEmails = $isCreatePDF ? NULL : $invoiceElements['suppressedEmails'];
+    unset($invoiceElements);
 
     // gives the status id when contribution status is 'Refunded'
     $contributionStatusID = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name');
@@ -221,36 +235,23 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
     $pendingStatusId = CRM_Utils_Array::key('Pending', $contributionStatusID);
     $pdfFormat = CRM_Core_BAO_PdfFormat::getByName('default_invoice_pdf_format');
 
-    foreach ($invoiceElements['details'] as $contributionID => $detail) {
+    foreach ($elementDetails as $contributionID => $detail) {
       $input = $ids = [];
-      if (in_array($detail['contact'], $invoiceElements['excludeContactIds'])) {
+      if (in_array($detail['contact'], $excludedContactIDs)) {
         continue;
       }
 
-      $input['component'] = $detail['component'];
-
-      $ids['contact'] = $detail['contact'];
-      $ids['contribution'] = $contributionID;
-      $ids['contributionRecur'] = NULL;
-      $ids['contributionPage'] = NULL;
-      $ids['membership'] = $detail['membership'] ?? NULL;
-      $ids['participant'] = $detail['participant'] ?? NULL;
-      $ids['event'] = $detail['event'] ?? NULL;
+      $component = $detail['component'];
+      $eventID = $detail['event'] ?? NULL;
 
       $contribution = new CRM_Contribute_BAO_Contribution();
       $contribution->id = $contributionID;
-      $contribution->fetch();
-      // @todo this is only used now to load the event title, it causes an enotice
-      // and calls deprecated code. If we decide a contribution title is a
-      // 'real thing' then we should create a token.
-      $ids = array_merge(CRM_Contribute_BAO_Contribution::getComponentDetails($contributionID), $ids);
-      $contribution->loadRelatedObjects($input, $ids);
+      $contribution->find(TRUE);
 
       $input['amount'] = $contribution->total_amount;
       $input['invoice_id'] = $contribution->invoice_id;
       $input['receive_date'] = $contribution->receive_date;
       $input['contribution_status_id'] = $contribution->contribution_status_id;
-      $input['organization_name'] = $contribution->_relatedObjects['contact']->organization_name;
 
       // Fetch the billing address. getValues should prioritize the billing
       // address, otherwise will return the primary address.
@@ -299,22 +300,22 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       // to email the invoice
       $mailDetails = [];
       $values = [];
-      if ($contribution->_component == 'event') {
+      if ($component === 'event') {
         $daoName = 'CRM_Event_DAO_Event';
-        $pageId = $contribution->_relatedObjects['event']->id;
+        $pageId = $eventID;
         $mailElements = [
           'title',
           'confirm_from_name',
           'confirm_from_email',
         ];
         CRM_Core_DAO::commonRetrieveAll($daoName, 'id', $pageId, $mailDetails, $mailElements);
-        $values['title'] = $mailDetails[$contribution->_relatedObjects['event']->id]['title'] ?? NULL;
-        $values['confirm_from_name'] = $mailDetails[$contribution->_relatedObjects['event']->id]['confirm_from_name'] ?? NULL;
-        $values['confirm_from_email'] = $mailDetails[$contribution->_relatedObjects['event']->id]['confirm_from_email'] ?? NULL;
+        $values['title'] = $mailDetails[$eventID]['title'] ?? NULL;
+        $values['confirm_from_name'] = $mailDetails[$eventID]['confirm_from_name'] ?? NULL;
+        $values['confirm_from_email'] = $mailDetails[$eventID]['confirm_from_email'] ?? NULL;
 
-        $title = $mailDetails[$contribution->_relatedObjects['event']->id]['title'] ?? NULL;
+        $title = $mailDetails[$eventID]['title'] ?? NULL;
       }
-      elseif ($contribution->_component == 'contribute') {
+      elseif ($component === 'contribute') {
         $daoName = 'CRM_Contribute_DAO_ContributionPage';
         $pageId = $contribution->contribution_page_id;
         $mailElements = [
@@ -365,7 +366,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
         // @todo is a 'title' a real thing - is so, it should be token.
         'title' => $title,
         // @todo used in the subject but analysis of ^^ would remove
-        'component' => $input['component'],
+        'component' => $component,
         // @todo not used in shipped template for a very long time, if ever, remove
         // token is available.
         'id' => $contribution->id,
@@ -384,7 +385,9 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
         'invoice_date' => $invoiceDate,
         'dueDate' => $dueDate,
         'notes' => $invoiceNotes,
+        // @todo not used in shipped template from 5.53
         'lineItem' => $lineItem,
+        // @todo not used in shipped template from 5.53
         'dataArray' => $dataArray,
         // @todo not used in shipped template from 5.52
         'refundedStatusId' => $refundedStatusId,
@@ -409,10 +412,9 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
         // Kept for backwards compatibility
         'stateProvinceAbbreviation' => $billingAddress['state_province_abbreviation'] ?? NULL,
         'country' => $billingAddress['country'] ?? NULL,
-        // @todo not used in shipped template from 5.52
-        'is_pay_later' => $contribution->is_pay_later,
         // @todo not used in shipped template from 5.52 - from here down
-        'organization_name' => $contribution->_relatedObjects['contact']->organization_name,
+        'is_pay_later' => $contribution->is_pay_later,
+        'organization_name' => Contact::get(FALSE)->addSelect('organization_name')->addWhere('id', '=', (int) $contribution->contact_id)->execute()->first()['organization_name'],
         'domain_organization' => $domain->name,
         'domain_street_address' => CRM_Utils_Array::value('street_address', CRM_Utils_Array::value('1', $locationDefaults['address'])),
         'domain_supplemental_address_1' => CRM_Utils_Array::value('supplemental_address_1', CRM_Utils_Array::value('1', $locationDefaults['address'])),
@@ -470,7 +472,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       }
 
       // condition to check for download PDF Invoice or email Invoice
-      if ($invoiceElements['createPdf']) {
+      if ($isCreatePDF) {
         [$sent, $subject, $message, $html] = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
         if (isset($params['forPage'])) {
           return $html;
@@ -489,10 +491,10 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
           }
         }
       }
-      elseif ($contribution->_component == 'contribute') {
+      elseif ($component === 'contribute') {
         $email = CRM_Contact_BAO_Contact::getPrimaryEmail($contribution->contact_id);
 
-        $sendTemplateParams['tplParams'] = array_merge($tplParams, ['email_comment' => $invoiceElements['params']['email_comment']]);
+        $sendTemplateParams['tplParams'] = array_merge($tplParams, ['email_comment' => $params['email_comment']]);
         $sendTemplateParams['from'] = $fromEmailAddress;
         $sendTemplateParams['toEmail'] = $email;
         $sendTemplateParams['cc'] = $values['cc_receipt'] ?? NULL;
@@ -504,10 +506,10 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
         $fileName = self::putFile($html, $pdfFileName, $pdfFormat);
         self::addActivities($subject, $contribution->contact_id, $fileName, $params, $contribution->id);
       }
-      elseif ($contribution->_component == 'event') {
+      elseif ($component == 'event') {
         $email = CRM_Contact_BAO_Contact::getPrimaryEmail($contribution->contact_id);
 
-        $sendTemplateParams['tplParams'] = array_merge($tplParams, ['email_comment' => $invoiceElements['params']['email_comment']]);
+        $sendTemplateParams['tplParams'] = array_merge($tplParams, ['email_comment' => $params['email_comment']]);
         $sendTemplateParams['from'] = $fromEmailAddress;
         $sendTemplateParams['toEmail'] = $email;
         $sendTemplateParams['cc'] = $values['cc_confirm'] ?? NULL;
@@ -521,7 +523,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       $invoiceTemplate->clearTemplateVars();
     }
 
-    if ($invoiceElements['createPdf']) {
+    if ($isCreatePDF) {
       if (isset($params['forPage'])) {
         return $html;
       }
@@ -535,8 +537,8 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task {
       }
     }
     else {
-      if ($invoiceElements['suppressedEmails']) {
-        $status = ts('Email was NOT sent to %1 contacts (no email address on file, or communication preferences specify DO NOT EMAIL, or contact is deceased).', [1 => $invoiceElements['suppressedEmails']]);
+      if ($suppressedEmails) {
+        $status = ts('Email was NOT sent to %1 contacts (no email address on file, or communication preferences specify DO NOT EMAIL, or contact is deceased).', [1 => $suppressedEmails]);
         $msgTitle = ts('Email Error');
         $msgType = 'error';
       }
diff --git a/civicrm/CRM/Contribute/Form/Task/PDF.php b/civicrm/CRM/Contribute/Form/Task/PDF.php
index d81f5d7deb31330d5f198fb40e8e43e16a72f224..fe8cf341368a7a45bee3fd9b9f8918d381998538 100644
--- a/civicrm/CRM/Contribute/Form/Task/PDF.php
+++ b/civicrm/CRM/Contribute/Form/Task/PDF.php
@@ -127,12 +127,22 @@ AND    {$this->_componentClause}";
     $template = CRM_Core_Smarty::singleton();
 
     $params = $this->controller->exportValues($this->_name);
-    $elements = self::getElements($this->_contributionIds, $params, $this->_contactIds);
+    $isCreatePDF = FALSE;
+    if (!empty($params['output']) &&
+      ($params['output'] === 'pdf_invoice' || $params['output'] === 'pdf_receipt')
+    ) {
+      $isCreatePDF = TRUE;
+    }
+    $elements = self::getElements($this->_contributionIds, $params, $this->_contactIds, $isCreatePDF);
+    $elementDetails = $elements['details'];
+    $excludedContactIDs = $elements['excludeContactIds'];
+    $suppressedEmails = $elements['suppressedEmails'];
 
-    foreach ($elements['details'] as $contribID => $detail) {
+    unset($elements);
+    foreach ($elementDetails as $contribID => $detail) {
       $input = $ids = [];
 
-      if (in_array($detail['contact'], $elements['excludeContactIds'])) {
+      if (in_array($detail['contact'], $excludedContactIDs)) {
         continue;
       }
       // @todo - CRM_Contribute_BAO_Contribution::sendMail re-does pretty much everything between here & when we call it.
@@ -167,7 +177,7 @@ AND    {$this->_componentClause}";
             1 => [$contribution->trxn_id, 'String'],
           ]);
 
-      if (isset($params['from_email_address']) && !$elements['createPdf']) {
+      if (isset($params['from_email_address']) && !$isCreatePDF) {
         // If a logged in user from email is used rather than a domain wide from email address
         // the from_email_address params key will be numerical and we need to convert it to be
         // in normal from email format
@@ -178,7 +188,7 @@ AND    {$this->_componentClause}";
         $input['receipt_from_name'] = str_replace('"', '', $fromDetails[0]);
       }
 
-      $mail = CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $contribID, $elements['createPdf']);
+      $mail = CRM_Contribute_BAO_Contribution::sendMail($input, $ids, $contribID, $isCreatePDF);
 
       if (!empty($mail['html'])) {
         $message[] = $mail['html'];
@@ -191,17 +201,17 @@ AND    {$this->_componentClause}";
       $template->clearTemplateVars();
     }
 
-    if ($elements['createPdf']) {
+    if ($isCreatePDF) {
       CRM_Utils_PDF_Utils::html2pdf($message,
         'receipt.pdf',
         FALSE,
-        $elements['params']['pdf_format_id']
+        $params['pdf_format_id']
       );
       CRM_Utils_System::civiExit();
     }
     else {
-      if ($elements['suppressedEmails']) {
-        $status = ts('Email was NOT sent to %1 contacts (no email address on file, or communication preferences specify DO NOT EMAIL, or contact is deceased).', [1 => $elements['suppressedEmails']]);
+      if ($suppressedEmails) {
+        $status = ts('Email was NOT sent to %1 contacts (no email address on file, or communication preferences specify DO NOT EMAIL, or contact is deceased).', [1 => $suppressedEmails]);
         $msgTitle = ts('Email Error');
         $msgType = 'error';
       }
@@ -217,39 +227,24 @@ AND    {$this->_componentClause}";
   /**
    * Declaration of common variables for Invoice and PDF.
    *
-   *
    * @param array $contribIds
    *   Contribution Id.
    * @param array $params
    *   Parameter for pdf or email invoices.
-   * @param array $contactIds
+   * @param array|int $contactIds
    *   Contact Id.
+   * @param bool $isCreatePDF
    *
    * @return array
    *   array of common elements
    *
    * @throws \CiviCRM_API3_Exception
    */
-  public static function getElements($contribIds, $params, $contactIds) {
+  public static function getElements(array $contribIds, array $params, $contactIds, bool $isCreatePDF): array {
     $pdfElements = [];
-
-    $pdfElements['contribIDs'] = implode(',', $contribIds);
-
-    $pdfElements['details'] = self::getDetails($pdfElements['contribIDs']);
-
-    $pdfElements['baseIPN'] = new CRM_Core_Payment_BaseIPN();
-
-    $pdfElements['params'] = $params;
-
-    $pdfElements['createPdf'] = FALSE;
-    if (!empty($pdfElements['params']['output']) &&
-      ($pdfElements['params']['output'] === 'pdf_invoice' || $pdfElements['params']['output'] === 'pdf_receipt')
-    ) {
-      $pdfElements['createPdf'] = TRUE;
-    }
-
+    $pdfElements['details'] = self::getDetails(implode(',', $contribIds));
     $excludeContactIds = [];
-    if (!$pdfElements['createPdf']) {
+    if (!$isCreatePDF) {
       $contactDetails = civicrm_api3('Contact', 'get', [
         'return' => ['email', 'do_not_email', 'is_deceased', 'on_hold'],
         'id' => ['IN' => $contactIds],
diff --git a/civicrm/CRM/Contribute/Form/UpdateBilling.php b/civicrm/CRM/Contribute/Form/UpdateBilling.php
index 6df7ba092af13bab47520712872b5bcbd5e72bce..272a7ed2341e001ca551a461b292ab47801bb95c 100644
--- a/civicrm/CRM/Contribute/Form/UpdateBilling.php
+++ b/civicrm/CRM/Contribute/Form/UpdateBilling.php
@@ -323,7 +323,7 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution
 
       $sendTemplateParams = array(
         'groupName' => $this->getSubscriptionDetails()->membership_id ? 'msg_tpl_workflow_membership' : 'msg_tpl_workflow_contribution',
-        'valueName' => $this->getSubscriptionDetails()->membership_id ? 'membership_autorenew_billing' : 'contribution_recurring_billing',
+        'workflow' => $this->getSubscriptionDetails()->membership_id ? 'membership_autorenew_billing' : 'contribution_recurring_billing',
         'contactId' => $this->getSubscriptionDetails()->contact_id,
         'tplParams' => $tplParams,
         'isTest' => $this->getSubscriptionDetails()->is_test,
diff --git a/civicrm/CRM/Contribute/Form/UpdateSubscription.php b/civicrm/CRM/Contribute/Form/UpdateSubscription.php
index ea02ea7d633a75790e5f93eae90a8f5b9260ebe5..42f956c33d0a6d1af0c441fe3f89785bf644d731 100644
--- a/civicrm/CRM/Contribute/Form/UpdateSubscription.php
+++ b/civicrm/CRM/Contribute/Form/UpdateSubscription.php
@@ -303,7 +303,7 @@ class CRM_Contribute_Form_UpdateSubscription extends CRM_Contribute_Form_Contrib
 
         $sendTemplateParams = [
           'groupName' => 'msg_tpl_workflow_contribution',
-          'valueName' => 'contribution_recurring_edit',
+          'workflow' => 'contribution_recurring_edit',
           'contactId' => $contactID,
           'tplParams' => ['receipt_from_email' => $receiptFrom],
           'isTest' => $this->_subscriptionDetails->is_test,
diff --git a/civicrm/CRM/Contribute/Import/Field.php b/civicrm/CRM/Contribute/Import/Field.php
deleted file mode 100644
index cd69b469a552c750814d5459e62cc7cb31254b45..0000000000000000000000000000000000000000
--- a/civicrm/CRM/Contribute/Import/Field.php
+++ /dev/null
@@ -1,206 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
- */
-
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC https://civicrm.org/licensing
- */
-class CRM_Contribute_Import_Field {
-
-  /**
-   * #@+
-   * @var string
-   */
-
-  /**
-   * Name of the field
-   * @var string
-   */
-  public $_name;
-
-  /**
-   * Title of the field to be used in display
-   * @var string
-   */
-  public $_title;
-
-  /**
-   * Type of field
-   * @var int
-   */
-  public $_type;
-
-  /**
-   * Is this field required.
-   *
-   * @var bool
-   */
-  public $_required;
-
-  /**
-   * Data to be carried for use by a derived class
-   * @var object
-   */
-  public $_payload;
-
-  /**
-   * Regexp to match the CSV header of this column/field
-   * @var string
-   */
-  public $_headerPattern;
-
-  /**
-   * Regexp to match the pattern of data from various column/fields
-   * @var string
-   */
-  public $_dataPattern;
-
-  /**
-   * Value of this field
-   * @var string|null
-   */
-  public $_value;
-
-  /**
-   * This is soft credit field
-   * @var string
-   */
-  public $_softCreditField;
-
-  /**
-   * @param string $name
-   * @param string $title
-   * @param int $type
-   * @param string $headerPattern
-   * @param string $dataPattern
-   * @param null $softCreditField
-   */
-  public function __construct($name, $title, $type = CRM_Utils_Type::T_INT, $headerPattern = '//', $dataPattern = '//', $softCreditField = NULL) {
-    $this->_name = $name;
-    $this->_title = $title;
-    $this->_type = $type;
-    $this->_headerPattern = $headerPattern;
-    $this->_dataPattern = $dataPattern;
-    $this->_softCreditField = $softCreditField;
-    $this->_value = NULL;
-  }
-
-  public function resetValue() {
-    $this->_value = NULL;
-  }
-
-  /**
-   * Set a value.
-   *
-   * The value is in string format. Convert the value to the type of this field
-   * and set the field value with the appropriate type
-   *
-   * @param string $value
-   */
-  public function setValue($value) {
-    $this->_value = $value;
-  }
-
-  /**
-   * Validate a field.
-   *
-   * @return bool
-   */
-  public function validate() {
-
-    if (CRM_Utils_System::isNull($this->_value)) {
-      return TRUE;
-    }
-
-    switch ($this->_name) {
-      case 'contact_id':
-        // note: we validate existence of the contact in API, upon
-        // insert (it would be too costly to do a db call here)
-        return CRM_Utils_Rule::integer($this->_value);
-
-      case 'receive_date':
-      case 'cancel_date':
-      case 'receipt_date':
-      case 'thankyou_date':
-        return CRM_Utils_Rule::date($this->_value);
-
-      case 'non_deductible_amount':
-      case 'total_amount':
-      case 'fee_amount':
-      case 'net_amount':
-        return CRM_Utils_Rule::money($this->_value);
-
-      case 'trxn_id':
-        static $seenTrxnIds = [];
-        if (in_array($this->_value, $seenTrxnIds)) {
-          return FALSE;
-        }
-        elseif ($this->_value) {
-          $seenTrxnIds[] = $this->_value;
-          return TRUE;
-        }
-        else {
-          $this->_value = NULL;
-          return TRUE;
-        }
-        break;
-
-      case 'currency':
-        return CRM_Utils_Rule::currencyCode($this->_value);
-
-      case 'financial_type':
-        static $contributionTypes = NULL;
-        if (!$contributionTypes) {
-          $contributionTypes = CRM_Contribute_PseudoConstant::financialType();
-        }
-        if (in_array($this->_value, $contributionTypes)) {
-          return TRUE;
-        }
-        else {
-          return FALSE;
-        }
-        break;
-
-      case 'payment_instrument':
-        static $paymentInstruments = NULL;
-        if (!$paymentInstruments) {
-          $paymentInstruments = CRM_Contribute_PseudoConstant::paymentInstrument();
-        }
-        if (in_array($this->_value, $paymentInstruments)) {
-          return TRUE;
-        }
-        else {
-          return FALSE;
-        }
-        break;
-
-      default:
-        break;
-    }
-
-    // check whether that's a valid custom field id
-    // and if so, check the contents' validity
-    if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($this->_name)) {
-      static $customFields = NULL;
-      if (!$customFields) {
-        $customFields = CRM_Core_BAO_CustomField::getFields('Contribution');
-      }
-      if (!array_key_exists($customFieldID, $customFields)) {
-        return FALSE;
-      }
-      return CRM_Core_BAO_CustomValue::typecheck($customFields[$customFieldID]['data_type'], $this->_value);
-    }
-
-    return TRUE;
-  }
-
-}
diff --git a/civicrm/CRM/Contribute/Import/Form/MapField.php b/civicrm/CRM/Contribute/Import/Form/MapField.php
index 419d91dd30a582915b815eae87a3c497ec5c4a6e..9d1e069fa8eb348163d39047360bf126ccbd3d75 100644
--- a/civicrm/CRM/Contribute/Import/Form/MapField.php
+++ b/civicrm/CRM/Contribute/Import/Form/MapField.php
@@ -20,54 +20,6 @@
  */
 class CRM_Contribute_Import_Form_MapField extends CRM_Import_Form_MapField {
 
-  /**
-   * Check if required fields are present.
-   *
-   * @param CRM_Contribute_Import_Form_MapField $self
-   * @param string $contactORContributionId
-   * @param array $importKeys
-   * @param array $errors
-   * @param int $weightSum
-   * @param int $threshold
-   * @param string $fieldMessage
-   *
-   * @return array
-   */
-  protected static function checkRequiredFields($self, string $contactORContributionId, array $importKeys, array $errors, int $weightSum, $threshold, string $fieldMessage): array {
-    // FIXME: should use the schema titles, not redeclare them
-    $requiredFields = [
-      $contactORContributionId == 'contribution_id' ? 'contribution_id' : 'contribution_contact_id' => $contactORContributionId == 'contribution_id' ? ts('Contribution ID') : ts('Contact ID'),
-      'total_amount' => ts('Total Amount'),
-      'financial_type_id' => ts('Financial Type'),
-    ];
-
-    foreach ($requiredFields as $field => $title) {
-      if (!in_array($field, $importKeys)) {
-        if (empty($errors['_qf_default'])) {
-          $errors['_qf_default'] = '';
-        }
-        if ($field == $contactORContributionId) {
-          if (!($weightSum >= $threshold || in_array('external_identifier', $importKeys)) &&
-            !$self->isUpdateExisting()
-          ) {
-            $errors['_qf_default'] .= ts('Missing required contact matching fields.') . " $fieldMessage " . ts('(Sum of all weights should be greater than or equal to threshold: %1).', [1 => $threshold]) . '<br />';
-          }
-          elseif ($self->isUpdateExisting() &&
-            !(in_array('invoice_id', $importKeys) || in_array('trxn_id', $importKeys) ||
-              in_array('contribution_id', $importKeys)
-            )
-          ) {
-            $errors['_qf_default'] .= ts('Invoice ID or Transaction ID or Contribution ID are required to match to the existing contribution records in Update mode.') . '<br />';
-          }
-        }
-        else {
-          $errors['_qf_default'] .= ts('Missing required field: %1', [1 => $title]) . '<br />';
-        }
-      }
-    }
-    return $errors;
-  }
-
   /**
    * Set variables up before form is built.
    */
@@ -78,29 +30,16 @@ class CRM_Contribute_Import_Form_MapField extends CRM_Import_Form_MapField {
     //CRM-2219 removing other required fields since for updation only
     //invoice id or trxn id or contribution id is required.
     if ($this->isUpdateExisting()) {
-      $remove = [
-        'contribution_contact_id',
-        'email',
-        'first_name',
-        'last_name',
-        'external_identifier',
-      ];
-      foreach ($remove as $value) {
-        unset($this->_mapperFields[$value]);
-      }
-
       //modify field title only for update mode. CRM-3245
       foreach ([
         'contribution_id',
         'invoice_id',
         'trxn_id',
       ] as $key) {
-        $this->_mapperFields[$key] .= ' (match to contribution record)';
         $highlightedFields[] = $key;
       }
     }
     elseif ($this->isSkipExisting()) {
-      unset($this->_mapperFields['contribution_id']);
       $highlightedFieldsArray = [
         'contribution_contact_id',
         'email',
@@ -113,153 +52,95 @@ class CRM_Contribute_Import_Form_MapField extends CRM_Import_Form_MapField {
       }
     }
 
-    // modify field title for contribution status
-    $this->_mapperFields['contribution_status_id'] = ts('Contribution Status');
-
     $this->assign('highlightedFields', $highlightedFields);
   }
 
+  /**
+   * Should contact fields be filtered which determining fields to show.
+   *
+   * This applies to Contribution import as we put all contact fields in the metadata
+   * but only present those used for a match - but will permit create via LeXIM.
+   *
+   * @return bool
+   */
+  protected function isFilterContactFields() : bool {
+    return TRUE;
+  }
+
   /**
    * Build the form object.
    *
    * @throws \CiviCRM_API3_Exception
    */
-  public function buildQuickForm() {
-    $savedMappingID = $this->getSubmittedValue('savedMapping');
-
-    $this->buildSavedMappingFields($savedMappingID);
+  public function buildQuickForm(): void {
+    $this->addSavedMappingFields();
 
     $this->addFormRule([
       'CRM_Contribute_Import_Form_MapField',
       'formRule',
     ], $this);
 
-    //-------- end of saved mapping stuff ---------
+    $selectColumn1 = $this->getAvailableFields();
 
-    $defaults = [];
-    $mapperKeys = array_keys($this->_mapperFields);
-    $hasHeaders = $this->getSubmittedValue('skipColumnHeader');
-    $headerPatterns = $this->getHeaderPatterns();
-    $dataPatterns = $this->getDataPatterns();
-    $mapperKeysValues = $this->getSubmittedValue('mapper');
-    $columnHeaders = $this->getColumnHeaders();
-    $fieldMappings = $this->getFieldMappings();
-
-    /* Initialize all field usages to false */
-    foreach ($mapperKeys as $key) {
-      $this->_fieldUsed[$key] = FALSE;
+    $selectColumn2 = [];
+    $softCreditTypes = CRM_Core_OptionGroup::values('soft_credit_type');
+    foreach (array_keys($selectColumn1) as $fieldName) {
+      if (strpos($fieldName, 'soft_credit__contact__') === 0) {
+        $selectColumn2[$fieldName] = $softCreditTypes;
+      }
     }
-    $sel1 = $this->_mapperFields;
 
-    if (!$this->isUpdateExisting()) {
-      unset($sel1['id']);
-      unset($sel1['contribution_id']);
+    foreach ($this->getColumnHeaders() as $i => $columnHeader) {
+      $sel = &$this->addElement('hierselect', "mapper[$i]", ts('Mapper for Field %1', [1 => $i]), NULL);
+      $sel->setOptions([$selectColumn1, $selectColumn2]);
     }
+    $defaults = $this->getDefaults();
+    $this->setDefaults($defaults);
 
-    $softCreditFields['contact_id'] = ts('Contact ID');
-    $softCreditFields['external_identifier'] = ts('External ID');
-    $softCreditFields['email'] = ts('Email');
-
-    $sel2['soft_credit'] = $softCreditFields;
-    $sel3['soft_credit']['contact_id'] = $sel3['soft_credit']['external_identifier'] = $sel3['soft_credit']['email'] = CRM_Core_OptionGroup::values('soft_credit_type');
-    $sel4 = NULL;
-
-    // end of soft credit section
     $js = "<script type='text/javascript'>\n";
-    $formName = 'document.forms.' . $this->_name;
-
-    //used to warn for mismatch column count or mismatch mapping
-    $warning = 0;
-
-    foreach ($columnHeaders as $i => $columnHeader) {
-      $sel = &$this->addElement('hierselect', "mapper[$i]", ts('Mapper for Field %1', [1 => $i]), NULL);
-      $jsSet = FALSE;
-      if ($this->getSubmittedValue('savedMapping')) {
-        // $mappingContactType is not really a contact type - the data has been mangled
-        // into that field - see https://lab.civicrm.org/dev/core/-/issues/654
-        [$mappingName, $mappingContactType] = CRM_Core_BAO_Mapping::getMappingFields($savedMappingID);
-        $fieldMapping = $fieldMappings[$i] ?? NULL;
-        $mappingContactType = $mappingContactType[1];
-        if (isset($fieldMappings[$i])) {
-          if ($fieldMapping['name'] !== ts('do_not_import')) {
-            $softField = $mappingContactType[$i] ?? '';
-
-            if (!$softField) {
-              $js .= "{$formName}['mapper[$i][1]'].style.display = 'none';\n";
-            }
-
-            $js .= "{$formName}['mapper[$i][2]'].style.display = 'none';\n";
-            $js .= "{$formName}['mapper[$i][3]'].style.display = 'none';\n";
-            $defaults["mapper[$i]"] = [
-              $fieldMapping['name'],
-              $softField,
-              // Since the soft credit type id is not stored we can't load it here.
-              '',
-            ];
-            $jsSet = TRUE;
-          }
-          else {
-            $defaults["mapper[$i]"] = [];
-          }
-          if (!$jsSet) {
-            for ($k = 1; $k < 4; $k++) {
-              $js .= "{$formName}['mapper[$i][$k]'].style.display = 'none';\n";
-            }
-          }
-        }
-        else {
-          // this load section to help mapping if we ran out of saved columns when doing Load Mapping
-          $js .= "swapOptions($formName, 'mapper[$i]', 0, 3, 'hs_mapper_0_');\n";
-
-          if ($hasHeaders) {
-            $defaults["mapper[$i]"] = [$this->defaultFromHeader($columnHeader, $headerPatterns)];
-          }
-          else {
-            $defaults["mapper[$i]"] = [$this->defaultFromData($dataPatterns, $i)];
-          }
-        }
-        //end of load mapping
-      }
-      else {
-        $js .= "swapOptions($formName, 'mapper[$i]', 0, 3, 'hs_mapper_0_');\n";
-        if ($hasHeaders) {
-          // do array search first to see if has mapped key
-          $columnKey = array_search($columnHeader, $this->_mapperFields);
-          if (isset($this->_fieldUsed[$columnKey])) {
-            $defaults["mapper[$i]"] = $columnKey;
-            $this->_fieldUsed[$key] = TRUE;
-          }
-          else {
-            // Infer the default from the column names if we have them
-            $defaults["mapper[$i]"] = [
-              $this->defaultFromHeader($columnHeader, $headerPatterns),
-              0,
-            ];
-          }
-        }
-        else {
-          // Otherwise guess the default from the form of the data
-          $defaults["mapper[$i]"] = [
-            $this->defaultFromData($dataPatterns, $i),
-            0,
-          ];
-        }
-        if (!empty($mapperKeysValues) && ($mapperKeysValues[$i][0] ?? NULL) === 'soft_credit') {
-          $softCreditField = $mapperKeysValues[$i][1];
-          $softCreditTypeID = $mapperKeysValues[$i][2];
-          $js .= "cj('#mapper_" . $i . "_1').val($softCreditField);\n";
-          $js .= "cj('#mapper_" . $i . "_2').val($softCreditTypeID);\n";
-        }
-      }
-      $sel->setOptions([$sel1, $sel2, $sel3, $sel4]);
+    foreach ($defaults as $index => $default) {
+      //  e.g swapOptions(document.forms.MapField, 'mapper[0]', 0, 3, 'hs_mapper_0_');
+      // where 0 is the highest populated field number in the array and 3 is the maximum.
+      $js .= "swapOptions(document.forms.MapField, '$index', " . (array_key_last(array_filter($default)) ?: 0) . ", 2, 'hs_mapper_0_');\n";
     }
     $js .= "</script>\n";
     $this->assign('initHideBoxes', $js);
-    $this->setDefaults($defaults);
 
     $this->addFormButtons();
   }
 
+  /**
+   * Get the fields available for import selection.
+   *
+   * @return array
+   *   e.g ['first_name' => 'First Name', 'last_name' => 'Last Name'....
+   */
+  protected function getAvailableFields(): array {
+    $return = [];
+    foreach ($this->getFields() as $name => $field) {
+      if ($name === 'id' && $this->isSkipExisting()) {
+        // Duplicates are being skipped so id matching is not available.
+        continue;
+      }
+      if ($this->isUpdateExisting() && in_array($name, ['contribution_contact_id', 'email', 'first_name', 'last_name', 'external_identifier', 'email_primary.email'], TRUE)) {
+        continue;
+      }
+      if ($this->isUpdateExisting() && in_array($name, ['contribution_id', 'invoice_id', 'trxn_id'], TRUE)) {
+        $field['title'] .= (' ' . ts('(match to contribution record)'));
+      }
+      // Swap out dots for double underscores so as not to break the quick form js.
+      // We swap this back on postProcess.
+      $name = str_replace('.', '__', $name);
+      if (($field['entity'] ?? '') === 'Contact' && $this->isFilterContactFields() && empty($field['match_rule'])) {
+        // Filter out metadata that is intended for create & update - this is not available in the quick-form
+        // but is now loaded in the Parser for the LexIM variant.
+        continue;
+      }
+      $return[$name] = $field['html']['label'] ?? $field['title'];
+    }
+    return $return;
+  }
+
   /**
    * Global validation rules for the form.
    *
@@ -269,90 +150,28 @@ class CRM_Contribute_Import_Form_MapField extends CRM_Import_Form_MapField {
    * @param $files
    * @param self $self
    *
-   * @return array
+   * @return array|true
    *   list of errors to be posted back to the form
    */
   public static function formRule($fields, $files, $self) {
-    $errors = [];
-    $fieldMessage = NULL;
-    $contactORContributionId = $self->isUpdateExisting() ? 'contribution_id' : 'contribution_contact_id';
-    if (!array_key_exists('savedMapping', $fields)) {
-      $importKeys = [];
-      foreach ($fields['mapper'] as $mapperPart) {
-        $importKeys[] = $mapperPart[0];
-      }
-
-      $params = [
-        'used' => 'Unsupervised',
-        'contact_type' => $self->getContactType(),
-      ];
-      [$ruleFields, $threshold] = CRM_Dedupe_BAO_DedupeRuleGroup::dedupeRuleFieldsWeight($params);
-      $weightSum = 0;
-      foreach ($importKeys as $key => $val) {
-        if (array_key_exists($val, $ruleFields)) {
-          $weightSum += $ruleFields[$val];
-        }
-        if ($val == "soft_credit") {
-          $mapperKey = CRM_Utils_Array::key('soft_credit', $importKeys);
-          if (empty($fields['mapper'][$mapperKey][1])) {
-            if (empty($errors['_qf_default'])) {
-              $errors['_qf_default'] = '';
-            }
-            $errors['_qf_default'] .= ts('Missing required fields: Soft Credit') . '<br />';
-          }
-        }
-      }
-      foreach ($ruleFields as $field => $weight) {
-        $fieldMessage .= ' ' . $field . '(weight ' . $weight . ')';
-      }
-      $errors = self::checkRequiredFields($self, $contactORContributionId, $importKeys, $errors, $weightSum, $threshold, $fieldMessage);
-
-      //at least one field should be mapped during update.
-      if ($self->isUpdateExisting()) {
-        $atleastOne = FALSE;
-        foreach ($self->_mapperFields as $key => $field) {
-          if (in_array($key, $importKeys) &&
-            !in_array($key, [
-              'doNotImport',
-              'contribution_id',
-              'invoice_id',
-              'trxn_id',
-            ])
-          ) {
-            $atleastOne = TRUE;
-            break;
-          }
-        }
-        if (!$atleastOne) {
-          $errors['_qf_default'] .= ts('At least one contribution field needs to be mapped for update during update mode.') . '<br />';
+    $mapperError = [];
+    try {
+      $parser = $self->getParser();
+      $rule = $parser->getDedupeRule($self->getContactType(), $self->getUserJob()['metadata']['entity_configuration']['Contact']['dedupe_rule'] ?? NULL);
+      if (!$self->isUpdateExisting()) {
+        $missingDedupeFields = $self->validateDedupeFieldsSufficientInMapping($rule, $fields['mapper']);
+        if ($missingDedupeFields) {
+          $mapperError[] = $missingDedupeFields;
         }
       }
+      $parser->validateMapping($fields['mapper']);
     }
-
-    if (!empty($fields['saveMapping'])) {
-      $nameField = $fields['saveMappingName'] ?? NULL;
-      if (empty($nameField)) {
-        $errors['saveMappingName'] = ts('Name is required to save Import Mapping');
-      }
-      else {
-        if (CRM_Core_BAO_Mapping::checkMapping($nameField, CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_Mapping', 'mapping_type_id', 'Import Contribution'))) {
-          $errors['saveMappingName'] = ts('Duplicate Import Contribution Mapping Name');
-        }
-      }
+    catch (CRM_Core_Exception $e) {
+      $mapperError[] = $e->getMessage();
     }
-
-    if (!empty($errors)) {
-      if (!empty($errors['saveMappingName'])) {
-        $_flag = 1;
-        $assignError = new CRM_Core_Page();
-        $assignError->assign('mappingDetailsError', $_flag);
-      }
-      if (!empty($errors['_qf_default'])) {
-        CRM_Core_Session::setStatus($errors['_qf_default'], ts("Error"), "error");
-        return $errors;
-      }
+    if (!empty($mapperError)) {
+      return ['_qf_default' => implode('<br/>', $mapperError)];
     }
-
     return TRUE;
   }
 
@@ -377,4 +196,70 @@ class CRM_Contribute_Import_Form_MapField extends CRM_Import_Form_MapField {
     return $this->parser;
   }
 
+  /**
+   * Get default values for the mapping.
+   *
+   * This looks up any saved mapping or derives them from the headers if possible.
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getDefaults(): array {
+    $defaults = [];
+    $fieldMappings = $this->getFieldMappings();
+    foreach ($this->getColumnHeaders() as $i => $columnHeader) {
+      $defaults["mapper[$i]"] = [];
+      if ($this->getSubmittedValue('savedMapping')) {
+        $fieldMapping = $fieldMappings[$i] ?? NULL;
+        if ($fieldMapping) {
+          if ($fieldMapping['name'] !== ts('do_not_import')) {
+            // $mapping contact_type is not really a contact type - the 'about this entity' data has been mangled
+            // into that field - see https://lab.civicrm.org/dev/core/-/issues/654
+            $softCreditTypeID = '';
+            $entityData = json_decode($fieldMapping['contact_type'] ?? '', TRUE);
+            if (!empty($entityData)) {
+              $softCreditTypeID = (int) $entityData['soft_credit']['soft_credit_type_id'];
+            }
+            $defaults["mapper[$i]"] = [$fieldMapping['name'], $softCreditTypeID];
+          }
+        }
+      }
+      elseif ($this->getSubmittedValue('skipColumnHeader')) {
+        $defaults["mapper[$i]"][0] = $this->guessMappingBasedOnColumns($columnHeader);
+      }
+    }
+
+    return $defaults;
+  }
+
+  /**
+   * Validate the the mapped fields contain enough to meet the dedupe rule lookup requirements.
+   *
+   * @param array $rule
+   * @param array $mapper
+   *
+   * @return string|false
+   *   Error string if insufficient.
+   */
+  protected function validateDedupeFieldsSufficientInMapping(array $rule, array $mapper): ?string {
+    $threshold = $rule['threshold'];
+    $ruleFields = $rule['fields'];
+    $weightSum = 0;
+    foreach ($mapper as $mapping) {
+      if ($mapping[0] === 'external_identifier' || $mapping[0] === 'contribution_contact_id' || $mapping[0] === 'contact__id') {
+        // It is enough to have external identifier mapped.
+        $weightSum = $threshold;
+        break;
+      }
+      if (array_key_exists($mapping[0], $ruleFields)) {
+        $weightSum += $ruleFields[$mapping[0]];
+      }
+    }
+    if ($weightSum < $threshold) {
+      return $rule['rule_message'];
+    }
+    return NULL;
+  }
+
 }
diff --git a/civicrm/CRM/Contribute/Import/Parser/Contribution.php b/civicrm/CRM/Contribute/Import/Parser/Contribution.php
index eed146f4cb0d6cf9baa04b183a79b9ac2b781e20..a4b8476844bbbc19ba09fa9247b217133f08fa15 100644
--- a/civicrm/CRM/Contribute/Import/Parser/Contribution.php
+++ b/civicrm/CRM/Contribute/Import/Parser/Contribution.php
@@ -16,15 +16,16 @@
  */
 
 use Civi\Api4\Contact;
+use Civi\Api4\Contribution;
+use Civi\Api4\ContributionSoft;
 use Civi\Api4\Email;
+use Civi\Api4\Note;
 
 /**
  * Class to parse contribution csv files.
  */
 class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
 
-  protected $_mapperKeys;
-
   /**
    * Array of successfully imported contribution id's
    *
@@ -32,15 +33,7 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
    */
   protected $_newContributions;
 
-  /**
-   * Class constructor.
-   *
-   * @param $mapperKeys
-   */
-  public function __construct($mapperKeys = []) {
-    parent::__construct();
-    $this->_mapperKeys = $mapperKeys;
-  }
+  protected $baseEntity = 'Contribution';
 
   /**
    * Get information about the provided job.
@@ -58,6 +51,7 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
         'id' => 'contribution_import',
         'name' => 'contribution_import',
         'label' => ts('Contribution Import'),
+        'entity' => 'Contribution',
       ],
     ];
   }
@@ -133,20 +127,36 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
   /**
    * Get the field mappings for the import.
    *
-   * This is the same format as saved in civicrm_mapping_field except
-   * that location_type_id = 'Primary' rather than empty where relevant.
-   * Also 'im_provider_id' is mapped to the 'real' field name 'provider_id'
-   *
    * @return array
-   * @throws \API_Exception
+   *   Array of arrays with each array representing a row in the datasource.
+   *   The arrays hold the following keys
+   *   - name - field the row maps to
+   *   - entity_data - data about the relevant entity ie ['soft_credit' => ['soft_credit_type_id => 9],
+   *   In addition the following are returned but will be phased out.
+   *   - contact_type - entity_data but json_encoded. Saved to civicrm_mapping_field in contact_type column
+   *   - column_number = this is used for saving to civicrm_field_mapping but
+   *     may be only legacy now?
+   *   - soft_credit_type_id
+   *
+   * @throws \CRM_Core_Exception
    */
   protected function getFieldMappings(): array {
-    $mappedFields = [];
-    foreach ($this->getSubmittedValue('mapper') as $i => $mapperRow) {
-      $mappedField = $this->getMappingFieldFromMapperInput($mapperRow, 0, $i);
-      // Just for clarity since 0 is a pseudo-value
-      unset($mappedField['mapping_id']);
-      $mappedFields[] = $mappedField;
+    $mappedFields = $this->getUserJob()['metadata']['import_mappings'] ?? [];
+    if (empty($mappedFields)) {
+      foreach ($this->getSubmittedValue('mapper') as $i => $mapperRow) {
+        $mappedField = $this->getMappingFieldFromMapperInput($mapperRow, 0, $i);
+        // Just for clarity since 0 is a pseudo-value
+        unset($mappedField['mapping_id']);
+        $mappedFields[] = $mappedField;
+      }
+    }
+    foreach ($mappedFields as $index => $mappedField) {
+      $mappedFields[$index]['column_number'] = 0;
+      // This is the same data as entity_data - it is stored to the database in the contact_type field
+      // slit your eyes & squint while blinking and you can almost read that as entity_type and not
+      // hate it. Otherwise go & whinge on https://lab.civicrm.org/dev/core/-/issues/1172
+      $mappedFields[$index]['contact_type'] = !empty($mappedField['entity_data']) ? json_encode($mappedField['entity_data']) : NULL;
+      $mappedFields[$index]['soft_credit_type_id'] = !empty($mappedField['entity_data']) ? $mappedField['entity_data']['soft_credit']['soft_credit_type_id'] : NULL;
     }
     return $mappedFields;
   }
@@ -157,7 +167,25 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
    * @return array
    */
   public function getRequiredFields(): array {
-    return ['id' => ts('Contribution ID'), ['financial_type_id' => ts('Financial Type'), 'total_amount' => ts('Total Amount')]];
+    return [[$this->getRequiredFieldsForMatch(), $this->getRequiredFieldsForCreate()]];
+  }
+
+  /**
+   * Get required fields to create a contribution.
+   *
+   * @return array
+   */
+  public function getRequiredFieldsForCreate(): array {
+    return ['financial_type_id', 'total_amount'];
+  }
+
+  /**
+   * Get required fields to match a contribution.
+   *
+   * @return array
+   */
+  public function getRequiredFieldsForMatch(): array {
+    return [['id'], ['invoice_id'], ['trxn_id']];
   }
 
   /**
@@ -180,41 +208,62 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
   public function getMappedRow(array $values): array {
     $params = [];
     foreach ($this->getFieldMappings() as $i => $mappedField) {
-      if ($mappedField['name'] === 'do_not_import' || !$mappedField['name']) {
+      if (empty($mappedField['name']) || $mappedField['name'] === 'do_not_import') {
         continue;
       }
-      if (!empty($mappedField['soft_credit_match_field'])) {
-        $params['soft_credit'][$i] = ['soft_credit_type_id' => $mappedField['soft_credit_type_id'], $mappedField['soft_credit_match_field'] => $values[$i]];
+      $fieldSpec = $this->getFieldMetadata($mappedField['name']);
+      $fieldValue = $values[$i];
+      if ($fieldValue === '' && isset($mappedField['default_value'])) {
+        $fieldValue = $mappedField['default_value'];
+      }
+      $entity = $fieldSpec['entity_instance'] ?? ($fieldSpec['entity'] ?? 'Contribution');
+      // If we move this to the parent we can check if the entity config 'supports_multiple'
+      if ($entity === 'SoftCreditContact') {
+        $entityKey = json_encode($mappedField['entity_data']);
+        if (isset($params[$entity][$entityKey])) {
+          $entityInstance = $params[$entity][$entityKey];
+        }
+        else {
+          $entityInstance = (array) ($mappedField['entity_data']['soft_credit']);
+          $entityInstance['Contact']['contact_type'] = $this->getContactTypeForEntity($entity);
+        }
+        $entityInstance['Contact'] = array_merge($entityInstance['Contact'], [$this->getFieldMetadata($mappedField['name'])['name'] => $this->getTransformedFieldValue($mappedField['name'], $fieldValue)]);
+        $params[$entity][$entityKey] = $entityInstance;
       }
       else {
-        $params[$this->getFieldMetadata($mappedField['name'])['name']] = $this->getTransformedFieldValue($mappedField['name'], $values[$i]);
+        if ($entity === 'Contact' && !isset($params[$entity])) {
+          $params[$entity] = [];
+          $params[$entity]['contact_type'] = $this->getContactTypeForEntity($entity) ?: $this->getContactType();
+        }
+        $params[$entity][$this->getFieldMetadata($mappedField['name'])['name']] = $this->getTransformedFieldValue($mappedField['name'], $fieldValue);
       }
     }
     return $params;
   }
 
   /**
-   * @param string $name
-   * @param $title
-   * @param int $type
-   * @param string $headerPattern
-   * @param string $dataPattern
+   * Override parent to cope with params being separated by entity already.
+   *
+   * @todo - make this the parent method...
+   *
+   * @param array $params
+   *
+   * @throws \CRM_Core_Exception
    */
-  public function addField($name, $title, $type = CRM_Utils_Type::T_INT, $headerPattern = '//', $dataPattern = '//') {
-    if (empty($name)) {
-      $this->_fields['doNotImport'] = new CRM_Contribute_Import_Field($name, $title, $type, $headerPattern, $dataPattern);
+  protected function validateParams(array $params): void {
+
+    if (empty($params['Contribution']['id'])) {
+      $this->validateRequiredFields($this->getRequiredFields(), $params['Contribution']);
     }
-    else {
-      $tempField = CRM_Contact_BAO_Contact::importableFields('All', NULL);
-      if (!array_key_exists($name, $tempField)) {
-        $this->_fields[$name] = new CRM_Contribute_Import_Field($name, $title, $type, $headerPattern, $dataPattern);
-      }
-      else {
-        $this->_fields[$name] = new CRM_Contact_Import_Field($name, $title, $type, $headerPattern, $dataPattern,
-          CRM_Utils_Array::value('hasLocationType', $tempField[$name])
-        );
+    $errors = [];
+    foreach ($params as $entity => $values) {
+      foreach ($values as $key => $value) {
+        $errors = array_merge($this->getInvalidValues($value, $key), $errors);
       }
     }
+    if ($errors) {
+      throw new CRM_Core_Exception('Invalid value for field(s) : ' . implode(',', $errors));
+    }
   }
 
   /**
@@ -224,29 +273,47 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
     // Force re-load of user job.
     unset($this->userJob);
     $this->setFieldMetadata();
-    foreach ($this->getImportableFieldsMetadata() as $name => $field) {
-      $this->addField($name, $field['title'], $field['type'], $field['headerPattern'], $field['dataPattern']);
-    }
   }
 
   /**
    * Set field metadata.
    */
-  protected function setFieldMetadata() {
+  protected function setFieldMetadata(): void {
     if (empty($this->importableFieldsMetadata)) {
-      $fields = CRM_Contribute_BAO_Contribution::importableFields($this->getContactType(), FALSE);
-
-      $fields = array_merge($fields,
-        [
-          'soft_credit' => [
-            'title' => ts('Soft Credit'),
-            'softCredit' => TRUE,
-            'headerPattern' => '/Soft Credit/i',
-            'options' => FALSE,
-            'type' => CRM_Utils_Type::T_STRING,
-          ],
-        ]
-      );
+      $fields = ['' => ['title' => ts('- do not import -')]];
+
+      $note = CRM_Core_DAO_Note::import();
+      $tmpFields = CRM_Contribute_DAO_Contribution::import();
+      $tmpContactField = $this->getContactFields($this->getContactType());
+      $tmpFields['contribution_contact_id']['title'] = $tmpFields['contribution_contact_id']['html']['label'] = $tmpFields['contribution_contact_id']['title'] . ' ' . ts('(match to contact)');
+      $tmpFields['contribution_contact_id']['contact_type'] = ['Individual' => 'Individual', 'Household' => 'Household', 'Organization' => 'Organization'];
+      $tmpFields['contribution_contact_id']['match_rule'] = '*';
+      $fields = array_merge($fields, $tmpContactField);
+      $fields = array_merge($fields, $tmpFields);
+      $fields = array_merge($fields, $note);
+      $fields = array_merge($fields, CRM_Core_BAO_CustomField::getFieldsForImport('Contribution'));
+
+      $fields['soft_credit.contact.id'] = [
+        'title' => ts('Soft Credit Contact ID'),
+        'softCredit' => TRUE,
+        'name' => 'id',
+        'entity' => 'Contact',
+        'entity_instance' => 'SoftCreditContact',
+        'entity_prefix' => 'soft_credit.contact.',
+        'options' => FALSE,
+        'type' => CRM_Utils_Type::T_STRING,
+        'contact_type' => ['Individual' => 'Individual', 'Household' => 'Household', 'Organization' => 'Organization'],
+        'match_rule' => '*',
+      ];
+      foreach ($tmpContactField as $contactField) {
+        $fields['soft_credit.contact.' . $contactField['name']] = array_merge($contactField, [
+          'title' => ts('Soft Credit Contact') . ' ' . $contactField['title'],
+          'softCredit' => TRUE,
+          'entity' => 'Contact',
+          'entity_instance' => 'SoftCreditContact',
+          'entity_prefix' => 'soft_credit.contact.',
+        ]);
+      }
 
       // add pledge fields only if its is enabled
       if (CRM_Core_Permission::access('CiviPledge')) {
@@ -255,7 +322,9 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
             'title' => ts('Pledge ID'),
             'headerPattern' => '/Pledge ID/i',
             'name' => 'pledge_id',
-            'entity' => 'Pledge',
+            // This is handled as a contribution field & the goal is
+            // to make it pseudofield on the contribution.
+            'entity' => 'Contribution',
             'type' => CRM_Utils_Type::T_INT,
             'options' => FALSE,
           ],
@@ -263,257 +332,160 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
 
         $fields = array_merge($fields, $pledgeFields);
       }
-      foreach ($fields as $name => $field) {
-        $fields[$name] = array_merge([
-          'type' => CRM_Utils_Type::T_INT,
-          'dataPattern' => '//',
-          'headerPattern' => '//',
-        ], $field);
-      }
       $this->importableFieldsMetadata = $fields;
     }
   }
 
+  /**
+   * Get a list of entities this import supports.
+   *
+   * @return array
+   * @throws \API_Exception
+   */
+  public function getImportEntities() : array {
+    $softCreditTypes = ContributionSoft::getFields()
+      ->setLoadOptions(['id', 'name', 'label', 'description'])
+      ->addWhere('name', '=', 'soft_credit_type_id')
+      ->selectRowCount()
+      ->addSelect('options')->execute()->first()['options'];
+    foreach ($softCreditTypes as &$softCreditType) {
+      $softCreditType['text'] = $softCreditType['label'];
+    }
+
+    return [
+      'Contribution' => [
+        'text' => ts('Contribution Fields'),
+        'required_fields_update' => $this->getRequiredFieldsForMatch(),
+        'required_fields_create' => $this->getRequiredFieldsForCreate(),
+        'is_base_entity' => TRUE,
+        'supports_multiple' => FALSE,
+        'is_required' => TRUE,
+        // For now we stick with the action selected on the DataSource page.
+        'actions' => $this->isUpdateExisting() ?
+          [['id' => 'update', 'text' => ts('Update existing'), 'description' => ts('Skip if no match found')]] :
+          [['id' => 'create', 'text' => ts('Create'), 'description' => ts('Skip if already exists')]],
+        'default_action' => $this->isUpdateExisting() ? 'update' : 'create',
+        'entity_name' => 'Contribution',
+        'entity_title' => ts('Contribution'),
+        'entity_field_prefix' => '',
+        'selected' => ['action' => $this->isUpdateExisting() ? 'update' : 'create'],
+      ],
+      'Contact' => [
+        'text' => ts('Contact Fields'),
+        'unique_fields' => ['external_identifier', 'id'],
+        'is_contact' => TRUE,
+        'supports_multiple' => FALSE,
+        'actions' => $this->isUpdateExisting() ? $this->getActions(['ignore', 'update']) : $this->getActions(['select', 'update', 'save']),
+        'selected' => [
+          'action' => $this->isUpdateExisting() ? 'ignore' : 'select',
+          'contact_type' => $this->getSubmittedValue('contactType'),
+          'dedupe_rule' => $this->getDedupeRule($this->getContactType())['name'],
+        ],
+        'entity_field_prefix' => '',
+        'default_action' => 'select',
+        'entity_name' => 'Contact',
+        'entity_title' => ts('Contribution Contact'),
+      ],
+      'SoftCreditContact' => [
+        'text' => ts('Soft Credit Contact Fields'),
+        // It turns out there is actually currently no limit - you can import multiple of the same type.
+        'supports_multiple' => TRUE,
+        'unique_fields' => ['external_identifier', 'id'],
+        'is_contact' => TRUE,
+        'is_required' => FALSE,
+        'actions' => array_merge([['id' => 'ignore', 'text' => ts('Do not import')]], $this->getActions(['select', 'update', 'save'])),
+        'selected' => ['contact_type' => '', 'soft_credit_type_id' => reset($softCreditTypes)['id'], 'action' => 'ignore'],
+        'default_action' => 'ignore',
+        'entity_name' => 'SoftCreditContact',
+        'entity_field_prefix' => 'soft_credit.contact.',
+        'entity_title' => ts('Soft Credit Contact'),
+        'entity_data' => [
+          'soft_credit_type_id' => [
+            'title' => ts('Soft Credit Type'),
+            'is_required' => TRUE,
+            'options' => $softCreditTypes,
+            'name' => 'soft_credit_type_id',
+          ],
+        ],
+      ],
+    ];
+  }
+
   /**
    * Handle the values in import mode.
    *
    * @param array $values
    *   The array of values belonging to this line.
    */
-  public function import($values): void {
+  public function import(array $values): void {
     $rowNumber = (int) ($values[array_key_last($values)]);
     try {
       $params = $this->getMappedRow($values);
-      $formatted = array_merge(['version' => 3, 'skipRecentView' => TRUE, 'skipCleanMoney' => TRUE, 'contribution_id' => $params['id'] ?? NULL], $params);
+      $contributionParams = array_merge(['version' => 3, 'skipRecentView' => TRUE, 'skipCleanMoney' => TRUE], $params['Contribution']);
       //CRM-10994
-      if (isset($params['total_amount']) && $params['total_amount'] == 0) {
-        $params['total_amount'] = '0.00';
+      if (isset($contributionParams['total_amount']) && $contributionParams['total_amount'] == 0) {
+        $contributionParams['total_amount'] = '0.00';
       }
-      $this->formatInput($params, $formatted);
 
-      $paramValues = [];
-      foreach ($params as $key => $field) {
-        if ($field == NULL || $field === '') {
-          continue;
-        }
-        $paramValues[$key] = $field;
+      $existingContribution = $this->lookupContribution($contributionParams);
+      if (empty($existingContribution) && $this->isUpdateExisting()) {
+        throw new CRM_Core_Exception(ts('Matching Contribution record not found. Row was skipped.'), CRM_Import_Parser::ERROR);
       }
-
-      //import contribution record according to select contact type
-      if ($this->isSkipDuplicates() &&
-        (!empty($paramValues['contribution_contact_id']) || !empty($paramValues['external_identifier']))
-      ) {
-        $paramValues['contact_type'] = $this->getContactType();
+      $contributionParams['id'] = $existingContribution['id'] ?? NULL;
+      if (empty($contributionParams['id']) && $this->isUpdateExisting()) {
+        throw new CRM_Core_Exception('Empty Contribution and Invoice and Transaction ID. Row was skipped.', CRM_Import_Parser::ERROR);
       }
-      elseif ($this->isUpdateExisting() &&
-        (!empty($paramValues['id']) || !empty($values['trxn_id']) || !empty($paramValues['invoice_id']))
-      ) {
-        $paramValues['contact_type'] = $this->getContactType();
-      }
-      elseif (!empty($paramValues['pledge_payment'])) {
-        $paramValues['contact_type'] = $this->getContactType();
-      }
-
-      $formatError = $this->deprecatedFormatParams($paramValues, $formatted);
-
-      if ($formatError) {
-        if (CRM_Utils_Array::value('error_data', $formatError) == 'soft_credit') {
-          throw new CRM_Core_Exception('', self::SOFT_CREDIT_ERROR);
+      $contributionParams['contact_id'] = $params['Contact']['id'] = $this->getContactID($params['Contact'] ?? [], $contributionParams['contact_id'] ?? ($existingContribution['contact_id'] ?? NULL), 'Contact', $this->getDedupeRulesForEntity('Contact'));
+
+      $softCreditParams = [];
+      foreach ($params['SoftCreditContact'] ?? [] as $index => $softCreditContact) {
+        $softCreditParams[$index]['soft_credit_type_id'] = $softCreditContact['soft_credit_type_id'];
+        $softCreditParams[$index]['contact_id'] = $this->getContactID($softCreditContact['Contact'], $softCreditContact['id'] ?? NULL, 'SoftCreditContact', $this->getDedupeRulesForEntity('SoftCreditContact'));
+        if (empty($softCreditParams[$index]['contact_id']) && in_array($this->getActionForEntity('SoftCreditContact'), ['update', 'select'])) {
+          throw new CRM_Core_Exception(ts('Soft Credit Contact not found'));
         }
-        if (CRM_Utils_Array::value('error_data', $formatError) == 'pledge_payment') {
-          throw new CRM_Core_Exception('', self::PLEDGE_PAYMENT_ERROR);
-        }
-        throw new CRM_Core_Exception('', CRM_Import_Parser::ERROR);
       }
 
-      if ($this->isUpdateExisting()) {
-        //fix for CRM-2219 - Update Contribution
-        // onDuplicate == CRM_Import_Parser::DUPLICATE_UPDATE
-        if (!empty($paramValues['invoice_id']) || !empty($paramValues['trxn_id']) || !empty($paramValues['id'])) {
-          $dupeIds = [
-            'id' => $paramValues['id'] ?? NULL,
-            'trxn_id' => $paramValues['trxn_id'] ?? NULL,
-            'invoice_id' => $paramValues['invoice_id'] ?? NULL,
-          ];
-          $ids['contribution'] = CRM_Contribute_BAO_Contribution::checkDuplicateIds($dupeIds);
-
-          if ($ids['contribution']) {
-            $formatted['id'] = $ids['contribution'];
-            //process note
-            if (!empty($paramValues['note'])) {
-              $noteID = [];
-              $contactID = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_Contribution', $ids['contribution'], 'contact_id');
-              $daoNote = new CRM_Core_BAO_Note();
-              $daoNote->entity_table = 'civicrm_contribution';
-              $daoNote->entity_id = $ids['contribution'];
-              if ($daoNote->find(TRUE)) {
-                $noteID['id'] = $daoNote->id;
-              }
+      $this->deprecatedFormatParams($contributionParams, $contributionParams);
 
-              $noteParams = [
-                'entity_table' => 'civicrm_contribution',
-                'note' => $paramValues['note'],
-                'entity_id' => $ids['contribution'],
-                'contact_id' => $contactID,
-              ];
-              CRM_Core_BAO_Note::add($noteParams, $noteID);
-              unset($formatted['note']);
-            }
+      // From this point on we are changing stuff - the prior rows were doing lookups and exiting
+      // if the lookups failed.
 
-            //need to check existing soft credit contribution, CRM-3968
-            if (!empty($formatted['soft_credit'])) {
-              $dupeSoftCredit = [
-                'contact_id' => $formatted['soft_credit'],
-                'contribution_id' => $ids['contribution'],
-              ];
-
-              //Delete all existing soft Contribution from contribution_soft table for pcp_id is_null
-              $existingSoftCredit = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($dupeSoftCredit['contribution_id']);
-              if (isset($existingSoftCredit['soft_credit']) && !empty($existingSoftCredit['soft_credit'])) {
-                foreach ($existingSoftCredit['soft_credit'] as $key => $existingSoftCreditValues) {
-                  if (!empty($existingSoftCreditValues['soft_credit_id'])) {
-                    civicrm_api3('ContributionSoft', 'delete', [
-                      'id' => $existingSoftCreditValues['soft_credit_id'],
-                      'pcp_id' => NULL,
-                    ]);
-                  }
-                }
-              }
-            }
-
-            $formatted['id'] = $ids['contribution'];
-
-            $newContribution = civicrm_api3('contribution', 'create', $formatted);
-            $this->_newContributions[] = $newContribution['id'];
-
-            //return soft valid since we need to show how soft credits were added
-            if (!empty($formatted['soft_credit'])) {
-              $this->setImportStatus($rowNumber, $this->getStatus(self::SOFT_CREDIT));
-              return;
-            }
-
-            // process pledge payment assoc w/ the contribution
-            $this->processPledgePayments($formatted);
-            $this->setImportStatus($rowNumber, $this->getStatus(self::PLEDGE_PAYMENT));
-            return;
-          }
-          $labels = [
-            'id' => 'Contribution ID',
-            'trxn_id' => 'Transaction ID',
-            'invoice_id' => 'Invoice ID',
-          ];
-          foreach ($dupeIds as $k => $v) {
-            if ($v) {
-              $errorMsg[] = "$labels[$k] $v";
-            }
-          }
-          $errorMsg = implode(' AND ', $errorMsg);
-          throw new CRM_Core_Exception('Matching Contribution record not found for ' . $errorMsg . '. Row was skipped.', CRM_Import_Parser::ERROR);
-        }
+      foreach ($params['SoftCreditContact'] ?? [] as $index => $softCreditContact) {
+        $softCreditParams[$index]['contact_id'] = $this->saveContact('SoftCreditContact', $softCreditContact['Contact']) ?: $softCreditParams[$index]['contact_id'];
       }
+      $contributionParams['contact_id'] = $this->saveContact('Contact', $params['Contact'] ?? []) ?: $contributionParams['contact_id'];
 
-      if (empty($formatted['contact_id'])) {
-
-        $error = $this->checkContactDuplicate($paramValues);
-
-        if (CRM_Core_Error::isAPIError($error, CRM_Core_ERROR::DUPLICATE_CONTACT)) {
-          $matchedIDs = (array) $error['error_message']['params'];
-          if (count($matchedIDs) > 1) {
-            throw new CRM_Core_Exception('Multiple matching contact records detected for this row. The contribution was not imported', CRM_Import_Parser::ERROR);
-          }
-          $cid = $matchedIDs[0];
-          $formatted['contact_id'] = $cid;
-
-          $newContribution = civicrm_api('contribution', 'create', $formatted);
-          if (civicrm_error($newContribution)) {
-            if (is_array($newContribution['error_message'])) {
-              if ($newContribution['error_message']['params'][0]) {
-                throw new CRM_Core_Exception($newContribution['error_message']['message'], CRM_Import_Parser::DUPLICATE);
-              }
-            }
-            else {
-              throw new CRM_Core_Exception($newContribution['error_message'], CRM_Import_Parser::ERROR);
-            }
-          }
-
-          $this->_newContributions[] = $newContribution['id'];
-          $formatted['contribution_id'] = $newContribution['id'];
-
-          //return soft valid since we need to show how soft credits were added
-          if (!empty($formatted['soft_credit'])) {
-            $this->setImportStatus($rowNumber, $this->getStatus(self::SOFT_CREDIT));
-            return;
-          }
-
-          $this->processPledgePayments($formatted);
-          $this->setImportStatus($rowNumber, $this->getStatus(self::PLEDGE_PAYMENT));
-          return;
-        }
+      if (isset($params['SoftCreditContact']) && $this->isUpdateExisting()) {
+        //need to check existing soft credit contribution, CRM-3968
+        $this->deleteExistingSoftCredit($contributionParams['id']);
+      }
 
-        // Using new Dedupe rule.
-        $ruleParams = [
-          'contact_type' => $this->getContactType(),
-          'used' => 'Unsupervised',
-        ];
-        $fieldsArray = CRM_Dedupe_BAO_DedupeRule::dedupeRuleFields($ruleParams);
-        $disp = NULL;
-        foreach ($fieldsArray as $value) {
-          if (array_key_exists(trim($value), $params)) {
-            $paramValue = $params[trim($value)];
-            if (is_array($paramValue)) {
-              $disp .= $params[trim($value)][0][trim($value)] . " ";
-            }
-            else {
-              $disp .= $params[trim($value)] . " ";
-            }
-          }
-        }
+      $contributionID = civicrm_api3('contribution', 'create', $contributionParams)['id'];
 
-        if (!empty($params['external_identifier'])) {
-          if ($disp) {
-            $disp .= "AND {$params['external_identifier']}";
-          }
-          else {
-            $disp = $params['external_identifier'];
-          }
+      if (!empty($softCreditParams)) {
+        if (empty($contributionParams['total_amount']) || empty($contributionParams['currency'])) {
+          $contributionParams = Contribution::get()->addSelect('total_amount', 'currency')->addWhere('id', '=', $contributionID)->execute()->first();
         }
-        $errorMessage = 'No matching Contact found for (' . $disp . ')';
-        throw new CRM_Core_Exception($errorMessage, CRM_Import_Parser::ERROR);
-      }
-
-      if (!empty($paramValues['external_identifier'])) {
-        $checkCid = new CRM_Contact_DAO_Contact();
-        $checkCid->external_identifier = $paramValues['external_identifier'];
-        $checkCid->find(TRUE);
-        if ($checkCid->id != $formatted['contact_id']) {
-          $errorMessage = 'Mismatch of External ID:' . $paramValues['external_identifier'] . ' and Contact Id:' . $formatted['contact_id'];
-          throw new CRM_Core_Exception($errorMessage, CRM_Import_Parser::ERROR);
+        foreach ($softCreditParams as $softCreditParam) {
+          $softCreditParam['contribution_id'] = $contributionID;
+          $softCreditParam['amount'] = $contributionParams['total_amount'];
+          $softCreditParam['currency'] = $contributionParams['currency'];
+          ContributionSoft::create()->setValues($softCreditParam)->execute();
         }
       }
-      $newContribution = civicrm_api('contribution', 'create', $formatted);
-      if (civicrm_error($newContribution)) {
-        if (is_array($newContribution['error_message'])) {
-          if ($newContribution['error_message']['params'][0]) {
-            throw new CRM_Core_Exception('', CRM_Import_Parser::DUPLICATE);
-          }
-        }
-        else {
-          throw new CRM_Core_Exception($newContribution['error_message'], CRM_Import_Parser::ERROR);
-        }
+      if (!empty($params['Note'])) {
+        $this->processNote($contributionID, $contributionParams['contact_id'], $params['Note']);
       }
-
-      $this->_newContributions[] = $newContribution['id'];
-      $formatted['contribution_id'] = $newContribution['id'];
-
       //return soft valid since we need to show how soft credits were added
-      if (!empty($formatted['soft_credit'])) {
-        $this->setImportStatus($rowNumber, $this->getStatus(self::SOFT_CREDIT), '');
+      // because ? historically we did but this seems a bit obsolete.
+      if (!empty($softCreditParams)) {
+        $this->setImportStatus($rowNumber, $this->getStatus(self::SOFT_CREDIT), '', $contributionID);
         return;
       }
 
       // process pledge payment assoc w/ the contribution
-      $this->processPledgePayments($formatted);
-      $this->setImportStatus($rowNumber, $this->getStatus(self::PLEDGE_PAYMENT));
+      $this->setImportStatus($rowNumber, $this->processPledgePayments($contributionID, $contributionParams) ? $this->getStatus(self::PLEDGE_PAYMENT) : $this->getStatus(self::VALID), '', $contributionID);
       return;
 
     }
@@ -522,14 +494,40 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
     }
   }
 
+  /**
+   * Lookup pre-existing contribution ID.
+   *
+   * @param array $params
+   *
+   * @throws \CRM_Core_Exception
+   *
+   * @return array|null
+   */
+  private function lookupContribution(array $params): array {
+    $where = [];
+    foreach (['id' => 'Contribution ID', 'trxn_id' => 'Transaction ID', 'invoice_id' => 'Invoice ID'] as $field => $label) {
+      if (!empty($params[$field])) {
+        $where[] = [$field, '=', $params[$field]];
+      }
+    }
+    if (empty($where)) {
+      return [];
+    }
+    $contribution = Contribution::get(FALSE)->setWhere($where)->addSelect('id', 'contact_id')->execute()->first();
+    if ($contribution['id'] ?? NULL) {
+      return $contribution;
+    }
+    return [];
+  }
+
   /**
    * Get the status to record.
    *
-   * @param int|null $code
+   * @param int|null|string $code
    *
    * @return string
    */
-  protected function getStatus(?int $code): string {
+  protected function getStatus($code): string {
     $errorMapping = [
       self::SOFT_CREDIT_ERROR => 'soft_credit_error',
       self::PLEDGE_PAYMENT_ERROR => 'pledge_payment_error',
@@ -544,16 +542,18 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
   /**
    * Process pledge payments.
    *
+   * @param int $contributionID
    * @param array $formatted
+   *
+   * @return bool
    */
-  private function processPledgePayments(array $formatted) {
+  private function processPledgePayments(int $contributionID, array $formatted): bool {
     if (!empty($formatted['pledge_payment_id']) && !empty($formatted['pledge_id'])) {
-      //get completed status
-      $completeStatusID = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed');
+      $completeStatusID = CRM_Core_PseudoConstant::getKey('CRM_Pledge_BAO_PledgePayment', 'status_id', 'Completed');
 
       //need to update payment record to map contribution_id
       CRM_Core_DAO::setFieldValue('CRM_Pledge_DAO_PledgePayment', $formatted['pledge_payment_id'],
-        'contribution_id', $formatted['contribution_id']
+        'contribution_id', $contributionID
       );
 
       CRM_Pledge_BAO_PledgePayment::updatePledgePaymentStatus($formatted['pledge_id'],
@@ -562,7 +562,9 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
         NULL,
         $formatted['total_amount']
       );
+      return TRUE;
     }
+    return FALSE;
   }
 
   /**
@@ -574,32 +576,6 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
     return $this->_newContributions;
   }
 
-  /**
-   * Format input params to suit api handling.
-   *
-   * Over time all the parts of  deprecatedFormatParams
-   * and all the parts of the import function on this class that relate to
-   * reformatting input should be moved here and tests should be added in
-   * CRM_Contribute_Import_Parser_ContributionTest.
-   *
-   * @param array $params
-   * @param array $formatted
-   */
-  public function formatInput(&$params, &$formatted = []) {
-    foreach ($params as $key => $val) {
-      // @todo - call formatDateFields instead.
-      if ($val) {
-        switch ($key) {
-
-          case 'pledge_payment':
-            $params[$key] = CRM_Utils_String::strtobool($val);
-            break;
-
-        }
-      }
-    }
-  }
-
   /**
    * take the input parameter list as specified in the data model and
    * convert it into the same format that we use in QF and BAO object
@@ -611,11 +587,9 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
    *   The reformatted properties that we can use internally.
    * @param bool $create
    *
-   * @return array|CRM_Error
    * @throws \CRM_Core_Exception
    */
-  private function deprecatedFormatParams($params, &$values, $create = FALSE) {
-    require_once 'CRM/Utils/DeprecatedUtils.php';
+  private function deprecatedFormatParams($params, &$values, $create = FALSE): void {
     // copy all the contribution fields as is
     require_once 'api/v3/utils.php';
 
@@ -626,193 +600,37 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
       }
 
       switch ($key) {
-        case 'contact_id':
-          if (!CRM_Utils_Rule::integer($value)) {
-            return civicrm_api3_create_error("contact_id not valid: $value");
-          }
-          $dao = new CRM_Core_DAO();
-          $qParams = [];
-          $svq = $dao->singleValueQuery("SELECT is_deleted FROM civicrm_contact WHERE id = $value",
-            $qParams
-          );
-          if (!isset($svq)) {
-            return civicrm_api3_create_error("Invalid Contact ID: There is no contact record with contact_id = $value.");
-          }
-          elseif ($svq == 1) {
-            return civicrm_api3_create_error("Invalid Contact ID: contact_id $value is a soft-deleted contact.");
-          }
-          $values['contact_id'] = $value;
-          break;
-
-        case 'contact_type':
-          // import contribution record according to select contact type
-          require_once 'CRM/Contact/DAO/Contact.php';
-          $contactType = new CRM_Contact_DAO_Contact();
-          $contactId = $params['contribution_contact_id'] ?? NULL;
-          $externalId = $params['external_identifier'] ?? NULL;
-          $email = $params['email'] ?? NULL;
-          //when insert mode check contact id or external identifier
-          if ($contactId || $externalId) {
-            $contactType->id = $contactId;
-            $contactType->external_identifier = $externalId;
-            if ($contactType->find(TRUE)) {
-              if ($params['contact_type'] != $contactType->contact_type) {
-                return civicrm_api3_create_error("Contact Type is wrong: $contactType->contact_type");
-              }
-            }
-          }
-          elseif ($email) {
-            if (!CRM_Utils_Rule::email($email)) {
-              return civicrm_api3_create_error("Invalid email address $email provided. Row was skipped");
-            }
-
-            // get the contact id from duplicate contact rule, if more than one contact is returned
-            // we should return error, since current interface allows only one-one mapping
-            $emailParams = [
-              'email' => $email,
-              'contact_type' => $params['contact_type'],
-            ];
-            $checkDedupe = _civicrm_api3_deprecated_duplicate_formatted_contact($emailParams);
-            if (!$checkDedupe['is_error']) {
-              return civicrm_api3_create_error("Invalid email address(doesn't exist) $email. Row was skipped");
-            }
-            $matchingContactIds = explode(',', $checkDedupe['error_message']['params'][0]);
-            if (count($matchingContactIds) > 1) {
-              return civicrm_api3_create_error("Invalid email address(duplicate) $email. Row was skipped");
-            }
-            if (count($matchingContactIds) == 1) {
-              $params['contribution_contact_id'] = $matchingContactIds[0];
-            }
-          }
-          elseif (!empty($params['id']) || !empty($params['trxn_id']) || !empty($params['invoice_id'])) {
-            // when update mode check contribution id or trxn id or
-            // invoice id
-            // @todo - this check is obsolete. It survives for now
-            // in order to keep the rc patch small & non-conflicty.
-            $contactId = new CRM_Contribute_DAO_Contribution();
-            if (!empty($params['id'])) {
-              $contactId->id = $params['id'];
-            }
-            elseif (!empty($params['trxn_id'])) {
-              $contactId->trxn_id = $params['trxn_id'];
-            }
-            elseif (!empty($params['invoice_id'])) {
-              $contactId->invoice_id = $params['invoice_id'];
-            }
-            if ($contactId->find(TRUE)) {
-              $contactType->id = $contactId->contact_id;
-              if ($contactType->find(TRUE)) {
-                if ($params['contact_type'] != $contactType->contact_type) {
-                  return civicrm_api3_create_error("Contact Type is wrong: $contactType->contact_type");
-                }
-              }
-            }
-          }
-          else {
-            if ($this->isUpdateExisting()) {
-              return civicrm_api3_create_error("Empty Contribution and Invoice and Transaction ID. Row was skipped.");
-            }
-          }
-          break;
-
-        case 'soft_credit':
-          // import contribution record according to select contact type
-          // validate contact id and external identifier.
-          foreach ($value as $softKey => $softParam) {
-            $values['soft_credit'][$softKey] = [
-              'contact_id' => $this->lookupMatchingContact($softParam),
-              'soft_credit_type_id' => $softParam['soft_credit_type_id'],
-            ];
-          }
-          break;
 
         case 'pledge_id':
           // get total amount of from import fields
           $totalAmount = $params['total_amount'] ?? NULL;
+          $contributionContactID = $params['contact_id'];
           // we need to get contact id $contributionContactID to
           // retrieve pledge details as well as to validate pledge ID
 
           // first need to check for update mode
-          if ($this->isUpdateExisting() &&
-            ($params['id'] || $params['trxn_id'] || $params['invoice_id'])
-          ) {
+          if (!empty($params['id'])) {
             $contribution = new CRM_Contribute_DAO_Contribution();
-            if ($params['contribution_id']) {
-              $contribution->id = $params['contribution_id'];
-            }
-            elseif ($params['trxn_id']) {
-              $contribution->trxn_id = $params['trxn_id'];
-            }
-            elseif ($params['invoice_id']) {
-              $contribution->invoice_id = $params['invoice_id'];
+            if ($params['id']) {
+              $contribution->id = $params['id'];
             }
 
             if ($contribution->find(TRUE)) {
-              $contributionContactID = $contribution->contact_id;
               if (!$totalAmount) {
                 $totalAmount = $contribution->total_amount;
               }
             }
             else {
-              throw new CRM_Core_Exception('No match found for specified contact in pledge payment data. Row was skipped.');
-            }
-          }
-          else {
-            // first get the contact id for given contribution record.
-            if (!empty($params['contribution_contact_id'])) {
-              $contributionContactID = $params['contribution_contact_id'];
-            }
-            elseif (!empty($params['external_identifier'])) {
-              require_once 'CRM/Contact/DAO/Contact.php';
-              $contact = new CRM_Contact_DAO_Contact();
-              $contact->external_identifier = $params['external_identifier'];
-              if ($contact->find(TRUE)) {
-                $contributionContactID = $params['contribution_contact_id'] = $values['contribution_contact_id'] = $contact->id;
-              }
-              else {
-                return civicrm_api3_create_error('No match found for specified contact in pledge payment data. Row was skipped.');
-              }
-            }
-            else {
-              // we need to get contribution contact using de dupe
-              $error = $this->checkContactDuplicate($params);
-
-              if (isset($error['error_message']['params'][0])) {
-                $matchedIDs = (array) $error['error_message']['params'];
-
-                // check if only one contact is found
-                if (count($matchedIDs) > 1) {
-                  return civicrm_api3_create_error($error['error_message']['message']);
-                }
-                $contributionContactID = $params['contribution_contact_id'] = $values['contribution_contact_id'] = $matchedIDs[0];
-              }
-              else {
-                return civicrm_api3_create_error('No match found for specified contact in contribution data. Row was skipped.');
-              }
+              throw new CRM_Core_Exception('No match found for specified contact in pledge payment data. Row was skipped.', CRM_Import_Parser::ERROR);
             }
           }
 
           if (!empty($params['pledge_id'])) {
             if (CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_Pledge', $params['pledge_id'], 'contact_id') != $contributionContactID) {
-              return civicrm_api3_create_error('Invalid Pledge ID provided. Contribution row was skipped.');
+              throw new CRM_Core_Exception('Invalid Pledge ID provided. Contribution row was skipped.', CRM_Import_Parser::ERROR);
             }
             $values['pledge_id'] = $params['pledge_id'];
           }
-          else {
-            // check if there are any pledge related to this contact, with payments pending or in progress
-            require_once 'CRM/Pledge/BAO/Pledge.php';
-            $pledgeDetails = CRM_Pledge_BAO_Pledge::getContactPledges($contributionContactID);
-
-            if (empty($pledgeDetails)) {
-              return civicrm_api3_create_error('No open pledges found for this contact. Contribution row was skipped.');
-            }
-            if (count($pledgeDetails) > 1) {
-              return civicrm_api3_create_error('This contact has more than one open pledge. Unable to determine which pledge to apply the contribution to. Contribution row was skipped.');
-            }
-
-            // this mean we have only one pending / in progress pledge
-            $values['pledge_id'] = $pledgeDetails[0];
-          }
 
           // we need to check if oldest payment amount equal to contribution amount
           require_once 'CRM/Pledge/BAO/PledgePayment.php';
@@ -822,38 +640,12 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
             $values['pledge_payment_id'] = $pledgePaymentDetails['id'];
           }
           else {
-            return civicrm_api3_create_error('Contribution and Pledge Payment amount mismatch for this record. Contribution row was skipped.');
-          }
-          break;
-
-        case 'contribution_campaign_id':
-          if (empty(CRM_Core_DAO::getFieldValue('CRM_Campaign_DAO_Campaign', $params['contribution_campaign_id']))) {
-            return civicrm_api3_create_error('Invalid Campaign ID provided. Contribution row was skipped.');
+            throw new CRM_Core_Exception('Contribution and Pledge Payment amount mismatch for this record. Contribution row was skipped.', CRM_Import_Parser::ERROR);
           }
-          $values['contribution_campaign_id'] = $params['contribution_campaign_id'];
           break;
 
       }
     }
-
-    if (array_key_exists('note', $params)) {
-      $values['note'] = $params['note'];
-    }
-
-    if ($create) {
-      // CRM_Contribute_BAO_Contribution::add() handles contribution_source
-      // So, if $values contains contribution_source, convert it to source
-      $changes = ['contribution_source' => 'source'];
-
-      foreach ($changes as $orgVal => $changeVal) {
-        if (isset($values[$orgVal])) {
-          $values[$changeVal] = $values[$orgVal];
-          unset($values[$orgVal]);
-        }
-      }
-    }
-
-    return NULL;
   }
 
   /**
@@ -868,23 +660,57 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
    * @param int $columnNumber
    *
    * @return array
-   * @throws \API_Exception
    */
   public function getMappingFieldFromMapperInput(array $fieldMapping, int $mappingID, int $columnNumber): array {
     return [
-      'name' => $fieldMapping[0],
+      // The double __ is a quickform hack - the 'real' name is dotted - eg. 'soft_credit.contact.id'
+      'name' => str_replace('__', '.', $fieldMapping[0]),
       'mapping_id' => $mappingID,
       'column_number' => $columnNumber,
-      // The name of the field to match the soft credit on is (crazily)
-      // stored in 'contact_type'
-      'contact_type' => $fieldMapping[1] ?? NULL,
-      // We also store the field in a sensible key, even if it isn't saved sensibly.
-      'soft_credit_match_field' => $fieldMapping[1] ?? NULL,
-      // This field is actually not saved at all :-( It is lost each time.
-      'soft_credit_type_id' => $fieldMapping[2] ?? NULL,
+      'entity_data' => !empty($fieldMapping[1]) ? ['soft_credit' => ['soft_credit_type_id' => $fieldMapping[1]]] : NULL,
     ];
   }
 
+  /**
+   * @param int $contributionID
+   *
+   * @throws \CiviCRM_API3_Exception
+   */
+  protected function deleteExistingSoftCredit(int $contributionID): void {
+    //Delete all existing soft Contribution from contribution_soft table for pcp_id is_null
+    $existingSoftCredit = CRM_Contribute_BAO_ContributionSoft::getSoftContribution($contributionID);
+    if (isset($existingSoftCredit['soft_credit']) && !empty($existingSoftCredit['soft_credit'])) {
+      foreach ($existingSoftCredit['soft_credit'] as $key => $existingSoftCreditValues) {
+        if (!empty($existingSoftCreditValues['soft_credit_id'])) {
+          civicrm_api3('ContributionSoft', 'delete', [
+            'id' => $existingSoftCreditValues['soft_credit_id'],
+            'pcp_id' => NULL,
+          ]);
+        }
+      }
+    }
+  }
+
+  /**
+   * Save the contact.
+   *
+   * @param string $entity
+   * @param array $contact
+   *
+   * @return int|null
+   *
+   * @throws \Civi\API\Exception\UnauthorizedException|\CRM_Core_Exception
+   */
+  protected function saveContact(string $entity, array $contact): ?int {
+    if (in_array($this->getActionForEntity($entity), ['update', 'save', 'create'])) {
+      return Contact::save()
+        ->setRecords([$contact])
+        ->execute()
+        ->first()['id'];
+    }
+    return NULL;
+  }
+
   /**
    * Lookup matching contact.
    *
@@ -943,22 +769,18 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
    *   or as returned from getMappingFieldFromMapperInput
    *
    * @return string
-   * @throws \API_Exception
    */
   public function getMappedFieldLabel(array $mappedField): string {
     if (empty($this->importableFieldsMetadata)) {
       $this->setFieldMetadata();
     }
-    if ($mappedField['name'] === '') {
+    if (empty($mappedField['name'])) {
       return '';
     }
     $title = [];
     $title[] = $this->getFieldMetadata($mappedField['name'])['title'];
-    if ($mappedField['soft_credit_match_field']) {
-      $title[] = $this->getFieldMetadata($mappedField['soft_credit_match_field'])['title'];
-    }
-    if ($mappedField['soft_credit_type_id']) {
-      $title[] = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_ContributionSoft', 'soft_credit_type_id', $mappedField['soft_credit_type_id']);
+    if (isset($mappedField['soft_credit'])) {
+      $title[] = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_ContributionSoft', 'soft_credit_type_id', $mappedField['soft_credit']['soft_credit_type_id']);
     }
 
     return implode(' - ', $title);
@@ -979,4 +801,66 @@ class CRM_Contribute_Import_Parser_Contribution extends CRM_Import_Parser {
     return array_merge($fields, parent::getOddlyMappedMetadataFields());
   }
 
+  /**
+   * Create or update the note.
+   *
+   * @param int $contributionID
+   * @param int $contactID
+   * @param array $noteParams
+   *
+   * @throws \API_Exception
+   */
+  protected function processNote(int $contributionID, int $contactID, array $noteParams): void {
+    $noteParams = array_merge([
+      'entity_table' => 'civicrm_contribution',
+      'entity_id' => $contributionID,
+      'contact_id' => $contactID,
+    ], $noteParams);
+    if ($this->isUpdateExisting()) {
+      $note = Note::get(FALSE)
+        ->addSelect('entity_table', '=', 'civicrm_contribution')
+        ->addSelect('entity_id', '=', $contributionID)->execute()->first();
+      if (!empty($note)) {
+        $noteParams['id'] = $note['id'];
+      }
+    }
+    Note::save(FALSE)->setRecords([$noteParams])->execute();
+  }
+
+  /**
+   * Get the actions to display in the rich UI.
+   *
+   * Filter by the input actions - e.g ['update' 'select'] will only return those keys.
+   *
+   * @param array $actions
+   * @param string $entity
+   *
+   * @return array
+   */
+  protected function getActions(array $actions, $entity = 'Contact'): array {
+    $actionList['Contact'] = [
+      'ignore' => [
+        'id' => 'ignore',
+        'text' => ts('No action'),
+        'description' => ts('Contact not altered'),
+      ],
+      'select' => [
+        'id' => 'select',
+        'text' => ts('Match existing Contact'),
+        'description' => ts('Look up existing contact. Skip row if not found'),
+      ],
+      'update' => [
+        'id' => 'update',
+        'text' => ts('Update existing Contact.'),
+        'description' => ts('Update existing Contact. Skip row if not found'),
+      ],
+      'save' => [
+        'id' => 'save',
+        'text' => ts('Update existing Contact or Create'),
+        'description' => ts('Create new contact if not found'),
+      ],
+    ];
+    return array_values(array_intersect_key($actionList[$entity], array_fill_keys($actions, TRUE)));
+  }
+
 }
diff --git a/civicrm/CRM/Contribute/PseudoConstant.php b/civicrm/CRM/Contribute/PseudoConstant.php
index cfad6fbb67ff00e396c74204e93b52f522ed99a9..430bdafba16365a3a533b0d876aad8cabd73f85f 100644
--- a/civicrm/CRM/Contribute/PseudoConstant.php
+++ b/civicrm/CRM/Contribute/PseudoConstant.php
@@ -289,6 +289,12 @@ class CRM_Contribute_PseudoConstant extends CRM_Core_PseudoConstant {
    *
    * @param int $id
    * @param string $columnName
+   * @deprecated use standard methods like
+   *   CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contributionStatusID);
+   *   CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contributionStatusID);
+   *   CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contributionStatusID);
+   *   & don't specify 'CRM_Contribute_BAO_Contribution' if you mean 'CRM_Contribute_BAO_ContributionRecur' ...
+   *
    * @return array
    *   array reference of all contribution statuses
    */
diff --git a/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php b/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php
index f6fac172224b7bde0d224305d3d6925e0cba017a..0c8e637e626176cb3aae78c24c6cc1d93c2644a2 100644
--- a/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php
+++ b/civicrm/CRM/Contribute/WorkflowMessage/Contribution/BasicContribution.php
@@ -31,8 +31,8 @@ class CRM_Contribute_WorkflowMessage_Contribution_BasicContribution extends Work
         'name' => 'workflow/' . $workflow . '/' . 'basic_cad',
         'title' => ts('Completed Contribution') . ' : ' . 'CAD',
         'tags' => ['preview'],
-        'workflow' => 'contribution_offline_receipt',
-        'currency' => 'CAD',
+        'workflow' => $workflow,
+        'contribution_params' => ['currency' => 'CAD'],
       ];
       $priceSet = $this->getNonQuickConfigPriceSet();
       if ($priceSet) {
@@ -40,9 +40,17 @@ class CRM_Contribute_WorkflowMessage_Contribution_BasicContribution extends Work
           'name' => 'workflow/' . $workflow . '/' . 'price_set_' . $priceSet['name'],
           'title' => ts('Completed Contribution') . ' : ' . $priceSet['title'],
           'tags' => ['preview'],
-          'workflow' => 'contribution_offline_receipt',
+          'workflow' => $workflow,
           'is_show_line_items' => TRUE,
         ];
+        yield [
+          'name' => 'workflow/' . $workflow . '/' . 'refunded_price_set_' . $priceSet['name'],
+          'title' => ts('Refunded Contribution') . ' : ' . $priceSet['title'],
+          'tags' => ['preview'],
+          'workflow' => $workflow,
+          'is_show_line_items' => TRUE,
+          'contribution_params' => ['contribution_status_id' => \CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Refunded')],
+        ];
       }
     }
   }
@@ -107,11 +115,15 @@ class CRM_Contribute_WorkflowMessage_Contribution_BasicContribution extends Work
   private function addExampleData(GenericWorkflowMessage $messageTemplate, $example): void {
     $messageTemplate->setContact(\Civi\Test::example('entity/Contact/Barb'));
     $contribution = \Civi\Test::example('entity/Contribution/Euro5990/completed');
-    if (isset($example['currency'])) {
-      $contribution['currency'] = $example['currency'];
+    if (isset($example['contribution_params'])) {
+      $contribution = array_merge($contribution, $example['contribution_params']);
     }
+    $contribution['contribution_status_id:name'] = \CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contribution['contribution_status_id']);
+    $contribution['contribution_status_id:label'] = \CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contribution['contribution_status_id']);
+
     $mockOrder = new CRM_Financial_BAO_Order();
     $mockOrder->setTemplateContributionID(50);
+
     if (empty($example['is_show_line_items'])) {
       $mockOrder->setPriceSetToDefault('contribution');
       $mockOrder->setOverrideTotalAmount($contribution['total_amount']);
diff --git a/civicrm/CRM/Core/BAO/ActionSchedule.php b/civicrm/CRM/Core/BAO/ActionSchedule.php
index 2c49bc33b6d646c95087765bc3fbf3f30ea9a3b1..0785fc39073d8ae81e99ab91ec8a65981a4cd703 100644
--- a/civicrm/CRM/Core/BAO/ActionSchedule.php
+++ b/civicrm/CRM/Core/BAO/ActionSchedule.php
@@ -464,17 +464,10 @@ FROM civicrm_action_schedule cas
       'status_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'status_id', 'Completed'),
       'activity_type_id' => $activityTypeID,
       'source_record_id' => $entityID,
+      'case_id' => $caseID,
     ];
     // @todo use api, remove all the above wrangling
     $activity = CRM_Activity_BAO_Activity::create($activityParams);
-
-    //file reminder on case if source activity is a case activity
-    if (!empty($caseID)) {
-      $caseActivityParams = [];
-      $caseActivityParams['case_id'] = $caseID;
-      $caseActivityParams['activity_id'] = $activity->id;
-      CRM_Case_BAO_Case::processCaseActivity($caseActivityParams);
-    }
   }
 
   /**
diff --git a/civicrm/CRM/Core/BAO/CustomField.php b/civicrm/CRM/Core/BAO/CustomField.php
index c3f8f4a69ba20ba9201bc375a871ee0546136c19..27f0b8c5a5213773400e64bd1ed452dd529082ef 100644
--- a/civicrm/CRM/Core/BAO/CustomField.php
+++ b/civicrm/CRM/Core/BAO/CustomField.php
@@ -1057,7 +1057,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField {
     $attributes = [];
     foreach (explode(' ', $attrString) as $at) {
       if (strpos($at, '=')) {
-        list($k, $v) = explode('=', $at);
+        [$k, $v] = explode('=', $at);
         $attributes[$k] = trim($v, ' "');
       }
     }
@@ -1430,7 +1430,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField {
             'entity_id',
             'file_id'
           );
-          list($path) = CRM_Core_BAO_File::path($fileID, $entityId);
+          [$path] = CRM_Core_BAO_File::path($fileID, $entityId);
           $fileHash = CRM_Core_BAO_File::generateFileHash($entityId, $fileID);
           $url = CRM_Utils_System::url('civicrm/file',
             "reset=1&id=$fileID&eid=$entityId&fcs=$fileHash",
@@ -1524,7 +1524,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField {
       return NULL;
     }
 
-    list($tableName, $columnName, $groupID) = self::getTableColumnGroup($customFieldId);
+    [$tableName, $columnName, $groupID] = self::getTableColumnGroup($customFieldId);
 
     if (!$customValueId &&
       // we always create new entites for is_multiple unless specified
@@ -2244,33 +2244,34 @@ WHERE  id IN ( %1, %2 )
    *
    * @param int $fieldID
    *   The fieldID of the custom field.
-   * @param bool $force
-   *   Force the sql to be run again (primarily used for tests).
    *
    * @return array
    *   fatal is fieldID does not exists, else array of tableName, columnName
    * @throws \CRM_Core_Exception
    */
-  public static function getTableColumnGroup($fieldID, $force = FALSE) {
-    $cacheKey = "CRM_Core_DAO_CustomField_CustomGroup_TableColumn_{$fieldID}";
-    $cache = CRM_Utils_Cache::singleton();
-    $fieldValues = $cache->get($cacheKey);
-    if (empty($fieldValues) || $force) {
-      $query = "
+  public static function getTableColumnGroup($fieldID): array {
+    global $tsLocale;
+    // check if we can get the field values from the system cache
+    $cacheKey = "CRM_Core_DAO_CustomField_CustomGroup_TableColumn_{$fieldID}_$tsLocale";
+    if (Civi::cache('metadata')->has($cacheKey)) {
+      return Civi::cache('metadata')->get($cacheKey);
+    }
+
+    $query = '
 SELECT cg.table_name, cf.column_name, cg.id
 FROM   civicrm_custom_group cg,
-       civicrm_custom_field cf
+     civicrm_custom_field cf
 WHERE  cf.custom_group_id = cg.id
-AND    cf.id = %1";
-      $params = [1 => [$fieldID, 'Integer']];
-      $dao = CRM_Core_DAO::executeQuery($query, $params);
+AND    cf.id = %1';
+    $params = [1 => [$fieldID, 'Integer']];
+    $dao = CRM_Core_DAO::executeQuery($query, $params);
 
-      if (!$dao->fetch()) {
-        throw new CRM_Core_Exception("Cannot find table and column information for Custom Field " . $fieldID);
-      }
-      $fieldValues = [$dao->table_name, $dao->column_name, $dao->id];
-      $cache->set($cacheKey, $fieldValues);
+    if (!$dao->fetch()) {
+      throw new CRM_Core_Exception('Cannot find table and column information for Custom Field ' . $fieldID);
     }
+    $fieldValues = [$dao->table_name, $dao->column_name, $dao->id];
+    Civi::cache('metadata')->set($cacheKey, $fieldValues);
+
     return $fieldValues;
   }
 
@@ -2809,7 +2810,9 @@ WHERE cf.id = %1 AND cg.is_multiple = 1";
       }
     }
     if ($field->serialize) {
-      $params['type'] = 'varchar(255)';
+      // Ensure length is at least 255, but allow it to go higher.
+      $text_length = intval($field->text_length) < 255 ? 255 : $field->text_length;
+      $params['type'] = 'varchar(' . $text_length . ')';
     }
     if (isset($field->default_value)) {
       $params['default'] = "'{$field->default_value}'";
diff --git a/civicrm/CRM/Core/BAO/CustomGroup.php b/civicrm/CRM/Core/BAO/CustomGroup.php
index 9dc9cf3273b0f6ab9c48bbec599c9857b632bc7a..491da279d079928c686b67c6f169fd8c9917b975 100644
--- a/civicrm/CRM/Core/BAO/CustomGroup.php
+++ b/civicrm/CRM/Core/BAO/CustomGroup.php
@@ -577,7 +577,7 @@ ORDER BY civicrm_custom_group.weight,
     }
 
     if (empty($groupTree)) {
-      list($multipleFieldGroups, $groupTree) = self::buildGroupTree($entityType, $toReturn, $subTypes, $queryString, $params, $subType);
+      [$multipleFieldGroups, $groupTree] = self::buildGroupTree($entityType, $toReturn, $subTypes, $queryString, $params, $subType);
 
       $cache->set($cacheKey, $groupTree);
       $cache->set($multipleFieldGroupCacheKey, $multipleFieldGroups);
@@ -655,7 +655,14 @@ ORDER BY civicrm_custom_group.weight,
     }
     $subTypes = CRM_Contact_BAO_ContactType::subTypeInfo($entityType, TRUE);
     $subTypes = array_merge($subTypes, CRM_Event_PseudoConstant::eventType());
-    if (!array_key_exists($subType, $subTypes)) {
+    // When you create a new contact type it gets saved in mixed case in the database.
+    // Eg. "Service User" becomes "Service_User" in civicrm_contact_type.name
+    // But that field does not differentiate case (eg. you can't add Service_User and service_user because mysql will report a duplicate error)
+    // webform_civicrm and some other integrations pass in the name as lowercase to API3 Contact.duplicatecheck
+    // Since we can't actually have two strings with different cases in the database perform a case-insensitive search here:
+    $subTypes = array_change_key_case($subTypes, CASE_LOWER);
+    if (!array_key_exists(mb_strtolower($subType), $subTypes)) {
+      \Civi::log()->debug("entityType: {$entityType}; subType: {$subType}");
       throw new CRM_Core_Exception('Invalid Filter');
     }
     return $subType;
@@ -878,10 +885,10 @@ ORDER BY civicrm_custom_group.weight,
             );
             $customValue['imageURL'] = str_replace('persist/contribute', 'custom', $config->imageUploadURL) .
               $fileDAO->uri;
-            list($path) = CRM_Core_BAO_File::path($fileDAO->id, $entityId);
+            [$path] = CRM_Core_BAO_File::path($fileDAO->id, $entityId);
             if ($path && file_exists($path)) {
-              list($imageWidth, $imageHeight) = getimagesize($path);
-              list($imageThumbWidth, $imageThumbHeight) = CRM_Contact_BAO_Contact::getThumbSize($imageWidth, $imageHeight);
+              [$imageWidth, $imageHeight] = getimagesize($path);
+              [$imageThumbWidth, $imageThumbHeight] = CRM_Contact_BAO_Contact::getThumbSize($imageWidth, $imageHeight);
               $customValue['imageThumbWidth'] = $imageThumbWidth;
               $customValue['imageThumbHeight'] = $imageThumbHeight;
             }
@@ -2252,6 +2259,7 @@ SELECT  civicrm_custom_group.id as groupID, civicrm_custom_group.title as groupT
    * @return array
    */
   public static function getMultipleFieldGroup() {
+    CRM_Core_Error::deprecatedFunctionWarning('api');
     $multipleGroup = [];
     $dao = new CRM_Core_DAO_CustomGroup();
     $dao->is_multiple = 1;
@@ -2348,7 +2356,7 @@ SELECT  civicrm_custom_group.id as groupID, civicrm_custom_group.title as groupT
    */
   public static function getSubTypes(): array {
     $sel2 = [];
-    $activityType = CRM_Core_PseudoConstant::activityType(FALSE, TRUE, FALSE, 'label', TRUE);
+    $activityType = CRM_Activity_BAO_Activity::buildOptions('activity_type_id', 'search');
 
     $eventType = CRM_Core_OptionGroup::values('event_type');
     $campaignTypes = CRM_Campaign_PseudoConstant::campaignType();
@@ -2474,7 +2482,7 @@ SELECT  civicrm_custom_group.id as groupID, civicrm_custom_group.title as groupT
       [
         'id' => 'Pledge',
         'label' => ts('Pledges'),
-        'grouping' => 'TODO',
+        'grouping' => NULL,
         'table_name' => 'civicrm_pledge',
       ],
       [
diff --git a/civicrm/CRM/Core/BAO/CustomQuery.php b/civicrm/CRM/Core/BAO/CustomQuery.php
index 92093305daf08fb2c112b0013547a05117433a71..621441bc76ebd80e06004b035ff364f0d6059f02 100644
--- a/civicrm/CRM/Core/BAO/CustomQuery.php
+++ b/civicrm/CRM/Core/BAO/CustomQuery.php
@@ -184,7 +184,7 @@ class CRM_Core_BAO_CustomQuery {
       }
 
       foreach ($values as $tuple) {
-        list($name, $op, $value, $grouping, $wildcard) = $tuple;
+        [$name, $op, $value, $grouping, $wildcard] = $tuple;
 
         $field = $this->_fields[$id];
 
@@ -333,7 +333,7 @@ class CRM_Core_BAO_CustomQuery {
               && substr($name, -5, 5) !== '_high') {
               // Relative dates are handled in the buildRelativeDateQuery function.
               $this->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause($fieldName, $op, $value, 'Date');
-              list($qillOp, $qillVal) = CRM_Contact_BAO_Query::buildQillForFieldValue(NULL, $field['label'], $value, $op, [], CRM_Utils_Type::T_DATE);
+              [$qillOp, $qillVal] = CRM_Contact_BAO_Query::buildQillForFieldValue(NULL, $field['label'], $value, $op, [], CRM_Utils_Type::T_DATE);
               $this->_qill[$grouping][] = "{$field['label']} $qillOp '$qillVal'";
             }
             break;
@@ -407,7 +407,7 @@ class CRM_Core_BAO_CustomQuery {
       $joinTableAlias = $joinTable;
       // Set location-specific query
       if (isset($this->_locationSpecificCustomFields[$field['id']])) {
-        list($locationType, $locationTypeId) = $this->_locationSpecificCustomFields[$field['id']];
+        [$locationType, $locationTypeId] = $this->_locationSpecificCustomFields[$field['id']];
         $joinTableAlias = "$locationType-address";
         $joinClause = "\nLEFT JOIN $joinTable `$locationType-address` ON (`$locationType-address`.contact_id = contact_a.id AND `$locationType-address`.location_type_id = $locationTypeId)";
       }
diff --git a/civicrm/CRM/Core/BAO/File.php b/civicrm/CRM/Core/BAO/File.php
index a69700feccb8e3fc136e54c5aff3e06a7b47645a..5f1bca7f7cc131ed2a915a9c21a69927e187a52e 100644
--- a/civicrm/CRM/Core/BAO/File.php
+++ b/civicrm/CRM/Core/BAO/File.php
@@ -133,10 +133,10 @@ class CRM_Core_BAO_File extends CRM_Core_DAO_File {
 
     // to get id's
     if ($overwrite && $fileTypeID) {
-      list($sql, $params) = self::sql($entityTable, $entityID, $fileTypeID);
+      [$sql, $params] = self::sql($entityTable, $entityID, $fileTypeID);
     }
     else {
-      list($sql, $params) = self::sql($entityTable, $entityID, 0);
+      [$sql, $params] = self::sql($entityTable, $entityID, 0);
     }
 
     $dao = CRM_Core_DAO::executeQuery($sql, $params);
@@ -207,7 +207,7 @@ class CRM_Core_BAO_File extends CRM_Core_DAO_File {
     CRM_Utils_Hook::pre('delete', 'File', $fileID, $fileDAO);
 
     // get the table and column name
-    list($tableName, $columnName, $groupID) = CRM_Core_BAO_CustomField::getTableColumnGroup($fieldID);
+    [$tableName, $columnName, $groupID] = CRM_Core_BAO_CustomField::getTableColumnGroup($fieldID);
 
     $entityFileDAO = new CRM_Core_DAO_EntityFile();
     $entityFileDAO->file_id = $fileID;
@@ -231,7 +231,7 @@ class CRM_Core_BAO_File extends CRM_Core_DAO_File {
    * The $useWhere is used so that the signature matches the parent class
    *
    * public function delete($useWhere = FALSE) {
-   * list($fileID, $entityID, $fieldID) = func_get_args();
+   * [$fileID, $entityID, $fieldID] = func_get_args();
    *
    * self::deleteFileReferences($fileID, $entityID, $fieldID);
    * } */
@@ -255,7 +255,7 @@ class CRM_Core_BAO_File extends CRM_Core_DAO_File {
 
     $config = CRM_Core_Config::singleton();
 
-    list($sql, $params) = self::sql($entityTable, $entityID, $fileTypeID, $fileID);
+    [$sql, $params] = self::sql($entityTable, $entityID, $fileTypeID, $fileID);
     $dao = CRM_Core_DAO::executeQuery($sql, $params);
 
     $cfIDs = [];
@@ -323,7 +323,7 @@ class CRM_Core_BAO_File extends CRM_Core_DAO_File {
 
     $config = CRM_Core_Config::singleton();
 
-    list($sql, $params) = self::sql($entityTable, $entityID, NULL);
+    [$sql, $params] = self::sql($entityTable, $entityID, NULL);
     $dao = CRM_Core_DAO::executeQuery($sql, $params);
     $results = [];
     while ($dao->fetch()) {
diff --git a/civicrm/CRM/Core/BAO/Log.php b/civicrm/CRM/Core/BAO/Log.php
index 719245f55cb867464762b35437ef85350d2d720d..3d10a68537a476373bf5a929cd7eefa56647b36c 100644
--- a/civicrm/CRM/Core/BAO/Log.php
+++ b/civicrm/CRM/Core/BAO/Log.php
@@ -39,7 +39,7 @@ class CRM_Core_BAO_Log extends CRM_Core_DAO_Log {
     $displayName = $result = $contactImage = NULL;
     if ($log->find(TRUE)) {
       if ($log->modified_id) {
-        list($displayName, $contactImage) = CRM_Contact_BAO_Contact::getDisplayAndImage($log->modified_id);
+        [$displayName, $contactImage] = CRM_Contact_BAO_Contact::getDisplayAndImage($log->modified_id);
       }
       $result = [
         'id' => $log->modified_id,
diff --git a/civicrm/CRM/Core/BAO/Mapping.php b/civicrm/CRM/Core/BAO/Mapping.php
index ee1ade7d58c5d60b57f4ecc5d43ef6eadd24a64e..0fbe33d61ba6c3fe8f89cfc7455b12edc6dc2c7a 100644
--- a/civicrm/CRM/Core/BAO/Mapping.php
+++ b/civicrm/CRM/Core/BAO/Mapping.php
@@ -150,8 +150,10 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping implements \Civi\Core\Ho
    *
    * @return array
    *   array of mapping fields
+   * @deprecated to be removed.
    */
   public static function getMappingFields($mappingId, $addPrimary = FALSE) {
+    CRM_Core_Error::deprecatedFunctionWarning('api');
     //mapping is to be loaded from database
     $mapping = new CRM_Core_DAO_MappingField();
     $mapping->mapping_id = $mappingId;
@@ -279,323 +281,6 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping implements \Civi\Core\Ho
     return $returnFields;
   }
 
-  /**
-   * Build the mapping form for Search Builder.
-   *
-   * @param CRM_Core_Form $form
-   * @param int $mappingId
-   * @param int $columnNo
-   * @param int $blockCount
-   *   (no of blocks shown).
-   * @param int $exportMode
-   */
-  public static function buildMappingForm(&$form, $mappingId, $columnNo, $blockCount, $exportMode = NULL) {
-
-    $hasLocationTypes = [];
-    $hasRelationTypes = [];
-
-    $columnCount = $columnNo;
-    $form->addElement('xbutton', 'addBlock', ts('Also include contacts where'),
-      [
-        'type' => 'submit',
-        'class' => 'submit-link',
-        'value' => 1,
-      ]
-    );
-
-    $contactTypes = CRM_Contact_BAO_ContactType::basicTypes();
-    $fields = self::getBasicFields('Search Builder');
-
-    // Unset groups, tags, notes for component export
-    if ($exportMode != CRM_Export_Form_Select::CONTACT_EXPORT) {
-      foreach (array_keys($fields) as $type) {
-        CRM_Utils_Array::remove($fields[$type], 'groups', 'tags', 'notes');
-      }
-    }
-
-    // Build the common contact fields array.
-    $fields['Contact'] = [];
-    foreach ($fields[$contactTypes[0]] as $key => $value) {
-      // If a field exists across all contact types, move it to the "Contact" selector
-      $ubiquitious = TRUE;
-      foreach ($contactTypes as $type) {
-        if (!isset($fields[$type][$key])) {
-          $ubiquitious = FALSE;
-        }
-      }
-      if ($ubiquitious) {
-        $fields['Contact'][$key] = $value;
-        foreach ($contactTypes as $type) {
-          unset($fields[$type][$key]);
-        }
-      }
-    }
-    if (array_key_exists('note', $fields['Contact'])) {
-      $noteTitle = $fields['Contact']['note']['title'];
-      $fields['Contact']['note']['title'] = $noteTitle . ': ' . ts('Body and Subject');
-      $fields['Contact']['note_body'] = ['title' => $noteTitle . ': ' . ts('Body Only'), 'name' => 'note_body'];
-      $fields['Contact']['note_subject'] = [
-        'title' => $noteTitle . ': ' . ts('Subject Only'),
-        'name' => 'note_subject',
-      ];
-    }
-
-    // add component fields
-    $compArray = self::addComponentFields($fields, 'Search Builder', $exportMode);
-
-    foreach ($fields as $key => $value) {
-
-      foreach ($value as $key1 => $value1) {
-        //CRM-2676, replacing the conflict for same custom field name from different custom group.
-        $customGroupName = self::getCustomGroupName($key1);
-
-        if ($customGroupName) {
-          $relatedMapperFields[$key][$key1] = $mapperFields[$key][$key1] = $customGroupName . ': ' . $value1['title'];
-        }
-        else {
-          $relatedMapperFields[$key][$key1] = $mapperFields[$key][$key1] = $value1['title'];
-        }
-        if (isset($value1['hasLocationType'])) {
-          $hasLocationTypes[$key][$key1] = $value1['hasLocationType'];
-        }
-
-        if (isset($value1['hasRelationType'])) {
-          $hasRelationTypes[$key][$key1] = $value1['hasRelationType'];
-          unset($relatedMapperFields[$key][$key1]);
-        }
-      }
-
-      if (isset($relatedMapperFields[$key]['related'])) {
-        unset($relatedMapperFields[$key]['related']);
-      }
-    }
-
-    $locationTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Address', 'location_type_id');
-
-    $defaultLocationType = CRM_Core_BAO_LocationType::getDefault();
-
-    // FIXME: dirty hack to make the default option show up first.  This
-    // avoids a mozilla browser bug with defaults on dynamically constructed
-    // selector widgets.
-    if ($defaultLocationType) {
-      $defaultLocation = $locationTypes[$defaultLocationType->id];
-      unset($locationTypes[$defaultLocationType->id]);
-      $locationTypes = [$defaultLocationType->id => $defaultLocation] + $locationTypes;
-    }
-
-    $locationTypes = [' ' => ts('Primary')] + $locationTypes;
-
-    // since we need a hierarchical list to display contact types & subtypes,
-    // this is what we going to display in first selector
-    $contactTypeSelect = CRM_Contact_BAO_ContactType::getSelectElements(FALSE, FALSE);
-    $contactTypeSelect = ['Contact' => ts('Contacts')] + $contactTypeSelect;
-
-    $sel1 = ['' => ts('- select record type -')] + $contactTypeSelect + $compArray;
-
-    foreach ($sel1 as $key => $sel) {
-      if ($key) {
-        // sort everything BUT the contactType which is sorted separately by
-        // an initial commit of CRM-13278 (check ksort above)
-        if (!in_array($key, $contactTypes)) {
-          asort($mapperFields[$key]);
-        }
-        $sel2[$key] = ['' => ts('- select field -')] + $mapperFields[$key];
-      }
-    }
-
-    $sel3[''] = NULL;
-    $sel5[''] = NULL;
-    $phoneTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Phone', 'phone_type_id');
-    $imProviders = CRM_Core_PseudoConstant::get('CRM_Core_DAO_IM', 'provider_id');
-    asort($phoneTypes);
-
-    foreach ($sel1 as $k => $sel) {
-      if ($k) {
-        foreach ($locationTypes as $key => $value) {
-          if (trim($key) != '') {
-            $sel4[$k]['phone'][$key] = &$phoneTypes;
-            $sel4[$k]['im'][$key] = &$imProviders;
-          }
-        }
-      }
-    }
-
-    foreach ($sel1 as $k => $sel) {
-      if ($k) {
-        foreach ($mapperFields[$k] as $key => $value) {
-          if (isset($hasLocationTypes[$k][$key])) {
-            $sel3[$k][$key] = $locationTypes;
-          }
-          else {
-            $sel3[$key] = NULL;
-          }
-        }
-      }
-    }
-
-    // Array for core fields and relationship custom data
-    $relationshipTypes = CRM_Contact_BAO_Relationship::getContactRelationshipType(NULL, NULL, NULL, NULL, TRUE);
-
-    //special fields that have location, hack for primary location
-    $specialFields = [
-      'street_address',
-      'supplemental_address_1',
-      'supplemental_address_2',
-      'supplemental_address_3',
-      'city',
-      'postal_code',
-      'postal_code_suffix',
-      'geo_code_1',
-      'geo_code_2',
-      'state_province',
-      'country',
-      'phone',
-      'email',
-      'im',
-    ];
-
-    if (isset($mappingId)) {
-      list($mappingName, $mappingContactType, $mappingLocation, $mappingPhoneType, $mappingImProvider,
-        $mappingRelation, $mappingOperator, $mappingValue
-        ) = CRM_Core_BAO_Mapping::getMappingFields($mappingId);
-
-      $blkCnt = count($mappingName);
-      if ($blkCnt >= $blockCount) {
-        $blockCount = $blkCnt + 1;
-      }
-      for ($x = 1; $x < $blockCount; $x++) {
-        if (isset($mappingName[$x])) {
-          $colCnt = count($mappingName[$x]);
-          if ($colCnt >= $columnCount[$x]) {
-            $columnCount[$x] = $colCnt;
-          }
-        }
-      }
-    }
-
-    $form->_blockCount = $blockCount;
-    $form->_columnCount = $columnCount;
-
-    $form->set('blockCount', $form->_blockCount);
-    $form->set('columnCount', $form->_columnCount);
-
-    $defaults = $noneArray = $nullArray = [];
-
-    for ($x = 1; $x < $blockCount; $x++) {
-
-      for ($i = 0; $i < $columnCount[$x]; $i++) {
-
-        $sel = &$form->addElement('hierselect', "mapper[$x][$i]", ts('Mapper for Field %1', [1 => $i]), NULL);
-        $jsSet = FALSE;
-
-        if (isset($mappingId)) {
-          list($mappingName, $defaults, $noneArray, $jsSet) = self::loadSavedMapping($mappingLocation, $x, $i, $mappingName, $mapperFields, $mappingContactType, $mappingRelation, $specialFields, $mappingPhoneType, $defaults, $noneArray, $mappingImProvider, $mappingOperator, $mappingValue);
-        }
-        //Fix for Search Builder
-        $j = 4;
-
-        $formValues = $form->exportValues();
-        if (!$jsSet) {
-          if (empty($formValues)) {
-            // Incremented length for third select box(relationship type)
-            for ($k = 1; $k < $j; $k++) {
-              $noneArray[] = [$x, $i, $k];
-            }
-          }
-          else {
-            if (!empty($formValues['mapper'][$x])) {
-              foreach ($formValues['mapper'][$x] as $value) {
-                for ($k = 1; $k < $j; $k++) {
-                  if (!isset($formValues['mapper'][$x][$i][$k]) ||
-                    (!$formValues['mapper'][$x][$i][$k])
-                  ) {
-                    $noneArray[] = [$x, $i, $k];
-                  }
-                  else {
-                    $nullArray[] = [$x, $i, $k];
-                  }
-                }
-              }
-            }
-            else {
-              for ($k = 1; $k < $j; $k++) {
-                $noneArray[] = [$x, $i, $k];
-              }
-            }
-          }
-        }
-        //Fix for Search Builder
-        $sel->setOptions([$sel1, $sel2, $sel3, $sel4]);
-
-        //CRM -2292, restricted array set
-        $operatorArray = ['' => ts('-operator-')] + CRM_Core_SelectValues::getSearchBuilderOperators();
-
-        $form->add('select', "operator[$x][$i]", '', $operatorArray);
-        $form->add('text', "value[$x][$i]", '');
-      }
-
-      $form->addElement('xbutton', "addMore[$x]", ts('Another search field'), [
-        'type' => 'submit',
-        'class' => 'submit-link',
-        'value' => 1,
-      ]);
-    }
-    //end of block for
-
-    $js = "<script type='text/javascript'>\n";
-    $formName = "document.Builder";
-    if (!empty($nullArray)) {
-      $js .= "var nullArray = [";
-      $elements = [];
-      $seen = [];
-      foreach ($nullArray as $element) {
-        $key = "{$element[0]}, {$element[1]}, {$element[2]}";
-        if (!isset($seen[$key])) {
-          $elements[] = "[$key]";
-          $seen[$key] = 1;
-        }
-      }
-      $js .= implode(', ', $elements);
-      $js .= "]";
-      $js .= "
-                for (var i=0;i<nullArray.length;i++) {
-                    if ( {$formName}['mapper['+nullArray[i][0]+']['+nullArray[i][1]+']['+nullArray[i][2]+']'] ) {
-                        {$formName}['mapper['+nullArray[i][0]+']['+nullArray[i][1]+']['+nullArray[i][2]+']'].style.display = '';
-                    }
-                }
-";
-    }
-    if (!empty($noneArray)) {
-      $js .= "var noneArray = [";
-      $elements = [];
-      $seen = [];
-      foreach ($noneArray as $element) {
-        $key = "{$element[0]}, {$element[1]}, {$element[2]}";
-        if (!isset($seen[$key])) {
-          $elements[] = "[$key]";
-          $seen[$key] = 1;
-        }
-      }
-      $js .= implode(', ', $elements);
-      $js .= "]";
-      $js .= "
-                for (var i=0;i<noneArray.length;i++) {
-                    if ( {$formName}['mapper['+noneArray[i][0]+']['+noneArray[i][1]+']['+noneArray[i][2]+']'] ) {
-  {$formName}['mapper['+noneArray[i][0]+']['+noneArray[i][1]+']['+noneArray[i][2]+']'].style.display = 'none';
-                    }
-                }
-";
-    }
-    $js .= "</script>\n";
-
-    $form->assign('initHideBoxes', $js);
-    $form->assign('columnCount', $columnCount);
-    $form->assign('blockCount', $blockCount);
-    $form->setDefaults($defaults);
-
-    $form->setDefaultAction('refresh');
-  }
-
   /**
    * @param string $mappingType
    * @return array
@@ -625,7 +310,7 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping implements \Civi\Core\Ho
         asort($relationshipTypes);
 
         foreach ($relationshipTypes as $key => $var) {
-          list($type) = explode('_', $key);
+          [$type] = explode('_', $key);
 
           $relationships[$key]['title'] = $var;
           $relationships[$key]['headerPattern'] = '/' . preg_quote($var, '/') . '/';
@@ -667,7 +352,7 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping implements \Civi\Core\Ho
 
         foreach ($subTypeRelationshipTypes as $key => $var) {
           if (!array_key_exists($key, $fields[$info['parent']])) {
-            list($type) = explode('_', $key);
+            [$type] = explode('_', $key);
 
             $csRelationships[$key]['title'] = $var;
             $csRelationships[$key]['headerPattern'] = '/' . preg_quote($var, '/') . '/';
@@ -803,7 +488,7 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping implements \Civi\Core\Ho
 
     // Handle mapping for 'related contact' fields
     if (count(explode('_', CRM_Utils_Array::value('1', $v))) > 2) {
-      list($id, $first, $second) = explode('_', CRM_Utils_Array::value('1', $v));
+      [$id, $first, $second] = explode('_', CRM_Utils_Array::value('1', $v));
       if (($first == 'a' && $second == 'b') || ($first == 'b' && $second == 'a')) {
 
         if (!empty($v['2'])) {
@@ -841,111 +526,6 @@ class CRM_Core_BAO_Mapping extends CRM_Core_DAO_Mapping implements \Civi\Core\Ho
     return $saveMappingFields;
   }
 
-  /**
-   * Load saved mapping.
-   *
-   * @param $mappingLocation
-   * @param int $x
-   * @param int $i
-   * @param $mappingName
-   * @param $mapperFields
-   * @param $mappingContactType
-   * @param $mappingRelation
-   * @param array $specialFields
-   * @param $mappingPhoneType
-   * @param $phoneType
-   * @param array $defaults
-   * @param array $noneArray
-   * @param $imProvider
-   * @param $mappingImProvider
-   * @param $mappingOperator
-   * @param $mappingValue
-   *
-   * @return array
-   */
-  protected static function loadSavedMapping($mappingLocation, int $x, int $i, $mappingName, $mapperFields, $mappingContactType, $mappingRelation, array $specialFields, $mappingPhoneType, array $defaults, array $noneArray, $mappingImProvider, $mappingOperator, $mappingValue) {
-    $jsSet = FALSE;
-    $locationId = $mappingLocation[$x][$i] ?? 0;
-    if (isset($mappingName[$x][$i])) {
-      if (is_array($mapperFields[$mappingContactType[$x][$i]])) {
-
-        if (isset($mappingRelation[$x][$i])) {
-          $relLocationId = $mappingLocation[$x][$i] ?? 0;
-          if (!$relLocationId && in_array($mappingName[$x][$i], $specialFields)) {
-            $relLocationId = " ";
-          }
-
-          $relPhoneType = $mappingPhoneType[$x][$i] ?? NULL;
-
-          $defaults["mapper[$x][$i]"] = [
-            $mappingContactType[$x][$i],
-            $mappingRelation[$x][$i],
-            $locationId,
-            $phoneType,
-            $mappingName[$x][$i],
-            $relLocationId,
-            $relPhoneType,
-          ];
-
-          if (!$locationId) {
-            $noneArray[] = [$x, $i, 2];
-          }
-          if (!$phoneType && !$imProvider) {
-            $noneArray[] = [$x, $i, 3];
-          }
-          if (!$mappingName[$x][$i]) {
-            $noneArray[] = [$x, $i, 4];
-          }
-          if (!$relLocationId) {
-            $noneArray[] = [$x, $i, 5];
-          }
-          if (!$relPhoneType) {
-            $noneArray[] = [$x, $i, 6];
-          }
-          $noneArray[] = [$x, $i, 2];
-        }
-        else {
-          $phoneType = $mappingPhoneType[$x][$i] ?? NULL;
-          $imProvider = $mappingImProvider[$x][$i] ?? NULL;
-          if (!$locationId && in_array($mappingName[$x][$i], $specialFields)) {
-            $locationId = " ";
-          }
-
-          $defaults["mapper[$x][$i]"] = [
-            $mappingContactType[$x][$i],
-            $mappingName[$x][$i],
-            $locationId,
-            $phoneType,
-          ];
-          if (!$mappingName[$x][$i]) {
-            $noneArray[] = [$x, $i, 1];
-          }
-          if (!$locationId) {
-            $noneArray[] = [$x, $i, 2];
-          }
-          if (!$phoneType && !$imProvider) {
-            $noneArray[] = [$x, $i, 3];
-          }
-
-          $noneArray[] = [$x, $i, 4];
-          $noneArray[] = [$x, $i, 5];
-          $noneArray[] = [$x, $i, 6];
-        }
-
-        $jsSet = TRUE;
-
-        if (CRM_Utils_Array::value($i, CRM_Utils_Array::value($x, $mappingOperator))) {
-          $defaults["operator[$x][$i]"] = $mappingOperator[$x][$i] ?? NULL;
-        }
-
-        if (isset($mappingValue[$x][$i])) {
-          $defaults["value[$x][$i]"] = $mappingValue[$x][$i] ?? NULL;
-        }
-      }
-    }
-    return [$mappingName, $defaults, $noneArray, $jsSet];
-  }
-
   /**
    * Function returns all custom fields with group title and
    * field label
diff --git a/civicrm/CRM/Core/BAO/MessageTemplate.php b/civicrm/CRM/Core/BAO/MessageTemplate.php
index 5bdf6f4d98be6aa7c7c74ee5eca47f5a053a20d5..cd260a29c9dd089772d50879376e2d80e6e46e28 100644
--- a/civicrm/CRM/Core/BAO/MessageTemplate.php
+++ b/civicrm/CRM/Core/BAO/MessageTemplate.php
@@ -287,8 +287,8 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
     $modelDefaults = [
       // instance of WorkflowMessageInterface, containing a list of data to provide to the message-template
       'model' => NULL,
-      // Symbolic name of the workflow step. Matches the option-value-name of the template.
-      'valueName' => NULL,
+      // Symbolic name of the workflow step. Matches the value in civicrm_msg_template.workflow_name.
+      'workflow' => NULL,
       // additional template params (other than the ones already set in the template singleton)
       'tplParams' => [],
       // additional token params (passed to the TokenProcessor)
@@ -341,9 +341,10 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
 
     self::synchronizeLegacyParameters($params);
     $params = array_merge($modelDefaults, $viewDefaults, $envelopeDefaults, $params);
-
+    $language = $params['language'] ?? (!empty($params['contactId']) ? Civi\Api4\Contact::get(FALSE)->addWhere('id', '=', $params['contactId'])->addSelect('preferred_language')->execute()->first()['preferred_language'] : NULL);
     CRM_Utils_Hook::alterMailParams($params, 'messageTemplate');
-    $mailContent = self::loadTemplate((string) $params['valueName'], $params['isTest'], $params['messageTemplateID'] ?? NULL, $params['groupName'] ?? '', $params['messageTemplate'], $params['subject'] ?? NULL);
+    [$mailContent, $translatedLanguage] = self::loadTemplate((string) $params['workflow'], $params['isTest'], $params['messageTemplateID'] ?? NULL, $params['groupName'] ?? '', $params['messageTemplate'], $params['subject'] ?? NULL, $language);
+    $params['tokenContext']['locale'] = $translatedLanguage ?? $params['language'] ?? NULL;
 
     self::synchronizeLegacyParameters($params);
     $rendered = CRM_Core_TokenSmarty::render(CRM_Utils_Array::subset($mailContent, ['text', 'html', 'subject']), $params['tokenContext'], $params['tplParams']);
@@ -363,6 +364,9 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
    * @param array $params
    */
   private static function synchronizeLegacyParameters(&$params) {
+    // 'valueName' is deprecated, docs were updated some time back
+    // and people have been notified. Having it here means the
+    // hooks will still see it until we remove.
     CRM_Utils_Array::pathSync($params, ['workflow'], ['valueName']);
     CRM_Utils_Array::pathSync($params, ['tokenContext', 'contactId'], ['contactId']);
     CRM_Utils_Array::pathSync($params, ['tokenContext', 'smarty'], ['disableSmarty'], function ($v, bool $isCanon) {
@@ -456,18 +460,21 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
    *   If omitted, the record will be loaded from workflowName/messageTemplateID.
    * @param string|null $subjectOverride
    *   This option is the older, wonkier version of $messageTemplate['msg_subject']...
+   * @param string|null $language
    *
    * @return array
    * @throws \API_Exception
    * @throws \CRM_Core_Exception
    */
-  protected static function loadTemplate(string $workflowName, bool $isTest, int $messageTemplateID = NULL, $groupName = NULL, ?array $messageTemplateOverride = NULL, ?string $subjectOverride = NULL): array {
+  protected static function loadTemplate(string $workflowName, bool $isTest, int $messageTemplateID = NULL, $groupName = NULL, ?array $messageTemplateOverride = NULL, ?string $subjectOverride = NULL, ?string $language = NULL): array {
     $base = ['msg_subject' => NULL, 'msg_text' => NULL, 'msg_html' => NULL, 'pdf_format_id' => NULL];
     if (!$workflowName && !$messageTemplateID) {
       throw new CRM_Core_Exception(ts("Message template's option value or ID missing."));
     }
 
     $apiCall = MessageTemplate::get(FALSE)
+      ->setLanguage($language)
+      ->setTranslationMode('fuzzy')
       ->addSelect('msg_subject', 'msg_text', 'msg_html', 'pdf_format_id', 'id')
       ->addWhere('is_default', '=', 1);
 
@@ -477,7 +484,8 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
     else {
       $apiCall->addWhere('workflow_name', '=', $workflowName);
     }
-    $messageTemplate = array_merge($base, $apiCall->execute()->first() ?: [], $messageTemplateOverride ?: []);
+    $result = $apiCall->execute();
+    $messageTemplate = array_merge($base, $result->first() ?: [], $messageTemplateOverride ?: []);
     if (empty($messageTemplate['id']) && empty($messageTemplateOverride)) {
       if ($messageTemplateID) {
         throw new CRM_Core_Exception(ts('No such message template: id=%1.', [1 => $messageTemplateID]));
@@ -501,7 +509,7 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
       // Group name & valueName are deprecated parameters. At some point it will not be passed out.
       // https://github.com/civicrm/civicrm-core/pull/17180
       'groupName' => $groupName,
-      'valueName' => $workflowName,
+      'workflow' => $workflowName,
     ];
 
     CRM_Utils_Hook::alterMailContent($mailContent);
@@ -524,7 +532,7 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen
       $mailContent['subject'] = $subjectOverride;
     }
 
-    return $mailContent;
+    return [$mailContent, $messageTemplate['actual_language'] ?? NULL];
   }
 
   /**
diff --git a/civicrm/CRM/Core/BAO/OptionValue.php b/civicrm/CRM/Core/BAO/OptionValue.php
index bb49356d77b4accb56d544633f382e5ed6e2d82f..2f70600ba3d960cca553a3d8702a11b116ec7ae0 100644
--- a/civicrm/CRM/Core/BAO/OptionValue.php
+++ b/civicrm/CRM/Core/BAO/OptionValue.php
@@ -219,6 +219,7 @@ class CRM_Core_BAO_OptionValue extends CRM_Core_DAO_OptionValue {
 
     $optionValue->id = $id;
     $optionValue->save();
+    Civi::cache('metadata')->flush();
     CRM_Core_PseudoConstant::flush();
 
     CRM_Utils_Hook::post($op, 'OptionValue', $id, $optionValue);
@@ -265,6 +266,7 @@ class CRM_Core_BAO_OptionValue extends CRM_Core_DAO_OptionValue {
     $hookParams = ['id' => $optionValueId];
     CRM_Utils_Hook::pre('delete', 'OptionValue', $optionValueId, $hookParams);
     if (self::updateRecords($optionValueId, CRM_Core_Action::DELETE)) {
+      Civi::cache('metadata')->flush();
       CRM_Core_PseudoConstant::flush();
       $optionValue->delete();
       CRM_Utils_Hook::post('delete', 'OptionValue', $optionValueId, $optionValue);
@@ -477,24 +479,24 @@ class CRM_Core_BAO_OptionValue extends CRM_Core_DAO_OptionValue {
    *   an array of array of values for this option group
    */
   public static function getOptionValuesArray($optionGroupID) {
+    global $tsLocale;
     // check if we can get the field values from the system cache
-    $cacheKey = "CRM_Core_BAO_OptionValue_OptionGroupID_{$optionGroupID}";
-    $cache = CRM_Utils_Cache::singleton();
-    $optionValues = $cache->get($cacheKey);
-    if (empty($optionValues)) {
-      $dao = new CRM_Core_DAO_OptionValue();
-      $dao->option_group_id = $optionGroupID;
-      $dao->orderBy('weight ASC, label ASC');
-      $dao->find();
-
-      $optionValues = [];
-      while ($dao->fetch()) {
-        $optionValues[$dao->id] = [];
-        CRM_Core_DAO::storeValues($dao, $optionValues[$dao->id]);
-      }
-
-      $cache->set($cacheKey, $optionValues);
+    $cacheKey = "CRM_Core_BAO_OptionValue_OptionGroupID_{$optionGroupID}_$tsLocale";
+    if (Civi::cache('metadata')->has($cacheKey)) {
+      return Civi::cache('metadata')->get($cacheKey);
     }
+    $dao = new CRM_Core_DAO_OptionValue();
+    $dao->option_group_id = $optionGroupID;
+    $dao->orderBy('weight ASC, label ASC');
+    $dao->find();
+
+    $optionValues = [];
+    while ($dao->fetch()) {
+      $optionValues[$dao->id] = [];
+      CRM_Core_DAO::storeValues($dao, $optionValues[$dao->id]);
+    }
+
+    Civi::cache('metadata')->set($cacheKey, $optionValues);
 
     return $optionValues;
   }
diff --git a/civicrm/CRM/Core/BAO/PrevNextCache.php b/civicrm/CRM/Core/BAO/PrevNextCache.php
index c63e2e9bdf366c0329df932da213b80325bb82c6..e848df2edd2addbeaa057d08372d5e5d85961fec 100644
--- a/civicrm/CRM/Core/BAO/PrevNextCache.php
+++ b/civicrm/CRM/Core/BAO/PrevNextCache.php
@@ -35,7 +35,7 @@ class CRM_Core_BAO_PrevNextCache extends CRM_Core_DAO_PrevNextCache {
    */
   public static function getPositions($cacheKey, $id1, $id2, &$mergeId = NULL, $join = NULL, $where = NULL, $flip = FALSE) {
     if ($flip) {
-      list($id1, $id2) = [$id2, $id1];
+      [$id1, $id2] = [$id2, $id1];
     }
 
     if ($mergeId == NULL) {
diff --git a/civicrm/CRM/Core/BAO/TranslateGetWrapper.php b/civicrm/CRM/Core/BAO/TranslateGetWrapper.php
new file mode 100644
index 0000000000000000000000000000000000000000..67214b24260562a18893ee110313eee3a2ad2807
--- /dev/null
+++ b/civicrm/CRM/Core/BAO/TranslateGetWrapper.php
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * Wrapper to swap in translated text.
+ */
+class CRM_Core_BAO_TranslateGetWrapper {
+
+  protected $fields;
+  protected $translatedLanguage;
+
+  /**
+   * CRM_Core_BAO_TranslateGetWrapper constructor.
+   *
+   * This wrapper replaces values with configured translated values, if any exist.
+   *
+   * @param array $translated
+   */
+  public function __construct($translated) {
+    $this->fields = $translated['fields'];
+    $this->translatedLanguage = $translated['language'];
+  }
+
+  /**
+   * @inheritdoc
+   */
+  public function fromApiInput($apiRequest) {
+    return $apiRequest;
+  }
+
+  /**
+   * @inheritdoc
+   */
+  public function toApiOutput($apiRequest, $result) {
+    foreach ($result as &$value) {
+      if (!isset($value['id'], $this->fields[$value['id']])) {
+        continue;
+      }
+      $toSet = array_intersect_key($this->fields[$value['id']], $value);
+      $value = array_merge($value, $toSet);
+      $value['actual_language'] = $this->translatedLanguage;
+    }
+    return $result;
+  }
+
+}
diff --git a/civicrm/CRM/Core/BAO/Translation.php b/civicrm/CRM/Core/BAO/Translation.php
index c7ab686cce8b7cd121927c43a8aa72640d87665a..f1876031188ba5f5df09cd5cf9641d5f477b004e 100644
--- a/civicrm/CRM/Core/BAO/Translation.php
+++ b/civicrm/CRM/Core/BAO/Translation.php
@@ -9,12 +9,16 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Api4\Generic\AbstractAction;
+use Civi\Api4\Translation;
+use Civi\Core\HookInterface;
+
 /**
  *
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Core_BAO_Translation extends CRM_Core_DAO_Translation implements \Civi\Core\HookInterface {
+class CRM_Core_BAO_Translation extends CRM_Core_DAO_Translation implements HookInterface {
 
   use CRM_Core_DynamicFKAccessTrait;
 
@@ -23,7 +27,7 @@ class CRM_Core_BAO_Translation extends CRM_Core_DAO_Translation implements \Civi
    *
    * @return array[]
    */
-  public static function getStatuses() {
+  public static function getStatuses(): array {
     return [
       ['id' => 1, 'name' => 'active', 'label' => ts('Active')],
       ['id' => 2, 'name' => 'draft', 'label' => ts('Draft')],
@@ -144,4 +148,99 @@ class CRM_Core_BAO_Translation extends CRM_Core_DAO_Translation implements \Civi
     }
   }
 
+  /**
+   * Callback for hook_civicrm_post().
+   *
+   * Flush out cached values.
+   *
+   * @param \Civi\Core\Event\PostEvent $event
+   */
+  public static function self_hook_civicrm_post(\Civi\Core\Event\PostEvent $event): void {
+    unset(Civi::$statics[__CLASS__]);
+  }
+
+  /**
+   * Implements hook_civicrm_apiWrappers().
+   *
+   * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_apiWrappers/
+   *
+   * @see \CRM_Utils_Hook::apiWrappers()
+   * @throws \CRM_Core_Exception
+   */
+  public static function hook_civicrm_apiWrappers(&$wrappers, $apiRequest): void {
+    if (!($apiRequest instanceof \Civi\Api4\Generic\DAOGetAction)) {
+      return;
+    }
+
+    $mode = $apiRequest->getTranslationMode();
+    if ($mode !== 'fuzzy') {
+      return;
+    }
+
+    $communicationLanguage = \Civi\Core\Locale::detect()->nominal;
+    if ($communicationLanguage === Civi::settings()->get('lcMessages')) {
+      return;
+    }
+
+    if ($apiRequest['action'] === 'get') {
+      if (!isset(\Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage])) {
+        $translated = self::getTranslatedFieldsForRequest($apiRequest);
+        // @todo - once https://github.com/civicrm/civicrm-core/pull/24063 is merged
+        // this could set any defined translation fields that don't have a translation
+        // for one or more fields in the set to '' - ie 'if any are defined for
+        // an entity/language then all must be' - it seems like being strict on this
+        // now will make it easier later....
+        //n No, this doesn't work - 'fields' array doesn't look like that.
+        //n if (!empty($translated['fields']['msg_html']) && !isset($translated['fields']['msg_text'])) {
+        //n  $translated['fields']['msg_text'] = '';
+        //n }
+        foreach ($translated['fields'] ?? [] as $field) {
+          \Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage]['fields'][$field['entity_id']][$field['entity_field']] = $field['string'];
+          \Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage]['language'] = $translated['language'];
+        }
+      }
+      if (!empty(\Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage])) {
+        $wrappers[] = new CRM_Core_BAO_TranslateGetWrapper(\Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage]);
+      }
+    }
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\AbstractAction $apiRequest
+   * @return array translated fields.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected static function getTranslatedFieldsForRequest(AbstractAction $apiRequest): array {
+    $userLocale = \Civi\Core\Locale::detect();
+
+    $translations = Translation::get()
+      ->addWhere('entity_table', '=', CRM_Core_DAO_AllCoreTables::getTableForEntityName($apiRequest['entity']))
+      ->setCheckPermissions(FALSE)
+      ->setSelect(['entity_field', 'entity_id', 'string', 'language']);
+    if ((substr($userLocale->nominal, '-3', '3') !== '_NO')) {
+      // Generally we want to check for any translations of the base language
+      // and prefer, for example, French French over US English for French Canadians.
+      // Sites that genuinely want to cater to both will add translations for both
+      // and we work through preferences below.
+      $translations->addWhere('language', 'LIKE', substr($userLocale->nominal, 0, 2) . '%');
+    }
+    else {
+      // And here we have ... the Norwegians. They have three main variants which
+      // share the same country suffix but not language prefix. As with other languages
+      // any Norwegian is better than no Norwegian and sites that care will do multiple
+      $translations->addWhere('language', 'LIKE', '%_NO');
+    }
+    $fields = $translations->execute();
+    $languages = [];
+    foreach ($fields as $index => $field) {
+      $languages[$field['language']][$index] = $field;
+    }
+
+    $bizLocale = $userLocale->renegotiate(array_keys($languages));
+    return $bizLocale
+      ? ['fields' => $languages[$bizLocale->nominal], 'language' => $bizLocale->nominal]
+      : [];
+  }
+
 }
diff --git a/civicrm/CRM/Core/BAO/UFField.php b/civicrm/CRM/Core/BAO/UFField.php
index 9818e7b231862a5377b13998a832f3dd57b1dbbe..3abb2774dbb2fa503bad11303991100ed0b9a48b 100644
--- a/civicrm/CRM/Core/BAO/UFField.php
+++ b/civicrm/CRM/Core/BAO/UFField.php
@@ -747,7 +747,7 @@ SELECT  id
    */
   public static function assignAddressField($key, &$profileAddressFields, $profileFilter, $paymentProcessorBillingFields = NULL) {
     $billing_id = CRM_Core_BAO_LocationType::getBilling();
-    list($prefixName, $index) = CRM_Utils_System::explode('-', $key, 2);
+    [$prefixName, $index] = CRM_Utils_System::explode('-', $key, 2);
 
     $profileFields = civicrm_api3('uf_field', 'get', array_merge($profileFilter,
       [
diff --git a/civicrm/CRM/Core/BAO/UFGroup.php b/civicrm/CRM/Core/BAO/UFGroup.php
index 2732cf5739d1005e3ae23da0409757b4aee97bbe..063fe93f16be8c7e0f6c6dc5ec21708512e4870f 100644
--- a/civicrm/CRM/Core/BAO/UFGroup.php
+++ b/civicrm/CRM/Core/BAO/UFGroup.php
@@ -338,10 +338,10 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup {
       $field = CRM_Core_DAO::executeQuery($query);
 
       $importableFields = self::getProfileFieldMetadata($showAll);
-      list($customFields, $addressCustomFields) = self::getCustomFields($ctype, $skipPermission ? FALSE : $permissionType);
+      [$customFields, $addressCustomFields] = self::getCustomFields($ctype, $skipPermission ? FALSE : $permissionType);
 
       while ($field->fetch()) {
-        list($name, $formattedField) = self::formatUFField($group, $field, $customFields, $addressCustomFields, $importableFields, $permissionType);
+        [$name, $formattedField] = self::formatUFField($group, $field, $customFields, $addressCustomFields, $importableFields, $permissionType);
         if ($formattedField !== NULL) {
           $fields[$name] = $formattedField;
         }
@@ -398,7 +398,7 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup {
     $profileType = CRM_Core_BAO_UFField::calculateProfileType(implode(',', $ufGroupType));
     $contactActivityProfile = CRM_Core_BAO_UFField::checkContactActivityProfileTypeByGroupType(implode(',', $ufGroupType));
     $importableFields = self::getImportableFields($showAll, $profileType, $contactActivityProfile);
-    list($customFields, $addressCustomFields) = self::getCustomFields($ctype, $permissionType);
+    [$customFields, $addressCustomFields] = self::getCustomFields($ctype, $permissionType);
 
     $formattedFields = [];
     foreach ($fieldArrs as $fieldArr) {
@@ -407,7 +407,7 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup {
         continue;
       }
 
-      list($name, $formattedField) = self::formatUFField($group, $field, $customFields, $addressCustomFields, $importableFields, $permissionType);
+      [$name, $formattedField] = self::formatUFField($group, $field, $customFields, $addressCustomFields, $importableFields, $permissionType);
       if ($formattedField !== NULL) {
         $formattedFields[$name] = $formattedField;
       }
@@ -1177,8 +1177,8 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup {
               }
             }
             elseif ($name == 'image_URL') {
-              list($width, $height) = getimagesize(CRM_Utils_String::unstupifyUrl($details->$name));
-              list($thumbWidth, $thumbHeight) = CRM_Contact_BAO_Contact::getThumbSize($width, $height);
+              [$width, $height] = getimagesize(CRM_Utils_String::unstupifyUrl($details->$name));
+              [$thumbWidth, $thumbHeight] = CRM_Contact_BAO_Contact::getThumbSize($width, $height);
 
               $image_URL = '<img src="' . $details->$name . '" height= ' . $thumbHeight . ' width= ' . $thumbWidth . '  />';
               $values[$index] = "<a href='#' onclick='contactImagePopUp(\"{$details->$name}\", {$width}, {$height});'>{$image_URL}</a>";
@@ -1211,7 +1211,7 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup {
         }
       }
       elseif (strpos($name, '-') !== FALSE) {
-        list($fieldName, $id, $type) = CRM_Utils_System::explode('-', $name, 3);
+        [$fieldName, $id, $type] = CRM_Utils_System::explode('-', $name, 3);
 
         if (!in_array($fieldName, $multipleFields)) {
           if ($id == 'Primary') {
@@ -1917,7 +1917,7 @@ AND    ( entity_id IS NULL OR entity_id <= 0 )
       }
     }
     elseif (CRM_Utils_Array::value('name', $field) == 'membership_type') {
-      list($orgInfo, $types) = CRM_Member_BAO_MembershipType::getMembershipTypeInfo();
+      [$orgInfo, $types] = CRM_Member_BAO_MembershipType::getMembershipTypeInfo();
       $sel = &$form->addElement('hierselect', $name, $title);
       $select = ['' => ts('- select membership type -')];
       if (count($orgInfo) == 1 && $field['is_required']) {
@@ -2063,7 +2063,7 @@ AND    ( entity_id IS NULL OR entity_id <= 0 )
       }
     }
     elseif (substr($fieldName, 0, 14) === 'address_custom') {
-      list($fName, $locTypeId) = CRM_Utils_System::explode('-', $fieldName, 2);
+      [$fName, $locTypeId] = CRM_Utils_System::explode('-', $fieldName, 2);
       $customFieldID = CRM_Core_BAO_CustomField::getKeyID(substr($fName, 8));
       if ($customFieldID) {
         CRM_Core_BAO_CustomField::addQuickFormElement($form, $name, $customFieldID, $required, $search, $title);
@@ -2077,7 +2077,7 @@ AND    ( entity_id IS NULL OR entity_id <= 0 )
       $form->addMoney("soft_credit_amount[{$rowNumber}]", ts('Amount'), FALSE, NULL, FALSE);
     }
     elseif ($fieldName === 'product_name') {
-      list($products, $options) = CRM_Contribute_BAO_Premium::getPremiumProductInfo();
+      [$products, $options] = CRM_Contribute_BAO_Premium::getPremiumProductInfo();
       $sel = &$form->addElement('hierselect', $name, $title);
       $products = ['0' => ts('- select %1 -', [1 => $title])] + $products;
       $sel->setOptions([$products, $options]);
@@ -2329,7 +2329,7 @@ AND    ( entity_id IS NULL OR entity_id <= 0 )
         }
         else {
           $blocks = ['email', 'phone', 'im', 'openid'];
-          list($fieldName, $locTypeId, $phoneTypeId) = CRM_Utils_System::explode('-', $name, 3);
+          [$fieldName, $locTypeId, $phoneTypeId] = CRM_Utils_System::explode('-', $name, 3);
           if (!in_array($fieldName, $multipleFields)) {
             if (is_array($details)) {
               foreach ($details as $key => $value) {
@@ -2678,7 +2678,7 @@ AND    ( entity_id IS NULL OR entity_id <= 0 )
     );
 
     //get the default domain email address.
-    list($domainEmailName, $domainEmailAddress) = CRM_Core_BAO_Domain::getNameAndEmail();
+    [$domainEmailName, $domainEmailAddress] = CRM_Core_BAO_Domain::getNameAndEmail();
 
     if (!$domainEmailAddress || $domainEmailAddress == 'info@EXAMPLE.ORG') {
       $fixUrl = CRM_Utils_System::url('civicrm/admin/domain', 'action=update&reset=1');
@@ -2690,7 +2690,7 @@ AND    ( entity_id IS NULL OR entity_id <= 0 )
       CRM_Core_BAO_MessageTemplate::sendTemplate(
         [
           'groupName' => 'msg_tpl_workflow_uf',
-          'valueName' => 'uf_notify',
+          'workflow' => 'uf_notify',
           'contactId' => $contactID,
           'tplParams' => [
             'displayName' => $displayName,
@@ -2771,7 +2771,7 @@ AND    ( entity_id IS NULL OR entity_id <= 0 )
   public static function formatFields($params, $contactId = NULL) {
     if ($contactId) {
       // get the primary location type id and email
-      list($name, $primaryEmail, $primaryLocationType) = CRM_Contact_BAO_Contact_Location::getEmailDetails($contactId);
+      [$name, $primaryEmail, $primaryLocationType] = CRM_Contact_BAO_Contact_Location::getEmailDetails($contactId);
     }
     else {
       $defaultLocationType = CRM_Core_BAO_LocationType::getDefault();
@@ -2783,7 +2783,7 @@ AND    ( entity_id IS NULL OR entity_id <= 0 )
     $count = 1;
     $primaryLocation = 0;
     foreach ($params as $key => $value) {
-      list($fieldName, $locTypeId, $phoneTypeId) = explode('-', $key);
+      [$fieldName, $locTypeId, $phoneTypeId] = explode('-', $key);
 
       if ($locTypeId == 'Primary') {
         $locTypeId = $primaryLocationType;
diff --git a/civicrm/CRM/Core/BAO/UFMatch.php b/civicrm/CRM/Core/BAO/UFMatch.php
index c3a77a93daa4f3f4a13d363c940f8bf5ceeb211c..8100e72a3172c9a460521b97308fa5aa93299191 100644
--- a/civicrm/CRM/Core/BAO/UFMatch.php
+++ b/civicrm/CRM/Core/BAO/UFMatch.php
@@ -125,7 +125,7 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch {
 
     // add current contact to recently viewed
     if ($ufmatch->contact_id) {
-      list($displayName, $contactImage, $contactType, $contactSubtype, $contactImageUrl)
+      [$displayName, $contactImage, $contactType, $contactSubtype, $contactImageUrl]
         = CRM_Contact_BAO_Contact::getDisplayAndImage($ufmatch->contact_id, TRUE, TRUE);
 
       $otherRecent = [
@@ -215,17 +215,17 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch {
         // ensure there does not exists a contact_id / uf_id pair
         // in the DB. This might be due to multiple emails per contact
         // CRM-9091
-        $sql = "
+        $sql = '
 SELECT id
 FROM   civicrm_uf_match
 WHERE  contact_id = %1
 AND    domain_id = %2
-";
-        $params = [
+';
+
+        $conflict = CRM_Core_DAO::singleValueQuery($sql, [
           1 => [$dao->contact_id, 'Integer'],
           2 => [CRM_Core_Config::domainID(), 'Integer'],
-        ];
-        $conflict = CRM_Core_DAO::singleValueQuery($sql, $params);
+        ]);
 
         if (!$conflict) {
           $found = TRUE;
@@ -291,14 +291,13 @@ OR     uf_name      = %2
 OR     uf_id        = %3 )
 AND    domain_id    = %4
 ";
-      $params = [
+
+      $conflict = CRM_Core_DAO::singleValueQuery($sql, [
         1 => [$ufmatch->contact_id, 'Integer'],
         2 => [$ufmatch->uf_name, 'String'],
         3 => [$ufmatch->uf_id, 'Integer'],
         4 => [$ufmatch->domain_id, 'Integer'],
-      ];
-
-      $conflict = CRM_Core_DAO::singleValueQuery($sql, $params);
+      ]);
 
       if (!$conflict) {
         $ufmatch = CRM_Core_BAO_UFMatch::create((array) $ufmatch);
diff --git a/civicrm/CRM/Core/BAO/UserJob.php b/civicrm/CRM/Core/BAO/UserJob.php
index fe5ca8785ef2d6c3c6ea1a0877868b3ba86f021c..39acdb3dd5dc447974f7eb312b421aa956b200bb 100644
--- a/civicrm/CRM/Core/BAO/UserJob.php
+++ b/civicrm/CRM/Core/BAO/UserJob.php
@@ -15,6 +15,7 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\UserJob;
 use Civi\Core\ClassScanner;
 use Civi\UserJob\UserJobInterface;
 
@@ -38,7 +39,7 @@ class CRM_Core_BAO_UserJob extends CRM_Core_DAO_UserJob implements \Civi\Core\Ho
     /** @var \CRM_Queue_Queue $queue */
     $queue = $e->queue;
     $userJobId = static::findUserJobId($queue->getName());
-    if ($userJobId && $queue->numberOfItems() < 1) {
+    if ($userJobId && $queue->getStatistic('total') < 1) {
       $queue->setStatus('completed');
     }
   }
@@ -48,14 +49,14 @@ class CRM_Core_BAO_UserJob extends CRM_Core_DAO_UserJob implements \Civi\Core\Ho
    *
    * @param \CRM_Queue_Queue $queue
    * @param string $status
-   * @throws \API_Exception
-   * @throws \Civi\API\Exception\UnauthorizedException
+   * @throws \CRM_Core_Exception
+   *
    * @see \CRM_Utils_Hook::queueStatus()
    */
-  public static function hook_civicrm_queueStatus(CRM_Queue_Queue $queue, string $status) {
+  public static function hook_civicrm_queueStatus(CRM_Queue_Queue $queue, string $status): void {
     $userJobId = static::findUserJobId($queue->getName());
     if ($userJobId && $status === 'completed') {
-      \Civi\Api4\UserJob::update()
+      UserJob::update(FALSE)
         ->addWhere('id', '=', $userJobId)
         ->setValues(['status_id' => 1])
         ->execute();
@@ -135,10 +136,12 @@ class CRM_Core_BAO_UserJob extends CRM_Core_DAO_UserJob implements \Civi\Core\Ho
   /**
    * Get the types Import Jobs.
    *
-   * This is largely a placeholder at this stage. It will likely wind
-   * up as an option value so extensions can add different types.
-   *
-   * However, for now it just holds the one type being worked on.
+   * Each type is keyed by it's id and has
+   *   -id
+   *   -name
+   *   -label
+   *   -class
+   *   -entity
    *
    * @return array
    */
@@ -147,6 +150,7 @@ class CRM_Core_BAO_UserJob extends CRM_Core_DAO_UserJob implements \Civi\Core\Ho
     if ($types === NULL) {
       $types = [];
       $classes = ClassScanner::get(['interface' => UserJobInterface::class]);
+      /** @var \Civi\UserJob\UserJobInterface $class */
       foreach ($classes as $class) {
         $declaredTypes = $class::getUserJobInfo();
         foreach ($declaredTypes as $index => $declaredType) {
diff --git a/civicrm/CRM/Core/CodeGen/GenerateData.php b/civicrm/CRM/Core/CodeGen/GenerateData.php
index 6b6eb81672b9f6cb4b421c1b045710331bfd8db4..4117c357592f34767300ab769a740e47d164941e 100644
--- a/civicrm/CRM/Core/CodeGen/GenerateData.php
+++ b/civicrm/CRM/Core/CodeGen/GenerateData.php
@@ -1295,8 +1295,11 @@ class CRM_Core_CodeGen_GenerateData {
 
   /**
    * This method populates the civicrm_activity_history table
+   *
+   * @noinspection PhpUnusedPrivateMethodInspection
+   * @throws \Exception
    */
-  private function addActivity() {
+  private function addActivity(): void {
     $contactDAO = new CRM_Contact_DAO_Contact();
     $contactDAO->contact_type = 'Individual';
     $contactDAO->selectAdd();
@@ -1304,19 +1307,37 @@ class CRM_Core_CodeGen_GenerateData {
     $contactDAO->orderBy('sort_name');
     $contactDAO->find();
 
+    $activityTypes = CRM_Core_DAO::executeQuery(
+      "
+    SELECT  label, name, value as activity_type_id
+      FROM  civicrm_option_value
+     WHERE  component_id IS NULL AND
+       -- this filter mostly gives us user-type actions like 'Phone' & 'Email'
+       -- but historically we have also included these two...
+       (filter = 0 OR name IN ('Tell A Friend', 'Pledge Acknowledgment'))
+       AND option_group_id IN (SELECT id from civicrm_option_group WHERE name = 'activity_type')
+     ")->fetchAll();
+
+    $activityTypeOptions = [];
+    $nonAssignTypes = ['Pledge Acknowledgment', 'Print PDF Letter'];
+    foreach ($activityTypes as $activityType) {
+      $activityTypeOptions[$activityType['activity_type_id']] = ['label' => $activityType['label'], 'name' => $activityType['label']];
+      $activityTypeOptions[$activityType['activity_type_id']]['is_add_targets'] = !in_array($nonAssignTypes, $activityType['name'], TRUE);
+    }
     $count = 0;
-    $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate');
+    $activityContacts = array_flip(CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'));
+
     while ($contactDAO->fetch()) {
       if ($count++ > 2) {
         break;
       }
       for ($i = 0; $i < self::NUM_ACTIVITY; $i++) {
+        $activityTypeID = array_rand($activityTypeOptions);
+        $activityType = $activityTypeOptions[$activityTypeID];
         $activityDAO = new CRM_Activity_DAO_Activity();
-        $activityId = CRM_Core_OptionGroup::values('activity_type', NULL, NULL, NULL, ' AND v.name IN ("Tell A Friend", "Pledge Acknowledgment")');
-        $activityTypeID = $this->randomIndex($activityId);
-        $activity = CRM_Core_PseudoConstant::activityType();
         $activityDAO->activity_type_id = $activityTypeID;
-        $activityDAO->subject = "Subject for $activity[$activityTypeID]";
+        $activityDAO->subject = "Subject for {$activityType['label']}";
+        $activityDAO->duration = random_int(1, 6);
         $activityDAO->activity_date_time = $this->randomDate();
         $activityDAO->status_id = 2;
         $this->_insert($activityDAO);
@@ -1324,14 +1345,14 @@ class CRM_Core_CodeGen_GenerateData {
         $activityContactDAO = new CRM_Activity_DAO_ActivityContact();
         $activityContactDAO->activity_id = $activityDAO->id;
         $activityContactDAO->contact_id = $contactDAO->id;
-        $activityContactDAO->record_type_id = CRM_Utils_Array::key('Activity Source', $activityContacts);
+        $activityContactDAO->record_type_id = $activityContacts['Activity Source'];
         $this->_insert($activityContactDAO);
 
-        if ($activityTypeID == 9) {
+        if ($activityType['is_add_targets']) {
           $activityContactDAO = new CRM_Activity_DAO_ActivityContact();
           $activityContactDAO->activity_id = $activityDAO->id;
           $activityContactDAO->contact_id = $this->randomInt(1, 101);
-          $activityContactDAO->record_type_id = CRM_Utils_Array::key('Activity Targets', $activityContacts);
+          $activityContactDAO->record_type_id = $activityContacts['Activity Targets'];
           $this->_insert($activityContactDAO);
         }
       }
diff --git a/civicrm/CRM/Core/CodeGen/Specification.php b/civicrm/CRM/Core/CodeGen/Specification.php
index 719db4ee524328c31b6b8caa44ea0b1c5e7ba7b6..e8b2145c52121f2ad44e6fbb298f2f0212b504bf 100644
--- a/civicrm/CRM/Core/CodeGen/Specification.php
+++ b/civicrm/CRM/Core/CodeGen/Specification.php
@@ -362,6 +362,7 @@ class CRM_Core_CodeGen_Specification {
     $field['required'] = $this->value('required', $fieldXML);
     $field['collate'] = $this->value('collate', $fieldXML);
     $field['comment'] = $this->value('comment', $fieldXML);
+    $field['deprecated'] = $this->value('deprecated', $fieldXML, FALSE);
     $field['default'] = $this->value('default', $fieldXML);
     $field['import'] = $this->value('import', $fieldXML);
     if ($this->value('export', $fieldXML)) {
@@ -447,6 +448,9 @@ class CRM_Core_CodeGen_Specification {
         'nameColumn',
         // Column to fetch in "abbreviate" context
         'abbrColumn',
+        // Supported by APIv4 suffixes
+        'colorColumn',
+        'iconColumn',
         // Where clause snippet (will be joined to the rest of the query with AND operator)
         'condition',
         // callback function incase of static arrays
@@ -587,7 +591,7 @@ class CRM_Core_CodeGen_Specification {
     // all fieldnames have to be defined and should exist in schema.
     foreach ($primaryKey['field'] as $fieldName) {
       if (!$fieldName) {
-        echo "Invalid field definition for index '$name' in table ${table['name']}\n";
+        echo "Invalid field definition for index '$name' in table {$table['name']}\n";
         return;
       }
       $parenOffset = strpos($fieldName, '(');
@@ -595,7 +599,7 @@ class CRM_Core_CodeGen_Specification {
         $fieldName = substr($fieldName, 0, $parenOffset);
       }
       if (!array_key_exists($fieldName, $fields)) {
-        echo "Missing definition of field '$fieldName' for index '$name' in table ${table['name']}\n";
+        echo "Missing definition of field '$fieldName' for index '$name' in table {$table['name']}\n";
         print_r($fields);
         exit();
       }
diff --git a/civicrm/CRM/Core/CommunityMessages.php b/civicrm/CRM/Core/CommunityMessages.php
index ebf881cdbe9bc375c86ebcf5536cf2b0b4a92f3c..0c054b351c8b1cd90a3f01f2598a69bdb07985ff 100644
--- a/civicrm/CRM/Core/CommunityMessages.php
+++ b/civicrm/CRM/Core/CommunityMessages.php
@@ -123,7 +123,7 @@ class CRM_Core_CommunityMessages {
    *   parsed JSON
    */
   public function fetchDocument() {
-    list($status, $json) = $this->client->get($this->getRenderedUrl());
+    [$status, $json] = $this->client->get($this->getRenderedUrl());
     if ($status != CRM_Utils_HttpClient::STATUS_OK || empty($json)) {
       return NULL;
     }
diff --git a/civicrm/CRM/Core/Config.php b/civicrm/CRM/Core/Config.php
index a9041e60d022cbc2a63175d1e97f0ca11d77e5c5..04000519a9d1d4b4fb847d615a2c925611f257ed 100644
--- a/civicrm/CRM/Core/Config.php
+++ b/civicrm/CRM/Core/Config.php
@@ -19,6 +19,8 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\UserJob;
+
 require_once 'Log.php';
 require_once 'Mail.php';
 
@@ -266,12 +268,12 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge {
   public function cleanupCaches($sessionReset = TRUE) {
     // cleanup templates_c directory
     $this->cleanup(1, FALSE);
-
+    UserJob::delete(FALSE)->addWhere('expires_date', '<', 'now')->execute();
     // clear all caches
     self::clearDBCache();
     Civi::cache('session')->clear();
     Civi::cache('metadata')->clear();
-    CRM_Core_DAO_AllCoreTables::reinitializeCache();
+    CRM_Core_DAO_AllCoreTables::flush();
     CRM_Utils_System::flushCache();
 
     if ($sessionReset) {
@@ -323,7 +325,7 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge {
   /**
    * Clear db cache.
    */
-  public static function clearDBCache() {
+  public static function clearDBCache(): void {
     $queries = [
       'TRUNCATE TABLE civicrm_acl_cache',
       'TRUNCATE TABLE civicrm_acl_contact_cache',
@@ -356,20 +358,15 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge {
    *   Optional time interval for mysql date function.g '2 day'. This can be used to prevent
    *   tables created recently from being deleted.
    */
-  public static function clearTempTables($timeInterval = FALSE) {
+  public static function clearTempTables($timeInterval = FALSE): void {
 
     $dao = new CRM_Core_DAO();
     $query = "
       SELECT TABLE_NAME as tableName
       FROM   INFORMATION_SCHEMA.TABLES
       WHERE  TABLE_SCHEMA = %1
-      AND (
-        TABLE_NAME LIKE 'civicrm_import_job_%'
-        OR TABLE_NAME LIKE 'civicrm_report_temp%'
-        OR TABLE_NAME LIKE 'civicrm_tmp_d%'
-        )
+      AND TABLE_NAME LIKE 'civicrm_tmp_d%'
     ";
-    // NOTE: Cannot find use-cases where "civicrm_report_temp" would be durable. Could probably remove.
 
     if ($timeInterval) {
       $query .= " AND CREATE_TIME < DATE_SUB(NOW(), INTERVAL {$timeInterval})";
@@ -382,8 +379,14 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge {
     }
     if (!empty($tables)) {
       $table = implode(',', $tables);
-      // drop leftover temporary tables
-      CRM_Core_DAO::executeQuery("DROP TABLE $table");
+      // If a User Job references the table do not drop it. This is a bit quick & dirty but we don't want to
+      // get into calling more sophisticated functions in a cache clear and the table names are pretty unique.
+      // A separate process will reap the UserJobs but here the goal is just not to delete them during cache clearing
+      // if they are still referenced.
+      if (!CRM_Core_DAO::executeQuery("SELECT count(*) FROM civicrm_user_job WHERE metadata LIKE '%" . $tableDAO->tableName . "%'")) {
+        // drop leftover temporary tables
+        CRM_Core_DAO::executeQuery("DROP TABLE $table");
+      }
     }
   }
 
diff --git a/civicrm/CRM/Core/Controller.php b/civicrm/CRM/Core/Controller.php
index 0d642d99f6b13415c06cca2b0826d40f8dc84274..e26bec36d9e557868e16d4c60899550aec009f63 100644
--- a/civicrm/CRM/Core/Controller.php
+++ b/civicrm/CRM/Core/Controller.php
@@ -339,7 +339,7 @@ class CRM_Core_Controller extends HTML_QuickForm_Controller {
     // note that this is split into two, because some versions of
     // php 5.x core dump on the triple assignment :)
     $this->_actionName = $this->getActionName();
-    list($pageName, $action) = $this->_actionName;
+    [$pageName, $action] = $this->_actionName;
 
     if ($this->isModal()) {
       if (!$this->isValid($pageName)) {
@@ -360,7 +360,7 @@ class CRM_Core_Controller extends HTML_QuickForm_Controller {
    */
   public function validate() {
     $this->_actionName = $this->getActionName();
-    list($pageName, $action) = $this->_actionName;
+    [$pageName, $action] = $this->_actionName;
 
     $page = &$this->_pages[$pageName];
 
@@ -819,7 +819,7 @@ class CRM_Core_Controller extends HTML_QuickForm_Controller {
   }
 
   /**
-   * @param null $url
+   * @param string|null $url
    * @param bool $setToReferer
    */
   public function setDestination($url = NULL, $setToReferer = FALSE) {
@@ -842,7 +842,7 @@ class CRM_Core_Controller extends HTML_QuickForm_Controller {
    */
   public function cancelAction() {
     $actionName = $this->getActionName();
-    list($pageName, $action) = $actionName;
+    [$pageName, $action] = $actionName;
     return $this->_pages[$pageName]->cancelAction();
   }
 
diff --git a/civicrm/CRM/Core/Controller/Simple.php b/civicrm/CRM/Core/Controller/Simple.php
index f8739715f1187904d67ce493b230c1d2eaf419f5..d88929e66634870e1520eb1942befa8da6df0c2b 100644
--- a/civicrm/CRM/Core/Controller/Simple.php
+++ b/civicrm/CRM/Core/Controller/Simple.php
@@ -106,7 +106,7 @@ class CRM_Core_Controller_Simple extends CRM_Core_Controller {
   public function getTemplateFileName() {
     // there is only one form here, so should be quite easy
     $actionName = $this->getActionName();
-    list($pageName, $action) = $actionName;
+    [$pageName, $action] = $actionName;
 
     return $this->_pages[$pageName]->getTemplateFileName();
   }
diff --git a/civicrm/CRM/Core/DAO.php b/civicrm/CRM/Core/DAO.php
index be52f2b24a219d1ad6988e8b70496f383822262c..a64287c81ce76d345db201a00b5e336b821869e1 100644
--- a/civicrm/CRM/Core/DAO.php
+++ b/civicrm/CRM/Core/DAO.php
@@ -18,6 +18,9 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Core\DAO\Event\PostUpdate;
+use Civi\Core\DAO\Event\PreUpdate;
+
 if (!defined('DB_DSN_MODE')) {
   define('DB_DSN_MODE', 'auto');
 }
@@ -39,6 +42,25 @@ class CRM_Core_DAO extends DB_DataObject {
    */
   public static $_primaryKey = ['id'];
 
+  /**
+   * @return string[]
+   */
+  protected function getPrimaryKey(): array {
+    return static::$_primaryKey;
+  }
+
+  /**
+   * @return string
+   */
+  protected function getFirstPrimaryKey(): string {
+    // Historically it was always 'id'. It is now the case that some entities (import entities)
+    // have a single key that is NOT 'id'. However, for entities that have multiple
+    // keys (which we support in codegen if not many other places) we return 'id'
+    // simply because that is what we historically did & we don't want to 'just change'
+    // it & break those extensions without doing the work to create an alternative.
+    return count($this->getPrimaryKey()) > 1 ? 'id' : $this->getPrimaryKey()[0];
+  }
+
   /**
    * How many times has this instance been cloned.
    *
@@ -536,7 +558,7 @@ class CRM_Core_DAO extends DB_DataObject {
   public function sequenceKey() {
     static $sequenceKeys;
     if (!isset($sequenceKeys)) {
-      $sequenceKeys = ['id', TRUE];
+      $sequenceKeys = [$this->getFirstPrimaryKey(), TRUE];
     }
     return $sequenceKeys;
   }
@@ -634,25 +656,26 @@ class CRM_Core_DAO extends DB_DataObject {
    */
   public function save($hook = TRUE) {
     $eventID = uniqid();
-    if (!empty($this->id)) {
+    $primaryField = $this->getFirstPrimaryKey();
+    if (!empty($this->$primaryField)) {
       if ($hook) {
-        $preEvent = new \Civi\Core\DAO\Event\PreUpdate($this);
+        $preEvent = new PreUpdate($this);
         $preEvent->eventID = $eventID;
-        \Civi::dispatcher()->dispatch("civi.dao.preUpdate", $preEvent);
+        \Civi::dispatcher()->dispatch('civi.dao.preUpdate', $preEvent);
       }
 
       $result = $this->update();
 
       if ($hook) {
-        $event = new \Civi\Core\DAO\Event\PostUpdate($this, $result);
+        $event = new PostUpdate($this, $result);
         $event->eventID = $eventID;
-        \Civi::dispatcher()->dispatch("civi.dao.postUpdate", $event);
+        \Civi::dispatcher()->dispatch('civi.dao.postUpdate', $event);
       }
       $this->clearDbColumnValueCache();
     }
     else {
       if ($hook) {
-        $preEvent = new \Civi\Core\DAO\Event\PreUpdate($this);
+        $preEvent = new PreUpdate($this);
         $preEvent->eventID = $eventID;
         \Civi::dispatcher()->dispatch("civi.dao.preInsert", $preEvent);
       }
@@ -660,7 +683,7 @@ class CRM_Core_DAO extends DB_DataObject {
       $result = $this->insert();
 
       if ($hook) {
-        $event = new \Civi\Core\DAO\Event\PostUpdate($this, $result);
+        $event = new PostUpdate($this, $result);
         $event->eventID = $eventID;
         \Civi::dispatcher()->dispatch("civi.dao.postInsert", $event);
       }
@@ -755,6 +778,7 @@ class CRM_Core_DAO extends DB_DataObject {
    */
   public function copyValues($params) {
     $allNull = TRUE;
+    $primaryKey = $this->getFirstPrimaryKey();
     foreach ($this->fields() as $uniqueName => $field) {
       $dbName = $field['name'];
       if (array_key_exists($dbName, $params)) {
@@ -772,7 +796,19 @@ class CRM_Core_DAO extends DB_DataObject {
       // if there is no value then make the variable NULL
       if ($exists) {
         if ($value === '') {
-          $this->$dbName = 'null';
+          if ($dbName === $primaryKey && $field['type'] === CRM_Utils_Type::T_INT) {
+            // See also \Civi\Api4\Utils\FormattingUtil::formatWriteParams().
+            // The string 'null' is used in pear::db to "unset" values, whereas
+            // it skips over fields where the param is real null. However
+            // "unsetting" a primary key doesn't make sense - you can't convert
+            // an existing record to a "new" one. And then having string 'null'
+            // in the dao object can confuse later code, in particular save()
+            // which then calls the update hook instead of the create hook.
+            $this->$dbName = NULL;
+          }
+          else {
+            $this->$dbName = 'null';
+          }
         }
         elseif (is_array($value) && !empty($field['serialize'])) {
           $this->$dbName = CRM_Core_DAO::serializeField($value, $field['serialize']);
@@ -914,29 +950,31 @@ class CRM_Core_DAO extends DB_DataObject {
    * @throws \CRM_Core_Exception
    */
   public static function writeRecord(array $record): CRM_Core_DAO {
-    $op = empty($record['id']) ? 'create' : 'edit';
+    // Todo: Support composite primary keys
+    $idField = static::$_primaryKey[0];
+    $op = empty($record[$idField]) ? 'create' : 'edit';
     $className = CRM_Core_DAO_AllCoreTables::getCanonicalClassName(static::class);
     if ($className === 'CRM_Core_DAO') {
       throw new CRM_Core_Exception('Function writeRecord must be called on a subclass of CRM_Core_DAO');
     }
     $entityName = CRM_Core_DAO_AllCoreTables::getBriefName($className);
 
-    \CRM_Utils_Hook::pre($op, $entityName, $record['id'] ?? NULL, $record);
+    \CRM_Utils_Hook::pre($op, $entityName, $record[$idField] ?? NULL, $record);
     $fields = static::getSupportedFields();
     $instance = new static();
     // Ensure fields exist before attempting to write to them
     $values = array_intersect_key($record, $fields);
     $instance->copyValues($values);
-    if (empty($values['id']) && array_key_exists('name', $fields) && empty($values['name'])) {
-      $instance->makeNameFromLabel(!empty($fields['name']['required']));
+    if (empty($values[$idField]) && array_key_exists('name', $fields) && empty($values['name'])) {
+      $instance->makeNameFromLabel();
     }
     $instance->save();
 
     if (!empty($record['custom']) && is_array($record['custom'])) {
-      CRM_Core_BAO_CustomValueTable::store($record['custom'], static::$_tableName, $instance->id, $op);
+      CRM_Core_BAO_CustomValueTable::store($record['custom'], static::$_tableName, $instance->$idField, $op);
     }
 
-    \CRM_Utils_Hook::post($op, $entityName, $instance->id, $instance);
+    \CRM_Utils_Hook::post($op, $entityName, $instance->$idField, $instance);
 
     return $instance;
   }
@@ -965,28 +1003,30 @@ class CRM_Core_DAO extends DB_DataObject {
    * @throws CRM_Core_Exception
    */
   public static function deleteRecord(array $record) {
+    // Todo: Support composite primary keys
+    $idField = static::$_primaryKey[0];
     $className = CRM_Core_DAO_AllCoreTables::getCanonicalClassName(static::class);
     if ($className === 'CRM_Core_DAO') {
       throw new CRM_Core_Exception('Function deleteRecord must be called on a subclass of CRM_Core_DAO');
     }
     $entityName = CRM_Core_DAO_AllCoreTables::getBriefName($className);
-    if (empty($record['id'])) {
-      throw new CRM_Core_Exception("Cannot delete {$entityName} with no id.");
+    if (empty($record[$idField])) {
+      throw new CRM_Core_Exception("Cannot delete {$entityName} with no $idField.");
     }
-    CRM_Utils_Type::validate($record['id'], 'Positive');
+    CRM_Utils_Type::validate($record[$idField], 'Positive');
 
-    CRM_Utils_Hook::pre('delete', $entityName, $record['id'], $record);
+    CRM_Utils_Hook::pre('delete', $entityName, $record[$idField], $record);
     $instance = new $className();
-    $instance->id = $record['id'];
+    $instance->$idField = $record[$idField];
     // Load complete object for the sake of hook_civicrm_post, below
     $instance->find(TRUE);
     if (!$instance || !$instance->delete()) {
-      throw new CRM_Core_Exception("Could not delete {$entityName} id {$record['id']}");
+      throw new CRM_Core_Exception("Could not delete {$entityName} $idField {$record[$idField]}");
     }
     // For other operations this hook is passed an incomplete object and hook listeners can load if needed.
     // But that's not possible with delete because it's gone from the database by the time this hook is called.
     // So in this case the object has been pre-loaded so hook listeners have access to the complete record.
-    CRM_Utils_Hook::post('delete', $entityName, $record['id'], $instance);
+    CRM_Utils_Hook::post('delete', $entityName, $record[$idField], $instance);
 
     return $instance;
   }
@@ -1064,16 +1104,16 @@ class CRM_Core_DAO extends DB_DataObject {
    *
    * @return array
    */
-  public static function getTableNames() {
+  public static function getTableNames(): array {
     $dao = CRM_Core_DAO::executeQuery(
       "SELECT TABLE_NAME
        FROM information_schema.TABLES
        WHERE TABLE_SCHEMA = '" . CRM_Core_DAO::getDatabaseName() . "'
          AND TABLE_NAME LIKE 'civicrm_%'
-         AND TABLE_NAME NOT LIKE 'civicrm_import_job_%'
-         AND TABLE_NAME NOT LIKE '%_temp%'
+         AND TABLE_NAME NOT LIKE '%_tmp%'
       ");
 
+    $values = [];
     while ($dao->fetch()) {
       $values[] = $dao->TABLE_NAME;
     }
@@ -1092,8 +1132,6 @@ class CRM_Core_DAO extends DB_DataObject {
        WHERE ENGINE = 'MyISAM'
          AND TABLE_SCHEMA = '" . CRM_Core_DAO::getDatabaseName() . "'
          AND TABLE_NAME LIKE 'civicrm_%'
-         AND TABLE_NAME NOT LIKE 'civicrm_import_job_%'
-         AND TABLE_NAME NOT LIKE '%_temp%'
          AND TABLE_NAME NOT LIKE 'civicrm_tmp_%'
       ");
   }
@@ -2539,7 +2577,6 @@ SELECT contact_id
 
     $occurrences = [];
     foreach ($links as $refSpec) {
-      /** @var $refSpec CRM_Core_Reference_Interface */
       $daoName = CRM_Core_DAO_AllCoreTables::getClassForTable($refSpec->getReferenceTable());
       $result = $refSpec->findReferences($this);
       if ($result) {
@@ -2568,7 +2605,6 @@ SELECT contact_id
 
     $counts = [];
     foreach ($links as $refSpec) {
-      /** @var $refSpec CRM_Core_Reference_Interface */
       $count = $refSpec->getReferenceCount($this);
       if (!empty($count['count'])) {
         $counts[] = $count;
@@ -2576,7 +2612,6 @@ SELECT contact_id
     }
 
     foreach (CRM_Core_Component::getEnabledComponents() as $component) {
-      /** @var $component CRM_Core_Component_Info */
       $counts = array_merge($counts, $component->getReferenceCounts($this));
     }
     CRM_Utils_Hook::referenceCounts($this, $counts);
@@ -2606,7 +2641,7 @@ SELECT contact_id
       $links = $daoClassName::getReferenceColumns();
 
       foreach ($links as $refSpec) {
-        /** @var $refSpec CRM_Core_Reference_Interface */
+        /** @var CRM_Core_Reference_Interface $refSpec */
         if ($refSpec->matchesTargetTable($tableName)) {
           $refsFound[] = $refSpec;
         }
@@ -3311,10 +3346,8 @@ SELECT contact_id
    * create a unique, clean name derived from the label.
    *
    * Note: this function does nothing unless a unique index exists for "name" column.
-   *
-   * @var bool $isRequired
    */
-  private function makeNameFromLabel(bool $isRequired): void {
+  private function makeNameFromLabel(): void {
     $indexNameWith = NULL;
     // Look for a unique index which includes the "name" field
     if (method_exists($this, 'indices')) {
diff --git a/civicrm/CRM/Core/DAO/ActionLog.php b/civicrm/CRM/Core/DAO/ActionLog.php
index 21c4ba8b8c0e8c9ab76a878eb167fa048901f226..7e37d4a32378148c2877f140f6d543fe1927daae 100644
--- a/civicrm/CRM/Core/DAO/ActionLog.php
+++ b/civicrm/CRM/Core/DAO/ActionLog.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/ActionLog.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f3a6da0a3e4c1c9601265c8ad6eb85f4)
+ * (GenCodeChecksum:b100fbb1e074e3c74ab83f463d7c5a19)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/ActionMapping.php b/civicrm/CRM/Core/DAO/ActionMapping.php
index 232b5eeb5d789dcd50497bc7520388ad4a0246ae..3a4fb8586581d82b33fc92162ca46c5446ecad96 100644
--- a/civicrm/CRM/Core/DAO/ActionMapping.php
+++ b/civicrm/CRM/Core/DAO/ActionMapping.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/ActionMapping.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:47aaf423930a3ec40089a4b21caaae2c)
+ * (GenCodeChecksum:61d3614c11a560fd945d943065dab22b)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/ActionSchedule.php b/civicrm/CRM/Core/DAO/ActionSchedule.php
index e20791704ccd9a8060e4f0621ed5a13ada672f08..20b8ab83aba7caefd0773a424d99effc0d82283d 100644
--- a/civicrm/CRM/Core/DAO/ActionSchedule.php
+++ b/civicrm/CRM/Core/DAO/ActionSchedule.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/ActionSchedule.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:79492485b0099dc4a6a101f3191d64dd)
+ * (GenCodeChecksum:445eb201f20f412b272ca9df07bca33a)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Address.php b/civicrm/CRM/Core/DAO/Address.php
index 95ed9717b7d5d6252d5380ccab9abbfbcaf4c10d..2b57160b97f2bf253682ad795e52b015f949485f 100644
--- a/civicrm/CRM/Core/DAO/Address.php
+++ b/civicrm/CRM/Core/DAO/Address.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Address.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:63f758987eb3ff9fb47750eddb1a9ee8)
+ * (GenCodeChecksum:3f05cd897f3208750db1ea19adb784e7)
  */
 
 /**
@@ -234,6 +234,7 @@ class CRM_Core_DAO_Address extends CRM_Core_DAO {
    * @var string|null
    *   (SQL type: varchar(32))
    *   Note that values will be retrieved from the database as a string.
+   * @deprecated
    */
   public $usps_adc;
 
diff --git a/civicrm/CRM/Core/DAO/AddressFormat.php b/civicrm/CRM/Core/DAO/AddressFormat.php
index 242d8c3b878433449a2d1c04dae1ea808c7849fa..35364181baf01ad8e7fd4e75959ff9c8479767a8 100644
--- a/civicrm/CRM/Core/DAO/AddressFormat.php
+++ b/civicrm/CRM/Core/DAO/AddressFormat.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/AddressFormat.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:bdb3bcc498465d39e8bd700f5c3b64df)
+ * (GenCodeChecksum:2f9eea94452bfc5ecfdd44741f576190)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/AllCoreTables.php b/civicrm/CRM/Core/DAO/AllCoreTables.php
index bb1e808d6a8c3dd267329d3d4fe0945f4232246b..aeda2885b40235eae105b13d6519109c696f494a 100644
--- a/civicrm/CRM/Core/DAO/AllCoreTables.php
+++ b/civicrm/CRM/Core/DAO/AllCoreTables.php
@@ -24,13 +24,16 @@ class CRM_Core_DAO_AllCoreTables {
   /**
    * Initialise.
    *
-   * @param bool $fresh
+   * @param bool $fresh Deprecated parameter, use flush() to flush.
    */
-  public static function init($fresh = FALSE) {
-    static $init = FALSE;
-    if ($init && !$fresh) {
+  public static function init(bool $fresh = FALSE): void {
+    if (!empty(Civi::$statics[__CLASS__]['initialised']) && !$fresh) {
       return;
     }
+    if ($fresh) {
+      CRM_Core_Error::deprecatedWarning('Use CRM_Core_DAO_AllCoreTables::flush()');
+    }
+
     Civi::$statics[__CLASS__] = [];
 
     $file = preg_replace('/\.php$/', '.data.php', __FILE__);
@@ -50,7 +53,14 @@ class CRM_Core_DAO_AllCoreTables {
       );
     }
 
-    $init = TRUE;
+    Civi::$statics[__CLASS__]['initialised'] = TRUE;
+  }
+
+  /**
+   * Flush class cache.
+   */
+  public static function flush(): void {
+    Civi::$statics[__CLASS__]['initialised'] = FALSE;
   }
 
   /**
@@ -375,9 +385,11 @@ class CRM_Core_DAO_AllCoreTables {
 
   /**
    * Reinitialise cache.
+   *
+   * @deprecated
    */
-  public static function reinitializeCache() {
-    self::init(TRUE);
+  public static function reinitializeCache(): void {
+    self::flush();
   }
 
   /**
diff --git a/civicrm/CRM/Core/DAO/Cache.php b/civicrm/CRM/Core/DAO/Cache.php
index 7ab70b4f85b20bfb1c13d366f7b1382d8d39c6a0..09ee3bd4dad5b310269539b2a58a2f99d0506b83 100644
--- a/civicrm/CRM/Core/DAO/Cache.php
+++ b/civicrm/CRM/Core/DAO/Cache.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Cache.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:2b7084711ac3f619ce6f0cc8361dffa4)
+ * (GenCodeChecksum:8b1e9626632c80aadce6cae1fda86687)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Component.php b/civicrm/CRM/Core/DAO/Component.php
index 632b8ee61086ef4d931a3ee5341d2d0a81e1d9a5..a8088e52c420277918394928a867336564ea2366 100644
--- a/civicrm/CRM/Core/DAO/Component.php
+++ b/civicrm/CRM/Core/DAO/Component.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Component.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a5cc4308aa533a07f2528c5cd3a31896)
+ * (GenCodeChecksum:14adbacc5eb565c130dafde580998d69)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Country.php b/civicrm/CRM/Core/DAO/Country.php
index d6cd9d5503c90931892d9aa1986a0a57e702e565..b26109737b2b9e0c90a17d5bf2fda09d05068847 100644
--- a/civicrm/CRM/Core/DAO/Country.php
+++ b/civicrm/CRM/Core/DAO/Country.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Country.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:27aa4dca6a02c9e3827feff015f759fe)
+ * (GenCodeChecksum:cc102c2026bc18d7b24295fe3538a160)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/County.php b/civicrm/CRM/Core/DAO/County.php
index 72415042c8eb81591a41977f41446ed2f628a5e7..058c977b30c6267ce68fe2e609187f017bb71486 100644
--- a/civicrm/CRM/Core/DAO/County.php
+++ b/civicrm/CRM/Core/DAO/County.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/County.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:3b5b06caf78948fe6bbbafe831c2aa96)
+ * (GenCodeChecksum:92832b47b40ec2c72c41adfa9442b635)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/CustomField.php b/civicrm/CRM/Core/DAO/CustomField.php
index a74d5a950ae0008354dfbdf3fd5d532f1347c015..280ca029ef4f6eef03df0b25426a110e50d3263d 100644
--- a/civicrm/CRM/Core/DAO/CustomField.php
+++ b/civicrm/CRM/Core/DAO/CustomField.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/CustomField.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:52ca62aae191d0b8f9ec8bf5ad5595d1)
+ * (GenCodeChecksum:1bdc1de3a50a96d48b70369e4ff8c97f)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/CustomGroup.php b/civicrm/CRM/Core/DAO/CustomGroup.php
index 4a21ade78b14caf4ffab1e7426f915b1122881e8..df7ce6369c988733d2aca23a8fe27fd22103751b 100644
--- a/civicrm/CRM/Core/DAO/CustomGroup.php
+++ b/civicrm/CRM/Core/DAO/CustomGroup.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/CustomGroup.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:22712766c53c71ece90631f131f338a4)
+ * (GenCodeChecksum:0ad7add84b0d1f6942f7fbe30544a3c1)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Dashboard.php b/civicrm/CRM/Core/DAO/Dashboard.php
index d1cb04ef75c5d1c65b0b445823497b4c9775fbf4..d7bf5f99cc9f83eb1a5e4bbfcb9ff38e9f7723a6 100644
--- a/civicrm/CRM/Core/DAO/Dashboard.php
+++ b/civicrm/CRM/Core/DAO/Dashboard.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Dashboard.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:35f8b4725d70d269c6c23ed8f7e2b47d)
+ * (GenCodeChecksum:cf481ff3cbb8bf5a3c1616edb9973fa8)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Discount.php b/civicrm/CRM/Core/DAO/Discount.php
index 67d1321b418ebafa8f15155c17178fd121334fe3..919a45ee21cafb73a77ea6b7c7f993482ea23445 100644
--- a/civicrm/CRM/Core/DAO/Discount.php
+++ b/civicrm/CRM/Core/DAO/Discount.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Discount.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:bb48d26bc26ec7473c0d22b93275828c)
+ * (GenCodeChecksum:39f48abf39ca4618fa51b61514053042)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Domain.php b/civicrm/CRM/Core/DAO/Domain.php
index a25ef21408aff75d0ad4ed6f1c78104abf7fbccd..1d8073157a830655d74f0cd2cc7b1ab821e099a6 100644
--- a/civicrm/CRM/Core/DAO/Domain.php
+++ b/civicrm/CRM/Core/DAO/Domain.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Domain.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:941a0821b88a9225d9672cc25daa16f7)
+ * (GenCodeChecksum:ff3b7bab0ceab58d5d01c228e80569cc)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Email.php b/civicrm/CRM/Core/DAO/Email.php
index 082c77f910250deae123510aa5eab81c3b04ba3d..da97c7dff7992f5ce7a772f7a81b19f94696fad7 100644
--- a/civicrm/CRM/Core/DAO/Email.php
+++ b/civicrm/CRM/Core/DAO/Email.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Email.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:58fe115e0962f83c3906bce5f663f0fc)
+ * (GenCodeChecksum:4cf435cd4ab6427311cbe3c4bdfee3d7)
  */
 
 /**
@@ -350,6 +350,7 @@ class CRM_Core_DAO_Email extends CRM_Core_DAO {
             'formatType' => 'activityDateTime',
             'label' => ts("Hold Date"),
           ],
+          'readonly' => TRUE,
           'add' => '1.1',
         ],
         'reset_date' => [
diff --git a/civicrm/CRM/Core/DAO/EntityFile.php b/civicrm/CRM/Core/DAO/EntityFile.php
index fd3d56f3633d782b0333860e42031bd5653ae101..185cee0296929450b2c3811407ee9f86d8090118 100644
--- a/civicrm/CRM/Core/DAO/EntityFile.php
+++ b/civicrm/CRM/Core/DAO/EntityFile.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/EntityFile.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:d55d2dfbb297a954c71f0395e31a21d3)
+ * (GenCodeChecksum:7a12c1131215b6f149f9c37227739a4f)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/EntityTag.php b/civicrm/CRM/Core/DAO/EntityTag.php
index a46c13f955052d0fa1df7d15115e72da589739f7..570886031087e1c383fafc176f116cb0786f5f23 100644
--- a/civicrm/CRM/Core/DAO/EntityTag.php
+++ b/civicrm/CRM/Core/DAO/EntityTag.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/EntityTag.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:cabc3d8a72fecadc4d531226b1db4c1d)
+ * (GenCodeChecksum:34d286015dc73849f21721ca37eb2266)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Extension.php b/civicrm/CRM/Core/DAO/Extension.php
index 76ea4c5d763501ac59d055d52f9720a231fc6910..ee857a474c628fef19f6790983da2c667de3e8af 100644
--- a/civicrm/CRM/Core/DAO/Extension.php
+++ b/civicrm/CRM/Core/DAO/Extension.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Extension.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ff39cae78a2b4804c72ed90b8f22606b)
+ * (GenCodeChecksum:656c09d287b577cae3fe232f5693428a)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/File.php b/civicrm/CRM/Core/DAO/File.php
index 4b6060d02976798eb126b166ee771c5c89adec48..f5ec0276999e087580b9b666e280095e9c6de64f 100644
--- a/civicrm/CRM/Core/DAO/File.php
+++ b/civicrm/CRM/Core/DAO/File.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/File.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:432bca89c164c512fa77945f8958e60d)
+ * (GenCodeChecksum:a9fc8f7aec1f4ea752f908ab1845b7ea)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/IM.php b/civicrm/CRM/Core/DAO/IM.php
index 3d193b22b28c93b6f35032295c29b31a029d67d2..64abf247e1586344e17e0e7091c94f55904c4f68 100644
--- a/civicrm/CRM/Core/DAO/IM.php
+++ b/civicrm/CRM/Core/DAO/IM.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/IM.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:aa43f28e70d1de3571aa1775f71d7990)
+ * (GenCodeChecksum:612781b041b64c2af06afb83381f0950)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Job.php b/civicrm/CRM/Core/DAO/Job.php
index 6ba4e72cc3a790ea5ada2d8e7bde91de64a02556..53132405e868e6f87401253dc20e814dfa812603 100644
--- a/civicrm/CRM/Core/DAO/Job.php
+++ b/civicrm/CRM/Core/DAO/Job.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Job.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:48dcb79d3068aa6d0a994054b84658fe)
+ * (GenCodeChecksum:0e765cced9ff69d01a86f6ec31f79639)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/JobLog.php b/civicrm/CRM/Core/DAO/JobLog.php
index a1a4022db2f7baf2aeb2f7e389a3cd754228b695..3206263c1c0f31c62ec75f5bb226e16075da0362 100644
--- a/civicrm/CRM/Core/DAO/JobLog.php
+++ b/civicrm/CRM/Core/DAO/JobLog.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/JobLog.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:10c668f93f466aa0d49d258b6bc7badd)
+ * (GenCodeChecksum:0c7a0e03a0a65b15e87d600e4c29143e)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/LocBlock.php b/civicrm/CRM/Core/DAO/LocBlock.php
index dc0adb8b54e37653ed76922da6373f2295ec92bf..b48facb2aae3f765d270a51f7302bce6665480d3 100644
--- a/civicrm/CRM/Core/DAO/LocBlock.php
+++ b/civicrm/CRM/Core/DAO/LocBlock.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/LocBlock.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4153042d9ec41d2841dc085180f6e16b)
+ * (GenCodeChecksum:58abf1030f09b72bd670906899d1ff7a)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/LocationType.php b/civicrm/CRM/Core/DAO/LocationType.php
index 7251f4558340656df1dbb510a92213164b216822..bdb2be23c28525745ce388e2bf8d21122a97e5ef 100644
--- a/civicrm/CRM/Core/DAO/LocationType.php
+++ b/civicrm/CRM/Core/DAO/LocationType.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/LocationType.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:7bf7552cfdc3988c4582bccaea302c5f)
+ * (GenCodeChecksum:074707b1abfcd12cace2a46004becaaa)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Log.php b/civicrm/CRM/Core/DAO/Log.php
index da8bbdad17e7fe23ddce0de5400828321f6aadfa..6ea56c8f2c74e55bd5d61a3723ab253978ef52cc 100644
--- a/civicrm/CRM/Core/DAO/Log.php
+++ b/civicrm/CRM/Core/DAO/Log.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Log.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b2552b667e074cb7bb4132eac8153df2)
+ * (GenCodeChecksum:5187eb1975f03b74aa53fa0ad5755d45)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/MailSettings.php b/civicrm/CRM/Core/DAO/MailSettings.php
index 635828f78f7431aac8c3c87d24748532b237a4e9..b7f639eefeef5e3e0b5a848ea89e193e2dbe1752 100644
--- a/civicrm/CRM/Core/DAO/MailSettings.php
+++ b/civicrm/CRM/Core/DAO/MailSettings.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/MailSettings.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:d31cb841b4c5f88a27dacae0ab50a618)
+ * (GenCodeChecksum:67f035f6473e82f237d35193b078c361)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Managed.php b/civicrm/CRM/Core/DAO/Managed.php
index c073117f92c43089783242910969f1db73099668..9c0796789a860c108b7ba38f596d3b73b1643461 100644
--- a/civicrm/CRM/Core/DAO/Managed.php
+++ b/civicrm/CRM/Core/DAO/Managed.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Managed.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:54b79cae396d1c5044406fc97ae60352)
+ * (GenCodeChecksum:79d376974a9dcce07c8ee483a32b2bc1)
  */
 
 /**
@@ -108,7 +108,7 @@ class CRM_Core_DAO_Managed extends CRM_Core_DAO {
    *   Whether to return the plural version of the title.
    */
   public static function getEntityTitle($plural = FALSE) {
-    return $plural ? ts('Manageds') : ts('Managed');
+    return $plural ? ts('Managed Records') : ts('Managed Record');
   }
 
   /**
diff --git a/civicrm/CRM/Core/DAO/Mapping.php b/civicrm/CRM/Core/DAO/Mapping.php
index 491e451e0ae867138624332291a880c3aa499160..b55d7732a9a2a8fd67727350b722912ab0771ac2 100644
--- a/civicrm/CRM/Core/DAO/Mapping.php
+++ b/civicrm/CRM/Core/DAO/Mapping.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Mapping.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c69c9d834bfaaf44088ae0cd11e36b5f)
+ * (GenCodeChecksum:90ff3242f5dd3eba825a4f32ce7ffc85)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/MappingField.php b/civicrm/CRM/Core/DAO/MappingField.php
index 5afe384472323ecd4b00fe1661a0dc9b1f507cac..a2906eaa11ee9b4d4ef7bc0da1f0869f7d03ddc0 100644
--- a/civicrm/CRM/Core/DAO/MappingField.php
+++ b/civicrm/CRM/Core/DAO/MappingField.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/MappingField.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:43e4b1c405dfce18840eca9d73aa70e7)
+ * (GenCodeChecksum:3c9eaee238a7c77cd5c95fb4cbaa7c5a)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Menu.php b/civicrm/CRM/Core/DAO/Menu.php
index 40b8c76e762f5d0a32c96e4cc0cf50e00bb0ec34..7a656738b0199d4393097c321fe97fd371dc4e51 100644
--- a/civicrm/CRM/Core/DAO/Menu.php
+++ b/civicrm/CRM/Core/DAO/Menu.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Menu.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:190bae10088eb0999743b73f39fc92ca)
+ * (GenCodeChecksum:9148fba9300df9892020185528e6d356)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/MessageTemplate.php b/civicrm/CRM/Core/DAO/MessageTemplate.php
index a124c9d467c388088bf7774c6d80b4ffcfc951b4..e99268c2c86db29fb3e20073f4b12d1be6bc3add 100644
--- a/civicrm/CRM/Core/DAO/MessageTemplate.php
+++ b/civicrm/CRM/Core/DAO/MessageTemplate.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/MessageTemplate.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a2e8de0828f836d42d4dcce19200ab27)
+ * (GenCodeChecksum:c8108a59b0d4d942b69dcf5ddd7ab739)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Navigation.php b/civicrm/CRM/Core/DAO/Navigation.php
index b53aad0db91e2ca7d0387bf8bc4bf0883402aa8a..6c68ce9f4101cdaaefdf1d6f0fd4b18f73b2ff9c 100644
--- a/civicrm/CRM/Core/DAO/Navigation.php
+++ b/civicrm/CRM/Core/DAO/Navigation.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Navigation.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:58328e2bbd1fd9c5f9255596ef0de177)
+ * (GenCodeChecksum:7d5624f8fe455e8333cc9c5193eca6a8)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Note.php b/civicrm/CRM/Core/DAO/Note.php
index e70f2b811a185dfd160fdfcc9c49fda45689d3d5..c1acb75861fff293c5009843ebbcdb7fb9c7d0bd 100644
--- a/civicrm/CRM/Core/DAO/Note.php
+++ b/civicrm/CRM/Core/DAO/Note.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Note.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:5f542bdf0c411eeefbf3ec22514d7407)
+ * (GenCodeChecksum:0b0a6889926ac01eebf63c0588bb3561)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/OpenID.php b/civicrm/CRM/Core/DAO/OpenID.php
index 7a6650f7bc874a350cd10686a7f6ce6e0399fc8e..c4607333b954433a57d9297f935f0c83580371dc 100644
--- a/civicrm/CRM/Core/DAO/OpenID.php
+++ b/civicrm/CRM/Core/DAO/OpenID.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/OpenID.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:7c70e03ffe06633c9e61c5845967d286)
+ * (GenCodeChecksum:f36b03b8dd6517692620f0c0b71f1ff1)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/OptionGroup.php b/civicrm/CRM/Core/DAO/OptionGroup.php
index 5c25768fd76b1045261fc82f77c164825763cc9d..e1cb5f6b6ccf262d41e07aaaae612fed071f902c 100644
--- a/civicrm/CRM/Core/DAO/OptionGroup.php
+++ b/civicrm/CRM/Core/DAO/OptionGroup.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/OptionGroup.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c9bc7ac897d9d7ef0bc421f6e58bdf27)
+ * (GenCodeChecksum:123d467505bfa589d2dd3892f1923a3c)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/OptionValue.php b/civicrm/CRM/Core/DAO/OptionValue.php
index 03429a8a300b54e32859c622946a8fb389d0a796..531ffcab35e8c95e17d8f26eb0a3173800cbd753 100644
--- a/civicrm/CRM/Core/DAO/OptionValue.php
+++ b/civicrm/CRM/Core/DAO/OptionValue.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/OptionValue.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:36f4f8d1b40d94da47ebebaf3cf77f09)
+ * (GenCodeChecksum:453b474a87c5029e40c8771a64425b3b)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Phone.php b/civicrm/CRM/Core/DAO/Phone.php
index e8255a6032d0f349e3ef242135cae04d25d06334..b49adb0bf38624acf33ddca7a162430a26f19c14 100644
--- a/civicrm/CRM/Core/DAO/Phone.php
+++ b/civicrm/CRM/Core/DAO/Phone.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Phone.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b55a8820477e7df5db59b4ac8dc6adb6)
+ * (GenCodeChecksum:ca5a231db08deaad7f4098886a7852c8)
  */
 
 /**
@@ -95,6 +95,7 @@ class CRM_Core_DAO_Phone extends CRM_Core_DAO {
    * @var int|string|null
    *   (SQL type: int unsigned)
    *   Note that values will be retrieved from the database as a string.
+   * @deprecated
    */
   public $mobile_provider_id;
 
@@ -330,6 +331,7 @@ class CRM_Core_DAO_Phone extends CRM_Core_DAO {
           'html' => [
             'label' => ts("Numeric"),
           ],
+          'readonly' => TRUE,
           'add' => '4.3',
         ],
         'phone_type_id' => [
diff --git a/civicrm/CRM/Core/DAO/PreferencesDate.php b/civicrm/CRM/Core/DAO/PreferencesDate.php
index 00db3be8fb56e59538f60a302337b7624896ad5a..abb65dd28be84472b8df43ea7f43301d9452fc41 100644
--- a/civicrm/CRM/Core/DAO/PreferencesDate.php
+++ b/civicrm/CRM/Core/DAO/PreferencesDate.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/PreferencesDate.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:2d2dbd5815ee810c6ca0941dcdea2b2f)
+ * (GenCodeChecksum:282c9c954f6e68eb42eeb8a40eaeb8f1)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/PrevNextCache.php b/civicrm/CRM/Core/DAO/PrevNextCache.php
index 917c784383c9f5a92c35b42cd9bd4c71e152a36c..3cae44c970954ffd4c0789f603680669553d1d38 100644
--- a/civicrm/CRM/Core/DAO/PrevNextCache.php
+++ b/civicrm/CRM/Core/DAO/PrevNextCache.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/PrevNextCache.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f024b706891db44527cdb153c1cdaea7)
+ * (GenCodeChecksum:379e37f9e5bef48eb1d96a363f260e76)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/PrintLabel.php b/civicrm/CRM/Core/DAO/PrintLabel.php
index 6a44d1fd370a04fbb80636d2a42c80fe7155477f..635f2a828eb5735b4cafb463fabedabb22e2b586 100644
--- a/civicrm/CRM/Core/DAO/PrintLabel.php
+++ b/civicrm/CRM/Core/DAO/PrintLabel.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/PrintLabel.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:55db87fdd43d6037d64da10df24fc2b8)
+ * (GenCodeChecksum:a1ffcc9a531a71404722f752950eed2d)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/RecurringEntity.php b/civicrm/CRM/Core/DAO/RecurringEntity.php
index 82eaa5e9d81a1a7f1e2e8763bd03ddee1211640a..b1ec7347bb1300e6d30b6f06f9fddb6253256142 100644
--- a/civicrm/CRM/Core/DAO/RecurringEntity.php
+++ b/civicrm/CRM/Core/DAO/RecurringEntity.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/RecurringEntity.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:d8ff65b4009b67e8619f6f904c1b501d)
+ * (GenCodeChecksum:21c9191bbc343187f1061299d0d3c355)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Setting.php b/civicrm/CRM/Core/DAO/Setting.php
index 65cc578f4aedab737be78e0653f5be45cc1b0c70..aab5bf8c561f588339dfbe793fda7dcc1c627e30 100644
--- a/civicrm/CRM/Core/DAO/Setting.php
+++ b/civicrm/CRM/Core/DAO/Setting.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Setting.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:faec64e198a9187d40a3c1036a543d5c)
+ * (GenCodeChecksum:5506eb417e5f27229a4185eccffab1cd)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/StateProvince.php b/civicrm/CRM/Core/DAO/StateProvince.php
index 4492a7fa1b00fe2fb42978819ff51323f27ab688..34a520b9631c64c450d89b3c97fc55f8ef3dc5c5 100644
--- a/civicrm/CRM/Core/DAO/StateProvince.php
+++ b/civicrm/CRM/Core/DAO/StateProvince.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/StateProvince.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b52f997bf6a08f0408c349a0ef187779)
+ * (GenCodeChecksum:d527d44aa94d839f6f48ac02f634bfb2)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/StatusPreference.php b/civicrm/CRM/Core/DAO/StatusPreference.php
index 6dfacf75f9f0cebd4a79602babd0de363fd3b0b6..010b0d71c666a26f717bf6f4dee4d27b0816710d 100644
--- a/civicrm/CRM/Core/DAO/StatusPreference.php
+++ b/civicrm/CRM/Core/DAO/StatusPreference.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/StatusPreference.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:3be71b1385c3b8095593a3c916f63b38)
+ * (GenCodeChecksum:4fb50b955fc2ed4d1d4e2919d42eebae)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/SystemLog.php b/civicrm/CRM/Core/DAO/SystemLog.php
index d11b4e0c1d9cf11119c70839bf55f1537f4f9a7d..f4b0f70cbfe38be948969fcc3a5094ac99cea2fe 100644
--- a/civicrm/CRM/Core/DAO/SystemLog.php
+++ b/civicrm/CRM/Core/DAO/SystemLog.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/SystemLog.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0859d091be6dca4edd108b6a1803ef35)
+ * (GenCodeChecksum:8b83e36b05cbe502b6a2d2311ed36f4c)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Tag.php b/civicrm/CRM/Core/DAO/Tag.php
index 123795f5a939b01a6040169016a45f2639514e27..c082125860cd226796cba31d493a171a8ed203cb 100644
--- a/civicrm/CRM/Core/DAO/Tag.php
+++ b/civicrm/CRM/Core/DAO/Tag.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Tag.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:68e222188dd1d031d2219aa1617e15af)
+ * (GenCodeChecksum:dbe043813226361244630b2e34e9152a)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Timezone.php b/civicrm/CRM/Core/DAO/Timezone.php
index 52d88dd7b63aa4bf10f712a4f268037681d587f0..0a45c8e815b4b70de6029bbe74e749fcaec5936a 100644
--- a/civicrm/CRM/Core/DAO/Timezone.php
+++ b/civicrm/CRM/Core/DAO/Timezone.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Timezone.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:bb3ae6e3a2a974f5a7e121a7ba763af6)
+ * (GenCodeChecksum:97f74eb17d2467a62ca263414e7bb6d5)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Translation.php b/civicrm/CRM/Core/DAO/Translation.php
index 57543feb3d784b6d0fb458d597baeb4b31ab9d6b..1c4529f57c825b0c55a5780e5c7472428ea5370f 100644
--- a/civicrm/CRM/Core/DAO/Translation.php
+++ b/civicrm/CRM/Core/DAO/Translation.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Translation.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f0f986e6ba50631d51e09da061eb494a)
+ * (GenCodeChecksum:e8417b87a34f51f88c56480567d5fc64)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/UFField.php b/civicrm/CRM/Core/DAO/UFField.php
index ac2ddc2252cc2ead81c1c3153a324c8736bfc681..7fba31dc6d1b4efa8068474d79a637cc1a512f5d 100644
--- a/civicrm/CRM/Core/DAO/UFField.php
+++ b/civicrm/CRM/Core/DAO/UFField.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/UFField.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:350622e76d9fc3367d201bb3a9c91f18)
+ * (GenCodeChecksum:2de519ddf9c147c5716678f35b566cd7)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/UFGroup.php b/civicrm/CRM/Core/DAO/UFGroup.php
index a3b97104aa042b72eb0257b446244dd7497e00d3..87786570ef5ef308ac40e84161a17ae7cfefb487 100644
--- a/civicrm/CRM/Core/DAO/UFGroup.php
+++ b/civicrm/CRM/Core/DAO/UFGroup.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/UFGroup.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:37e03f3367ced4a53471f4f137c8c8ad)
+ * (GenCodeChecksum:513714296a3ef044028606deeb7015f2)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/UFJoin.php b/civicrm/CRM/Core/DAO/UFJoin.php
index 5d7d4d547ea2a6f8e29b6d1356154e3ac9c3c817..1bf4c4cd8418e9bd7c105f089ee7e9d99241ea50 100644
--- a/civicrm/CRM/Core/DAO/UFJoin.php
+++ b/civicrm/CRM/Core/DAO/UFJoin.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/UFJoin.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f2e966f7c15ec53893157c9fad65cde2)
+ * (GenCodeChecksum:d7cc3d08c4c2ea8b556a3590e94792a0)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/UFMatch.php b/civicrm/CRM/Core/DAO/UFMatch.php
index 71de7d0c94e563fa93ca64d8aa8e39af1e9529b7..e4b512deb97024aaaabcc39ee3f46d555bc4b1cc 100644
--- a/civicrm/CRM/Core/DAO/UFMatch.php
+++ b/civicrm/CRM/Core/DAO/UFMatch.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/UFMatch.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:fe0a85773ffa8532fab26a7036d904cf)
+ * (GenCodeChecksum:7b871668581fb64a83a1995ed5c58101)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/UserJob.php b/civicrm/CRM/Core/DAO/UserJob.php
index c428300337895bf254d8aa8040f1611133a89068..3e68111f32321ae9fa42d34b6482df47044033bd 100644
--- a/civicrm/CRM/Core/DAO/UserJob.php
+++ b/civicrm/CRM/Core/DAO/UserJob.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/UserJob.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4976da6332cddd37dbae0071e2319611)
+ * (GenCodeChecksum:db60d8d1390d79a41a01ae28347dd770)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Website.php b/civicrm/CRM/Core/DAO/Website.php
index 205fc49f0618a4da9341b577205278c196ad19e4..30828b78015b5847fdc73d7cca1fb63b2dd18834 100644
--- a/civicrm/CRM/Core/DAO/Website.php
+++ b/civicrm/CRM/Core/DAO/Website.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Website.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:7ef66a990830d03a02dd59b7b6f0d2cb)
+ * (GenCodeChecksum:1120a2e99ede4ae5c571e51a4040ef7f)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/WordReplacement.php b/civicrm/CRM/Core/DAO/WordReplacement.php
index d07c8547e7b75e47707ed7d2757513baf4ff35c7..22d36c03a663876222f6973b86cb7de3703893bc 100644
--- a/civicrm/CRM/Core/DAO/WordReplacement.php
+++ b/civicrm/CRM/Core/DAO/WordReplacement.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/WordReplacement.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c5865289b55e3bdbca5fbca82a61526b)
+ * (GenCodeChecksum:d8be425f1e5c159248b981d6051f6ea8)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DAO/Worldregion.php b/civicrm/CRM/Core/DAO/Worldregion.php
index 31a86e1a299d4c9cddfe342c652becf30085a36d..3131b0e9408f3fd29f63ba376ce2424dc36b65c1 100644
--- a/civicrm/CRM/Core/DAO/Worldregion.php
+++ b/civicrm/CRM/Core/DAO/Worldregion.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Core/Worldregion.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:e8b2ad34381b7a644a5ea7e70cebf27e)
+ * (GenCodeChecksum:9f82f7db4b9ea76b609244a81635d1f1)
  */
 
 /**
diff --git a/civicrm/CRM/Core/DomainTokens.php b/civicrm/CRM/Core/DomainTokens.php
index d28f1862c73a5e2759e0c33931f3283bcbf36667..a7d6999c77b2b05f3bfe0cefdd1423e564ef0a83 100644
--- a/civicrm/CRM/Core/DomainTokens.php
+++ b/civicrm/CRM/Core/DomainTokens.php
@@ -58,6 +58,7 @@ class CRM_Core_DomainTokens extends AbstractTokenSubscriber {
       'now' => ts('Current time/date'),
       'base_url' => ts('Domain absolute base url'),
       'tax_term' => ts('Sales tax term (e.g VAT)'),
+      'empowered_by_civicrm_image_url' => ts('Empowered By CiviCRM Image'),
     ];
   }
 
@@ -127,6 +128,7 @@ class CRM_Core_DomainTokens extends AbstractTokenSubscriber {
       $tokens['phone'] = $phone['phone'] ?? '';
       $tokens['email'] = $email['email'] ?? '';
       $tokens['base_url'] = Civi::paths()->getVariable('cms.root', 'url');
+      $tokens['empowered_by_civicrm_image_url'] = CRM_Core_Config::singleton()->userFrameworkResourceURL . 'i/civi99.png';
       $tokens['tax_term'] = (string) Civi::settings()->get('tax_term');
       Civi::cache('metadata')->set($cacheKey, $tokens);
     }
diff --git a/civicrm/CRM/Core/Form/RecurringEntity.php b/civicrm/CRM/Core/Form/RecurringEntity.php
index 8db1ec228434c99a3351b0b7600294ba335a8036..e9124dfd40aa863b1217ee59beab1cd13efacb58 100644
--- a/civicrm/CRM/Core/Form/RecurringEntity.php
+++ b/civicrm/CRM/Core/Form/RecurringEntity.php
@@ -34,9 +34,9 @@ class CRM_Core_Form_RecurringEntity {
 
   /**
    * Schedule Reminder data
-   * @var array
+   * @var CRM_Core_DAO|null
    */
-  protected static $_scheduleReminderDetails = [];
+  protected static $_scheduleReminderDetails = NULL;
 
   /**
    *  Parent Entity ID
diff --git a/civicrm/CRM/Core/Form/Renderer.php b/civicrm/CRM/Core/Form/Renderer.php
index 386c7e91301ee3e861f76c5b4a4e007e8fbc4968..e606b25b8cdec27fea3004f7c5c3e8b01d962954 100644
--- a/civicrm/CRM/Core/Form/Renderer.php
+++ b/civicrm/CRM/Core/Form/Renderer.php
@@ -109,7 +109,7 @@ class CRM_Core_Form_Renderer extends HTML_QuickForm_Renderer_ArraySmarty {
         $this->renderFrozenDatepicker($el, $element);
       }
       elseif ($element->getAttribute('type') == 'text' && $element->getAttribute('formatType')) {
-        list($date, $time) = CRM_Utils_Date::setDateDefaults($element->getValue(), $element->getAttribute('formatType'), $element->getAttribute('format'), $element->getAttribute('timeformat'));
+        [$date, $time] = CRM_Utils_Date::setDateDefaults($element->getValue(), $element->getAttribute('formatType'), $element->getAttribute('format'), $element->getAttribute('timeformat'));
         $date .= ($element->getAttribute('timeformat')) ? " $time" : '';
         $el['html'] = $date . '<input type="hidden" value="' . $element->getValue() . '" name="' . $element->getAttribute('name') . '">';
       }
diff --git a/civicrm/CRM/Core/Form/Tag.php b/civicrm/CRM/Core/Form/Tag.php
index ba4c6cadbff8cc9b944a7de31b500b1177f28bca..0d55661b3cd7b9914cae77b842845db8533d6fb7 100644
--- a/civicrm/CRM/Core/Form/Tag.php
+++ b/civicrm/CRM/Core/Form/Tag.php
@@ -55,7 +55,7 @@ class CRM_Core_Form_Tag {
         $tagsetItem = $tagsetElementName . 'parentId_' . $parentId;
         $tagset[$tagsetItem]['parentID'] = $parentId;
 
-        list(, $mode) = explode('_', $entityTable);
+        [, $mode] = explode('_', $entityTable);
         if (!$tagsetElementName) {
           $tagsetElementName = $mode . "_taglist";
         }
diff --git a/civicrm/CRM/Core/I18n.php b/civicrm/CRM/Core/I18n.php
index fa96c601b651b1a7ef6b7b9007576e26ecf77492..b1aa48974af0f1173cae2cae63b6f28d14585b39 100644
--- a/civicrm/CRM/Core/I18n.php
+++ b/civicrm/CRM/Core/I18n.php
@@ -179,6 +179,7 @@ class CRM_Core_I18n {
     static $enabled = NULL;
 
     if (!$all) {
+      $optionValues = [];
       // Use `getValues`, not `buildOptions` to bypass hook_civicrm_fieldOptions.  See core#1132.
       CRM_Core_OptionValue::getValues(['name' => 'languages'], $optionValues, 'weight', TRUE);
       $all = array_column($optionValues, 'label', 'name');
@@ -654,29 +655,43 @@ class CRM_Core_I18n {
   /**
    * Change the processing language without changing the current user language
    *
-   * @param string $locale
+   * @param string|\Civi\Core\Locale $locale
    *   Locale (for example 'en_US', or 'fr_CA').
    *   True if the domain was changed for an extension.
    */
   public function setLocale($locale) {
+    global $civicrmLocale;
+    if ($locale === NULL) {
+      $civicrmLocale = \Civi\Core\Locale::null();
+    }
+    elseif (is_object($locale)) {
+      $civicrmLocale = $locale;
+    }
+    else {
+      $civicrmLocale = \Civi\Core\Locale::negotiate($locale);
+    }
 
     // Change the language of the CMS as well, for URLs.
-    CRM_Utils_System::setUFLocale($locale);
+    CRM_Utils_System::setUFLocale($civicrmLocale->uf);
 
     // For sql queries, if running in DB multi-lingual mode.
     global $dbLocale;
 
     if ($dbLocale) {
-      $dbLocale = "_{$locale}";
+      $dbLocale = '_' . $civicrmLocale->db;
     }
 
     // For self::getLocale()
     global $tsLocale;
-    $tsLocale = $locale;
+    $tsLocale = $civicrmLocale->ts;
 
     CRM_Core_I18n::singleton()->reactivate();
   }
 
+  public static function clearLocale(): void {
+    unset($GLOBALS['tsLocale'], $GLOBALS['dbLocale'], $GLOBALS['civicrmLocale']);
+  }
+
   /**
    * Static instance provider - return the instance for the current locale.
    *
@@ -807,10 +822,10 @@ function ts($text, $params = []) {
     }
   }
 
-  $activeLocale = CRM_Core_I18n::getLocale();
-  if (!$i18n or $lastLocale != $activeLocale) {
+  $civicrmLocale = CRM_Core_I18n::getLocale();
+  if (!$i18n or $lastLocale != $civicrmLocale) {
     $i18n = CRM_Core_I18n::singleton();
-    $lastLocale = $activeLocale;
+    $lastLocale = $civicrmLocale;
   }
 
   if ($function) {
diff --git a/civicrm/CRM/Core/Key.php b/civicrm/CRM/Core/Key.php
index 40708b180a590328f3377e250ccd5524cf3f5b25..8bce78373c5aa46d52ef52f0564dbda0322b4655 100644
--- a/civicrm/CRM/Core/Key.php
+++ b/civicrm/CRM/Core/Key.php
@@ -103,7 +103,7 @@ class CRM_Core_Key {
    * @param string $name
    * @param bool $addSequence
    *
-   * @return string
+   * @return string|null
    *   if valid, else null
    */
   public static function validate($key, $name, $addSequence = FALSE) {
@@ -112,7 +112,7 @@ class CRM_Core_Key {
     }
 
     if ($addSequence) {
-      list($k, $t) = explode('_', $key);
+      [$k, $t] = explode('_', $key);
       if ($t < 1 || $t > 10000) {
         return NULL;
       }
diff --git a/civicrm/CRM/Core/ManagedEntities.php b/civicrm/CRM/Core/ManagedEntities.php
index 25a4e8ff5b3b55fe591bb87ccc387a6f9d5224ba..dde799e9434044d6e3cc992f244a2db09d29561f 100644
--- a/civicrm/CRM/Core/ManagedEntities.php
+++ b/civicrm/CRM/Core/ManagedEntities.php
@@ -76,6 +76,7 @@ class CRM_Core_ManagedEntities {
    *   API representation, or NULL if the entity does not exist
    */
   public function get($moduleName, $name) {
+    CRM_Core_Error::deprecatedFunctionWarning('api');
     $dao = new CRM_Core_DAO_Managed();
     $dao->module = $moduleName;
     $dao->name = $name;
@@ -336,30 +337,36 @@ class CRM_Core_ManagedEntities {
         throw new CRM_Core_Exception('Unrecognized cleanup policy: ' . $policy);
     }
 
-    // APIv4 delete - deletion from `civicrm_managed` will be taken care of by
-    // CRM_Core_BAO_Managed::on_hook_civicrm_post()
-    if ($doDelete && CRM_Core_BAO_Managed::isApi4ManagedType($item['entity_type'])) {
-      civicrm_api4($item['entity_type'], 'delete', [
-        'checkPermissions' => FALSE,
-        'where' => [['id', '=', $item['entity_id']]],
-      ]);
-    }
-    // APIv3 delete
-    elseif ($doDelete) {
-      $params = [
-        'version' => 3,
-        'id' => $item['entity_id'],
-      ];
-      $check = civicrm_api3($item['entity_type'], 'get', $params);
-      if ($check['count']) {
-        $result = civicrm_api($item['entity_type'], 'delete', $params);
-        if ($result['is_error']) {
-          if (isset($item['name'])) {
-            $params['name'] = $item['name'];
+    // Delete the entity and the managed record
+    if ($doDelete) {
+      // APIv4 delete
+      if (CRM_Core_BAO_Managed::isApi4ManagedType($item['entity_type'])) {
+        civicrm_api4($item['entity_type'], 'delete', [
+          'checkPermissions' => FALSE,
+          'where' => [['id', '=', $item['entity_id']]],
+        ]);
+      }
+      // APIv3 delete
+      else {
+        $params = [
+          'version' => 3,
+          'id' => $item['entity_id'],
+        ];
+        $check = civicrm_api3($item['entity_type'], 'get', $params);
+        if ($check['count']) {
+          $result = civicrm_api($item['entity_type'], 'delete', $params);
+          if ($result['is_error']) {
+            if (isset($item['name'])) {
+              $params['name'] = $item['name'];
+            }
+            $this->onApiError($item['entity_type'], 'delete', $params, $result);
           }
-          $this->onApiError($item['entity_type'], 'delete', $params, $result);
         }
       }
+      // Ensure managed record is deleted.
+      // Note: in many cases CRM_Core_BAO_Managed::on_hook_civicrm_post() will take care of
+      // deleting it, but there may be edge cases, such as the source record no longer existing,
+      // so just to be sure - we need to do this as the final step.
       CRM_Core_DAO::executeQuery('DELETE FROM civicrm_managed WHERE id = %1', [
         1 => [$item['id'], 'Integer'],
       ]);
diff --git a/civicrm/CRM/Core/Menu.php b/civicrm/CRM/Core/Menu.php
index c7376b2d345382f76542b2372ad0238ea02c1198..d22073f07b03dbc56c8f8a90c357b1cadb1b1df7 100644
--- a/civicrm/CRM/Core/Menu.php
+++ b/civicrm/CRM/Core/Menu.php
@@ -627,7 +627,7 @@ UNION (
 
     $elements = explode(',', $pathArgs);
     foreach ($elements as $keyVal) {
-      list($key, $val) = explode('=', $keyVal, 2);
+      [$key, $val] = explode('=', $keyVal, 2);
       $arr[$key] = $val;
     }
 
diff --git a/civicrm/CRM/Core/OptionGroup.php b/civicrm/CRM/Core/OptionGroup.php
index 0b2b3653d5477804db367163004692b7005f0f61..04e989436c426b0f97dbae1df19de24040c93b0b 100644
--- a/civicrm/CRM/Core/OptionGroup.php
+++ b/civicrm/CRM/Core/OptionGroup.php
@@ -110,30 +110,28 @@ class CRM_Core_OptionGroup {
    *   The values as specified by the params
    */
   public static function &values(
-    $name, $flip = FALSE, $grouping = FALSE,
+    string $name, $flip = FALSE, $grouping = FALSE,
     $localize = FALSE, $condition = NULL,
     $labelColumnName = 'label', $onlyActive = TRUE, $fresh = FALSE, $keyColumnName = 'value',
     $orderBy = 'weight'
   ) {
-    $cache = CRM_Utils_Cache::singleton();
+
     if (self::isDomainOptionGroup($name)) {
       $cacheKey = self::createCacheKey($name, CRM_Core_I18n::getLocale(), $flip, $grouping, $localize, $condition, $labelColumnName, $onlyActive, $keyColumnName, $orderBy, CRM_Core_Config::domainID());
     }
     else {
       $cacheKey = self::createCacheKey($name, CRM_Core_I18n::getLocale(), $flip, $grouping, $localize, $condition, $labelColumnName, $onlyActive, $keyColumnName, $orderBy);
     }
-
+    $cache = Civi::cache('metadata');
     if (!$fresh) {
-      // Fetch from static var
-      if (array_key_exists($cacheKey, self::$_cache)) {
-        return self::$_cache[$cacheKey];
-      }
-      // Fetch from main cache
-      self::$_cache[$cacheKey] = $cache->get($cacheKey);
-      if (self::$_cache[$cacheKey] !== NULL) {
-        return self::$_cache[$cacheKey];
+      if ($cache->has($cacheKey)) {
+        $result = $cache->get($cacheKey);
+        return $result;
       }
     }
+    else {
+      CRM_Core_Error::deprecatedWarning('do not call to flush cache');
+    }
 
     $query = "
 SELECT  v.{$labelColumnName} as {$labelColumnName} ,v.{$keyColumnName} as value, v.grouping as `grouping`
@@ -144,7 +142,7 @@ WHERE  v.option_group_id = g.id
   AND  g.is_active       = 1 ";
 
     if ($onlyActive) {
-      $query .= " AND  v.is_active = 1 ";
+      $query .= ' AND  v.is_active = 1 ';
       // Only show options for enabled components
       $componentClause = ' v.component_id IS NULL ';
       $enabledComponents = CRM_Core_Config::singleton()->enableComponents;
@@ -155,7 +153,7 @@ WHERE  v.option_group_id = g.id
       $query .= " AND ($componentClause) ";
     }
     if (self::isDomainOptionGroup($name)) {
-      $query .= " AND v.domain_id = " . CRM_Core_Config::domainID();
+      $query .= ' AND v.domain_id = ' . CRM_Core_Config::domainID();
     }
 
     if ($condition) {
@@ -172,7 +170,6 @@ WHERE  v.option_group_id = g.id
     // call option value hook
     CRM_Utils_Hook::optionValues($var, $name);
 
-    self::$_cache[$cacheKey] = $var;
     $cache->set($cacheKey, $var);
 
     return $var;
@@ -476,6 +473,7 @@ WHERE  v.option_group_id = g.id
    *   the option group ID
    */
   public static function createAssoc($groupName, &$values, &$defaultID, $groupTitle = NULL) {
+    CRM_Core_Error::deprecatedFunctionWarning('use the api');
     // @TODO: This causes a problem in multilingual
     // (https://github.com/civicrm/civicrm-core/pull/17228), but is needed in
     // order to be able to remove currencies once added.
@@ -568,8 +566,12 @@ ORDER BY v.weight
   /**
    * @param string $groupName
    * @param string $operator
+   *
+   * @deprecated
    */
   public static function deleteAssoc($groupName, $operator = "=") {
+    CRM_Core_Error::deprecatedFunctionWarning('use the api');
+
     $query = "
 DELETE g, v
   FROM civicrm_option_group g,
diff --git a/civicrm/CRM/Core/OptionValue.php b/civicrm/CRM/Core/OptionValue.php
index 89b566282d2acad91073d33e2fe31ba5442385e1..95662e6bd4b99c595fa8d412de4e0f5d60888f2a 100644
--- a/civicrm/CRM/Core/OptionValue.php
+++ b/civicrm/CRM/Core/OptionValue.php
@@ -338,7 +338,7 @@ class CRM_Core_OptionValue {
       if (is_array($nameTitle)) {
         foreach ($nameTitle as $name => $attribs) {
           self::$_fields[$key][$name] = $optionName;
-          list($tableName, $fieldName) = explode('.', $optionName['where']);
+          [$tableName, $fieldName] = explode('.', $optionName['where']);
           self::$_fields[$key][$name]['where'] = "{$name}.label";
           foreach ($attribs as $k => $val) {
             self::$_fields[$key][$name][$k] = $val;
@@ -353,7 +353,7 @@ class CRM_Core_OptionValue {
   /**
    * Build select query in case of option-values
    *
-   * @param $query
+   * @param CRM_Contact_BAO_Query $query
    */
   public static function select(&$query) {
     if (!empty($query->_params) || !empty($query->_returnProperties)) {
@@ -362,7 +362,7 @@ class CRM_Core_OptionValue {
         if (!empty($values['pseudoconstant'])) {
           continue;
         }
-        list($tableName, $fieldName) = explode('.', $values['where']);
+        [$tableName, $fieldName] = explode('.', $values['where']);
         if (!empty($query->_returnProperties[$name])) {
           $query->_select["{$name}_id"] = "{$name}.value as {$name}_id";
           $query->_element["{$name}_id"] = 1;
diff --git a/civicrm/CRM/Core/Page/AJAX/Attachment.php b/civicrm/CRM/Core/Page/AJAX/Attachment.php
index 151b726de8325efb80dcfc6c3f6a4455d8a3532f..ec4ebd4fbfb36103f1f7a2bb46020a87b9ee910e 100644
--- a/civicrm/CRM/Core/Page/AJAX/Attachment.php
+++ b/civicrm/CRM/Core/Page/AJAX/Attachment.php
@@ -137,6 +137,7 @@ class CRM_Core_Page_AJAX_Attachment {
   public static function angularSettings() {
     return [
       'token' => self::createToken(),
+      'maxFileSize' => Civi::settings()->get('maxFileSize'),
     ];
   }
 
diff --git a/civicrm/CRM/Core/Page/File.php b/civicrm/CRM/Core/Page/File.php
index f92802d79e363499f645a9ca4dfc4d0c88096268..8a660f727fb03b1eb0f5e2c3ebd9e6b5a4156aee 100644
--- a/civicrm/CRM/Core/Page/File.php
+++ b/civicrm/CRM/Core/Page/File.php
@@ -41,7 +41,7 @@ class CRM_Core_Page_File extends CRM_Core_Page {
         CRM_Core_Error::statusBounce(ts('URL for file is not valid'));
       }
 
-      list($path, $mimeType) = CRM_Core_BAO_File::path($fileId, $entityId);
+      [$path, $mimeType] = CRM_Core_BAO_File::path($fileId, $entityId);
     }
     else {
       if (!CRM_Utils_File::isValidFileName($fileName)) {
diff --git a/civicrm/CRM/Core/Payment/Form.php b/civicrm/CRM/Core/Payment/Form.php
index ee37b26c00b021b29185cdabd979caafc2d01d2e..903296d0de4f25ea32eee4177644d99459f7ee9d 100644
--- a/civicrm/CRM/Core/Payment/Form.php
+++ b/civicrm/CRM/Core/Payment/Form.php
@@ -229,7 +229,7 @@ class CRM_Core_Payment_Form {
    * @param CRM_Core_Form $form
    * @param array $paymentFields
    *   Array of properties including 'object' as loaded from CRM_Financial_BAO_PaymentProcessor::getPaymentProcessors.
-   * @param $paymentFields
+   * @return void
    */
   protected static function addRules(&$form, $paymentFields) {
     foreach ($paymentFields as $paymentField => $fieldSpecs) {
@@ -360,7 +360,7 @@ class CRM_Core_Payment_Form {
    * The date format for this field should typically be "M Y" (ex: Feb 2011) or "m Y" (02 2011)
    * See CRM-9017
    *
-   * @param $src
+   * @param array $src
    *
    * @return int
    */
diff --git a/civicrm/CRM/Core/Permission.php b/civicrm/CRM/Core/Permission.php
index cd23a892292862021a90121146e2bc47b21d9d2e..3e5aef485c29792c1817c0ffc15a7bde9c36db22 100644
--- a/civicrm/CRM/Core/Permission.php
+++ b/civicrm/CRM/Core/Permission.php
@@ -476,7 +476,6 @@ class CRM_Core_Permission {
         'CiviMember' => 'edit memberships',
         'CiviPledge' => 'edit pledges',
         'CiviContribute' => 'edit contributions',
-        'CiviGrant' => 'edit grants',
         'CiviMail' => 'access CiviMail',
       ];
       $permissionName = $editPermissions[$module] ?? NULL;
@@ -1165,6 +1164,7 @@ class CRM_Core_Permission {
     $permissions['entity_financial_account']['get'] = $permissions['contribution']['get'];
     $permissions['financial_account']['get'] = $permissions['contribution']['get'];
     $permissions['financial_trxn']['get'] = $permissions['contribution']['get'];
+    $permissions['contribution_soft'] = $permissions['contribution'];
 
     // Payment permissions
     $permissions['payment'] = [
@@ -1278,7 +1278,9 @@ class CRM_Core_Permission {
     $permissions['group_nesting'] = $permissions['group'];
     $permissions['group_organization'] = $permissions['group'];
 
-    //Group Contact permission
+    // Note: The v3 GroupContact API is nonstandard and not easy to fix, so these permissions
+    // are unnecessarily strict for v3. The v4 API overrides them.
+    // @see Civi\Api4\GroupContact::permissions
     $permissions['group_contact'] = [
       'get' => [
         'access CiviCRM',
diff --git a/civicrm/CRM/Core/PseudoConstant.php b/civicrm/CRM/Core/PseudoConstant.php
index ca7189dc3179f164d9dc47164e4586f61fd5b931..4e3b97c0c18cf29e600b9526406421014aa10ec2 100644
--- a/civicrm/CRM/Core/PseudoConstant.php
+++ b/civicrm/CRM/Core/PseudoConstant.php
@@ -373,7 +373,7 @@ class CRM_Core_PseudoConstant {
         return NULL;
       }
       // We don't have good mapping so have to do a bit of guesswork from the menu
-      list(, $parent, , $child) = explode('_', $daoName);
+      [, $parent, , $child] = explode('_', $daoName);
       $sql = "SELECT path FROM civicrm_menu
         WHERE page_callback LIKE '%CRM_Admin_Page_$child%' OR page_callback LIKE '%CRM_{$parent}_Page_$child%'
         ORDER BY page_callback
@@ -429,7 +429,7 @@ class CRM_Core_PseudoConstant {
       return $var;
     }
 
-    /* @var CRM_Core_DAO $object */
+    /** @var CRM_Core_DAO $object */
     $object = new $name();
 
     $object->selectAdd();
@@ -1492,7 +1492,7 @@ WHERE  id = %1
       return FALSE;
     }
     // Get list of fields for the option table
-    /* @var CRM_Core_DAO $dao * */
+    /** @var CRM_Core_DAO $dao * */
     $dao = new $daoName();
     $availableFields = array_keys($dao->fieldKeys());
 
diff --git a/civicrm/CRM/Core/QuickForm/Action/Display.php b/civicrm/CRM/Core/QuickForm/Action/Display.php
index ec32f64431af98324db5474920155be395ab2c9b..566399e6da15808d22ae42fda4e1b11272b0339c 100644
--- a/civicrm/CRM/Core/QuickForm/Action/Display.php
+++ b/civicrm/CRM/Core/QuickForm/Action/Display.php
@@ -56,7 +56,7 @@ class CRM_Core_QuickForm_Action_Display extends CRM_Core_QuickForm_Action {
 
     // If the original action was 'display' and we have values in container then we load them
     // BTW, if the page was invalid, we should later call validate() to get the errors
-    list(, $oldName) = $page->controller->getActionName();
+    [, $oldName] = $page->controller->getActionName();
     if ('display' == $oldName) {
       // If the controller is "modal" we should not allow direct access to a page
       // unless all previous pages are valid (see also bug #2323)
diff --git a/civicrm/CRM/Core/Resources.php b/civicrm/CRM/Core/Resources.php
index cc47859bc58e1ab8efdce6184a787aef89e1fe77..88a8d64a0ecc9f5fbe3a9bd0e6d716117337f63f 100644
--- a/civicrm/CRM/Core/Resources.php
+++ b/civicrm/CRM/Core/Resources.php
@@ -449,7 +449,7 @@ class CRM_Core_Resources implements CRM_Core_Resources_CollectionAdderInterface
     ) {
       return TRUE;
     }
-    list($arg0, $arg1) = array_pad(explode('/', (CRM_Utils_System::currentPath() ?? '')), 2, '');
+    [$arg0, $arg1] = array_pad(explode('/', (CRM_Utils_System::currentPath() ?? '')), 2, '');
     return ($arg0 === 'civicrm' && in_array($arg1, ['ajax', 'angularprofiles', 'asset']));
   }
 
diff --git a/civicrm/CRM/Core/Resources/Common.php b/civicrm/CRM/Core/Resources/Common.php
index d62b096a911ebeef10a536c8bb258f679685651e..d034b267fa063f245214d83b6aec9d86dfd481bd 100644
--- a/civicrm/CRM/Core/Resources/Common.php
+++ b/civicrm/CRM/Core/Resources/Common.php
@@ -271,7 +271,7 @@ class CRM_Core_Resources_Common {
     // Add localized jQuery UI files
     if ($tsLocale && $tsLocale != 'en_US') {
       // Search for i18n file in order of specificity (try fr-CA, then fr)
-      list($lang) = explode('_', $tsLocale);
+      [$lang] = explode('_', $tsLocale);
       $path = "bower_components/jquery-ui/ui/i18n";
       foreach ([str_replace('_', '-', $tsLocale), $lang] as $language) {
         $localizationFile = "$path/datepicker-{$language}.js";
diff --git a/civicrm/CRM/Core/Selector/Base.php b/civicrm/CRM/Core/Selector/Base.php
index e962019ac1d4e774189b4865c5af14d673eba478..2817e7a6df1100933c327f7ffa7ab20a1db27ca3 100644
--- a/civicrm/CRM/Core/Selector/Base.php
+++ b/civicrm/CRM/Core/Selector/Base.php
@@ -41,27 +41,6 @@ class CRM_Core_Selector_Base {
    */
   protected $_key;
 
-  /**
-   * This function gets the attribute for the action that.
-   * it matches.
-   *
-   * @param string $match the action to match against
-   * @param string $attribute the attribute to return ( name, link, title )
-   *
-   * @return string
-   *   the attribute that matches the action if any
-   */
-  public function getActionAttribute($match, $attribute = 'name') {
-    $links = &$this->links();
-
-    foreach ($link as $action => $item) {
-      if ($match & $action) {
-        return $item[$attribute];
-      }
-    }
-    return NULL;
-  }
-
   /**
    * This is a static virtual function returning reference on links array. Each
    * inherited class must redefine this function
diff --git a/civicrm/CRM/Core/xml/Menu/Admin.xml b/civicrm/CRM/Core/xml/Menu/Admin.xml
index 596018228addb6c86791eee51003e92414f3ba84..030b2b03d9743bd3fcd0124e9976fa08ce666b19 100644
--- a/civicrm/CRM/Core/xml/Menu/Admin.xml
+++ b/civicrm/CRM/Core/xml/Menu/Admin.xml
@@ -125,6 +125,11 @@
      <adminGroup>Customize Data and Screens</adminGroup>
      <weight>40</weight>
   </item>
+  <item>
+     <path>civicrm/admin/options/subtype/edit</path>
+     <title>Edit Contact Type</title>
+     <page_callback>CRM_Admin_Form_ContactType</page_callback>
+  </item>
   <item>
      <path>civicrm/admin/options/gender</path>
      <title>Gender Options</title>
diff --git a/civicrm/CRM/Core/xml/Menu/Contact.xml b/civicrm/CRM/Core/xml/Menu/Contact.xml
index 5f70ed8a3ef2b7c9a301ef49e9fa7b5d9acd02ef..ed81f2bc8273d0f49cb346ff43b55e792143e0a3 100644
--- a/civicrm/CRM/Core/xml/Menu/Contact.xml
+++ b/civicrm/CRM/Core/xml/Menu/Contact.xml
@@ -59,13 +59,6 @@
      <page_type>1</page_type>
      <weight>14</weight>
   </item>
-  <item>
-     <path>civicrm/contact/search/custom/list</path>
-     <title>Custom Searches</title>
-     <page_callback>CRM_Contact_Page_CustomSearch</page_callback>
-     <page_type>1</page_type>
-     <weight>16</weight>
-  </item>
   <item>
      <path>civicrm/contact/add</path>
      <title>New Contact</title>
diff --git a/civicrm/CRM/Core/xml/Menu/Misc.xml b/civicrm/CRM/Core/xml/Menu/Misc.xml
index 89b5f35e4f93ddf56ab93bb1691d55f0d33fe1d5..97d9c63c6dd3caa637d4e84f6c0162ac42c27adf 100644
--- a/civicrm/CRM/Core/xml/Menu/Misc.xml
+++ b/civicrm/CRM/Core/xml/Menu/Misc.xml
@@ -273,4 +273,9 @@
     <page_callback>CRM_Contact_Form_Task_Delete</page_callback>
     <access_arguments>access CiviCRM</access_arguments>
   </item>
+  <item>
+    <path>civicrm/task/add-activity</path>
+    <page_callback>CRM_Activity_Form_Activity</page_callback>
+    <access_arguments>access CiviCRM</access_arguments>
+  </item>
 </menu>
diff --git a/civicrm/CRM/Custom/Import/Form/DataSource.php b/civicrm/CRM/Custom/Import/Form/DataSource.php
index dd0d8d7539fa6f4f84a0ea69940c6de6e2b5f10c..326a759a1c6675b378581898f8ee2fe9af05ae4c 100644
--- a/civicrm/CRM/Custom/Import/Form/DataSource.php
+++ b/civicrm/CRM/Custom/Import/Form/DataSource.php
@@ -15,6 +15,8 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\CustomGroup;
+
 /**
  * This class gets the name of the file to upload
  */
@@ -33,6 +35,43 @@ class CRM_Custom_Import_Form_DataSource extends CRM_Import_Form_DataSource {
     return 'custom_field_import';
   }
 
+  /**
+   * Multiple field custom groups.
+   *
+   * @var array
+   */
+  protected $customFieldGroups;
+
+  /**
+   * Get multi-field custom groups.
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  protected function getCustomGroups(): array {
+    if (isset($this->customFieldGroups)) {
+      return $this->customFieldGroups;
+    }
+    $this->customFieldGroups = [];
+    // If we make the permission TRUE is it too restrictive?
+    $fields = CustomGroup::get(FALSE)->addSelect('id', 'title')
+      ->addWhere('is_multiple', '=', TRUE)
+      ->addWhere('is_active', '=', TRUE)->execute();
+    foreach ($fields as $field) {
+      $this->customFieldGroups[$field['id']] = $field['title'];
+    }
+    return $this->customFieldGroups;
+  }
+
+  /**
+   * Get an error message to assign to the template.
+   *
+   * @return string
+   */
+  protected function getErrorMessage(): string {
+    return empty($this->getCustomGroups()) ? ts('This import screen cannot be used because there are no Multi-value custom data groups.') : '';
+  }
+
   /**
    * Get the import entity (translated).
    *
@@ -57,13 +96,15 @@ class CRM_Custom_Import_Form_DataSource extends CRM_Import_Form_DataSource {
 
   /**
    * @return array
+   * @throws \CRM_Core_Exception
    */
-  public function setDefaultValues() {
+  public function setDefaultValues(): array {
     $config = CRM_Core_Config::singleton();
     $defaults = [
-      'contactType' => CRM_Import_Parser::CONTACT_INDIVIDUAL,
+      'contactType' => 'Individual',
       'fieldSeparator' => $config->fieldSeparator,
-      'multipleCustomData' => $this->_id,
+      // Perhaps never used, but permits url passing of the group.
+      'multipleCustomData' => CRM_Utils_Request::retrieve('id', 'Positive', $this),
     ];
 
     $loadedMapping = $this->get('loadedMapping');
@@ -77,16 +118,11 @@ class CRM_Custom_Import_Form_DataSource extends CRM_Import_Form_DataSource {
   /**
    * Build the form object.
    *
-   * @return void
+   * @throws \CRM_Core_Exception
    */
-  public function buildQuickForm() {
+  public function buildQuickForm(): void {
     parent::buildQuickForm();
-    // Perhaps never used, but permits url passing of the group.
-    $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this, FALSE);
-    $multipleCustomData = CRM_Core_BAO_CustomGroup::getMultipleFieldGroup();
-    $this->assign('fieldGroups', $multipleCustomData);
-    $this->add('select', 'multipleCustomData', ts('Multi-value Custom Data'), ['' => ts('- select -')] + $multipleCustomData, TRUE);
-
+    $this->add('select', 'multipleCustomData', ts('Multi-value Custom Data'), ['' => ts('- select -')] + $this->getCustomGroups(), TRUE);
     $this->addContactTypeSelector();
   }
 
diff --git a/civicrm/CRM/Custom/Import/Form/MapField.php b/civicrm/CRM/Custom/Import/Form/MapField.php
index aa1391cb03e4228ff1852f2d519e3d3a952473ac..7a7b8726c62ab42a710aa0ff46b769ab49d9c8a3 100644
--- a/civicrm/CRM/Custom/Import/Form/MapField.php
+++ b/civicrm/CRM/Custom/Import/Form/MapField.php
@@ -8,11 +8,10 @@ class CRM_Custom_Import_Form_MapField extends CRM_Import_Form_MapField {
   /**
    * Build the form object.
    *
-   * @return void
+   * @throws \CRM_Core_Exception
    */
-  public function buildQuickForm() {
-    $savedMappingID = (int) $this->getSubmittedValue('savedMapping');
-    $this->buildSavedMappingFields($savedMappingID);
+  public function buildQuickForm(): void {
+    $this->addSavedMappingFields();
     $this->addFormRule(['CRM_Custom_Import_Form_MapField', 'formRule']);
     $this->addMapper();
     $this->addFormButtons();
@@ -27,7 +26,7 @@ class CRM_Custom_Import_Form_MapField extends CRM_Import_Form_MapField {
    * @return array|bool
    *   list of errors to be posted back to the form
    */
-  public static function formRule($fields) {
+  public static function formRule(array $fields) {
     // todo - this could be shared with other mapFields forms.
     $errors = [];
     if (!array_key_exists('savedMapping', $fields)) {
@@ -44,37 +43,7 @@ class CRM_Custom_Import_Form_MapField extends CRM_Import_Form_MapField {
         $errors['_qf_default'] .= ts('Missing required field: %1', [1 => ts('Contact ID or External Identifier')]);
       }
     }
-
-    if (!empty($fields['saveMapping'])) {
-      $nameField = $fields['saveMappingName'] ?? NULL;
-      if (empty($nameField)) {
-        $errors['saveMappingName'] = ts('Name is required to save Import Mapping');
-      }
-      else {
-        if (CRM_Core_BAO_Mapping::checkMapping($nameField, CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_Mapping', 'mapping_type_id', 'Import Multi value custom data'))) {
-          $errors['saveMappingName'] = ts('Duplicate Mapping Name');
-        }
-      }
-    }
-
-    //display Error if loaded mapping is not selected
-    if (array_key_exists('loadMapping', $fields)) {
-      $getMapName = $fields['savedMapping'] ?? NULL;
-      if (empty($getMapName)) {
-        $errors['savedMapping'] = ts('Select saved mapping');
-      }
-    }
-
-    if (!empty($errors)) {
-      if (!empty($errors['saveMappingName'])) {
-        $_flag = 1;
-        $assignError = new CRM_Core_Page();
-        $assignError->assign('mappingDetailsError', $_flag);
-      }
-      return $errors;
-    }
-
-    return TRUE;
+    return empty($errors) ? TRUE : $errors;
   }
 
   /**
diff --git a/civicrm/CRM/Custom/Import/Form/Summary.php b/civicrm/CRM/Custom/Import/Form/Summary.php
deleted file mode 100644
index e0f0896e9c114236f4fbdc1951bdd30b02cec319..0000000000000000000000000000000000000000
--- a/civicrm/CRM/Custom/Import/Form/Summary.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-/**
- * Class CRM_Custom_Import_Form_Summary
- */
-class CRM_Custom_Import_Form_Summary extends CRM_Import_Form_Summary {
-
-}
diff --git a/civicrm/CRM/Custom/Import/Parser/Api.php b/civicrm/CRM/Custom/Import/Parser/Api.php
index 6fc4f41a06cafc9b231ca5ffcf6b78fe3a13b3bb..1c1ec51efb66c4786a246a1207bd336c139198eb 100644
--- a/civicrm/CRM/Custom/Import/Parser/Api.php
+++ b/civicrm/CRM/Custom/Import/Parser/Api.php
@@ -25,30 +25,11 @@ class CRM_Custom_Import_Parser_Api extends CRM_Import_Parser {
         'id' => 'custom_field_import',
         'name' => 'custom_field_import',
         'label' => ts('Multiple Value Custom Field Import'),
+        'entity' => 'Contact',
       ],
     ];
   }
 
-  /**
-   * The initializer code, called before the processing
-   *
-   * @return void
-   */
-  public function init() {
-    // Force user job to reload.
-    unset($this->userJob);
-    $this->setFieldMetadata();
-    $fields = $this->importableFieldsMetadata;
-    $hasLocationType = FALSE;
-
-    foreach ($fields as $name => $field) {
-      $field['type'] = CRM_Utils_Array::value('type', $field, CRM_Utils_Type::T_INT);
-      $field['dataPattern'] = CRM_Utils_Array::value('dataPattern', $field, '//');
-      $field['headerPattern'] = CRM_Utils_Array::value('headerPattern', $field, '//');
-      $this->addField($name, $field['title'], $field['type'], $field['headerPattern'], $field['dataPattern'], $hasLocationType);
-    }
-  }
-
   /**
    * Main import function.
    *
@@ -112,7 +93,7 @@ class CRM_Custom_Import_Parser_Api extends CRM_Import_Parser {
    * @return array
    */
   public function getRequiredFields(): array {
-    return ['contact_id' => ts('Contact ID'), 'external_identifier' => ts('External Identifier')];
+    return [['contact_id'], ['external_identifier']];
   }
 
   /**
@@ -167,7 +148,7 @@ class CRM_Custom_Import_Parser_Api extends CRM_Import_Parser {
               if ((strtolower($v2['label']) == strtolower(trim($v1))) ||
                 (strtolower($v2['value']) == strtolower(trim($v1)))
               ) {
-                if ($htmlType == 'CheckBox') {
+                if ($htmlType === 'CheckBox') {
                   $params[$key][$v2['value']] = $formatted[$key][$v2['value']] = 1;
                 }
                 else {
@@ -233,26 +214,4 @@ class CRM_Custom_Import_Parser_Api extends CRM_Import_Parser {
     return $importableFields;
   }
 
-  /**
-   * @deprecated stores metadata in the old format that
-   * a few functions in the parent class still use.
-   *
-   * @param string $name
-   * @param $title
-   * @param int $type
-   * @param string $headerPattern
-   * @param string $dataPattern
-   * @param bool $hasLocationType
-   */
-  private function addField(
-    $name, $title, $type = CRM_Utils_Type::T_INT,
-    $headerPattern = '//', $dataPattern = '//',
-    $hasLocationType = FALSE
-  ) {
-    $this->_fields[$name] = new CRM_Custom_Import_Field($name, $title, $type, $headerPattern, $dataPattern, $hasLocationType);
-    if (empty($name)) {
-      $this->_fields['doNotImport'] = new CRM_Custom_Import_Field($name, $title, $type, $headerPattern, $dataPattern, $hasLocationType);
-    }
-  }
-
 }
diff --git a/civicrm/CRM/Cxn/DAO/Cxn.php b/civicrm/CRM/Cxn/DAO/Cxn.php
index f63a7ac99d7dcdb3ce376d09006eb50344101f6d..d2e0f5dbbedc9889ee7e66e728c2dbd9f2154413 100644
--- a/civicrm/CRM/Cxn/DAO/Cxn.php
+++ b/civicrm/CRM/Cxn/DAO/Cxn.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Cxn/Cxn.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c08750593de1e3fd08e6a9899b555cde)
+ * (GenCodeChecksum:d503233e418901282e88d71829c6345a)
  */
 
 /**
diff --git a/civicrm/CRM/Dedupe/BAO/DedupeRuleGroup.php b/civicrm/CRM/Dedupe/BAO/DedupeRuleGroup.php
index 8fa7e35033a27b5f89c5d00def43147f08221063..5e6f1d80b7ffa1ea1420dbf7edf7c8c3a6587fcc 100644
--- a/civicrm/CRM/Dedupe/BAO/DedupeRuleGroup.php
+++ b/civicrm/CRM/Dedupe/BAO/DedupeRuleGroup.php
@@ -59,7 +59,7 @@ class CRM_Dedupe_BAO_DedupeRuleGroup extends CRM_Dedupe_DAO_DedupeRuleGroup {
    * @return array
    *   a table-keyed array of field-keyed arrays holding supported fields' titles
    */
-  public static function supportedFields($requestedType) {
+  public static function supportedFields($requestedType): array {
     if (!isset(Civi::$statics[__CLASS__]['supportedFields'])) {
       // this is needed, as we're piggy-backing importableFields() below
       $replacements = [
@@ -94,7 +94,7 @@ class CRM_Dedupe_BAO_DedupeRuleGroup extends CRM_Dedupe_DAO_DedupeRuleGroup {
             if (isset($replacements[$where])) {
               $where = $replacements[$where];
             }
-            list($table, $field) = explode('.', $where);
+            [$table, $field] = explode('.', $where);
             if (!in_array($table, $supportedTables)) {
               continue;
             }
@@ -220,7 +220,7 @@ class CRM_Dedupe_BAO_DedupeRuleGroup extends CRM_Dedupe_DAO_DedupeRuleGroup {
     CRM_Utils_Hook::dupeQuery($this, 'table', $tableQueries);
 
     while (!empty($tableQueries)) {
-      list($isInclusive, $isDie) = self::isQuerySetInclusive($tableQueries, $this->threshold, $exclWeightSum);
+      [$isInclusive, $isDie] = self::isQuerySetInclusive($tableQueries, $this->threshold, $exclWeightSum);
 
       if ($isInclusive) {
         // order queries by table count
@@ -379,7 +379,7 @@ class CRM_Dedupe_BAO_DedupeRuleGroup extends CRM_Dedupe_DAO_DedupeRuleGroup {
 
     if ($this->params && !$this->noRules) {
       if ($checkPermission) {
-        list($this->_aclFrom, $aclWhere) = CRM_Contact_BAO_Contact_Permission::cacheClause('civicrm_contact');
+        [$this->_aclFrom, $aclWhere] = CRM_Contact_BAO_Contact_Permission::cacheClause('civicrm_contact');
         $aclWhere = $aclWhere ? "AND {$aclWhere}" : '';
       }
       $query = "SELECT {$this->temporaryTables['dedupe']}.id1 as id
@@ -390,7 +390,7 @@ class CRM_Dedupe_BAO_DedupeRuleGroup extends CRM_Dedupe_DAO_DedupeRuleGroup {
     else {
       $aclWhere = '';
       if ($checkPermission) {
-        list($this->_aclFrom, $aclWhere) = CRM_Contact_BAO_Contact_Permission::cacheClause(['c1', 'c2']);
+        [$this->_aclFrom, $aclWhere] = CRM_Contact_BAO_Contact_Permission::cacheClause(['c1', 'c2']);
         $aclWhere = $aclWhere ? "AND {$aclWhere}" : '';
       }
       $query = "SELECT IF({$this->temporaryTables['dedupe']}.id1 < {$this->temporaryTables['dedupe']}.id2, {$this->temporaryTables['dedupe']}.id1, {$this->temporaryTables['dedupe']}.id2) as id1,
diff --git a/civicrm/CRM/Dedupe/DAO/DedupeException.php b/civicrm/CRM/Dedupe/DAO/DedupeException.php
index 2679f8349fabc8fc5be36ee84de0d2ab91711cad..c6b8a14820c327261065c9cc2f34263ba62c6e65 100644
--- a/civicrm/CRM/Dedupe/DAO/DedupeException.php
+++ b/civicrm/CRM/Dedupe/DAO/DedupeException.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Dedupe/DedupeException.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b949a5127501b9db455542caf6b3ffa2)
+ * (GenCodeChecksum:e8e238da9d12806c52ba8614e7e5cfee)
  */
 
 /**
diff --git a/civicrm/CRM/Dedupe/DAO/DedupeRule.php b/civicrm/CRM/Dedupe/DAO/DedupeRule.php
index 172f3ca1ee00a616f97266d09488fc278d8cd130..f137b465c4012ef6349414e86ee58e3de2682fc4 100644
--- a/civicrm/CRM/Dedupe/DAO/DedupeRule.php
+++ b/civicrm/CRM/Dedupe/DAO/DedupeRule.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Dedupe/DedupeRule.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:9b71195adc36b4f65fd3ec21cbe3100d)
+ * (GenCodeChecksum:edacd3caba0f47c874b16f02a7b446ef)
  */
 
 /**
diff --git a/civicrm/CRM/Dedupe/DAO/DedupeRuleGroup.php b/civicrm/CRM/Dedupe/DAO/DedupeRuleGroup.php
index 9c7e1cffb8600d5d1089fd60055377bd00ba5498..be90c79b546348e9353e8140c36884195cbb7e36 100644
--- a/civicrm/CRM/Dedupe/DAO/DedupeRuleGroup.php
+++ b/civicrm/CRM/Dedupe/DAO/DedupeRuleGroup.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Dedupe/DedupeRuleGroup.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:9390f709bdbf2945acb57c353814e393)
+ * (GenCodeChecksum:dc8957103d3accc4eb60eb94a3ee2282)
  */
 
 /**
@@ -67,10 +67,10 @@ class CRM_Dedupe_DAO_DedupeRuleGroup extends CRM_Core_DAO {
   public $used;
 
   /**
-   * Name of the rule group
+   * Unique name of rule group
    *
    * @var string|null
-   *   (SQL type: varchar(64))
+   *   (SQL type: varchar(255))
    *   Note that values will be retrieved from the database as a string.
    */
   public $name;
@@ -200,9 +200,9 @@ class CRM_Dedupe_DAO_DedupeRuleGroup extends CRM_Core_DAO {
           'name' => 'name',
           'type' => CRM_Utils_Type::T_STRING,
           'title' => ts('Name'),
-          'description' => ts('Name of the rule group'),
-          'maxlength' => 64,
-          'size' => CRM_Utils_Type::BIG,
+          'description' => ts('Unique name of rule group'),
+          'maxlength' => 255,
+          'size' => CRM_Utils_Type::HUGE,
           'where' => 'civicrm_dedupe_rule_group.name',
           'table_name' => 'civicrm_dedupe_rule_group',
           'entity' => 'DedupeRuleGroup',
@@ -313,7 +313,17 @@ class CRM_Dedupe_DAO_DedupeRuleGroup extends CRM_Core_DAO {
    * @return array
    */
   public static function indices($localize = TRUE) {
-    $indices = [];
+    $indices = [
+      'UI_name' => [
+        'name' => 'UI_name',
+        'field' => [
+          0 => 'name',
+        ],
+        'localizable' => FALSE,
+        'unique' => TRUE,
+        'sig' => 'civicrm_dedupe_rule_group::1::name',
+      ],
+    ];
     return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices;
   }
 
diff --git a/civicrm/CRM/Dedupe/Finder.php b/civicrm/CRM/Dedupe/Finder.php
index e4ee36ff30f6552ba18e7ecbd490b2ba008022ff..b86f9207214c17832dbbfe8891b7d70291d9f65c 100644
--- a/civicrm/CRM/Dedupe/Finder.php
+++ b/civicrm/CRM/Dedupe/Finder.php
@@ -93,7 +93,7 @@ class CRM_Dedupe_Finder {
     if (!$params) {
       return [];
     }
-    $checkPermission = CRM_Utils_Array::value('check_permission', $params, TRUE);
+    $checkPermission = $params['check_permission'] ?? TRUE;
     // This may no longer be required - see https://github.com/civicrm/civicrm-core/pull/13176
     $params = array_filter($params);
 
@@ -262,39 +262,37 @@ class CRM_Dedupe_Finder {
     }
 
     $params = [];
-    $supportedFields = CRM_Dedupe_BAO_DedupeRuleGroup::supportedFields($ctype);
-    if (is_array($supportedFields)) {
-      foreach ($supportedFields as $table => $fields) {
-        if ($table === 'civicrm_address') {
-          // for matching on civicrm_address fields, we also need the location_type_id
-          $fields['location_type_id'] = '';
-          // FIXME: we also need to do some hacking for id and name fields, see CRM-3902’s comments
-          $fixes = [
-            'address_name' => 'name',
-            'country' => 'country_id',
-            'state_province' => 'state_province_id',
-            'county' => 'county_id',
-          ];
-          foreach ($fixes as $orig => $target) {
-            if (!empty($flat[$orig])) {
-              $params[$table][$target] = $flat[$orig];
-            }
+
+    foreach (CRM_Dedupe_BAO_DedupeRuleGroup::supportedFields($ctype) as $table => $fields) {
+      if ($table === 'civicrm_address') {
+        // for matching on civicrm_address fields, we also need the location_type_id
+        $fields['location_type_id'] = '';
+        // FIXME: we also need to do some hacking for id and name fields, see CRM-3902’s comments
+        $fixes = [
+          'address_name' => 'name',
+          'country' => 'country_id',
+          'state_province' => 'state_province_id',
+          'county' => 'county_id',
+        ];
+        foreach ($fixes as $orig => $target) {
+          if (!empty($flat[$orig])) {
+            $params[$table][$target] = $flat[$orig];
           }
         }
-        if ($table === 'civicrm_phone') {
-          $fixes = [
-            'phone' => 'phone_numeric',
-          ];
-          foreach ($fixes as $orig => $target) {
-            if (!empty($flat[$orig])) {
-              $params[$table][$target] = $flat[$orig];
-            }
+      }
+      if ($table === 'civicrm_phone') {
+        $fixes = [
+          'phone' => 'phone_numeric',
+        ];
+        foreach ($fixes as $orig => $target) {
+          if (!empty($flat[$orig])) {
+            $params[$table][$target] = $flat[$orig];
           }
         }
-        foreach ($fields as $field => $title) {
-          if (!empty($flat[$field])) {
-            $params[$table][$field] = $flat[$field];
-          }
+      }
+      foreach ($fields as $field => $title) {
+        if (!empty($flat[$field])) {
+          $params[$table][$field] = $flat[$field];
         }
       }
     }
diff --git a/civicrm/CRM/Dedupe/Merger.php b/civicrm/CRM/Dedupe/Merger.php
index 5c4df7f318135f5854d0d16aa94e306b32fcb47b..028e13cde8b8407b3527b9d1cc5d449ae818bbd1 100644
--- a/civicrm/CRM/Dedupe/Merger.php
+++ b/civicrm/CRM/Dedupe/Merger.php
@@ -2716,8 +2716,8 @@ INNER JOIN  civicrm_membership membership2 ON membership1.membership_type_id = m
    * @param array $locks
    */
   protected static function releaseLocks(array $locks) {
+    /** @var Civi\Core\Lock\LockInterface $lock */
     foreach ($locks as $lock) {
-      /* @var Civi\Core\Lock\LockInterface $lock */
       $lock->release();
     }
   }
diff --git a/civicrm/CRM/Event/BAO/Event.php b/civicrm/CRM/Event/BAO/Event.php
index 5f0f604cd7b77dc523f502ff51b9c4d016507094..0a9e17051414e141ff2ddf3797890f529dadaa56 100644
--- a/civicrm/CRM/Event/BAO/Event.php
+++ b/civicrm/CRM/Event/BAO/Event.php
@@ -1112,7 +1112,7 @@ WHERE civicrm_event.is_active = 1
     }
 
     if ($values['event']['is_email_confirm'] || $returnMessageText) {
-      list($displayName, $email) = CRM_Contact_BAO_Contact_Location::getEmailDetails($contactID);
+      [$displayName, $email] = CRM_Contact_BAO_Contact_Location::getEmailDetails($contactID);
       $notifyEmail = CRM_Utils_Array::valueByRegexKey('/^email-/', $participantParams) ?? $email;
       //send email only when email is present
       if (isset($notifyEmail) || $returnMessageText) {
@@ -1189,12 +1189,15 @@ WHERE civicrm_event.is_active = 1
         }
 
         $sendTemplateParams = [
-          'groupName' => 'msg_tpl_workflow_event',
-          'valueName' => 'event_online_receipt',
+          'workflow' => 'event_online_receipt',
           'contactId' => $contactID,
           'isTest' => $isTest,
           'tplParams' => $tplParams,
           'PDFFilename' => ts('confirmation') . '.pdf',
+          'modelProps' => [
+            'participantID' => (int) $participantId,
+            'eventID' => (int) $values['event']['id'],
+          ],
         ];
 
         // address required during receipt processing (pdf and email receipt)
@@ -1227,7 +1230,7 @@ WHERE civicrm_event.is_active = 1
         }
 
         if ($returnMessageText) {
-          list($sent, $subject, $message, $html) = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
+          [$sent, $subject, $message, $html] = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
           return [
             'subject' => $subject,
             'body' => $message,
@@ -1597,7 +1600,7 @@ WHERE civicrm_event.is_active = 1
           $values[$index] = $campaigns[$params[$name]] ?? NULL;
         }
         elseif (strpos($name, '-') !== FALSE) {
-          list($fieldName, $id) = CRM_Utils_System::explode('-', $name, 2);
+          [$fieldName, $id] = CRM_Utils_System::explode('-', $name, 2);
           $detailName = str_replace(' ', '_', $name);
           if (in_array($fieldName, [
             'state_province',
@@ -1810,7 +1813,7 @@ WHERE  id = $cfID
             $participantParams = CRM_Utils_Array::value($pId, $values['params'], []);
           }
 
-          list($profilePre, $groupTitles) = self::buildCustomDisplay($preProfileID,
+          [$profilePre, $groupTitles] = self::buildCustomDisplay($preProfileID,
             'additionalCustomPre',
             $cId,
             $template,
@@ -1828,7 +1831,7 @@ WHERE  id = $cfID
             }
           }
 
-          list($profilePost, $groupTitles) = self::buildCustomDisplay($postProfileID,
+          [$profilePost, $groupTitles] = self::buildCustomDisplay($postProfileID,
             'additionalCustomPost',
             $cId,
             $template,
@@ -2059,7 +2062,7 @@ WHERE  ce.loc_block_id = $locBlockId";
         }
         Civi::$statics[__CLASS__]['permission']['edit'][$eventId] = FALSE;
 
-        list($allEvents, $createdEvents) = self::checkPermissionGetInfo($eventId);
+        [$allEvents, $createdEvents] = self::checkPermissionGetInfo($eventId);
         // Note: for a multisite setup, a user with edit all events, can edit all events
         // including those from other sites
         if (($permissionType == CRM_Core_Permission::EDIT) && CRM_Core_Permission::check('edit all events')) {
@@ -2078,7 +2081,7 @@ WHERE  ce.loc_block_id = $locBlockId";
         }
         Civi::$statics[__CLASS__]['permission']['view'][$eventId] = FALSE;
 
-        list($allEvents, $createdEvents) = self::checkPermissionGetInfo($eventId);
+        [$allEvents, $createdEvents] = self::checkPermissionGetInfo($eventId);
         if (CRM_Core_Permission::check('access CiviEvent')) {
           if (in_array($eventId, CRM_ACL_API::group(CRM_Core_Permission::VIEW, NULL, 'civicrm_event', $allEvents, array_keys($createdEvents)))) {
             // User created this event so has permission to view it
@@ -2155,7 +2158,7 @@ WHERE  ce.loc_block_id = $locBlockId";
    */
   public static function getAllPermissions() {
     if (!isset(Civi::$statics[__CLASS__]['permissions'])) {
-      list($allEvents, $createdEvents) = self::checkPermissionGetInfo();
+      [$allEvents, $createdEvents] = self::checkPermissionGetInfo();
 
       // Note: for a multisite setup, a user with edit all events, can edit all events
       // including those from other sites
@@ -2420,20 +2423,23 @@ WHERE  ce.loc_block_id = $locBlockId";
     $query = [
       'reset' => 1,
     ];
+
     if ($eventId) {
       $query['id'] = $eventId;
-    }
-    $return[] = [
-      'url' => CRM_Utils_System::url('civicrm/event/ical', $query, TRUE, NULL, TRUE),
-      'text' => $eventId ? ts('Download iCalendar entry for this event.') : ts('Download iCalendar entry for current and future public events.'),
-      'icon' => 'fa-download',
-    ];
-    if ($eventId) {
-      $return[] = [
-        'url' => CRM_Utils_System::url('civicrm/event/ical', ['gCalendar' => 1] + $query, TRUE, NULL, TRUE),
-        'text' => ts('Add event to Google Calendar'),
-        'icon' => 'fa-share',
-      ];
+      $endDate = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $eventId, 'end_date');
+      if (empty($endDate) || strtotime($endDate) >= time()) {
+        $return[] = [
+          'url' => CRM_Utils_System::url('civicrm/event/ical', $query, TRUE, NULL, TRUE),
+          'text' => ts('Download iCalendar entry for this event.'),
+          'icon' => 'fa-download',
+        ];
+
+        $return[] = [
+          'url' => CRM_Utils_System::url('civicrm/event/ical', ['gCalendar' => 1] + $query, TRUE, NULL, TRUE),
+          'text' => ts('Add event to Google Calendar'),
+          'icon' => 'fa-share',
+        ];
+      }
     }
     else {
       $return[] = [
@@ -2442,6 +2448,7 @@ WHERE  ce.loc_block_id = $locBlockId";
         'icon' => 'fa-link',
       ];
     }
+
     return $return;
   }
 
diff --git a/civicrm/CRM/Event/BAO/Participant.php b/civicrm/CRM/Event/BAO/Participant.php
index 9ab5ab46e47083b84c545676696eb95f1be89f2a..96daf54a23b48779932409c8614ca979c9138221 100644
--- a/civicrm/CRM/Event/BAO/Participant.php
+++ b/civicrm/CRM/Event/BAO/Participant.php
@@ -14,7 +14,7 @@
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
-class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant {
+class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant implements \Civi\Core\HookInterface {
 
   /**
    * Static field for all the participant information that we can potentially import.
@@ -1422,7 +1422,7 @@ UPDATE  civicrm_participant
         $receiptFrom = $eventDetails['confirm_from_name'] . ' <' . $eventDetails['confirm_from_email'] . '>';
       }
 
-      list($mailSent, $subject) = CRM_Core_BAO_MessageTemplate::sendTemplate(
+      [$mailSent, $subject] = CRM_Core_BAO_MessageTemplate::sendTemplate(
         [
           'workflow' => 'participant_' . strtolower($mailType),
           'contactId' => $contactId,
@@ -1888,7 +1888,7 @@ WHERE    civicrm_participant.contact_id = {$contactID} AND
     $timenow = new Datetime();
     if (!$isBackOffice && isset($time_limit)) {
       $cancelHours = abs($time_limit);
-      $cancelInterval = new DateInterval("PT${cancelHours}H");
+      $cancelInterval = new DateInterval("PT{$cancelHours}H");
       $cancelInterval->invert = $time_limit < 0 ? 1 : 0;
       $cancelDeadline = (new Datetime($start_date))->sub($cancelInterval);
       if ($timenow > $cancelDeadline) {
@@ -1904,4 +1904,36 @@ WHERE    civicrm_participant.contact_id = {$contactID} AND
     return $details;
   }
 
+  /**
+   * Callback for hook_civicrm_pre().
+   * @param \Civi\Core\Event\PreEvent $event
+   * @throws CRM_Core_Exception
+   */
+  public static function self_hook_civicrm_pre(\Civi\Core\Event\PreEvent $event) {
+    if ($event->entity === 'Participant' && $event->action === 'create' && empty($event->params['created_id'])) {
+      // Set the "created_id" field if not already set.
+      // The created_id should always be the person that actually did the registration.
+      // That might be the first participant, but it might be someone registering someone without registering themselves.
+      // 1. Prefer logged in contact id
+      // 2. Fall back to 'registered_by_id' param.
+      // 3. Fall back to participant contact_id (for anonymous person registering themselves)
+      $event->params['created_id'] = CRM_Core_Session::getLoggedInContactID();
+      if (empty($event->params['created_id'])) {
+        if (!empty($event->params['registered_by_id'])) {
+          // No logged in contact but participant was registered by someone else.
+          // Look up the contact ID of that participant and record
+          $participant = \Civi\Api4\Participant::get(FALSE)
+            ->addSelect('contact_id')
+            ->addWhere('id', '=', $event->params['registered_by_id'])
+            ->execute()
+            ->first();
+          $event->params['created_id'] = $participant['contact_id'];
+        }
+        else {
+          $event->params['created_id'] = $event->params['contact_id'];
+        }
+      }
+    }
+  }
+
 }
diff --git a/civicrm/CRM/Event/BAO/Query.php b/civicrm/CRM/Event/BAO/Query.php
index 61500c645fe691942f438483a5b0278646460113..4e53555e3a5016a66366afa90b917a64740cdbbe 100644
--- a/civicrm/CRM/Event/BAO/Query.php
+++ b/civicrm/CRM/Event/BAO/Query.php
@@ -236,7 +236,7 @@ class CRM_Event_BAO_Query extends CRM_Core_BAO_Query {
    */
   public static function whereClauseSingle(&$values, &$query) {
     $checkPermission = empty($query->_skipPermission);
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
     $fields = array_merge(CRM_Event_BAO_Event::fields(), CRM_Event_BAO_Participant::exportableFields());
     $fieldSpec = $fields[$values[0]] ?? [];
 
@@ -388,7 +388,7 @@ class CRM_Event_BAO_Query extends CRM_Core_BAO_Query {
         }
         $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("$tableName.$name", $op, $value, $dataType);
 
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Event_DAO_Participant', $name, $value, $op);
+        [$op, $value] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Event_DAO_Participant', $name, $value, $op);
         $query->_qill[$grouping][] = ts('%1 %2 %3', [1 => $fields[$qillName]['title'], 2 => $op, 3 => $value]);
         $query->_tables['civicrm_participant'] = $query->_whereTables['civicrm_participant'] = 1;
         return;
@@ -413,7 +413,7 @@ class CRM_Event_BAO_Query extends CRM_Core_BAO_Query {
           $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("$tableName.$name", $op, $value, $dataType);
         }
 
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Event_DAO_Participant', $name, $value, $op);
+        [$op, $value] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Event_DAO_Participant', $name, $value, $op);
         $query->_qill[$grouping][] = ts('%1 %2 %3', [1 => $fields[$qillName]['title'], 2 => $op, 3 => $value]);
         $query->_tables['civicrm_participant'] = $query->_whereTables['civicrm_participant'] = 1;
         return;
@@ -447,7 +447,7 @@ class CRM_Event_BAO_Query extends CRM_Core_BAO_Query {
         if (!array_key_exists($qillName, $fields)) {
           break;
         }
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Event_DAO_Event', $name, $value, $op, ['check_permission' => $checkPermission]);
+        [$op, $value] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Event_DAO_Event', $name, $value, $op, ['check_permission' => $checkPermission]);
         $query->_qill[$grouping][] = ts('%1 %2 %3', [1 => $fields[$qillName]['title'], 2 => $op, 3 => $value]);
         return;
 
diff --git a/civicrm/CRM/Event/Cart/DAO/Cart.php b/civicrm/CRM/Event/Cart/DAO/Cart.php
index 9f9ff821031e71a707e186893bd452759e8fddf2..9f737277aae212ff043851e22fa62ceb951a21c6 100644
--- a/civicrm/CRM/Event/Cart/DAO/Cart.php
+++ b/civicrm/CRM/Event/Cart/DAO/Cart.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Event/Cart/Cart.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:e88efc43107d7828fa4b0d2c29abb564)
+ * (GenCodeChecksum:41ef745cc916f417dcb6ef34c8d5effd)
  */
 
 /**
diff --git a/civicrm/CRM/Event/Cart/DAO/EventInCart.php b/civicrm/CRM/Event/Cart/DAO/EventInCart.php
index 3451c8dcf638db112ee2ac16674ff3fdcb4bcb9f..6a8d1816e7a3359ffe362bdf30cec90a50d9ebf1 100644
--- a/civicrm/CRM/Event/Cart/DAO/EventInCart.php
+++ b/civicrm/CRM/Event/Cart/DAO/EventInCart.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Event/Cart/EventInCart.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:24a288b857e58e2193699737ac771fdc)
+ * (GenCodeChecksum:81cd95c42078a304bf1a70ea35268a9a)
  */
 
 /**
diff --git a/civicrm/CRM/Event/DAO/Event.php b/civicrm/CRM/Event/DAO/Event.php
index b949ec5b81d26f80569c7fb81f613588f41b3eb3..6e78ca617d293c8b43d73ab90da625d48bb1465e 100644
--- a/civicrm/CRM/Event/DAO/Event.php
+++ b/civicrm/CRM/Event/DAO/Event.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Event/Event.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ddad900cfc0f303d651fa7b935157992)
+ * (GenCodeChecksum:a1a447b558a2c225be983dab067239ac)
  */
 
 /**
diff --git a/civicrm/CRM/Event/DAO/Participant.php b/civicrm/CRM/Event/DAO/Participant.php
index bc2325233220f14095f917e0287726c32fc80a3d..aad57f4f226e4401b3e99f09e6f0510c4de62f07 100644
--- a/civicrm/CRM/Event/DAO/Participant.php
+++ b/civicrm/CRM/Event/DAO/Participant.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Event/Participant.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:9d1b4abcd8bb1106b31c610026aed0d5)
+ * (GenCodeChecksum:ebc70049a0ce4ebc8b7abce72db42fbb)
  */
 
 /**
@@ -206,6 +206,15 @@ class CRM_Event_DAO_Participant extends CRM_Core_DAO {
    */
   public $transferred_to_contact_id;
 
+  /**
+   * Contact responsible for registering this participant
+   *
+   * @var int|string|null
+   *   (SQL type: int unsigned)
+   *   Note that values will be retrieved from the database as a string.
+   */
+  public $created_id;
+
   /**
    * Class constructor.
    */
@@ -250,6 +259,7 @@ class CRM_Event_DAO_Participant extends CRM_Core_DAO {
       Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'campaign_id', 'civicrm_campaign', 'id');
       Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'cart_id', 'civicrm_event_carts', 'id');
       Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'transferred_to_contact_id', 'civicrm_contact', 'id');
+      Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'created_id', 'civicrm_contact', 'id');
       CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'links_callback', Civi::$statics[__CLASS__]['links']);
     }
     return Civi::$statics[__CLASS__]['links'];
@@ -499,7 +509,7 @@ class CRM_Event_DAO_Participant extends CRM_Core_DAO {
           'localizable' => 0,
           'FKClassName' => 'CRM_Event_DAO_Participant',
           'html' => [
-            'label' => ts("Registered By"),
+            'label' => ts("Registered By Participant"),
           ],
           'add' => '2.1',
         ],
@@ -635,6 +645,23 @@ class CRM_Event_DAO_Participant extends CRM_Core_DAO {
           ],
           'add' => '4.7',
         ],
+        'created_id' => [
+          'name' => 'created_id',
+          'type' => CRM_Utils_Type::T_INT,
+          'title' => ts('Created by Contact ID'),
+          'description' => ts('Contact responsible for registering this participant'),
+          'where' => 'civicrm_participant.created_id',
+          'table_name' => 'civicrm_participant',
+          'entity' => 'Participant',
+          'bao' => 'CRM_Event_BAO_Participant',
+          'localizable' => 0,
+          'FKClassName' => 'CRM_Contact_DAO_Contact',
+          'html' => [
+            'type' => 'EntityRef',
+            'label' => ts("Created By"),
+          ],
+          'add' => '5.54',
+        ],
       ];
       CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']);
     }
diff --git a/civicrm/CRM/Event/DAO/ParticipantPayment.php b/civicrm/CRM/Event/DAO/ParticipantPayment.php
index a13745ca8f37c082da2ff47bc7dac675181d3f93..425337980aa5e26b98a588f963b34f5fee3d4e2a 100644
--- a/civicrm/CRM/Event/DAO/ParticipantPayment.php
+++ b/civicrm/CRM/Event/DAO/ParticipantPayment.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Event/ParticipantPayment.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:e968c8fec853683ccda7863407aef635)
+ * (GenCodeChecksum:11c4258beb32c5f802488d8db20efd1f)
  */
 
 /**
diff --git a/civicrm/CRM/Event/DAO/ParticipantStatusType.php b/civicrm/CRM/Event/DAO/ParticipantStatusType.php
index 160c3f56b1fa23af7ab7e38a77cc0f66d524da16..34284041c1cb4f27bc8d3510b32d5d5f3630f8b0 100644
--- a/civicrm/CRM/Event/DAO/ParticipantStatusType.php
+++ b/civicrm/CRM/Event/DAO/ParticipantStatusType.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Event/ParticipantStatusType.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ed0f2b22eb6983f73fa5b87fc4fa7c9c)
+ * (GenCodeChecksum:bece1efff5d8dd5d31c031cf6bb33702)
  */
 
 /**
diff --git a/civicrm/CRM/Event/Form/ManageEvent/Repeat.php b/civicrm/CRM/Event/Form/ManageEvent/Repeat.php
index 2012c6c9d313006ab5e324e6379b5280907719d3..591060786284713f56184818c5baee45ddefe756 100644
--- a/civicrm/CRM/Event/Form/ManageEvent/Repeat.php
+++ b/civicrm/CRM/Event/Form/ManageEvent/Repeat.php
@@ -1,14 +1,16 @@
 <?php
 /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
  */
 
 /**
- * Description of Repeat
- *
- * @author Priyanka
+ * Class to manage the "Repeat" functionality for event
  */
 class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent {
 
@@ -24,12 +26,19 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent {
    */
   protected $_parentEventEndDate = NULL;
 
+  /**
+   * @return int
+   */
+  protected function getEventId() {
+    return $this->_id;
+  }
+
   public function preProcess() {
     parent::preProcess();
     $this->setSelectedChild('repeat');
-    $this->assign('currentEventId', $this->_id);
+    $this->assign('currentEventId', $this->getEventId());
 
-    $checkParentExistsForThisId = CRM_Core_BAO_RecurringEntity::getParentFor($this->_id, 'civicrm_event');
+    $checkParentExistsForThisId = CRM_Core_BAO_RecurringEntity::getParentFor($this->getEventId(), 'civicrm_event');
     //If this ID has parent, send parent id
     if ($checkParentExistsForThisId) {
       /**
@@ -64,7 +73,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent {
       }
     }
 
-    $parentEventParams = ['id' => $this->_id];
+    $parentEventParams = ['id' => $this->getEventId()];
     $parentEventValues = [];
     $parentEventReturnProperties = ['start_date', 'end_date'];
     $parentEventAttributes = CRM_Core_DAO::commonRetrieve('CRM_Event_DAO_Event', $parentEventParams, $parentEventValues, $parentEventReturnProperties);
@@ -83,7 +92,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent {
     $defaults = [];
 
     //Always pass current event's start date by default
-    $defaults['repetition_start_date'] = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $this->_id, 'start_date', 'id');
+    $defaults['repetition_start_date'] = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $this->getEventId(), 'start_date', 'id');
     $recurringEntityDefaults = CRM_Core_Form_RecurringEntity::setDefaultValues();
     return array_merge($defaults, $recurringEntityDefaults);
   }
@@ -93,7 +102,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent {
   }
 
   public function postProcess() {
-    if ($this->_id) {
+    if ($this->getEventId()) {
       $params = $this->controller->exportValues($this->_name);
       if ($this->_parentEventStartDate && $this->_parentEventEndDate) {
         $interval = CRM_Core_BAO_RecurringEntity::getInterval($this->_parentEventStartDate, $this->_parentEventEndDate);
@@ -102,22 +111,22 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent {
       $params['dateColumns'] = ['start_date'];
       $params['excludeDateRangeColumns'] = ['start_date', 'end_date'];
       $params['entity_table'] = 'civicrm_event';
-      $params['entity_id'] = $this->_id;
+      $params['entity_id'] = $this->getEventId();
 
       // CRM-16568 - check if parent exist for the event.
-      $parentId = CRM_Core_BAO_RecurringEntity::getParentFor($this->_id, 'civicrm_event');
+      $parentId = CRM_Core_BAO_RecurringEntity::getParentFor($this->getEventId(), 'civicrm_event');
       $params['parent_entity_id'] = !empty($parentId) ? $parentId : $params['entity_id'];
       //Unset event id
       unset($params['id']);
 
       $url = 'civicrm/event/manage/repeat';
-      $urlParams = "action=update&reset=1&id={$this->_id}&selectedChild=repeat";
+      $urlParams = "action=update&reset=1&id={$this->getEventId()}&selectedChild=repeat";
 
       $linkedEntities = [
         [
           'table' => 'civicrm_price_set_entity',
           'findCriteria' => [
-            'entity_id' => $this->_id,
+            'entity_id' => $this->getEventId(),
             'entity_table' => 'civicrm_event',
           ],
           'linkedColumns' => ['entity_id'],
@@ -126,7 +135,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent {
         [
           'table' => 'civicrm_uf_join',
           'findCriteria' => [
-            'entity_id' => $this->_id,
+            'entity_id' => $this->getEventId(),
             'entity_table' => 'civicrm_event',
           ],
           'linkedColumns' => ['entity_id'],
@@ -135,7 +144,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent {
         [
           'table' => 'civicrm_tell_friend',
           'findCriteria' => [
-            'entity_id' => $this->_id,
+            'entity_id' => $this->getEventId(),
             'entity_table' => 'civicrm_event',
           ],
           'linkedColumns' => ['entity_id'],
@@ -144,7 +153,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent {
         [
           'table' => 'civicrm_pcp_block',
           'findCriteria' => [
-            'entity_id' => $this->_id,
+            'entity_id' => $this->getEventId(),
             'entity_table' => 'civicrm_event',
           ],
           'linkedColumns' => ['entity_id'],
@@ -155,7 +164,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent {
       CRM_Utils_System::redirect(CRM_Utils_System::url($url, $urlParams));
     }
     else {
-      CRM_Core_Error::statusBounce("Could not find Event ID");
+      CRM_Core_Error::statusBounce(ts('Could not find Event ID'));
     }
     parent::endPostProcess();
   }
diff --git a/civicrm/CRM/Event/Form/Participant.php b/civicrm/CRM/Event/Form/Participant.php
index 59ccd6772a104c4fece32b5d44b3da11b826ea2c..a81f025368e24e3a0c3c90546987d5c774ba838a 100644
--- a/civicrm/CRM/Event/Form/Participant.php
+++ b/civicrm/CRM/Event/Form/Participant.php
@@ -999,7 +999,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
       $params['total_amount'] = CRM_Utils_Rule::cleanMoney($params['total_amount']);
     }
     if ($this->_isPaidEvent) {
-      list($contributionParams, $lineItem, $additionalParticipantDetails, $params) = $this->preparePaidEventProcessing($params);
+      [$contributionParams, $lineItem, $additionalParticipantDetails, $params] = $this->preparePaidEventProcessing($params);
     }
 
     $this->_params = $params;
@@ -1020,7 +1020,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
     $userName = CRM_Core_Session::singleton()->getLoggedInContactDisplayName();
 
     if ($this->_contactId) {
-      list($this->_contributorDisplayName, $this->_contributorEmail, $this->_toDoNotEmail) = CRM_Contact_BAO_Contact::getContactDetails($this->_contactId);
+      [$this->_contributorDisplayName, $this->_contributorEmail, $this->_toDoNotEmail] = CRM_Contact_BAO_Contact::getContactDetails($this->_contactId);
     }
 
     //modify params according to parameter used in create
@@ -1459,7 +1459,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
 
       foreach ($this->_contactIds as $num => $contactID) {
         // Retrieve the name and email of the contact - this will be the TO for receipt email
-        list($this->_contributorDisplayName, $this->_contributorEmail, $this->_toDoNotEmail) = CRM_Contact_BAO_Contact::getContactDetails($contactID);
+        [$this->_contributorDisplayName, $this->_contributorEmail, $this->_toDoNotEmail] = CRM_Contact_BAO_Contact::getContactDetails($contactID);
 
         $this->_contributorDisplayName = ($this->_contributorDisplayName == ' ') ? $this->_contributorEmail : $this->_contributorDisplayName;
 
@@ -1550,7 +1550,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
           $sendTemplateParams['isEmailPdf'] = TRUE;
           $sendTemplateParams['contributionId'] = $contributionId;
         }
-        list($mailSent, $subject, $message, $html) = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
+        [$mailSent, $subject, $message, $html] = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
         if ($mailSent) {
           $sent[] = $contactID;
           foreach ($participants as $ids => $values) {
@@ -1761,9 +1761,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment
     // Retrieve the name and email of the contact - form will be the TO for receipt email ( only if context is not standalone)
     if ($form->_context != 'standalone') {
       if ($form->_contactId) {
-        list($form->_contributorDisplayName,
-          $form->_contributorEmail
-          ) = CRM_Contact_BAO_Contact_Location::getEmailDetails($form->_contactId);
+        [$form->_contributorDisplayName, $form->_contributorEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($form->_contactId);
         $form->assign('email', $form->_contributorEmail);
       }
       else {
diff --git a/civicrm/CRM/Event/Form/Registration/Register.php b/civicrm/CRM/Event/Form/Registration/Register.php
index 96a55b4fc3a8710b3c38f80a6419512d4e27e98f..dac1326ab884ca85590cca8efbe34fdb43bbaf52 100644
--- a/civicrm/CRM/Event/Form/Registration/Register.php
+++ b/civicrm/CRM/Event/Form/Registration/Register.php
@@ -368,8 +368,8 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration {
     CRM_Core_Payment_ProcessorForm::buildQuickForm($this);
 
     $contactID = $this->getContactID();
+    $this->assign('contact_id', $contactID);
     if ($contactID) {
-      $this->assign('contact_id', $contactID);
       $this->assign('display_name', CRM_Contact_BAO_Contact::displayName($contactID));
     }
 
diff --git a/civicrm/CRM/Event/Form/SelfSvcTransfer.php b/civicrm/CRM/Event/Form/SelfSvcTransfer.php
index a6db5abdd92a08d20af067b0b352ca46f02745d4..75ab966ebcbd425c0ac310d2e5d6b7c199100d70 100644
--- a/civicrm/CRM/Event/Form/SelfSvcTransfer.php
+++ b/civicrm/CRM/Event/Form/SelfSvcTransfer.php
@@ -398,8 +398,7 @@ class CRM_Event_Form_SelfSvcTransfer extends CRM_Core_Form {
       ];
 
       $sendTemplateParams = [
-        'groupName' => 'msg_tpl_workflow_event',
-        'valueName' => 'event_online_receipt',
+        'workflow' => 'event_online_receipt',
         'contactId' => $participantDetails[$participant->id]['contact_id'],
         'tplParams' => $tplParams,
         'from' => $receiptFrom,
@@ -407,6 +406,10 @@ class CRM_Event_Form_SelfSvcTransfer extends CRM_Core_Form {
         'toEmail' => $toEmail,
         'cc' => $eventDetails['cc_confirm'] ?? NULL,
         'bcc' => $eventDetails['bcc_confirm'] ?? NULL,
+        'modelProps' => [
+          'participantID' => $participant->id,
+          'eventID' => $participant->event_id,
+        ],
       ];
       CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams);
     }
diff --git a/civicrm/CRM/Event/ICalendar.php b/civicrm/CRM/Event/ICalendar.php
index faf2889b1797c0a78381697e7f6129c24da7f6bb..cb1faa778d2f3889de0e8b803c58401d16b97851 100644
--- a/civicrm/CRM/Event/ICalendar.php
+++ b/civicrm/CRM/Event/ICalendar.php
@@ -46,7 +46,7 @@ class CRM_Event_ICalendar {
 
     $info = CRM_Event_BAO_Event::getCompleteInfo($start, $type, $id, $end);
 
-    if ($gCalendar) {
+    if ($gCalendar && count($info) === 1) {
       return self::gCalRedirect($info);
     }
 
@@ -69,17 +69,23 @@ class CRM_Event_ICalendar {
       $calendar = $template->fetch('CRM/Core/Calendar/GData.tpl');
     }
     else {
-      $date_min = min(
-        array_map(function ($event) {
-          return strtotime($event['start_date']);
-        }, $info)
-      );
-      $date_max = max(
-        array_map(function ($event) {
-          return strtotime($event['end_date'] ?? $event['start_date']);
-        }, $info)
-      );
-      $template->assign('timezones', CRM_Utils_ICalendar::generate_timezones($timezones, $date_min, $date_max));
+      if (count($info) > 0) {
+        $date_min = min(
+          array_map(function ($event) {
+            return strtotime($event['start_date']);
+          }, $info)
+        );
+        $date_max = max(
+          array_map(function ($event) {
+            return strtotime($event['end_date'] ?? $event['start_date']);
+          }, $info)
+        );
+        $template->assign('timezones', CRM_Utils_ICalendar::generate_timezones($timezones, $date_min, $date_max));
+      }
+      else {
+        $template->assign('timezones', NULL);
+      }
+
       $calendar = $template->fetch('CRM/Core/Calendar/ICal.tpl');
       $calendar = preg_replace('/(?<!\r)\n/', "\r\n", $calendar);
     }
@@ -100,10 +106,6 @@ class CRM_Event_ICalendar {
   }
 
   protected static function gCalRedirect(array $events) {
-    if (count($events) != 1) {
-      throw new CRM_Core_Exception(ts('Expected one %1, found %2', [1 => ts('Event'), 2 => count($events)]));
-    }
-
     $event = reset($events);
 
     // Fetch the required Date TimeStamps
diff --git a/civicrm/CRM/Event/Import/Field.php b/civicrm/CRM/Event/Import/Field.php
deleted file mode 100644
index a3062a2ec0e7b5926f95837011c5701e387a074b..0000000000000000000000000000000000000000
--- a/civicrm/CRM/Event/Import/Field.php
+++ /dev/null
@@ -1,139 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
- */
-
-/**
- * Class CRM_Event_Import_Field
- */
-class CRM_Event_Import_Field {
-
-  /**
-   * #@+
-   * @var string
-   */
-
-  /**
-   * Name of the field
-   * @var string
-   */
-  public $_name;
-
-  /**
-   * Title of the field to be used in display
-   * @var string
-   */
-  public $_title;
-
-  /**
-   * Type of field
-   * @var int
-   */
-  public $_type;
-
-  /**
-   * Regexp to match the CSV header of this column/field
-   * @var string
-   */
-  public $_headerPattern;
-
-  /**
-   * Regexp to match the pattern of data from various column/fields
-   * @var string
-   */
-  public $_dataPattern;
-
-  /**
-   * Value of this field
-   * @var string|null
-   */
-  public $_value;
-
-  /**
-   * @param string $name
-   * @param string $title
-   * @param int $type
-   * @param string $headerPattern
-   * @param string $dataPattern
-   */
-  public function __construct($name, $title, $type = CRM_Utils_Type::T_INT, $headerPattern = '//', $dataPattern = '//') {
-    $this->_name = $name;
-    $this->_title = $title;
-    $this->_type = $type;
-    $this->_headerPattern = $headerPattern;
-    $this->_dataPattern = $dataPattern;
-
-    $this->_value = NULL;
-  }
-
-  public function resetValue() {
-    $this->_value = NULL;
-  }
-
-  /**
-   * Convert the value to the type of this field and set the field value with the appropriate type.
-   *
-   * @param string $value
-   */
-  public function setValue($value) {
-    $this->_value = $value;
-  }
-
-  /**
-   * @return bool
-   */
-  public function validate() {
-    if (CRM_Utils_System::isNull($this->_value)) {
-      return TRUE;
-    }
-
-    switch ($this->_name) {
-      case 'contact_id':
-        // note: we validate existence of the contact in API, upon
-        // insert (it would be too costly to do a db call here)
-        return CRM_Utils_Rule::integer($this->_value);
-
-      case 'register_date':
-        return CRM_Utils_Rule::date($this->_value);
-
-      /* @codingStandardsIgnoreStart
-        case 'event_id':
-            static $events = null;
-            if (!$events) {
-                $events = CRM_Event_PseudoConstant::event();
-            }
-            if (in_array($this->_value, $events)) {
-                return true;
-            }
-            else {
-                return false;
-            }
-            break;
-      @codingStandardsIgnoreEnd */
-
-      default:
-        break;
-    }
-
-    // check whether that's a valid custom field id
-    // and if so, check the contents' validity
-    if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($this->_name)) {
-      static $customFields = NULL;
-      if (!$customFields) {
-        $customFields = CRM_Core_BAO_CustomField::getFields('Participant');
-      }
-      if (!array_key_exists($customFieldID, $customFields)) {
-        return FALSE;
-      }
-      return CRM_Core_BAO_CustomValue::typecheck($customFields[$customFieldID]['data_type'], $this->_value);
-    }
-    return TRUE;
-  }
-
-}
diff --git a/civicrm/CRM/Event/Import/Form/MapField.php b/civicrm/CRM/Event/Import/Form/MapField.php
index 67d47eced6d70dfce9df6272cdba058d2b6b1886..16dbef549ba1162be3414ea82ead916d58c8d903 100644
--- a/civicrm/CRM/Event/Import/Form/MapField.php
+++ b/civicrm/CRM/Event/Import/Form/MapField.php
@@ -54,8 +54,7 @@ class CRM_Event_Import_Form_MapField extends CRM_Import_Form_MapField {
    * @return void
    */
   public function buildQuickForm() {
-    $savedMappingID = (int) $this->getSubmittedValue('savedMapping');
-    $this->buildSavedMappingFields($savedMappingID);
+    $this->addSavedMappingFields();
     $this->addFormRule(array('CRM_Event_Import_Form_MapField', 'formRule'), $this);
     $this->addMapper();
     $this->addFormButtons();
@@ -70,7 +69,7 @@ class CRM_Event_Import_Form_MapField extends CRM_Import_Form_MapField {
    * @param $files
    * @param self $self
    *
-   * @return array
+   * @return array|true
    *   list of errors to be posted back to the form
    */
   public static function formRule($fields, $files, $self) {
@@ -115,39 +114,11 @@ class CRM_Event_Import_Form_MapField extends CRM_Import_Form_MapField {
       }
     }
 
-    if (!empty($fields['saveMapping'])) {
-      $nameField = $fields['saveMappingName'] ?? NULL;
-      if (empty($nameField)) {
-        $errors['saveMappingName'] = ts('Name is required to save Import Mapping');
-      }
-      else {
-        if (CRM_Core_BAO_Mapping::checkMapping($nameField, CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_Mapping', 'mapping_type_id', 'Import Participant'))) {
-          $errors['saveMappingName'] = ts('Duplicate Import Participant Mapping Name');
-        }
-      }
-    }
-
-    //display Error if loaded mapping is not selected
-    if (array_key_exists('loadMapping', $fields)) {
-      $getMapName = $fields['savedMapping'] ?? NULL;
-      if (empty($getMapName)) {
-        $errors['savedMapping'] = ts('Select saved mapping');
-      }
-    }
-
     if (empty($errors['_qf_default'])) {
       unset($errors['_qf_default']);
     }
-    if (!empty($errors)) {
-      if (!empty($errors['saveMappingName'])) {
-        $_flag = 1;
-        $assignError = new CRM_Core_Page();
-        $assignError->assign('mappingDetailsError', $_flag);
-      }
-      return $errors;
-    }
 
-    return TRUE;
+    return empty($errors) ? TRUE : $errors;
   }
 
   /**
diff --git a/civicrm/CRM/Event/Import/Form/Summary.php b/civicrm/CRM/Event/Import/Form/Summary.php
deleted file mode 100644
index 024c735f22edec652ef3fe43c0918b03c9528637..0000000000000000000000000000000000000000
--- a/civicrm/CRM/Event/Import/Form/Summary.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
- */
-
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC https://civicrm.org/licensing
- */
-
-/**
- * This class summarizes the import results
- */
-class CRM_Event_Import_Form_Summary extends CRM_Import_Form_Summary {
-
-}
diff --git a/civicrm/CRM/Event/Import/Parser/Participant.php b/civicrm/CRM/Event/Import/Parser/Participant.php
index de5f53ef520591a129ad4a1246b1514b31abe836..7d3e02d54b48c043331d078ba7da2f335700131b 100644
--- a/civicrm/CRM/Event/Import/Parser/Participant.php
+++ b/civicrm/CRM/Event/Import/Parser/Participant.php
@@ -15,8 +15,6 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
-require_once 'CRM/Utils/DeprecatedUtils.php';
-
 /**
  * class to parse membership csv files
  */
@@ -86,6 +84,7 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser {
         'id' => 'participant_import',
         'name' => 'participant_import',
         'label' => ts('Participant Import'),
+        'entity' => 'Participant',
       ],
     ];
   }
@@ -96,52 +95,6 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser {
   public function init() {
     unset($this->userJob);
     $this->setFieldMetadata();
-    foreach ($this->importableFieldsMetadata as $name => $field) {
-      $field['type'] = CRM_Utils_Array::value('type', $field, CRM_Utils_Type::T_INT);
-      $field['dataPattern'] = CRM_Utils_Array::value('dataPattern', $field, '//');
-      $field['headerPattern'] = CRM_Utils_Array::value('headerPattern', $field, '//');
-      $this->addField($name, $field['title'], $field['type'], $field['headerPattern'], $field['dataPattern']);
-    }
-  }
-
-  /**
-   * Handle the values in preview mode.
-   *
-   * @param array $values
-   *   The array of values belonging to this line.
-   *
-   * @return bool
-   *   the result of this processing
-   */
-  public function preview(&$values) {
-    return $this->summary($values);
-  }
-
-  /**
-   * Handle the values in summary mode.
-   *
-   * @param array $values
-   *   The array of values belonging to this line.
-   *
-   * @return bool
-   *   the result of this processing
-   */
-  public function summary(&$values) {
-    $params = $this->getMappedRow($values);
-    $errors = [];
-    try {
-      $this->validateParams($params);
-    }
-    catch (CRM_Core_Exception $e) {
-      $errors[] = $e->getMessage();
-    }
-
-    if ($errors) {
-      $tempMsg = "Invalid value for field(s) : " . implode(',', $errors);
-      array_unshift($values, $tempMsg);
-      return CRM_Import_Parser::ERROR;
-    }
-    return CRM_Import_Parser::VALID;
   }
 
   /**
@@ -149,14 +102,14 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser {
    *
    * @param array $values
    *   The array of values belonging to this line.
-   *
-   * @return bool
-   *   the result of this processing
    */
-  public function import(&$values) {
+  public function import(array $values): void {
     $rowNumber = (int) ($values[array_key_last($values)]);
     try {
       $params = $this->getMappedRow($values);
+      if ($params['external_identifier']) {
+        $params['contact_id'] = $this->lookupExternalIdentifier($params['external_identifier'], $this->getContactType(), $params['contact_id'] ?? NULL);
+      }
       $session = CRM_Core_Session::singleton();
       $formatted = $params;
       // don't add to recent items, CRM-4399
@@ -226,7 +179,7 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser {
 
             $this->_newParticipant[] = $newParticipant->id;
             $this->setImportStatus($rowNumber, 'IMPORTED', '', $newParticipant->id);
-            return CRM_Import_Parser::VALID;
+            return;
           }
           throw new CRM_Core_Exception('Matching Participant record not found for Participant ID ' . $formatValues['participant_id'] . '. Row was skipped.');
         }
@@ -278,14 +231,6 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser {
         }
       }
       else {
-        if (!empty($formatValues['external_identifier'])) {
-          $checkCid = new CRM_Contact_DAO_Contact();
-          $checkCid->external_identifier = $formatValues['external_identifier'];
-          $checkCid->find(TRUE);
-          if ($checkCid->id != $formatted['contact_id']) {
-            throw new CRM_Core_Exception('Mismatch of External ID:' . $formatValues['external_identifier'] . ' and Contact Id:' . $formatted['contact_id']);
-          }
-        }
         $newParticipant = $this->deprecated_create_participant_formatted($formatted);
       }
 
@@ -300,9 +245,8 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser {
           if (is_array($newParticipant['error_message']) &&
             ($participantID == $newParticipant['error_message']['params'][0])
           ) {
-            array_unshift($values, $url);
-            $this->setImportStatus($rowNumber, 'DUPLICATE', '');
-            return CRM_Import_Parser::DUPLICATE;
+            $this->setImportStatus($rowNumber, 'DUPLICATE', $url);
+            return;
           }
           if ($newParticipant['error_message']) {
             throw new CRM_Core_Exception($newParticipant['error_message']);
@@ -316,16 +260,10 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser {
       }
     }
     catch (CRM_Core_Exception $e) {
-      array_unshift($values, $e->getMessage());
-      $this->setImportStatus($rowNumber, 'ERROR', $e->getMessage());
-      return CRM_Import_Parser::ERROR;
-    }
-    catch (CiviCRM_API3_Exception $e) {
-      array_unshift($values, $e->getMessage());
       $this->setImportStatus($rowNumber, 'ERROR', $e->getMessage());
-      return CRM_Import_Parser::ERROR;
+      return;
     }
-    $this->setImportStatus($rowNumber, 'IMPORTED', '');
+    $this->setImportStatus($rowNumber, 'IMPORTED', '', $newParticipant['id']);
   }
 
   /**
@@ -538,52 +476,6 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser {
     return TRUE;
   }
 
-  /**
-   * Given a list of the importable field keys that the user has selected
-   * set the active fields array to this list
-   *
-   * @param array $fieldKeys mapped array of values
-   *
-   * @return void
-   */
-  public function setActiveFields($fieldKeys) {
-    $this->_activeFieldCount = count($fieldKeys);
-    foreach ($fieldKeys as $key) {
-      if (empty($this->_fields[$key])) {
-        $this->_activeFields[] = new CRM_Event_Import_Field('', ts('- do not import -'));
-      }
-      else {
-        $this->_activeFields[] = clone($this->_fields[$key]);
-      }
-    }
-  }
-
-  /**
-   * @param string $name
-   * @param $title
-   * @param int $type
-   * @param string $headerPattern
-   * @param string $dataPattern
-   */
-  public function addField($name, $title, $type = CRM_Utils_Type::T_INT, $headerPattern = '//', $dataPattern = '//') {
-    if (empty($name)) {
-      $this->_fields['doNotImport'] = new CRM_Event_Import_Field($name, $title, $type, $headerPattern, $dataPattern);
-    }
-    else {
-
-      //$tempField = CRM_Contact_BAO_Contact::importableFields('Individual', null );
-      $tempField = CRM_Contact_BAO_Contact::importableFields('All', NULL);
-      if (!array_key_exists($name, $tempField)) {
-        $this->_fields[$name] = new CRM_Event_Import_Field($name, $title, $type, $headerPattern, $dataPattern);
-      }
-      else {
-        $this->_fields[$name] = new CRM_Contact_Import_Field($name, $title, $type, $headerPattern, $dataPattern,
-          CRM_Utils_Array::value('hasLocationType', $tempField[$name])
-        );
-      }
-    }
-  }
-
   /**
    * Set up field metadata.
    *
@@ -626,7 +518,7 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser {
    * @return array
    */
   protected function getRequiredFields(): array {
-    return [['event_id' => ts('Event'), 'status_id' => ts('Status')]];
+    return [['event_id', 'status_id']];
   }
 
 }
diff --git a/civicrm/CRM/Event/Page/EventInfo.php b/civicrm/CRM/Event/Page/EventInfo.php
index 778549e3e58e6266d78e16d95fbc44a885a0efd5..92ffc131e1980e7eb30153b12b1b9d423e305108 100644
--- a/civicrm/CRM/Event/Page/EventInfo.php
+++ b/civicrm/CRM/Event/Page/EventInfo.php
@@ -61,7 +61,7 @@ class CRM_Event_Page_EventInfo extends CRM_Core_Page {
     $values = ['event' => NULL];
     CRM_Event_BAO_Event::retrieve($params, $values['event']);
 
-    if (!$values['event']['is_active']) {
+    if (!$values['event'] || !$values['event']['is_active']) {
       CRM_Utils_System::setUFMessage(ts('The event you requested is currently unavailable (contact the site administrator for assistance).'));
       return CRM_Utils_System::permissionDenied();
     }
diff --git a/civicrm/CRM/Event/WorkflowMessage/EventExamples.php b/civicrm/CRM/Event/WorkflowMessage/EventExamples.php
new file mode 100644
index 0000000000000000000000000000000000000000..68de53d91deabb0c106e4601f851c2efe0eb13cd
--- /dev/null
+++ b/civicrm/CRM/Event/WorkflowMessage/EventExamples.php
@@ -0,0 +1,108 @@
+<?php
+
+use Civi\Api4\PriceSetEntity;
+use Civi\Api4\WorkflowMessage;
+use Civi\WorkflowMessage\GenericWorkflowMessage;
+use Civi\WorkflowMessage\WorkflowMessageExample;
+
+/**
+ * Basic contribution example for contribution templates.
+ *
+ * @noinspection PhpUnused
+ */
+class CRM_Event_WorkflowMessage_EventExamples extends WorkflowMessageExample {
+
+  /**
+   * Get the examples this class is able to deliver.
+   *
+   * @throws \API_Exception
+   */
+  public function getExamples(): iterable {
+    $workflows = ['event_online_receipt', 'event_offline_receipt'];
+    foreach ($workflows as $workflow) {
+      $priceSets = $this->getPriceSets();
+      foreach ($priceSets as $priceSet) {
+        yield [
+          'name' => 'workflow/' . $workflow . '/' . 'price_set_' . $priceSet['name'],
+          'title' => ts('Completed Registration') . ' : ' . $priceSet['title'],
+          'tags' => ['preview'],
+          'workflow' => $workflow,
+          'is_show_line_items' => !$priceSet['is_quick_config'],
+          'event_id' => $priceSet['event_id'],
+        ];
+      }
+    }
+  }
+
+  /**
+   * Build an example to use when rendering the workflow.
+   *
+   * @param array $example
+   *
+   * @throws \API_Exception
+   */
+  public function build(array &$example): void {
+    $workFlow = WorkflowMessage::get(TRUE)->addWhere('name', '=', $example['workflow'])->execute()->first();
+    $this->setWorkflowName($workFlow['name']);
+    $messageTemplate = new $workFlow['class']();
+    $this->addExampleData($messageTemplate, $example);
+    $example['data'] = $this->toArray($messageTemplate);
+  }
+
+  /**
+   * Add relevant example data.
+   *
+   * @param \CRM_Event_WorkflowMessage_EventOnlineReceipt|\CRM_Event_WorkflowMessage_EventOfflineReceipt $messageTemplate
+   * @param array $example
+   *
+   * @throws \API_Exception
+   * @throws \CRM_Core_Exception
+   * @throws \CiviCRM_API3_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  private function addExampleData(GenericWorkflowMessage $messageTemplate, $example): void {
+    $messageTemplate->setContact(\Civi\Test::example('entity/Contact/Barb'));
+    $messageTemplate->setEventID($example['event_id']);
+  }
+
+  /**
+   * Get prices sets from the site - ideally one quick config & one not.
+   *
+   * @return array
+   *
+   * @throws \API_Exception
+   */
+  private function getPriceSets(): ?array {
+    // Permission check defaults to true - likely implicitly OK but may need to be false.
+    $quickConfigPriceSet = $this->getPriceSet(TRUE);
+    $nonQuickConfigPriceSet = $this->getPriceSet(FALSE);
+
+    return array_filter([$quickConfigPriceSet, $nonQuickConfigPriceSet]);
+  }
+
+  /**
+   * Get a price set.
+   *
+   * @param bool $isQuickConfig
+   *
+   * @return array|null
+   * @throws \API_Exception
+   */
+  private function getPriceSet(bool $isQuickConfig): ?array {
+    $priceSetEntity = PriceSetEntity::get(FALSE)
+      ->addWhere('entity_table', '=', 'civicrm_event')
+      ->addSelect('price_set_id.id', 'entity_id', 'price_set_id.is_quick_config', 'price_set_id.name', 'price_set_id.title')
+      ->setLimit(1)
+      ->addWhere('price_set_id.is_quick_config', '=', $isQuickConfig)
+      ->execute()->first();
+
+    return empty($priceSetEntity) ? NULL : [
+      'id' => $priceSetEntity['price_set_id'],
+      'name' => $priceSetEntity['price_set_id.name'],
+      'title' => $priceSetEntity['price_set_id.title'],
+      'event_id' => $priceSetEntity['entity_id'],
+      'is_quick_config' => $priceSetEntity['price_set_id.is_quick_config'],
+    ];
+  }
+
+}
diff --git a/civicrm/CRM/Activity/Import/Form/Summary.php b/civicrm/CRM/Event/WorkflowMessage/EventOnlineReceipt.php
similarity index 55%
rename from civicrm/CRM/Activity/Import/Form/Summary.php
rename to civicrm/CRM/Event/WorkflowMessage/EventOnlineReceipt.php
index 0aab950b950615687d986a08883f4c1b878fc61f..d17591cc9a2a19e2eaa7b553d7b1b5402ec87967 100644
--- a/civicrm/CRM/Activity/Import/Form/Summary.php
+++ b/civicrm/CRM/Event/WorkflowMessage/EventOnlineReceipt.php
@@ -9,15 +9,18 @@
  +--------------------------------------------------------------------+
  */
 
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC https://civicrm.org/licensing
- */
+use Civi\WorkflowMessage\GenericWorkflowMessage;
 
 /**
- * This class summarizes the import results.
+ * Receipt sent when confirming a back office participation record.
+ *
+ * @support template-only
+ *
+ * @see \CRM_Event_BAO_Event::sendMail()
+ * @see \CRM_Event_Form_SelfSvcTransfer::participantTransfer
  */
-class CRM_Activity_Import_Form_Summary extends CRM_Import_Form_Summary {
+class CRM_Event_WorkflowMessage_EventOnlineReceipt extends GenericWorkflowMessage {
+  use CRM_Event_WorkflowMessage_ParticipantTrait;
+  public const WORKFLOW = 'event_online_receipt';
 
 }
diff --git a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php
index 619bb6abdd7a107ab313f2843e80822117d83696..6d9df1d4fe85ae846517880e6d8aff0127dd8d43 100644
--- a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php
+++ b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php
@@ -19,4 +19,14 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait {
    */
   public $eventID;
 
+  /**
+   * @param int $eventID
+   *
+   * @return CRM_Event_WorkflowMessage_ParticipantTrait
+   */
+  public function setEventID(int $eventID) {
+    $this->eventID = $eventID;
+    return $this;
+  }
+
 }
diff --git a/civicrm/CRM/Export/BAO/Export.php b/civicrm/CRM/Export/BAO/Export.php
index 6ff9506f45185349ad818e9337f7a41835b06ac7..16637e75d8eee01e2a72b4a2b37dd0d6f3ca4c4c 100644
--- a/civicrm/CRM/Export/BAO/Export.php
+++ b/civicrm/CRM/Export/BAO/Export.php
@@ -125,14 +125,14 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c
     $processor->setComponentClause($componentClause);
     $processor->setIds($ids);
 
-    list($query, $queryString) = $processor->runQuery($params, $order);
+    [$query, $queryString] = $processor->runQuery($params, $order);
 
     // This perhaps only needs calling when $mergeSameHousehold == 1
     self::buildRelatedContactArray($selectAll, $ids, $processor, $componentTable);
 
     $addPaymentHeader = FALSE;
 
-    list($outputColumns) = $processor->getExportStructureArrays();
+    [$outputColumns] = $processor->getExportStructureArrays();
 
     if ($processor->isMergeSameAddress()) {
       foreach (array_keys($processor->getAdditionalFieldsForSameAddressMerge()) as $field) {
@@ -424,9 +424,9 @@ VALUES $sqlValueString
       $relationQuery = new CRM_Contact_BAO_Query(NULL, $relationReturnProperties,
         NULL, FALSE, FALSE, $queryMode
       );
-      list($relationSelect, $relationFrom, $relationWhere, $relationHaving) = $relationQuery->query();
+      [$relationSelect, $relationFrom, $relationWhere, $relationHaving] = $relationQuery->query();
 
-      list($id, $direction) = explode('_', $relationshipKey, 2);
+      [$id, $direction] = explode('_', $relationshipKey, 2);
       // identify the relationship direction
       $contactA = 'contact_id_a';
       $contactB = 'contact_id_b';
diff --git a/civicrm/CRM/Extension/Container/Default.php b/civicrm/CRM/Extension/Container/Default.php
index f5a6c4ce3cd686dceeb8bad3d1f98b1b63fb38d4..85bec22c4d5094c1e94813b82076ff03f20e90cd 100644
--- a/civicrm/CRM/Extension/Container/Default.php
+++ b/civicrm/CRM/Extension/Container/Default.php
@@ -32,7 +32,7 @@ class CRM_Extension_Container_Default extends CRM_Extension_Container_Basic {
     // unless baseDir is set, so this error condition is more theoretical.
     if (empty($this->baseDir) || !is_dir($this->baseDir)) {
       $civicrmDestination = urlencode(CRM_Utils_System::url('civicrm/admin/extensions', 'reset=1'));
-      $url = CRM_Utils_System::url('civicrm/admin/setting/path', "reset=1&civicrmDestination=${civicrmDestination}");
+      $url = CRM_Utils_System::url('civicrm/admin/setting/path', "reset=1&civicrmDestination={$civicrmDestination}");
       $errors[] = array(
         'title' => ts('Invalid Base Directory'),
         'message' => ts('The extensions directory is not properly set. Please go to the <a href="%1">path setting page</a> and correct it.<br/>',
@@ -44,7 +44,7 @@ class CRM_Extension_Container_Default extends CRM_Extension_Container_Basic {
     }
     if (empty($this->baseUrl)) {
       $civicrmDestination = urlencode(CRM_Utils_System::url('civicrm/admin/extensions', 'reset=1'));
-      $url = CRM_Utils_System::url('civicrm/admin/setting/url', "reset=1&civicrmDestination=${civicrmDestination}");
+      $url = CRM_Utils_System::url('civicrm/admin/setting/url', "reset=1&civicrmDestination={$civicrmDestination}");
       $errors[] = array(
         'title' => ts('Invalid Base URL'),
         'message' => ts('The extensions URL is not properly set. Please go to the <a href="%1">URL setting page</a> and correct it.<br/>',
diff --git a/civicrm/CRM/Extension/Downloader.php b/civicrm/CRM/Extension/Downloader.php
index 4b472267af615dd0c680311681018374525d1df7..05e871f368e378ea812b809a18f4196aa4b5fe8b 100644
--- a/civicrm/CRM/Extension/Downloader.php
+++ b/civicrm/CRM/Extension/Downloader.php
@@ -18,35 +18,31 @@
 class CRM_Extension_Downloader {
 
   /**
-   * @var GuzzleHttp\Client
+   * @var CRM_Extension_Manager
    */
-  protected $guzzleClient;
+  private $manager;
 
   /**
-   * @return \GuzzleHttp\Client
+   * @var string
    */
-  public function getGuzzleClient(): \GuzzleHttp\Client {
-    return $this->guzzleClient ?? new \GuzzleHttp\Client();
-  }
+  private $containerDir;
 
   /**
-   * @param \GuzzleHttp\Client $guzzleClient
+   * @var string
+   * Local path to a temporary data directory
    */
-  public function setGuzzleClient(\GuzzleHttp\Client $guzzleClient) {
-    $this->guzzleClient = $guzzleClient;
-  }
+  public $tmpDir;
 
   /**
-   * @var CRM_Extension_Container_Basic
-   * The place where downloaded extensions are ultimately stored
+   * @var GuzzleHttp\Client
    */
-  public $container;
+  protected $guzzleClient;
 
   /**
-   * @var string
-   * Local path to a temporary data directory
+   * @var CRM_Extension_Container_Basic
+   * The place where downloaded extensions are ultimately stored
    */
-  public $tmpDir;
+  public $container;
 
   /**
    * @param CRM_Extension_Manager $manager
@@ -60,6 +56,20 @@ class CRM_Extension_Downloader {
     $this->tmpDir = $tmpDir;
   }
 
+  /**
+   * @return \GuzzleHttp\Client
+   */
+  public function getGuzzleClient(): \GuzzleHttp\Client {
+    return $this->guzzleClient ?? new \GuzzleHttp\Client();
+  }
+
+  /**
+   * @param \GuzzleHttp\Client $guzzleClient
+   */
+  public function setGuzzleClient(\GuzzleHttp\Client $guzzleClient) {
+    $this->guzzleClient = $guzzleClient;
+  }
+
   /**
    * Determine whether downloading is supported.
    *
@@ -73,7 +83,7 @@ class CRM_Extension_Downloader {
 
     if (!$this->containerDir || !is_dir($this->containerDir) || !is_writable($this->containerDir)) {
       $civicrmDestination = urlencode(CRM_Utils_System::url('civicrm/admin/extensions', 'reset=1'));
-      $url = CRM_Utils_System::url('civicrm/admin/setting/path', "reset=1&civicrmDestination=${civicrmDestination}");
+      $url = CRM_Utils_System::url('civicrm/admin/setting/path', "reset=1&civicrmDestination={$civicrmDestination}");
       $errors[] = array(
         'title' => ts('Directory Unwritable'),
         'message' => ts("Your extensions directory is not set or is not writable. Click <a href='%1'>here</a> to set the extensions directory.",
@@ -121,7 +131,6 @@ class CRM_Extension_Downloader {
    */
   public function download($key, $downloadUrl) {
     $filename = $this->tmpDir . DIRECTORY_SEPARATOR . $key . '.zip';
-    $destDir = $this->containerDir . DIRECTORY_SEPARATOR . $key;
 
     if (!$downloadUrl) {
       throw new CRM_Extension_Exception(ts('Cannot install this extension - downloadUrl is not set!'));
diff --git a/civicrm/CRM/Extension/Manager.php b/civicrm/CRM/Extension/Manager.php
index 800a7b3ce71bd89f7fdeea171fbb5e06654855d1..44a7169b821514fc6ca698d18fd41c1333d729c1 100644
--- a/civicrm/CRM/Extension/Manager.php
+++ b/civicrm/CRM/Extension/Manager.php
@@ -175,7 +175,7 @@ class CRM_Extension_Manager {
           CRM_Core_Session::setStatus(ts('A copy of the extension (%1) is in a system folder (%2). The system copy will be preserved, but the new copy will be used.', [
             1 => $newInfo->key,
             2 => $oldPath,
-          ]));
+          ]), '', 'alert', ['expires' => 0]);
         }
         break;
 
diff --git a/civicrm/CRM/Extension/Manager/Report.php b/civicrm/CRM/Extension/Manager/Report.php
index da14a38b2129b8ec916f779442cd9a5861a3a7e5..06160d34fb3360911b1ac2f0f8ae64f5620ce38c 100644
--- a/civicrm/CRM/Extension/Manager/Report.php
+++ b/civicrm/CRM/Extension/Manager/Report.php
@@ -37,7 +37,7 @@ class CRM_Extension_Manager_Report extends CRM_Extension_Manager_Base {
    *
    * @throws CRM_Core_Exception
    */
-  public function onPreInstall(CRM_Extension_Info $info) {
+  public function onPreInstall(CRM_Extension_Info $info): void {
     $customReports = $this->getCustomReportsByName();
     if (array_key_exists($info->key, $customReports)) {
       throw new CRM_Core_Exception(ts('This report is already registered.'));
@@ -67,7 +67,7 @@ class CRM_Extension_Manager_Report extends CRM_Extension_Manager_Base {
       'is_active' => 1,
     ];
 
-    $optionValue = CRM_Core_BAO_OptionValue::add($params);
+    CRM_Core_BAO_OptionValue::add($params);
   }
 
   /**
@@ -108,14 +108,14 @@ class CRM_Extension_Manager_Report extends CRM_Extension_Manager_Base {
    * @return array
    */
   public function getCustomReportsByName() {
-    return CRM_Core_OptionGroup::values(self::REPORT_GROUP_NAME, TRUE, FALSE, FALSE, NULL, 'name', FALSE, TRUE);
+    return CRM_Core_OptionGroup::values(self::REPORT_GROUP_NAME, TRUE, FALSE, FALSE, NULL, 'name', FALSE);
   }
 
   /**
    * @return array
    */
   public function getCustomReportsById() {
-    return CRM_Core_OptionGroup::values(self::REPORT_GROUP_NAME, FALSE, FALSE, FALSE, NULL, 'id', FALSE, TRUE);
+    return CRM_Core_OptionGroup::values(self::REPORT_GROUP_NAME, FALSE, FALSE, FALSE, NULL, 'id', FALSE);
   }
 
 }
diff --git a/civicrm/CRM/Extension/Manager/Search.php b/civicrm/CRM/Extension/Manager/Search.php
index 13ec3bca1eb42d1bfb7f5b7a9fbfc377d43f5e5c..2f3910896c32c1b8292ab87fb118c55e28cffbac 100644
--- a/civicrm/CRM/Extension/Manager/Search.php
+++ b/civicrm/CRM/Extension/Manager/Search.php
@@ -105,15 +105,15 @@ class CRM_Extension_Manager_Search extends CRM_Extension_Manager_Base {
   /**
    * @return array
    */
-  protected function getCustomSearchesByName() {
-    return CRM_Core_OptionGroup::values(self::CUSTOM_SEARCH_GROUP_NAME, TRUE, FALSE, FALSE, NULL, 'name', FALSE, TRUE);
+  protected function getCustomSearchesByName(): array {
+    return CRM_Core_OptionGroup::values(self::CUSTOM_SEARCH_GROUP_NAME, TRUE, FALSE, FALSE, NULL, 'name', FALSE);
   }
 
   /**
    * @return array
    */
-  protected function getCustomSearchesById() {
-    return CRM_Core_OptionGroup::values(self::CUSTOM_SEARCH_GROUP_NAME, FALSE, FALSE, FALSE, NULL, 'id', FALSE, TRUE);
+  protected function getCustomSearchesById(): array {
+    return CRM_Core_OptionGroup::values(self::CUSTOM_SEARCH_GROUP_NAME, FALSE, FALSE, FALSE, NULL, 'id', FALSE);
   }
 
 }
diff --git a/civicrm/CRM/Extension/Mapper.php b/civicrm/CRM/Extension/Mapper.php
index 550091a84e615ed3d7aa6a79cd06d3a6fe380dbe..16a9e19def79d88e7ee245f08dedd3cc8fd93fc7 100644
--- a/civicrm/CRM/Extension/Mapper.php
+++ b/civicrm/CRM/Extension/Mapper.php
@@ -117,7 +117,7 @@ class CRM_Extension_Mapper {
    * Given the class, provides extension path.
    *
    *
-   * @param $clazz
+   * @param string $clazz
    *
    * @return string
    *   full path the extension .php file
diff --git a/civicrm/CRM/Financial/BAO/FinancialItem.php b/civicrm/CRM/Financial/BAO/FinancialItem.php
index a5a0182cacedac3bdcbd09c8a459465bd6f0e61d..13077157750329c48a5b217b85301e50c2a4dd94 100644
--- a/civicrm/CRM/Financial/BAO/FinancialItem.php
+++ b/civicrm/CRM/Financial/BAO/FinancialItem.php
@@ -41,8 +41,7 @@ class CRM_Financial_BAO_FinancialItem extends CRM_Financial_DAO_FinancialItem {
    * @param object $contribution
    *   Contribution object.
    * @param bool $taxTrxnID
-   *
-   * @param int $trxnId
+   * @param array|null $trxnId
    *
    * @return CRM_Financial_DAO_FinancialItem
    */
diff --git a/civicrm/CRM/Financial/BAO/FinancialTypeAccount.php b/civicrm/CRM/Financial/BAO/FinancialTypeAccount.php
index f54d4c0a20f652a8451a97b705a7886c60a2af0e..dd3be4a4ef8e695cb188c50edb72e4a256f7242b 100644
--- a/civicrm/CRM/Financial/BAO/FinancialTypeAccount.php
+++ b/civicrm/CRM/Financial/BAO/FinancialTypeAccount.php
@@ -101,7 +101,7 @@ class CRM_Financial_BAO_FinancialTypeAccount extends CRM_Financial_DAO_EntityFin
     foreach ($dependency as $name) {
       $daoString = 'CRM_' . $name[0] . '_DAO_' . $name[1];
       if (class_exists($daoString)) {
-        /* @var \CRM_Core_DAO $dao */
+        /** @var \CRM_Core_DAO $dao */
         $dao = new $daoString();
         $dao->financial_type_id = $financialTypeId;
         if ($dao->find(TRUE)) {
diff --git a/civicrm/CRM/Financial/BAO/Payment.php b/civicrm/CRM/Financial/BAO/Payment.php
index 874fc38a283f9d1d0933f2aee319437318825e9f..17b03cec0fc13ee4c37f409c44e345735f3cb8eb 100644
--- a/civicrm/CRM/Financial/BAO/Payment.php
+++ b/civicrm/CRM/Financial/BAO/Payment.php
@@ -281,7 +281,7 @@ class CRM_Financial_BAO_Payment {
 
     $sendTemplateParams = [
       'groupName' => 'msg_tpl_workflow_contribution',
-      'valueName' => 'payment_or_refund_notification',
+      'workflow' => 'payment_or_refund_notification',
       'PDFFilename' => ts('notification') . '.pdf',
       'contactId' => $entities['contact']['id'],
       'toName' => $entities['contact']['display_name'],
diff --git a/civicrm/CRM/Financial/DAO/Currency.php b/civicrm/CRM/Financial/DAO/Currency.php
index 4618448e1a4dfa801d9fc336f64447db3e57249c..38ceb2e8f9c3317b94c029a536c2436104099325 100644
--- a/civicrm/CRM/Financial/DAO/Currency.php
+++ b/civicrm/CRM/Financial/DAO/Currency.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Financial/Currency.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:1e445ed33ce1cd5313e578ebcb400c07)
+ * (GenCodeChecksum:dc894e5adc99bc05b408993a46dcaa62)
  */
 
 /**
diff --git a/civicrm/CRM/Financial/DAO/EntityFinancialAccount.php b/civicrm/CRM/Financial/DAO/EntityFinancialAccount.php
index 16d6a13e75828b9500b24a56e2c6ae6702e08cab..862307db19246129a7337b81f825ae9678f3886c 100644
--- a/civicrm/CRM/Financial/DAO/EntityFinancialAccount.php
+++ b/civicrm/CRM/Financial/DAO/EntityFinancialAccount.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Financial/EntityFinancialAccount.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ee1330d41462e8d7fb84657c4efa47f8)
+ * (GenCodeChecksum:07db4c1bfeb7147c09b6d095fc19bae2)
  */
 
 /**
diff --git a/civicrm/CRM/Financial/DAO/EntityFinancialTrxn.php b/civicrm/CRM/Financial/DAO/EntityFinancialTrxn.php
index b67144a5bf64e895c3008b192df95ebb27533622..678f3716c1bb38a3cde66e578b2d0387905365d7 100644
--- a/civicrm/CRM/Financial/DAO/EntityFinancialTrxn.php
+++ b/civicrm/CRM/Financial/DAO/EntityFinancialTrxn.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Financial/EntityFinancialTrxn.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:04adc48b1cca1ec60c364ec136ddc148)
+ * (GenCodeChecksum:5a1cad86c4717915abc00763d986fad5)
  */
 
 /**
diff --git a/civicrm/CRM/Financial/DAO/FinancialAccount.php b/civicrm/CRM/Financial/DAO/FinancialAccount.php
index 568fa3fe5ef096375b4d2a901126113227931662..55f3b7be377b55ec046ac33d3d6633458c45ae17 100644
--- a/civicrm/CRM/Financial/DAO/FinancialAccount.php
+++ b/civicrm/CRM/Financial/DAO/FinancialAccount.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Financial/FinancialAccount.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:bbb54fc9abdb9f5187f84b0b4eadb53e)
+ * (GenCodeChecksum:955774761ef2933a6e06f81578965a2d)
  */
 
 /**
diff --git a/civicrm/CRM/Financial/DAO/FinancialItem.php b/civicrm/CRM/Financial/DAO/FinancialItem.php
index 6970a3c435cb386fd784673c0916ed50c5636a4d..8ce9e0aaee8f45ce4ed3c01fa5fcec194d0108ae 100644
--- a/civicrm/CRM/Financial/DAO/FinancialItem.php
+++ b/civicrm/CRM/Financial/DAO/FinancialItem.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Financial/FinancialItem.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:fb47253c848979ed40aae7affbc188a3)
+ * (GenCodeChecksum:3666c7ad0445c04b66871e747ec691c2)
  */
 
 /**
diff --git a/civicrm/CRM/Financial/DAO/FinancialTrxn.php b/civicrm/CRM/Financial/DAO/FinancialTrxn.php
index 1b0e03bb718b1f8d01a62f33a9bbd0592549b62d..6ef952849c1a0ccacc548cfccb6b4aa225b88749 100644
--- a/civicrm/CRM/Financial/DAO/FinancialTrxn.php
+++ b/civicrm/CRM/Financial/DAO/FinancialTrxn.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Financial/FinancialTrxn.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:42b3816549d81b8573d28f1e91c8b956)
+ * (GenCodeChecksum:da37002e77c72be14122e605922cf021)
  */
 
 /**
diff --git a/civicrm/CRM/Financial/DAO/FinancialType.php b/civicrm/CRM/Financial/DAO/FinancialType.php
index 0a76012ccf92a62a18580d9b87995857d7d9709f..6e30b9a86a102cb30c1b32ec8f13918596ac28cb 100644
--- a/civicrm/CRM/Financial/DAO/FinancialType.php
+++ b/civicrm/CRM/Financial/DAO/FinancialType.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Financial/FinancialType.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:896dd0256e12220dc174740a9f66012f)
+ * (GenCodeChecksum:2a30b2fe52b917300b0939a82b6af6fb)
  */
 
 /**
diff --git a/civicrm/CRM/Financial/DAO/PaymentProcessor.php b/civicrm/CRM/Financial/DAO/PaymentProcessor.php
index 7210013c8c1813b9996841aaa1c1a136484c9df3..84756ce46b69f9c4a40c75bee0b0b61136fba9e4 100644
--- a/civicrm/CRM/Financial/DAO/PaymentProcessor.php
+++ b/civicrm/CRM/Financial/DAO/PaymentProcessor.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Financial/PaymentProcessor.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:7f1fd3e55d2b10ce458a9503349f9e61)
+ * (GenCodeChecksum:1046252e760c45a6fddafcf26931ace2)
  */
 
 /**
diff --git a/civicrm/CRM/Financial/DAO/PaymentProcessorType.php b/civicrm/CRM/Financial/DAO/PaymentProcessorType.php
index e56feb89296a71bb952f1d6a4348a011a2f9efb1..650cae2a60a9d67b199a8c2124bc27e299e89434 100644
--- a/civicrm/CRM/Financial/DAO/PaymentProcessorType.php
+++ b/civicrm/CRM/Financial/DAO/PaymentProcessorType.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Financial/PaymentProcessorType.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:5c849e6c7ad27a02c17defc1a3e23de7)
+ * (GenCodeChecksum:a1ea539642d7e37f2e7c6a72d6e0d7ee)
  */
 
 /**
diff --git a/civicrm/CRM/Financial/DAO/PaymentToken.php b/civicrm/CRM/Financial/DAO/PaymentToken.php
index 43a9de870661897e8208d69a9b11d719e88c8df4..16990058a194a986dee0bbf01662fd2f3484d300 100644
--- a/civicrm/CRM/Financial/DAO/PaymentToken.php
+++ b/civicrm/CRM/Financial/DAO/PaymentToken.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Financial/PaymentToken.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:e5c6457ebb1ae691f811a3472d1a9eec)
+ * (GenCodeChecksum:f1bd96d72b08fc23f96e7fc00b102de0)
  */
 
 /**
diff --git a/civicrm/CRM/Financial/Form/FrontEndPaymentFormTrait.php b/civicrm/CRM/Financial/Form/FrontEndPaymentFormTrait.php
index 1012464b68deec02863f7d3dd40a88ba78861822..678aeb238ee08b2be078a95a3c327e43b6c9760e 100644
--- a/civicrm/CRM/Financial/Form/FrontEndPaymentFormTrait.php
+++ b/civicrm/CRM/Financial/Form/FrontEndPaymentFormTrait.php
@@ -139,7 +139,7 @@ trait CRM_Financial_Form_FrontEndPaymentFormTrait {
   /**
    * Assign line items to the template.
    *
-   * @param $tplLineItems
+   * @param array $tplLineItems
    */
   protected function assignLineItemsToTemplate($tplLineItems) {
     // @todo this should be a hook that invoicing code hooks into rather than a call to it.
diff --git a/civicrm/CRM/Friend/BAO/Friend.php b/civicrm/CRM/Friend/BAO/Friend.php
index 8e92204caa2a795645cf4c6bbb4a0ad847df760b..39a090dc78daea2f9068e759426a5a209e4a1afb 100644
--- a/civicrm/CRM/Friend/BAO/Friend.php
+++ b/civicrm/CRM/Friend/BAO/Friend.php
@@ -289,7 +289,7 @@ class CRM_Friend_BAO_Friend extends CRM_Friend_DAO_Friend {
 
     $templateParams = [
       'groupName' => 'msg_tpl_workflow_friend',
-      'valueName' => 'friend',
+      'workflow' => 'friend',
       'contactId' => $contactID,
       'tplParams' => [
         $values['module'] => $values['module'],
diff --git a/civicrm/CRM/Friend/DAO/Friend.php b/civicrm/CRM/Friend/DAO/Friend.php
index 63c192f78042dbf2bbd82e1339073f736e3ea74d..6c8645bed97f070151a918610b773dc15bc7d953 100644
--- a/civicrm/CRM/Friend/DAO/Friend.php
+++ b/civicrm/CRM/Friend/DAO/Friend.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Friend/Friend.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b0719dca7c584cd3d669975119108d78)
+ * (GenCodeChecksum:8d56fa553f1158a94fded2cbe3ca1ee7)
  */
 
 /**
diff --git a/civicrm/CRM/Import/DataSource.php b/civicrm/CRM/Import/DataSource.php
index 744ce5c9fe0f9fdb0f0eb7a806bb92b0c4dc0642..236e65afc02a21d88f2a501fb111802daf6842ba 100644
--- a/civicrm/CRM/Import/DataSource.php
+++ b/civicrm/CRM/Import/DataSource.php
@@ -276,9 +276,10 @@ abstract class CRM_Import_DataSource {
    *
    * The array has all values.
    *
+   * @param array $statuses
+   *
    * @return int
    *
-   * @throws \API_Exception
    * @throws \CRM_Core_Exception
    */
   public function getRowCount(array $statuses = []): int {
@@ -383,18 +384,6 @@ abstract class CRM_Import_DataSource {
       return NULL;
     }
     if (!$this->tableName) {
-      // If we are just loading this table we will do some validation.
-      // In the case of viewing historical jobs the table could have
-      // been deleted so we check that when we first load it.
-      if (strpos($tableName, 'civicrm_tmp_') !== 0
-        || !CRM_Utils_Rule::alphanumeric($tableName)) {
-        // The table name is generated and stored by code, not users so it
-        // should be safe - but a check seems prudent all the same.
-        throw new CRM_Core_Exception('Table cannot be deleted');
-      }
-      if (!CRM_Core_DAO::singleValueQuery('SHOW TABLES LIKE %1', [1 => [$tableName, 'String']])) {
-        throw new CRM_Import_Exception_ImportTableUnavailable('table deleted');
-      }
       $this->tableName = $tableName;
     }
     return $this->tableName;
@@ -565,7 +554,7 @@ abstract class CRM_Import_DataSource {
         break;
       }
     }
-    /* @var \CRM_Import_Parser */
+    /** @var \CRM_Import_Parser $parser */
     $parser = new $parserClass();
     $parser->setUserJobID($this->getUserJobID());
     return $parser;
@@ -648,7 +637,7 @@ abstract class CRM_Import_DataSource {
    */
   protected function getStatusMapping(): array {
     return [
-      CRM_Import_Parser::VALID => ['imported', 'new', 'soft_credit_imported', 'pledge_payment_imported'],
+      CRM_Import_Parser::VALID => ['imported', 'new', 'valid', 'soft_credit_imported', 'pledge_payment_imported'],
       CRM_Import_Parser::ERROR => ['error', 'invalid', 'soft_credit_error', 'pledge_payment_error'],
       CRM_Import_Parser::DUPLICATE => ['duplicate'],
       CRM_Import_Parser::NO_MATCH => ['invalid_no_match'],
@@ -657,7 +646,8 @@ abstract class CRM_Import_DataSource {
       CRM_Contribute_Import_Parser_Contribution::SOFT_CREDIT => ['soft_credit_imported'],
       CRM_Contribute_Import_Parser_Contribution::PLEDGE_PAYMENT => ['pledge_payment_imported'],
       CRM_Contribute_Import_Parser_Contribution::PLEDGE_PAYMENT_ERROR => ['pledge_payment_error'],
-      'new' => ['new'],
+      'new' => ['new', 'valid'],
+      'valid' => ['valid'],
     ];
   }
 
diff --git a/civicrm/CRM/Import/Form/DataSource.php b/civicrm/CRM/Import/Form/DataSource.php
index ca33c0bceb8bb2675642366670c9e70065560224..7376d96340e0596666ff8a61de55d52cfcadd971 100644
--- a/civicrm/CRM/Import/Form/DataSource.php
+++ b/civicrm/CRM/Import/Form/DataSource.php
@@ -55,6 +55,7 @@ abstract class CRM_Import_Form_DataSource extends CRM_Import_Forms {
    * Common form elements.
    */
   public function buildQuickForm() {
+    $this->assign('errorMessage', $this->getErrorMessage());
     $config = CRM_Core_Config::singleton();
     // When we switch to using the DataSource.tpl used by Contact we can remove this in
     // favour of the one used by Contact - I was trying to consolidate
@@ -109,6 +110,15 @@ abstract class CRM_Import_Form_DataSource extends CRM_Import_Forms {
     ]);
   }
 
+  /**
+   * Get an error message to assign to the template.
+   *
+   * @return string
+   */
+  protected function getErrorMessage(): string {
+    return '';
+  }
+
   /**
    * A long-winded way to add one radio element to the form.
    */
@@ -116,18 +126,18 @@ abstract class CRM_Import_Form_DataSource extends CRM_Import_Forms {
     //contact types option
     $contactTypeOptions = [];
     if (CRM_Contact_BAO_ContactType::isActive('Individual')) {
-      $contactTypeOptions[CRM_Import_Parser::CONTACT_INDIVIDUAL] = ts('Individual');
+      $contactTypeOptions['Individual'] = ts('Individual');
     }
     if (CRM_Contact_BAO_ContactType::isActive('Household')) {
-      $contactTypeOptions[CRM_Import_Parser::CONTACT_HOUSEHOLD] = ts('Household');
+      $contactTypeOptions['Household'] = ts('Household');
     }
     if (CRM_Contact_BAO_ContactType::isActive('Organization')) {
-      $contactTypeOptions[CRM_Import_Parser::CONTACT_ORGANIZATION] = ts('Organization');
+      $contactTypeOptions['Organization'] = ts('Organization');
     }
     $this->addRadio('contactType', ts('Contact Type'), $contactTypeOptions);
 
     $this->setDefaults([
-      'contactType' => CRM_Import_Parser::CONTACT_INDIVIDUAL,
+      'contactType' => 'Individual',
     ]);
   }
 
@@ -151,40 +161,6 @@ abstract class CRM_Import_Form_DataSource extends CRM_Import_Forms {
     parent::postProcess();
   }
 
-  /**
-   * Common form postProcess.
-   * @deprecated - just use postProcess.
-   *
-   * @param string $parserClassName
-   * @param string|null $entity
-   *   Entity to set for paraser currently only for custom import
-   */
-  protected function submitFileForMapping($parserClassName, $entity = NULL) {
-    CRM_Core_Session::singleton()->set('dateTypes', $this->getSubmittedValue('dateFormats'));
-    $this->processDatasource();
-
-    $mapper = [];
-
-    $parser = new $parserClassName($mapper);
-    if ($entity) {
-      $parser->setEntity($this->get($entity));
-    }
-    $parser->setMaxLinesToProcess(100);
-    $parser->setUserJobID($this->getUserJobID());
-    $parser->run(
-      $this->getSubmittedValue('uploadFile'),
-      $this->getSubmittedValue('fieldSeparator'),
-      [],
-      $this->getSubmittedValue('skipColumnHeader'),
-      CRM_Import_Parser::MODE_MAPFIELD,
-      $this->getSubmittedValue('contactType')
-    );
-
-    // add all the necessary variables to the form
-    $parser->set($this);
-    $this->controller->resetPage('MapField');
-  }
-
   /**
    * Return a descriptive name for the page, used in wizard header.
    *
diff --git a/civicrm/CRM/Import/Form/MapField.php b/civicrm/CRM/Import/Form/MapField.php
index 94feb7729cb0f6ab375c7f7bbb174a1d9a3d0dca..5f57169ee74a3412701b9c71388f2ff056ef1dea 100644
--- a/civicrm/CRM/Import/Form/MapField.php
+++ b/civicrm/CRM/Import/Form/MapField.php
@@ -125,7 +125,7 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms {
    *
    * @return string
    */
-  public function defaultFromHeader($header, &$patterns) {
+  public function defaultFromHeader($header, $patterns) {
     foreach ($patterns as $key => $re) {
       // Skip empty key/patterns
       if (!$key || !$re || strlen("$re") < 5) {
@@ -186,6 +186,7 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms {
    *
    * @param int|null $savedMappingID
    *
+   * @deprecated - working to remove this in favour of `addSavedMappingFields`
    * @throws \CiviCRM_API3_Exception
    */
   protected function buildSavedMappingFields($savedMappingID) {
@@ -299,8 +300,9 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms {
     //Updating Mapping Records
     if ($this->getSubmittedValue('updateMapping')) {
       foreach (array_keys($this->getColumnHeaders()) as $i) {
-        $this->saveMappingField($this->getSubmittedValue('mappingId'), $i, TRUE);
+        $this->saveMappingField((int) $this->getSubmittedValue('mappingId'), $i, TRUE);
       }
+      $this->updateUserJobMetadata('mapping', ['id' => (int) $this->getSubmittedValue('mappingId')]);
     }
     //Saving Mapping Details and Records
     if ($this->getSubmittedValue('saveMapping')) {
@@ -314,6 +316,7 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms {
         $this->saveMappingField($savedMappingID, $i, FALSE);
       }
       $this->set('savedMapping', $savedMappingID);
+      $this->updateUserJobMetadata('mapping', ['id' => $savedMappingID]);
     }
   }
 
@@ -348,7 +351,6 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms {
     $mapperKeys = array_keys($this->_mapperFields);
     $hasHeaders = $this->getSubmittedValue('skipColumnHeader');
     $headerPatterns = $this->getHeaderPatterns();
-    $dataPatterns = $this->getDataPatterns();
     $fieldMappings = $this->getFieldMappings();
     /* Initialize all field usages to false */
 
@@ -387,9 +389,6 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms {
           if ($hasHeaders) {
             $defaults["mapper[$i]"] = [$this->defaultFromHeader($columnHeader, $headerPatterns)];
           }
-          else {
-            $defaults["mapper[$i]"] = [$this->defaultFromData($dataPatterns, $i)];
-          }
         }
         //end of load mapping
       }
@@ -405,14 +404,6 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms {
             0,
           ];
         }
-        else {
-          // Otherwise guess the default from the form of the data
-          $defaults["mapper[$i]"] = [
-            $this->defaultFromData($dataPatterns, $i),
-            //                     $defaultLocationType->id
-            0,
-          ];
-        }
       }
       $sel->setOptions([$sel1]);
     }
@@ -422,4 +413,114 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms {
     return [$sel, $headerPatterns];
   }
 
+  /**
+   * Add the saved mapping fields to the form.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function addSavedMappingFields(): void {
+    $savedMappingID = (int) $this->getSubmittedValue('savedMapping');
+    $this->buildSavedMappingFields($savedMappingID);
+    $this->addFormRule(['CRM_Import_Form_MapField', 'mappingRule']);
+  }
+
+  /**
+   * Global validation rules for the form.
+   *
+   * @param array $fields
+   *   Posted values of the form.
+   *
+   * @return array|true
+   *   list of errors to be posted back to the form
+   */
+  public static function mappingRule($fields) {
+    $errors = [];
+    if (!empty($fields['saveMapping'])) {
+      $nameField = $fields['saveMappingName'] ?? NULL;
+      if (empty($nameField)) {
+        $errors['saveMappingName'] = ts('Name is required to save Import Mapping');
+      }
+      else {
+        $mappingTypeId = CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_Mapping', 'mapping_type_id', 'Import Contact');
+        if (CRM_Core_BAO_Mapping::checkMapping($nameField, $mappingTypeId)) {
+          $errors['saveMappingName'] = ts('Duplicate Import Mapping Name');
+        }
+      }
+    }
+    // This is horrible & should be removed once gone from tpl
+    if (!empty($errors['saveMappingName'])) {
+      $_flag = 1;
+      $assignError = new CRM_Core_Page();
+      $assignError->assign('mappingDetailsError', $_flag);
+    }
+    return empty($errors) ? TRUE : $errors;
+  }
+
+  /**
+   * This transforms the lists of fields for each contact type & component
+   * into a single unified list suitable for select2.
+   *
+   * @return array
+   */
+  public function getFieldOptions(): array {
+    $fields = $this->getFields();
+    $entity = $this->getBaseEntity();
+    $categories = $this->getImportEntities();
+    $highlightedFields = $this->getHighlightedFields();
+    foreach ($fields as $fieldName => $field) {
+      if ($fieldName === '') {
+        // @todo stop setting 'do not import' in the first place.
+        continue;
+      }
+      if ($field['name'] === 'id' && $entity === $field['entity'] && !$this->isUpdateExisting()) {
+        continue;
+      }
+      $childField = [
+        'text' => $field['title'],
+        'id' => $fieldName,
+        'has_location' => !empty($field['hasLocationType']),
+        'default_value' => $field['default_value'] ?? '',
+        'contact_type' => $field['contact_type'] ?? NULL,
+        'match_rule' => $field['match_rule'] ?? NULL,
+      ];
+      if (in_array($fieldName, $highlightedFields, TRUE)) {
+        $childField['text'] .= '*';
+      }
+      $category = ($childField['has_location'] || $field['name'] === 'contact_id') ? 'Contact' : $field['entity_instance'] ?? ($field['entity'] ?? $entity);
+      if (empty($categories[$category])) {
+        $category = $entity;
+      }
+      $categories[$category]['children'][$fieldName] = $childField;
+    }
+
+    foreach ($categories as $index => $category) {
+      if (empty($category['children'])) {
+        unset($categories[$index]);
+      }
+      else {
+        $categories[$index]['children'] = array_values($category['children']);
+      }
+    }
+    return array_values($categories);
+  }
+
+  /**
+   * Get the 'best' mapping default from the column headers.
+   *
+   * @param string $columnHeader
+   *
+   * @return string
+   */
+  protected function guessMappingBasedOnColumns(string $columnHeader): string {
+    $headerPatterns = $this->getHeaderPatterns();
+    // do array search first to see if has mapped key
+    $columnKey = array_search($columnHeader, $this->getAvailableFields(), TRUE);
+    if ($columnKey && empty($this->_fieldUsed[$columnKey])) {
+      $this->_fieldUsed[$columnKey] = TRUE;
+      return $columnKey;
+    }
+    // Infer the default from the column names if we have them
+    return $this->defaultFromHeader($columnHeader, $headerPatterns);
+  }
+
 }
diff --git a/civicrm/CRM/Import/Form/Preview.php b/civicrm/CRM/Import/Form/Preview.php
index 693a612f46e142ea37592a5a96e1fc89ed103acc..223299444073059177ef6f919c5850bd1e010b93 100644
--- a/civicrm/CRM/Import/Form/Preview.php
+++ b/civicrm/CRM/Import/Form/Preview.php
@@ -99,6 +99,8 @@ abstract class CRM_Import_Form_Preview extends CRM_Import_Forms {
 
   /**
    * Run the import.
+   *
+   * @throws \CRM_Core_Exception
    */
   protected function runTheImport(): void {
     $parser = $this->getParser();
@@ -112,7 +114,7 @@ abstract class CRM_Import_Form_Preview extends CRM_Import_Forms {
         'reset' => 1,
       ], FALSE, NULL, FALSE),
     ]);
-    $runner->runAllViaWeb();
+    $runner->runAllInteractive();
   }
 
   /**
diff --git a/civicrm/CRM/Import/Form/Summary.php b/civicrm/CRM/Import/Form/Summary.php
deleted file mode 100644
index 8cf4e734016744bc07bd79b748319d7a94e21cc1..0000000000000000000000000000000000000000
--- a/civicrm/CRM/Import/Form/Summary.php
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
- */
-
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC https://civicrm.org/licensing
- */
-
-use Civi\Api4\UserJob;
-
-/**
- * This class summarizes the import results.
- *
- * TODO: CRM-11254 - if preProcess and postProcess functions can be reconciled between the 5 child classes,
- * those classes can be removed entirely and this class will not need to be abstract
- */
-abstract class CRM_Import_Form_Summary extends CRM_Import_Forms {
-
-  /**
-   * Set variables up before form is built.
-   *
-   * @return void
-   */
-  public function preProcess() {
-    $this->assignOutputURLs();
-  }
-
-  /**
-   * Return a descriptive name for the page, used in wizard header.
-   *
-   * @return string
-   */
-  public function getTitle() {
-    return ts('Summary');
-  }
-
-  protected function assignOutputURLs(): void {
-    $this->assign('outputUnavailable', FALSE);
-    try {
-      $this->assign('totalRowCount', $this->getRowCount());
-      $this->assign('validRowCount', $this->getRowCount(CRM_Import_Parser::VALID) + $this->getRowCount(CRM_Import_Parser::UNPARSED_ADDRESS_WARNING));
-      $this->assign('invalidRowCount', $this->getRowCount(CRM_Import_Parser::ERROR));
-      $this->assign('duplicateRowCount', $this->getRowCount(CRM_Import_Parser::DUPLICATE));
-      $this->assign('unMatchCount', $this->getRowCount(CRM_Import_Parser::NO_MATCH));
-      $this->assign('validSoftCreditRowCount', $this->getRowCount(CRM_Contribute_Import_Parser_Contribution::SOFT_CREDIT));
-      $this->assign('invalidSoftCreditRowCount', $this->getRowCount(CRM_Contribute_Import_Parser_Contribution::SOFT_CREDIT_ERROR));
-      $this->assign('validPledgePaymentRowCount', $this->getRowCount(CRM_Contribute_Import_Parser_Contribution::PLEDGE_PAYMENT));
-      $this->assign('invalidPledgePaymentRowCount', $this->getRowCount(CRM_Contribute_Import_Parser_Contribution::PLEDGE_PAYMENT_ERROR));
-      $this->assign('unparsedAddressCount', $this->getRowCount(CRM_Import_Parser::UNPARSED_ADDRESS_WARNING));
-      $this->assign('downloadDuplicateRecordsUrl', $this->getDownloadURL(CRM_Import_Parser::DUPLICATE));
-      $this->assign('downloadErrorRecordsUrl', $this->getDownloadURL(CRM_Import_Parser::ERROR));
-      $this->assign('downloadMismatchRecordsUrl', $this->getDownloadURL(CRM_Import_Parser::NO_MATCH));
-      $this->assign('downloadAddressRecordsUrl', $this->getDownloadURL(CRM_Import_Parser::UNPARSED_ADDRESS_WARNING));
-      $this->assign('downloadPledgePaymentErrorRecordsUrl', $this->getDownloadURL(CRM_Contribute_Import_Parser_Contribution::PLEDGE_PAYMENT_ERROR));
-      $this->assign('downloadSoftCreditErrorRecordsUrl', $this->getDownloadURL(CRM_Contribute_Import_Parser_Contribution::SOFT_CREDIT_ERROR));
-      $this->assign('trackingSummary', $this->getTrackingSummary());
-
-      $userJobID = CRM_Utils_Request::retrieve('user_job_id', 'String', $this, TRUE);
-      $userJob = UserJob::get(TRUE)
-        ->addWhere('id', '=', $userJobID)
-        ->execute()
-        ->first();
-      $onDuplicate = (int) $userJob['metadata']['submitted_values']['onDuplicate'];
-      $this->assign('dupeError', FALSE);
-      if ($onDuplicate === CRM_Import_Parser::DUPLICATE_UPDATE) {
-        $dupeActionString = ts('These records have been updated with the imported data.');
-      }
-      elseif ($onDuplicate === CRM_Import_Parser::DUPLICATE_FILL) {
-        $dupeActionString = ts('These records have been filled in with the imported data.');
-      }
-      else {
-        // Skip by default.
-        $dupeActionString = ts('These records have not been imported.');
-        $this->assign('dupeError', TRUE);
-      }
-      $this->assign('dupeActionString', $dupeActionString);
-    }
-    catch (CRM_Import_Exception_ImportTableUnavailable $e) {
-      $this->assign('outputUnavailable', TRUE);
-    }
-  }
-
-}
diff --git a/civicrm/CRM/Import/Forms.php b/civicrm/CRM/Import/Forms.php
index a274f8ceb2490f5f5f7eafde9f8a8de3a6f2d70f..5f5cec0fde51d2f761e2b9282680b8669aefe097 100644
--- a/civicrm/CRM/Import/Forms.php
+++ b/civicrm/CRM/Import/Forms.php
@@ -288,7 +288,6 @@ class CRM_Import_Forms extends CRM_Core_Form {
   protected function getDataSourceObject(): ?CRM_Import_DataSource {
     $className = $this->getDataSourceClassName();
     if ($className) {
-      /* @var CRM_Import_DataSource $dataSource */
       return new $className($this->getUserJobID());
     }
     return NULL;
@@ -304,7 +303,7 @@ class CRM_Import_Forms extends CRM_Core_Form {
   protected function getDataSourceFields(): array {
     $className = $this->getDataSourceClassName();
     if ($className) {
-      /* @var CRM_Import_DataSource $dataSourceClass */
+      /** @var CRM_Import_DataSource $dataSourceClass */
       $dataSourceClass = new $className();
       return $dataSourceClass->getSubmittableFields();
     }
@@ -342,12 +341,7 @@ class CRM_Import_Forms extends CRM_Core_Form {
    * @throws \CRM_Core_Exception
    */
   protected function getContactType(): string {
-    $contactTypeMapping = [
-      CRM_Import_Parser::CONTACT_INDIVIDUAL => 'Individual',
-      CRM_Import_Parser::CONTACT_HOUSEHOLD => 'Household',
-      CRM_Import_Parser::CONTACT_ORGANIZATION => 'Organization',
-    ];
-    return $contactTypeMapping[$this->getSubmittedValue('contactType')];
+    return $this->getSubmittedValue('contactType') ?? $this->getUserJob()['metadata']['entity_configuration']['Contact']['contact_type'];
   }
 
   /**
@@ -579,7 +573,57 @@ class CRM_Import_Forms extends CRM_Core_Form {
    * @throws \API_Exception
    */
   protected function getAvailableFields(): array {
-    return $this->getParser()->getAvailableFields();
+    $return = [];
+    foreach ($this->getFields() as $name => $field) {
+      if ($name === 'id' && $this->isSkipDuplicates()) {
+        // Duplicates are being skipped so id matching is not available.
+        continue;
+      }
+      if (($field['entity'] ?? '') === 'Contact' && $this->isFilterContactFields() && empty($field['match_rule'])) {
+        // Filter out metadata that is intended for create & update - this is not available in the quick-form
+        // but is now loaded in the Parser for the LexIM variant.
+        continue;
+      }
+      // Swap out dots for double underscores so as not to break the quick form js.
+      // We swap this back on postProcess.
+      $name = str_replace('.', '__', $name);
+      $return[$name] = $field['html']['label'] ?? $field['title'];
+    }
+    return $return;
+  }
+
+  /**
+   * Should contact fields be filtered which determining fields to show.
+   *
+   * This applies to Contribution import as we put all contact fields in the metadata
+   * but only present those used for a match - but will permit create via LeXIM.
+   *
+   * @return bool
+   */
+  protected function isFilterContactFields() : bool {
+    return FALSE;
+  }
+
+  /**
+   * Get the fields available for import selection.
+   *
+   * @return array
+   *   e.g ['first_name' => 'First Name', 'last_name' => 'Last Name'....
+   *
+   */
+  protected function getFields(): array {
+    return $this->getParser()->getFieldsMetadata();
+  }
+
+  /**
+   * Get the fields available for import selection.
+   *
+   * @return array
+   *   e.g ['first_name' => 'First Name', 'last_name' => 'Last Name'....
+   *
+   */
+  protected function getImportEntities(): array {
+    return $this->getParser()->getImportEntities();
   }
 
   /**
@@ -611,8 +655,14 @@ class CRM_Import_Forms extends CRM_Core_Form {
   protected function getMappedFieldLabels(): array {
     $mapper = [];
     $parser = $this->getParser();
-    foreach ($this->getSubmittedValue('mapper') as $columnNumber => $mappedField) {
-      $mapper[$columnNumber] = $parser->getMappedFieldLabel($parser->getMappingFieldFromMapperInput($mappedField, 0, $columnNumber));
+    $importMappings = $this->getUserJob()['metadata']['import_mappings'] ?? [];
+    if (empty($importMappings)) {
+      foreach ($this->getSubmittedValue('mapper') as $columnNumber => $mapping) {
+        $importMappings[] = $parser->getMappingFieldFromMapperInput((array) $mapping, 0, $columnNumber);
+      }
+    }
+    foreach ($importMappings as $columnNumber => $importMapping) {
+      $mapper[$columnNumber] = $parser->getMappedFieldLabel($importMapping);
     }
     return $mapper;
   }
@@ -624,7 +674,7 @@ class CRM_Import_Forms extends CRM_Core_Form {
    * @throws \CRM_Core_Exception
    */
   protected function assignMapFieldVariables(): void {
-    $this->addExpectedSmartyVariable('highlightedRelFields');
+    $this->addExpectedSmartyVariables(['highlightedRelFields', 'initHideBoxes']);
     $this->_columnCount = $this->getNumberOfColumns();
     $this->_columnNames = $this->getColumnHeaders();
     $this->_dataValues = array_values($this->getDataRows([], 2));
@@ -649,22 +699,23 @@ class CRM_Import_Forms extends CRM_Core_Form {
     return [];
   }
 
-  /**
-   * Get the data patterns to pattern match the incoming data.
-   *
-   * @return array
-   */
-  public function getDataPatterns(): array {
-    return $this->getParser()->getDataPatterns();
-  }
-
   /**
    * Get the data patterns to pattern match the incoming data.
    *
    * @return array
    */
   public function getHeaderPatterns(): array {
-    return $this->getParser()->getHeaderPatterns();
+    $headerPatterns = [];
+    foreach ($this->getFields() as $name => $field) {
+      if (empty($field['headerPattern']) || $field['headerPattern'] === '//') {
+        continue;
+      }
+      // Swap out dots for double underscores so as not to break the quick form js.
+      // We swap this back on postProcess.
+      $name = str_replace('.', '__', $name);
+      $headerPatterns[$name] = $field['headerPattern'];
+    }
+    return $headerPatterns;
   }
 
   /**
@@ -683,6 +734,15 @@ class CRM_Import_Forms extends CRM_Core_Form {
     return ((int) $this->getSubmittedValue('onDuplicate')) === CRM_Import_Parser::DUPLICATE_SKIP;
   }
 
+  /**
+   * Did the user specify duplicates should be skipped and not imported.
+   *
+   * @return bool
+   */
+  protected function isSkipDuplicates(): bool {
+    return ((int) $this->getSubmittedValue('onDuplicate')) === CRM_Import_Parser::DUPLICATE_SKIP;
+  }
+
   /**
    * Are there valid rows to import.
    *
@@ -694,4 +754,38 @@ class CRM_Import_Forms extends CRM_Core_Form {
     return (bool) $this->getRowCount(['new']);
   }
 
+  /**
+   * Get the base entity for the import.
+   *
+   * @return string
+   */
+  protected function getBaseEntity(): string {
+    $info = $this->getParser()->getUserJobInfo();
+    return reset($info)['entity'];
+  }
+
+  /**
+   * Assign values for civiimport.
+   *
+   * I wanted to put this in the extension - but there are a lot of protected functions
+   * we would need to revisit and make public - do we want to?
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function assignCiviimportVariables(): void {
+    $contactTypes = [];
+    foreach (CRM_Contact_BAO_ContactType::basicTypeInfo() as $contactType) {
+      $contactTypes[] = ['id' => $contactType['name'], 'text' => $contactType['label']];
+    }
+    $parser = $this->getParser();
+    Civi::resources()->addVars('crmImportUi', [
+      'defaults' => $this->getDefaults(),
+      'rows' => $this->getDataRows([], 2),
+      'contactTypes' => $contactTypes,
+      'entityMetadata' => $this->getFieldOptions(),
+      'dedupeRules' => $parser->getAllDedupeRules(),
+      'userJob' => $this->getUserJob(),
+    ]);
+  }
+
 }
diff --git a/civicrm/CRM/Import/ImportProcessor.php b/civicrm/CRM/Import/ImportProcessor.php
index bc72dd2c9e8e85f004595578515a21a1ea5637ee..77c0b3937150601c37d84d8c204010b68d21d948 100644
--- a/civicrm/CRM/Import/ImportProcessor.php
+++ b/civicrm/CRM/Import/ImportProcessor.php
@@ -216,9 +216,9 @@ class CRM_Import_ImportProcessor {
    */
   public function setContactTypeByConstant($contactTypeKey) {
     $constantTypeMap = [
-      CRM_Import_Parser::CONTACT_INDIVIDUAL => 'Individual',
-      CRM_Import_Parser::CONTACT_HOUSEHOLD => 'Household',
-      CRM_Import_Parser::CONTACT_ORGANIZATION => 'Organization',
+      'Individual' => 'Individual',
+      'Household' => 'Household',
+      'Organization' => 'Organization',
     ];
     $this->contactType = $constantTypeMap[$contactTypeKey];
   }
diff --git a/civicrm/CRM/Import/Parser.php b/civicrm/CRM/Import/Parser.php
index ee7e2c086404beba9971325ebd86b25322c084c7..6e5947515d924e01eed08fba21d3a0b0c46e990a 100644
--- a/civicrm/CRM/Import/Parser.php
+++ b/civicrm/CRM/Import/Parser.php
@@ -9,9 +9,15 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Api4\Address;
 use Civi\Api4\Campaign;
+use Civi\Api4\Contact;
 use Civi\Api4\CustomField;
+use Civi\Api4\DedupeRule;
+use Civi\Api4\DedupeRuleGroup;
+use Civi\Api4\Email;
 use Civi\Api4\Event;
+use Civi\Api4\Phone;
 use Civi\Api4\UserJob;
 use Civi\UserJob\UserJobInterface;
 
@@ -19,6 +25,9 @@ use Civi\UserJob\UserJobInterface;
  *
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
+ *
+ * @internal - this class is likely to change and extending it in extensions is not
+ * supported.
  */
 abstract class CRM_Import_Parser implements UserJobInterface {
   /**
@@ -43,8 +52,10 @@ abstract class CRM_Import_Parser implements UserJobInterface {
 
   /**
    * Contact types
+   *
+   * @deprecated
    */
-  const CONTACT_INDIVIDUAL = 1, CONTACT_HOUSEHOLD = 2, CONTACT_ORGANIZATION = 4;
+  const CONTACT_INDIVIDUAL = 'Individual', CONTACT_HOUSEHOLD = 'Household', CONTACT_ORGANIZATION = 'Organization';
 
   /**
    * User job id.
@@ -120,6 +131,15 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     return [];
   }
 
+  /**
+   * An array of Custom field mappings for api formatting
+   *
+   * e.g ['custom_7' => 'IndividualData.Marriage_date']
+   *
+   * @var array
+   */
+  protected $customFieldNameMap = [];
+
   /**
    * Get User Job.
    *
@@ -143,13 +163,10 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    * Get the relevant datasource object.
    *
    * @return \CRM_Import_DataSource|null
-   *
-   * @throws \API_Exception
    */
   protected function getDataSourceObject(): ?CRM_Import_DataSource {
     $className = $this->getSubmittedValue('dataSource');
     if ($className) {
-      /* @var CRM_Import_DataSource $dataSource */
       return new $className($this->getUserJobID());
     }
     return NULL;
@@ -187,15 +204,7 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    * @return string
    */
   protected function getContactType(): string {
-    if (!$this->_contactType) {
-      $contactTypeMapping = [
-        CRM_Import_Parser::CONTACT_INDIVIDUAL => 'Individual',
-        CRM_Import_Parser::CONTACT_HOUSEHOLD => 'Household',
-        CRM_Import_Parser::CONTACT_ORGANIZATION => 'Organization',
-      ];
-      $this->_contactType = $contactTypeMapping[$this->getSubmittedValue('contactType')];
-    }
-    return $this->_contactType;
+    return $this->getSubmittedValue('contactType') ?: $this->getContactTypeForEntity('Contact');
   }
 
   /**
@@ -228,13 +237,6 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    */
   protected $_invalidRowCount;
 
-  /**
-   * Maximum number of non-empty/comment lines to process
-   *
-   * @var int
-   */
-  protected $_maxLinesToProcess;
-
   /**
    * Array of error lines, bounded by MAX_ERROR
    * @var array
@@ -266,11 +268,15 @@ abstract class CRM_Import_Parser implements UserJobInterface {
   protected $_warnings;
 
   /**
+   * TO BE REMOVED.
+   *
    * Array of all the fields that could potentially be part
    * of this import process
    * @var array
    */
-  protected $_fields;
+  private $_fields;
+
+  private $dedupeRules = [];
 
   /**
    * Metadata for all available fields, keyed by unique name.
@@ -300,6 +306,28 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     $this->importableFieldsMetadata = $importableFieldsMetadata;
   }
 
+  /**
+   * @param string $contactType
+   *
+   * @return array[]
+   */
+  protected function getContactFields(string $contactType): array {
+    $contactFields = $this->getAllContactFields('');
+    $dedupeFields = $this->getDedupeFields($contactType);
+
+    foreach ($dedupeFields as $fieldName => $dedupeField) {
+      if (!isset($contactFields[$fieldName])) {
+        continue;
+      }
+      $contactFields[$fieldName]['title'] . ' ' . ts('(match to contact)');
+      $contactFields[$fieldName]['match_rule'] = $this->getDefaultRuleForContactType($contactType);
+    }
+
+    $contactFields['external_identifier']['title'] .= (' ' . ts('(match to contact)'));
+    $contactFields['external_identifier']['match_rule'] = '*';
+    return $contactFields;
+  }
+
   /**
    * Gets the fields available for importing in a key-name, title format.
    *
@@ -314,6 +342,8 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    * Once we have cleaned up the way the mapper is handled
    * we can ditch all the existing _construct parameters in favour
    * of just the userJobID - there are current open PRs towards this end.
+   *
+   * @deprecated
    */
   public function getAvailableFields(): array {
     $this->setFieldMetadata();
@@ -372,21 +402,6 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     return ((int) $this->getSubmittedValue('onDuplicate')) === CRM_Import_Parser::DUPLICATE_FILL;
   }
 
-  /**
-   * Array of the fields that are actually part of the import process
-   * the position in the array also dictates their position in the import
-   * file
-   * @var array
-   */
-  protected $_activeFields = [];
-
-  /**
-   * Cache the count of active fields
-   *
-   * @var int
-   */
-  protected $_activeFieldCount;
-
   /**
    * Cache of preview rows
    *
@@ -394,20 +409,6 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    */
   protected $_rows;
 
-  /**
-   * Filename of error data
-   *
-   * @var string
-   */
-  protected $_errorFileName;
-
-  /**
-   * Filename of duplicate data
-   *
-   * @var string
-   */
-  protected $_duplicateFileName;
-
   /**
    * Contact type
    *
@@ -442,51 +443,6 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     return $this;
   }
 
-  /**
-   * Class constructor.
-   */
-  public function __construct() {
-    $this->_maxLinesToProcess = 0;
-  }
-
-  /**
-   * Set and validate field values.
-   *
-   * @param array $elements
-   *   array.
-   */
-  public function setActiveFieldValues($elements): void {
-    $maxCount = count($elements) < $this->_activeFieldCount ? count($elements) : $this->_activeFieldCount;
-    for ($i = 0; $i < $maxCount; $i++) {
-      $this->_activeFields[$i]->setValue($elements[$i]);
-    }
-
-    // reset all the values that we did not have an equivalent import element
-    for (; $i < $this->_activeFieldCount; $i++) {
-      $this->_activeFields[$i]->resetValue();
-    }
-  }
-
-  /**
-   * Format the field values for input to the api.
-   *
-   * @return array
-   *   (reference) associative array of name/value pairs
-   */
-  public function &getActiveFieldParams() {
-    $params = [];
-    for ($i = 0; $i < $this->_activeFieldCount; $i++) {
-      if (isset($this->_activeFields[$i]->_value)
-        && !isset($params[$this->_activeFields[$i]->_name])
-        && !isset($this->_activeFields[$i]->_related)
-      ) {
-
-        $params[$this->_activeFields[$i]->_name] = $this->_activeFields[$i]->_value;
-      }
-    }
-    return $params;
-  }
-
   /**
    * Add progress bar to the import process. Calculates time remaining, status etc.
    *
@@ -501,9 +457,12 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    * @param $totalRowCount
    *   Total number of rows in the import file.
    *
+   * @deprecated
+   *
    * @return NULL|$currTimestamp
    */
   public function progressImport($statusID, $startImport = TRUE, $startTimestamp = NULL, $prevTimestamp = NULL, $totalRowCount = NULL) {
+    CRM_Core_Error::deprecatedFunctionWarning('no replacement');
     $statusFile = CRM_Core_Config::singleton()->uploadDir . "status_{$statusID}.txt";
 
     if ($startImport) {
@@ -541,33 +500,26 @@ abstract class CRM_Import_Parser implements UserJobInterface {
   }
 
   /**
+   * Get an array of available fields that support location types (e.g phone, street_address etc).
+   *
    * @return array
    */
-  public function getSelectValues(): array {
-    $values = [];
-    foreach ($this->_fields as $name => $field) {
-      $values[$name] = $field->_title;
-    }
-    return $values;
-  }
-
-  /**
-   * @return array
-   */
-  public function getSelectTypes() {
+  public function getFieldsWhichSupportLocationTypes(): array {
     $values = [];
     // This is only called from the MapField form in isolation now,
-    // so we need to set the metadata.
-    $this->init();
-    foreach ($this->_fields as $name => $field) {
-      if (isset($field->_hasLocationType)) {
-        $values[$name] = $field->_hasLocationType;
+    foreach ($this->getFieldsMetadata() as $name => $field) {
+      if (isset($field['hasLocationType'])) {
+        $values[$name] = TRUE;
       }
     }
     return $values;
   }
 
   /**
+   * Do this work on the form layer.
+   *
+   * @deprecated
+   *
    * @return array
    */
   public function getHeaderPatterns(): array {
@@ -580,26 +532,18 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     return $values;
   }
 
-  /**
-   * @return array
-   */
-  public function getDataPatterns():array {
-    $values = [];
-    foreach ($this->_fields as $name => $field) {
-      $values[$name] = $field->_dataPattern;
-    }
-    return $values;
-  }
-
   /**
    * Remove single-quote enclosures from a value array (row).
    *
    * @param array $values
    * @param string $enclosure
    *
+   * @deprecated
+   *
    * @return void
    */
   public static function encloseScrub(&$values, $enclosure = "'") {
+    CRM_Core_Error::deprecatedFunctionWarning('no replacement');
     if (empty($values)) {
       return;
     }
@@ -612,11 +556,14 @@ abstract class CRM_Import_Parser implements UserJobInterface {
   /**
    * Setter function.
    *
+   * @deprecated
+   *
    * @param int $max
    *
    * @return void
    */
   public function setMaxLinesToProcess($max) {
+    CRM_Core_Error::deprecatedFunctionWarning('no replacement');
     $this->_maxLinesToProcess = $max;
   }
 
@@ -647,26 +594,50 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     if (!empty($params['id'])) {
       return;
     }
-    $requiredFields = [
-      'Individual' => [
-        'first_name_last_name' => ['first_name' => ts('First Name'), 'last_name' => ts('Last Name')],
-        'email' => ts('Email Address'),
-      ],
-      'Organization' => ['organization_name' => ts('Organization Name')],
-      'Household' => ['household_name' => ts('Household Name')],
-    ][$contactType];
+    $requiredFields = $this->getRequiredFieldsContactCreate()[$contactType];
     if ($isPermitExistingMatchFields) {
-      $requiredFields['external_identifier'] = ts('External Identifier');
       // Historically just an email has been accepted as it is 'usually good enough'
       // for a dedupe rule look up - but really this is a stand in for
       // whatever is needed to find an existing matching contact using the
       // specified dedupe rule (or the default Unsupervised if not specified).
-      $requiredFields['email'] = ts('Email Address');
+      $requiredFields = $contactType === 'Individual' ? [[$requiredFields, 'external_identifier']] : [[$requiredFields, 'email', 'external_identifier']];
     }
     $this->validateRequiredFields($requiredFields, $params, $prefixString);
   }
 
-  protected function doPostImportActions() {
+  /**
+   * Get the fields required for contact create.
+   *
+   * @return array
+   */
+  protected function getRequiredFieldsContactMatch(): array {
+    return [['id', 'external_identifier']];
+  }
+
+  /**
+   * Get the fields required for contact create.
+   *
+   * @return array
+   */
+  protected function getRequiredFieldsContactCreate(): array {
+    return [
+      'Individual' => [
+        [
+          ['first_name', 'last_name'],
+          'email',
+        ],
+      ],
+      'Organization' => ['organization_name'],
+      'Household' => ['household_name'],
+    ];
+  }
+
+  /**
+   * Core function - do not call from outside core.
+   *
+   * @internal
+   */
+  public function doPostImportActions() {
     $userJob = $this->getUserJob();
     $summaryInfo = $userJob['metadata']['summary_info'] ?? [];
     $actions = $userJob['metadata']['post_actions'] ?? [];
@@ -689,10 +660,16 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     UserJob::update(FALSE)->addWhere('id', '=', $userJob['id'])->setValues(['metadata' => $this->userJob['metadata']])->execute();
   }
 
-  public function queue() {
+  /**
+   * Queue the user job as one or more tasks.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function queue(): void {
     $dataSource = $this->getDataSourceObject();
     $totalRowCount = $totalRows = $dataSource->getRowCount(['new']);
-    $queue = Civi::queue('user_job_' . $this->getUserJobID(), ['type' => 'Sql', 'error' => 'abort']);
+    $queue = Civi::queue('user_job_' . $this->getUserJobID(), ['type' => 'Sql', 'error' => 'abort', 'runner' => 'task', 'user_job_id' => $this->getUserJobID()]);
+    UserJob::update(FALSE)->setValues(['queue_id.name' => 'user_job_' . $this->getUserJobID()])->addWhere('id', '=', $this->getUserJobID())->execute();
     $offset = 0;
     $batchSize = 5;
     while ($totalRows > 0) {
@@ -762,10 +739,13 @@ abstract class CRM_Import_Parser implements UserJobInterface {
   /**
    * Determines the file extension based on error code.
    *
+   * @deprecated
+   *
    * @var int $type error code constant
    * @return string
    */
   public static function errorFileName($type) {
+    CRM_Core_Error::deprecatedFunctionWarning('no replacement');
     $fileName = NULL;
     if (empty($type)) {
       return $fileName;
@@ -794,9 +774,33 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     return $fileName;
   }
 
+  /**
+   * Validate that a passed in contact ID is for an existing, not-deleted contact.
+   *
+   * @param int $contactID
+   * @param string|null $contactType
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function validateContactID(int $contactID, ?string $contactType): void {
+    $existingContact = Contact::get(FALSE)
+      ->addWhere('id', '=', $contactID)
+      // Don't auto-filter deleted - people use import to undelete.
+      ->addWhere('is_deleted', 'IN', [0, 1])
+      ->addSelect('contact_type')->execute()->first();
+    if (empty($existingContact['id'])) {
+      throw new CRM_Core_Exception('No contact found for this contact ID:' . $contactID, CRM_Import_Parser::NO_MATCH);
+    }
+    if ($contactType && $existingContact['contact_type'] !== $contactType) {
+      throw new CRM_Core_Exception('Mismatched contact Types', CRM_Import_Parser::NO_MATCH);
+    }
+  }
+
   /**
    * Determines the file name based on error code.
    *
+   * @deprecated
+   *
    * @var int $type code constant
    * @return string
    */
@@ -831,13 +835,14 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    *
    * @param array $formatValues
    *
+   * @deprecated
+   *
    * @return array
    */
   protected function checkContactDuplicate(&$formatValues) {
     //retrieve contact id using contact dedupe rule
     $formatValues['contact_type'] = $formatValues['contact_type'] ?? $this->getContactType();
     $formatValues['version'] = 3;
-    require_once 'CRM/Utils/DeprecatedUtils.php';
     $params = $formatValues;
     static $cIndieFields = NULL;
     static $defaultLocationId = NULL;
@@ -901,8 +906,112 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     }
 
     $contactFormatted['contact_type'] = $contactType;
+    $params = &$contactFormatted;
+    $id = $params['id'] ?? NULL;
+    $externalId = $params['external_identifier'] ?? NULL;
+    if ($id || $externalId) {
+      $contact = new CRM_Contact_DAO_Contact();
+
+      $contact->id = $id;
+      $contact->external_identifier = $externalId;
+
+      if ($contact->find(TRUE)) {
+        if ($params['contact_type'] != $contact->contact_type) {
+          return ['is_error' => 1, 'error_message' => 'Mismatched contact IDs OR Mismatched contact Types'];
+        }
+        return [
+          'is_error' => 1,
+          'error_message' => [
+            'code' => CRM_Core_Error::DUPLICATE_CONTACT,
+            'params' => [$contact->id],
+            'level' => 'Fatal',
+            'message' => "Found matching contacts: $contact->id",
+          ],
+        ];
+      }
+    }
+    else {
+      $ids = CRM_Contact_BAO_Contact::getDuplicateContacts($params, $params['contact_type'], 'Unsupervised');
 
-    return _civicrm_api3_deprecated_duplicate_formatted_contact($contactFormatted);
+      if (!empty($ids)) {
+        return [
+          'is_error' => 1,
+          'error_message' => [
+            'code' => CRM_Core_Error::DUPLICATE_CONTACT,
+            'params' => $ids,
+            'level' => 'Fatal',
+            'message' => 'Found matching contacts: ' . implode(',', $ids),
+          ],
+        ];
+      }
+    }
+    return ['is_error' => 0];
+  }
+
+  /**
+   * Get the default dedupe rule name for the contact type.
+   *
+   * @param string $contactType
+   *
+   * @return string
+   * @throws \CRM_Core_Exception
+   */
+  protected function getDefaultRuleForContactType(string $contactType): string {
+    return DedupeRuleGroup::get(FALSE)
+      ->addWhere('contact_type', '=', $contactType)
+      ->addWhere('used', '=', 'Unsupervised')
+      ->addSelect('id', 'name')->execute()->first()['name'];
+  }
+
+  /**
+   * Get the dedupe rule name.
+   *
+   * @param int $id
+   *
+   * @return string
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getDedupeRuleName(int $id): string {
+    return DedupeRuleGroup::get(FALSE)
+      ->addWhere('id', '=', $id)
+      ->addSelect('name')
+      ->execute()->first()['name'];
+  }
+
+  /**
+   * Get the dedupe rule, including an array of fields with weights.
+   *
+   * The fields are keyed according to the metadata.
+   *
+   * @param string $contactType
+   * @param string|null $name
+   *
+   * @return array
+   * @noinspection PhpUnhandledExceptionInspection
+   * @noinspection PhpDocMissingThrowsInspection
+   */
+  public function getDedupeRule(string $contactType, ?string $name = NULL): array {
+    if (!$name) {
+      $name = $this->getDefaultRuleForContactType($contactType);
+    }
+    if (empty($this->dedupeRules[$name])) {
+      $where = [['name', '=', $name]];
+      $this->loadRules($where);
+    }
+    return $this->dedupeRules[$name];
+  }
+
+  /**
+   * Get all dedupe rules.
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function getAllDedupeRules(): array {
+    $this->loadRules();
+    return $this->dedupeRules;
   }
 
   /**
@@ -917,6 +1026,9 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    *   The structured parameter list.
    *
    * @return bool|CRM_Utils_Error
+   *
+   * @throws \CRM_Core_Exception
+   * @deprecated
    */
   private function _civicrm_api3_deprecated_add_formatted_param(&$values, &$params) {
     // @todo - like most functions in import ... most of this is cruft....
@@ -1198,6 +1310,8 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    *
    * but if not available then see if we have a label that can be converted to a name.
    *
+   * @deprecated
+   *
    * @param string|int|null $submittedValue
    * @param array $fieldSpec
    *   Metadata for the field
@@ -1205,11 +1319,12 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    * @return mixed
    */
   protected function parsePseudoConstantField($submittedValue, $fieldSpec) {
+    CRM_Core_Error::deprecatedFunctionWarning('no replacement');
     // dev/core#1289 Somehow we have wound up here but the BAO has not been specified in the fieldspec so we need to check this but future us problem, for now lets just return the submittedValue
     if (!isset($fieldSpec['bao'])) {
       return $submittedValue;
     }
-    /* @var \CRM_Core_DAO $bao */
+    /** @var \CRM_Core_DAO $bao */
     $bao = $fieldSpec['bao'];
     // For historical reasons use validate as context - ie disabled name matches ARE permitted.
     $nameOptions = $bao::buildOptions($fieldSpec['name'], 'validate');
@@ -1268,8 +1383,8 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    *   - note this follows the and / or array nesting we see in permission checks
    *   eg.
    *   [
-   *     'email' => ts('Email'),
-   *     ['first_name' => ts('First Name'), 'last_name' => ts('Last Name')]
+   *     'email',
+   *     ['first_name', 'last_name']
    *   ]
    *   Means 'email' OR 'first_name AND 'last_name'.
    * @param string $prefixString
@@ -1277,41 +1392,175 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    * @throws \CRM_Core_Exception Exception thrown if field requirements are not met.
    */
   protected function validateRequiredFields(array $requiredFields, array $params, $prefixString = ''): void {
-    if (empty($requiredFields)) {
+    $missingFields = $this->getMissingFields($requiredFields, $params);
+    if (empty($missingFields)) {
       return;
     }
-    $missingFields = [];
-    foreach ($requiredFields as $key => $required) {
-      if (!is_array($required)) {
-        $importParameter = $params[$key] ?? [];
-        if (!is_array($importParameter)) {
-          if (!empty($importParameter)) {
-            return;
-          }
-        }
-        else {
-          foreach ($importParameter as $locationValues) {
-            if (!empty($locationValues[$key])) {
-              return;
-            }
-          }
-        }
+    throw new CRM_Core_Exception($prefixString . ts('Missing required fields:') . ' ' . implode(' ' . ts('OR') . ' ', $missingFields));
+  }
 
-        $missingFields[$key] = $required;
+  /**
+   * Validate that the mapping has the required fields.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function validateMapping($mapping): void {
+    $mappedFields = [];
+    foreach ($mapping as $mappingField) {
+      $mappedFields[$mappingField[0]] = $mappingField[0];
+    }
+    $entity = $this->baseEntity;
+    $missingFields = $this->getMissingFields($this->getRequiredFieldsForEntity($entity, $this->getActionForEntity($entity)), $mappedFields);
+    if (!empty($missingFields)) {
+      $error = [];
+      foreach ($missingFields as $missingField) {
+        $error[] = ts('Missing required field: %1', [1 => $missingField]);
       }
-      else {
-        foreach ($required as $field => $label) {
-          if (!isset($params[$field]) || $params[$field] === '') {
-            $missing[$field] = $label;
-          }
+      throw new CRM_Core_Exception(implode('<br/>', $error));
+    }
+  }
+
+  /**
+   * Get the import action for the given entity.
+   *
+   * @param string $entity
+   *
+   * @return string
+   * @throws \API_Exception
+   */
+  protected function getActionForEntity(string $entity): string {
+    return $this->getUserJob()['metadata']['entity_configuration'][$entity]['action'] ?? ($this->getImportEntities()[$entity]['default_action'] ?? 'select');
+  }
+
+  /**
+   * Get the dedupe rule/s to use for the given entity.
+   *
+   * If none are returned then the code will use a default 'Unsupervised' rule in `getContactID`
+   *
+   * @param string $entity
+   *
+   * @return array
+   * @throws \API_Exception
+   */
+  protected function getDedupeRulesForEntity(string $entity): array {
+    return (array) ($this->getUserJob()['metadata']['entity_configuration'][$entity]['dedupe_rule'] ?? []);
+  }
+
+  /**
+   * Get the import action for the given entity.
+   *
+   * @param string $entity
+   *
+   * @return string|null
+   * @throws \API_Exception
+   */
+  protected function getContactTypeForEntity(string $entity): ?string {
+    return $this->getUserJob()['metadata']['entity_configuration'][$entity]['contact_type'] ?? NULL;
+  }
+
+  /**
+   * @param string $entity
+   * @param string $action
+   *
+   * @return array
+   */
+  private function getRequiredFieldsForEntity(string $entity, string $action): array {
+    $entityMetadata = $this->getImportEntities()[$entity];
+    if ($action === 'select') {
+      // Select uses the same lookup as update.
+      $action = 'update';
+    }
+    if (isset($entityMetadata['required_fields_' . $action])) {
+      return $entityMetadata['required_fields_' . $action];
+    }
+    return [];
+  }
+
+  /**
+   * Get the field requirements that are missing from the params array.
+   *
+   *  Eg Must have 'total_amount' and 'financial_type_id'
+   *    [
+   *      'total_amount',
+   *      'financial_type_id'
+   *    ]
+   *
+   * Eg Must have 'invoice_id' or 'trxn_id' or 'id'
+   *
+   *   [
+   *     ['invoice_id'],
+   *     ['trxn_id'],
+   *     ['id']
+   *   ],
+   *
+   * Eg Must have 'invoice_id' or 'trxn_id' or 'id' OR (total_amount AND financial_type_id)
+   *   [
+   *     [['invoice_id'], ['trxn_id'], ['id']]],
+   *     ['total_amount', 'financial_type_id]
+   *   ],
+   *
+   * Eg Must have 'invoice_id' or 'trxn_id' or 'id' AND (total_amount AND financial_type_id)
+   *   [
+   *     [['invoice_id'], ['trxn_id'], ['id']],
+   *     ['total_amount', 'financial_type_id]
+   *   ]
+   *
+   * @param array $requiredFields
+   * @param array $params
+   *
+   * @return array
+   */
+  protected function getMissingFields(array $requiredFields, array $params): array {
+    if (empty($requiredFields)) {
+      return [];
+    }
+    return $this->checkRequirement($requiredFields, $params);
+  }
+
+  /**
+   * Check an individual required fields criteria.
+   *
+   * @see getMissingFields
+   *
+   * @param string|array $requirement
+   * @param array $params
+   *
+   * @return array
+   */
+  private function checkRequirement($requirement, array $params): array {
+    $missing = [];
+    if (!is_array($requirement)) {
+      // In this case we need to match the field....
+      // if we do, then return empty, otherwise return
+      if (!empty($params[$requirement])) {
+        if (!is_array($params[$requirement])) {
+          return [];
         }
-        if (empty($missing)) {
-          return;
+        // Recurse the array looking for the key - eg. look for email
+        // in a location values array
+        foreach ($params[$requirement] as $locationValues) {
+          if (!empty($locationValues[$requirement])) {
+            return [];
+          }
         }
-        $missingFields[$key] = implode(' ' . ts('and') . ' ', $missing);
       }
+      return [$requirement => $this->getFieldMetadata($requirement)['title']];
     }
-    throw new CRM_Core_Exception($prefixString . ts('Missing required fields:') . ' ' . implode(' ' . ts('OR') . ' ', $missingFields));
+
+    foreach ($requirement as $required) {
+      $isOrOperator = isset($requirement[0]) && is_array($requirement[0]);
+      $check = $this->checkRequirement($required, $params);
+      // A nested array is an 'OR' If we find any one then return.
+      if ($isOrOperator && empty($check)) {
+        return [];
+      }
+      $missing = array_merge($missing, $check);
+    }
+    if (!empty($missing)) {
+      $separator = ' ' . ($isOrOperator ? ts('OR') : ts('and')) . ' ';
+      return [implode($separator, $missing)];
+    }
+    return [];
   }
 
   /**
@@ -1426,7 +1675,7 @@ abstract class CRM_Import_Parser implements UserJobInterface {
 
     $fieldMap = $this->getOddlyMappedMetadataFields();
     $fieldMapName = empty($fieldMap[$fieldName]) ? $fieldName : $fieldMap[$fieldName];
-
+    $fieldMapName = str_replace('__', '.', $fieldMapName);
     // This whole business of only loading metadata for one type when we actually need it for all is ... dubious.
     if (empty($this->getImportableFieldsMetadata()[$fieldMapName])) {
       if ($loadOptions || !$limitToContactType) {
@@ -1506,6 +1755,9 @@ abstract class CRM_Import_Parser implements UserJobInterface {
 
   /**
    * Get the field metadata for fields to be be offered to match the contact.
+   * @todo this is very similar to getContactFields - this is called by participant and that
+   * by contribution import. They should be reconciled - but note that one is being fixed
+   * to support api4 style fields on contribution import - with this import to follow.
    *
    * @return array
    * @noinspection PhpDocMissingThrowsInspection
@@ -1537,81 +1789,6 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     return $fields;
   }
 
-  /**
-   * @param $customFieldID
-   * @param $value
-   * @param array $fieldMetaData
-   * @param $dateType
-   *
-   * @return ?string
-   */
-  protected function validateCustomField($customFieldID, $value, array $fieldMetaData, $dateType): ?string {
-    /* validate the data against the CF type */
-
-    if ($value) {
-      $dataType = $fieldMetaData['data_type'];
-      $htmlType = $fieldMetaData['html_type'];
-      $isSerialized = CRM_Core_BAO_CustomField::isSerialized($fieldMetaData);
-      if ($dataType === 'Date') {
-        $params = ['date_field' => $value];
-        if (CRM_Utils_Date::convertToDefaultDate($params, $dateType, 'date_field')) {
-          return NULL;
-        }
-        return $fieldMetaData['label'];
-      }
-      elseif ($dataType === 'Boolean') {
-        if (CRM_Utils_String::strtoboolstr($value) === FALSE) {
-          return $fieldMetaData['label'] . '::' . $fieldMetaData['groupTitle'];
-        }
-      }
-      // need not check for label filed import
-      $selectHtmlTypes = [
-        'CheckBox',
-        'Select',
-        'Radio',
-      ];
-      if ((!$isSerialized && !in_array($htmlType, $selectHtmlTypes)) || $dataType == 'Boolean' || $dataType == 'ContactReference') {
-        $valid = CRM_Core_BAO_CustomValue::typecheck($dataType, $value);
-        if (!$valid) {
-          return $fieldMetaData['label'];
-        }
-      }
-
-      // check for values for custom fields for checkboxes and multiselect
-      if ($isSerialized && $dataType != 'ContactReference') {
-        $mulValues = array_filter(explode(',', str_replace('|', ',', trim($value))), 'strlen');
-        $customOption = CRM_Core_BAO_CustomOption::getCustomOption($customFieldID, TRUE);
-        foreach ($mulValues as $v1) {
-
-          $flag = FALSE;
-          foreach ($customOption as $v2) {
-            if ((strtolower(trim($v2['label'])) == strtolower(trim($v1))) || (strtolower(trim($v2['value'])) == strtolower(trim($v1)))) {
-              $flag = TRUE;
-            }
-          }
-
-          if (!$flag) {
-            return $fieldMetaData['label'];
-          }
-        }
-      }
-      elseif ($htmlType == 'Select' || ($htmlType == 'Radio' && $dataType != 'Boolean')) {
-        $customOption = CRM_Core_BAO_CustomOption::getCustomOption($customFieldID, TRUE);
-        $flag = FALSE;
-        foreach ($customOption as $v2) {
-          if ((strtolower(trim($v2['label'])) == strtolower(trim($value))) || (strtolower(trim($v2['value'])) == strtolower(trim($value)))) {
-            $flag = TRUE;
-          }
-        }
-        if (!$flag) {
-          return $fieldMetaData['label'];
-        }
-      }
-    }
-
-    return NULL;
-  }
-
   /**
    * Get the entity for the given field.
    *
@@ -1621,7 +1798,7 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    * @throws \API_Exception
    */
   protected function getFieldEntity(string $fieldName) {
-    if ($fieldName === 'do_not_import') {
+    if ($fieldName === 'do_not_import' || $fieldName === '') {
       return '';
     }
     if (in_array($fieldName, ['email_greeting_id', 'postal_greeting_id', 'addressee_id'], TRUE)) {
@@ -1648,15 +1825,7 @@ abstract class CRM_Import_Parser implements UserJobInterface {
   public function validate(): void {
     $dataSource = $this->getDataSourceObject();
     while ($row = $dataSource->getRow()) {
-      try {
-        $rowNumber = $row['_id'];
-        $values = array_values($row);
-        $this->validateValues($values);
-        $this->setImportStatus($rowNumber, 'NEW', '');
-      }
-      catch (CRM_Core_Exception $e) {
-        $this->setImportStatus($rowNumber, 'ERROR', $e->getMessage());
-      }
+      $this->validateRow($row);
     }
   }
 
@@ -1762,6 +1931,7 @@ abstract class CRM_Import_Parser implements UserJobInterface {
       'email_greeting_id' => 'email_greeting',
       'postal_greeting_id' => 'postal_greeting',
       'addressee_id' => 'addressee',
+      'source' => 'contact_source',
     ];
   }
 
@@ -1821,6 +1991,30 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     $this->setFieldMetadata();
   }
 
+  /**
+   * Get metadata for all importable fields.
+   *
+   * @return array
+   */
+  public function getFieldsMetadata() : array {
+    if (empty($this->importableFieldsMetadata)) {
+      unset($this->userJob);
+      $this->setFieldMetadata();
+    }
+    return $this->importableFieldsMetadata;
+  }
+
+  /**
+   * Get a list of entities this import supports.
+   *
+   * @return array
+   */
+  public function getImportEntities() : array {
+    return [
+      'Contact' => ['text' => ts('Contact Fields'), 'is_contact' => TRUE],
+    ];
+  }
+
   /**
    * @param array $mappedField
    *   Field detail as would be saved in field_mapping table
@@ -1874,7 +2068,9 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     $mappedFields = [];
     $mapper = $this->getSubmittedValue('mapper');
     foreach ($mapper as $i => $mapperRow) {
-      $mappedField = $this->getMappingFieldFromMapperInput($mapperRow, 0, $i);
+      // Cast to an array as it will be a string for membership
+      // and any others we simplify away from using hierselect for a single option.
+      $mappedField = $this->getMappingFieldFromMapperInput((array) $mapperRow, 0, $i);
       // Just for clarity since 0 is a pseudo-value
       unset($mappedField['mapping_id']);
       $mappedFields[] = $mappedField;
@@ -1903,7 +2099,7 @@ abstract class CRM_Import_Parser implements UserJobInterface {
         $parserClass = $userJobType['class'];
       }
     }
-    /* @var \CRM_Import_Parser $parser */
+    /** @var \CRM_Import_Parser $parser */
     $parser = new $parserClass();
     $parser->setUserJobID($userJobID);
     // Not sure if we still need to init....
@@ -1920,80 +2116,6 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     return TRUE;
   }
 
-  /**
-   * Check if an error in custom data.
-   *
-   * @deprecated all of this is duplicated if getTransformedValue is used.
-   *
-   * @param array $params
-   * @param string $errorMessage
-   *   A string containing all the error-fields.
-   *
-   * @param null $csType
-   */
-  public function isErrorInCustomData($params, &$errorMessage, $csType = NULL) {
-    $dateType = CRM_Core_Session::singleton()->get("dateTypes");
-    $errors = [];
-
-    if (!empty($params['contact_sub_type'])) {
-      $csType = $params['contact_sub_type'] ?? NULL;
-    }
-
-    if (empty($params['contact_type'])) {
-      $params['contact_type'] = 'Individual';
-    }
-
-    // get array of subtypes - CRM-18708
-    if (in_array($csType, CRM_Contact_BAO_ContactType::basicTypes(TRUE), TRUE)) {
-      $csType = $this->getSubtypes($params['contact_type']);
-    }
-
-    if (is_array($csType)) {
-      // fetch custom fields for every subtype and add it to $customFields array
-      // CRM-18708
-      $customFields = [];
-      foreach ($csType as $cType) {
-        $customFields += CRM_Core_BAO_CustomField::getFields($params['contact_type'], FALSE, FALSE, $cType);
-      }
-    }
-    else {
-      $customFields = CRM_Core_BAO_CustomField::getFields($params['contact_type'], FALSE, FALSE, $csType);
-    }
-
-    foreach ($params as $key => $value) {
-      if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($key)) {
-        //For address custom fields, we do get actual custom field value as an inner array of
-        //values so need to modify
-        if (!array_key_exists($customFieldID, $customFields)) {
-          return ts('field ID');
-        }
-        /* check if it's a valid custom field id */
-        $errors[] = $this->validateCustomField($customFieldID, $value, $customFields[$customFieldID], $dateType);
-      }
-    }
-    if ($errors) {
-      $errorMessage .= ($errorMessage ? '; ' : '') . implode('; ', array_filter($errors));
-    }
-  }
-
-  /**
-   * get subtypes given the contact type
-   *
-   * @param string $contactType
-   * @return array $subTypes
-   */
-  protected function getSubtypes($contactType) {
-    $subTypes = [];
-    $types = CRM_Contact_BAO_ContactType::subTypeInfo($contactType);
-
-    if (count($types) > 0) {
-      foreach ($types as $type) {
-        $subTypes[] = $type['name'];
-      }
-    }
-    return $subTypes;
-  }
-
   /**
    * Update the status of the import row to reflect the processing outcome.
    *
@@ -2030,6 +2152,8 @@ abstract class CRM_Import_Parser implements UserJobInterface {
    *   Type of date.
    * @param string $dateParam
    *   Index of params.
+   *
+   * @deprecated
    */
   public static function formatCustomDate(&$params, &$formatted, $dateType, $dateParam) {
     //fix for CRM-2687
@@ -2053,4 +2177,390 @@ abstract class CRM_Import_Parser implements UserJobInterface {
     return is_numeric($importedValue) ? $importedValue : mb_strtolower(str_replace('’', "'", $importedValue));
   }
 
+  /**
+   * Look up for an existing contact with the given external_identifier.
+   *
+   * If the identifier is found on a deleted contact then it is not a match
+   * but it must be removed from that contact to allow the new contact to
+   * have that external_identifier.
+   *
+   * @param string|null $externalIdentifier
+   * @param string|null $contactType
+   *   If supplied the contact will be validated against this type.
+   * @param int|null $contactID
+   *
+   * @return int|null
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \CiviCRM_API3_Exception
+   */
+  protected function lookupExternalIdentifier(?string $externalIdentifier, ?string $contactType, ?int $contactID): ?int {
+    if (!$externalIdentifier) {
+      return NULL;
+    }
+    // Check for any match on external id, deleted or otherwise.
+    $foundContact = civicrm_api3('Contact', 'get', [
+      'external_identifier' => $externalIdentifier,
+      'showAll' => 'all',
+      'sequential' => TRUE,
+      'return' => ['id', 'contact_is_deleted', 'contact_type'],
+    ]);
+    if (empty($foundContact['id'])) {
+      return NULL;
+    }
+    if (!empty($foundContact['values'][0]['contact_is_deleted'])) {
+      // If the contact is deleted, update external identifier to be blank
+      // to avoid key error from MySQL.
+      $params = ['id' => $foundContact['id'], 'external_identifier' => ''];
+      civicrm_api3('Contact', 'create', $params);
+      return NULL;
+    }
+    if ($contactType && $foundContact['values'][0]['contact_type'] !== $contactType) {
+      throw new CRM_Core_Exception('Mismatched contact Types', CRM_Import_Parser::NO_MATCH);
+    }
+    //check if external identifier exists in database
+    if ($contactID && $foundContact['id'] !== $contactID) {
+      throw new CRM_Core_Exception(ts('Existing external ID does not match the imported contact ID.'), CRM_Import_Parser::ERROR);
+    }
+    return (int) $foundContact['id'];
+  }
+
+  /**
+   * Get contacts that match the input parameters, using a dedupe rule.
+   *
+   * @param array $params
+   * @param int|null|array $dedupeRuleID
+   * @param bool $isApiMetadata
+   *   Is the import using api4 style metadata (in which case no conversion needed) - eventually
+   *   only contact import will use a different style (as it supports multiple locations) and the
+   *   handling will be in that class.
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getPossibleMatchesByDedupeRule(array $params, $dedupeRuleID = NULL, $isApiMetadata = TRUE): array {
+    if ($isApiMetadata === FALSE) {
+      foreach (['email', 'address', 'phone', 'im'] as $locationEntity) {
+        if (array_key_exists($locationEntity, $params)) {
+          // Prefer primary
+          if (array_key_exists('Primary', $params[$locationEntity])) {
+            $locationParams = $params[$locationEntity]['Primary'];
+          }
+          else {
+            // Chose the first one - at least they can manipulate the order.
+            $locationParams = reset($params[$locationEntity]);
+          }
+          foreach ($locationParams as $key => $locationParam) {
+            // Even though we might not be using 'primary' we 'pretend' here
+            // since the apiv4 code expects that...
+            $params[$locationEntity . '_primary' . '.' . $key] = $locationParam;
+          }
+          unset($params[$locationEntity]);
+        }
+      }
+      foreach ($params as $key => $value) {
+        if (strpos($key, 'custom_') === 0) {
+          $params[$this->getApi4Name($key)] = $value;
+          unset($params[$key]);
+        }
+      }
+    }
+    $matchIDs = [];
+    $dedupeRules = $this->getDedupeRules((array) $dedupeRuleID, $params['contact_type'] ?? NULL);
+    foreach ($dedupeRules as $dedupeRule) {
+      $possibleMatches = Contact::getDuplicates(FALSE)
+        ->setValues($params)
+        ->setDedupeRule($dedupeRule)
+        ->execute();
+
+      foreach ($possibleMatches as $possibleMatch) {
+        $matchIDs[(int) $possibleMatch['id']] = (int) $possibleMatch['id'];
+      }
+    }
+
+    return $matchIDs;
+  }
+
+  /**
+   * Get the Api4 name of a custom field.
+   *
+   * @param string $key
+   *
+   * @return string
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getApi4Name(string $key): string {
+    if (!isset($this->customFieldNameMap[$key])) {
+      $this->customFieldNameMap[$key] = Contact::getFields(FALSE)
+        ->addWhere('custom_field_id', '=', str_replace('custom_', '', $key))
+        ->addSelect('name')
+        ->execute()->first()['name'];
+    }
+    return $this->customFieldNameMap[$key];
+  }
+
+  /**
+   * Get the contact ID for the imported row.
+   *
+   * If we have a contact ID we check it is valid and, if there is also
+   * an external identifier we check it does not conflict.
+   *
+   * Failing those we try a dedupe lookup.
+   *
+   * @param array $contactParams
+   * @param int|null $contactID
+   * @param string $entity
+   *   Entity, as described in getImportEntities.
+   * @param array|null $dedupeRules
+   *   Dedupe rules to apply (will default to unsupervised rule)
+   *
+   * @return int|null
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getContactID(array $contactParams, ?int $contactID, string $entity, ?array $dedupeRules = NULL): ?int {
+    $contactType = $contactParams['contact_type'] ?? NULL;
+    if ($contactID) {
+      $this->validateContactID($contactID, $contactType);
+    }
+    if (!empty($contactParams['external_identifier'])) {
+      $contactID = $this->lookupExternalIdentifier($contactParams['external_identifier'], $contactType, $contactID ?? NULL);
+    }
+    if (!$contactID) {
+      $action = $this->getActionForEntity($entity);
+      $possibleMatches = $this->getPossibleMatchesByDedupeRule($contactParams, $dedupeRules);
+      if (count($possibleMatches) === 1) {
+        $contactID = array_key_first($possibleMatches);
+      }
+      elseif (count($possibleMatches) > 1) {
+        throw new CRM_Core_Exception(ts('Record duplicates multiple contacts: ') . implode(',', $possibleMatches));
+      }
+      elseif (!in_array($action, ['create', 'ignore', 'save'], TRUE)) {
+        throw new CRM_Core_Exception(ts('No matching %1 found', [$entity, 'String']));
+      }
+    }
+    return $contactID;
+  }
+
+  /**
+   * Get the fields for the dedupe rule.
+   *
+   * @param string $contactType
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  protected function getDedupeFields(string $contactType): array {
+    return $this->getDedupeRule($contactType)['fields'];
+  }
+
+  /**
+   * Get all contact import fields metadata.
+   *
+   * @param string $prefix
+   *
+   * @return array
+   *
+   * @noinspection PhpUnhandledExceptionInspection
+   */
+  protected function getAllContactFields(string $prefix = 'Contact.'): array {
+    $allContactFields = (array) Contact::getFields()
+      ->addWhere('readonly', '=', FALSE)
+      ->addWhere('type', 'IN', ['Field', 'Custom'])
+      ->addWhere('fk_entity', 'IS EMPTY')
+      ->addOrderBy('title')
+      ->execute()->indexBy('name');
+
+    $contactTypeFields['Individual'] = (array) Contact::getFields()
+      ->addWhere('readonly', '=', FALSE)
+      ->addWhere('type', 'IN', ['Field', 'Custom'])
+      ->addWhere('fk_entity', 'IS EMPTY')
+      ->setSelect(['name'])
+      ->addValue('contact_type', 'Individual')
+      ->addOrderBy('title')
+      ->execute()->indexBy('name');
+
+    $contactTypeFields['Organization'] = (array) Contact::getFields()
+      ->addWhere('readonly', '=', FALSE)
+      ->addWhere('type', 'IN', ['Field', 'Custom'])
+      ->addWhere('fk_entity', 'IS EMPTY')
+      ->setSelect(['name'])
+      ->addValue('contact_type', 'Organization')
+      ->addOrderBy('title')
+      ->execute()->indexBy('name');
+
+    $contactTypeFields['Household'] = (array) Contact::getFields()
+      ->addWhere('readonly', '=', FALSE)
+      ->addWhere('type', 'IN', ['Field', 'Custom'])
+      ->addWhere('fk_entity', 'IS EMPTY')
+      ->setSelect(['name'])
+      ->addOrderBy('title')
+      ->execute()->indexBy('name');
+
+    $prefixedFields = [];
+    foreach ($allContactFields as $fieldName => $field) {
+      $field['contact_type'] = [];
+      foreach ($contactTypeFields as $contactTypeName => $fields) {
+        if (array_key_exists($fieldName, $fields)) {
+          $field['contact_type'][$contactTypeName] = $contactTypeName;
+        }
+      }
+      $fieldName = $prefix . $fieldName;
+      if (!empty($field['custom_field_id'])) {
+        $this->customFieldNameMap['custom_' . $field['custom_field_id']] = $fieldName;
+      }
+      $prefixedFields[$fieldName] = $field;
+    }
+
+    $addressFields = (array) Address::getFields()
+      ->addWhere('readonly', '=', FALSE)
+      ->addWhere('type', 'IN', ['Field', 'Custom'])
+      ->addOrderBy('title')
+      // Exclude these fields to keep it simpler for now - we just map to primary
+      ->addWhere('name', 'NOT IN', ['id', 'location_type_id', 'master_id'])
+      ->execute()->indexBy('name');
+    foreach ($addressFields as $fieldName => $field) {
+      // Set entity to contact as primary fields used in Contact actions
+      $field['entity'] = 'Contact';
+      $field['name'] = 'address_primary.' . $fieldName;
+      $field['contact_type'] = ['Individual' => 'Individual', 'Organization' => 'Organization', 'Household' => 'Household'];
+      $prefixedFields[$prefix . 'address_primary.' . $fieldName] = $field;
+    }
+
+    $phoneFields = (array) Phone::getFields()
+      ->addWhere('readonly', '=', FALSE)
+      ->addWhere('type', 'IN', ['Field', 'Custom'])
+      // Exclude these fields to keep it simpler for now - we just map to primary
+      ->addWhere('name', 'NOT IN', ['id', 'location_type_id', 'phone_type_id'])
+      ->addOrderBy('title')
+      ->execute()->indexBy('name');
+    foreach ($phoneFields as $fieldName => $field) {
+      $field['entity'] = 'Contact';
+      $field['name'] = 'phone_primary.' . $fieldName;
+      $field['contact_type'] = ['Individual' => 'Individual', 'Organization' => 'Organization', 'Household' => 'Household'];
+      $prefixedFields[$prefix . 'phone_primary.' . $fieldName] = $field;
+    }
+
+    $emailFields = (array) Email::getFields()
+      ->addWhere('readonly', '=', FALSE)
+      ->addWhere('type', 'IN', ['Field', 'Custom'])
+      // Exclude these fields to keep it simpler for now - we just map to primary
+      ->addWhere('name', 'NOT IN', ['id', 'location_type_id'])
+      ->addOrderBy('title')
+      ->execute()->indexBy('name');
+
+    foreach ($emailFields as $fieldName => $field) {
+      $field['entity'] = 'Contact';
+      $field['name'] = 'email_primary.' . $fieldName;
+      $field['contact_type'] = ['Individual' => 'Individual', 'Organization' => 'Organization', 'Household' => 'Household'];
+      $prefixedFields[$prefix . 'email_primary.' . $fieldName] = $field;
+    }
+    return $prefixedFields;
+  }
+
+  /**
+   * @param array $where
+   * @param $name
+   *
+   * @return mixed
+   * @throws \API_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  protected function loadRules(array $where = []) {
+    $rules = DedupeRuleGroup::get(FALSE)
+      ->setWhere($where)
+      ->addSelect('threshold', 'name', 'id', 'title', 'contact_type')
+      ->execute();
+    foreach ($rules as $dedupeRule) {
+      $fields = [];
+      $name = $dedupeRule['name'];
+      $this->dedupeRules[$name] = $dedupeRule;
+      $this->dedupeRules[$name]['rule_message'] = $fieldMessage = '';
+      // Now we add the fields in a format like ['first_name' => 6, 'custom_8' => 9]
+      // The number is the weight and we add both api three & four style fields so the
+      // array can be used for converted & unconverted.
+      $ruleFields = DedupeRule::get(FALSE)
+        ->addWhere('dedupe_rule_group_id', '=', $this->dedupeRules[$name]['id'])
+        ->addSelect('id', 'rule_table', 'rule_field', 'rule_weight')
+        ->execute();
+      foreach ($ruleFields as $ruleField) {
+        $fieldMessage .= ' ' . $ruleField['rule_field'] . '(weight ' . $ruleField['rule_weight'] . ')';
+        if ($ruleField['rule_table'] === 'civicrm_contact') {
+          $fields[$ruleField['rule_field']] = $ruleField['rule_weight'];
+        }
+        // If not a contact field we add both api variants of fields.
+        elseif ($ruleField['rule_table'] === 'civicrm_phone') {
+          // Actually the dedupe rule for phone should always be phone_numeric. so checking 'phone' is probably unncessary
+          if (in_array($ruleField['rule_field'], ['phone', 'phone_numeric'], TRUE)) {
+            $fields['phone'] = $ruleField['rule_weight'];
+            $fields['phone_primary.phone'] = $ruleField['rule_weight'];
+          }
+        }
+        elseif ($ruleField['rule_field'] === 'email') {
+          $fields['email'] = $ruleField['rule_weight'];
+          $fields['email_primary.email'] = $ruleField['rule_weight'];
+        }
+        elseif ($ruleField['rule_table'] === 'civicrm_address') {
+          $fields[$ruleField['rule_field']] = $ruleField['rule_weight'];
+          $fields['address_primary' . $ruleField['rule_field']] = $ruleField['rule_weight'];
+        }
+        else {
+          // At this point it must be a custom field.
+          $customField = CustomField::get(FALSE)
+            ->addWhere('custom_group_id.table_name', '=', $ruleField['rule_table'])
+            ->addWhere('column_name', '=', $ruleField['rule_field'])
+            ->addSelect('id', 'name', 'custom_group_id.name')
+            ->execute()
+            ->first();
+          $fields['custom_' . $customField['id']] = $ruleField['rule_weight'];
+          $fields[$customField['custom_group_id.name'] . '.' . $customField['name']] = $ruleField['rule_weight'];
+        }
+      }
+      $this->dedupeRules[$name]['rule_message'] = ts('Missing required contact matching fields.') . " $fieldMessage " . ts('(Sum of all weights should be greater than or equal to threshold: %1).', [1 => $this->dedupeRules[$name]['threshold']]) . '<br />';
+
+      $this->dedupeRules[$name]['fields'] = $fields;
+    }
+  }
+
+  /**
+   * Get the dedupe rules to use to lookup a contact.
+   *
+   * @param array $dedupeRuleIDs
+   * @param string|array|null $contact_type
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  protected function getDedupeRules(array $dedupeRuleIDs, $contact_type) {
+    $dedupeRules = [];
+    if (!empty($dedupeRuleIDs)) {
+      foreach ($dedupeRuleIDs as $dedupeRuleID) {
+        $dedupeRules[] = is_numeric($dedupeRuleID) ? $this->getDedupeRuleName($dedupeRuleID) : $dedupeRuleID;
+      }
+      return $dedupeRules;
+    }
+    $contactTypes = $contact_type ? (array) $contact_type : CRM_Contact_BAO_ContactType::basicTypes();
+    foreach ($contactTypes as $contactType) {
+      $dedupeRules[] = $this->getDefaultRuleForContactType($contactType);
+    }
+    return $dedupeRules;
+  }
+
+  /**
+   * @param array|null $row
+   */
+  public function validateRow(?array $row): void {
+    try {
+      $rowNumber = $row['_id'];
+      $values = array_values($row);
+      $this->validateValues($values);
+      $this->setImportStatus($rowNumber, 'VALID', '');
+    }
+    catch (CRM_Core_Exception $e) {
+      $this->setImportStatus($rowNumber, 'ERROR', $e->getMessage());
+    }
+  }
+
 }
diff --git a/civicrm/CRM/Import/StateMachine.php b/civicrm/CRM/Import/StateMachine.php
index fbe013ae0f9bcc2c5b0b8ad8d170a70d8956ac14..4a06c6f91ba0838a5a2d5c436ed4bdf7e6b2734f 100644
--- a/civicrm/CRM/Import/StateMachine.php
+++ b/civicrm/CRM/Import/StateMachine.php
@@ -34,7 +34,6 @@ class CRM_Import_StateMachine extends CRM_Core_StateMachine {
       $classType . '_Form_DataSource' => NULL,
       $classType . '_Form_MapField' => NULL,
       $classType . '_Form_Preview' => NULL,
-      $classType . '_Form_Summary' => NULL,
     ];
 
     $this->addSequentialPages($this->_pages, $action);
diff --git a/civicrm/CRM/Logging/Differ.php b/civicrm/CRM/Logging/Differ.php
index 643ed05df1b1d22d1ec8165c88bdcca2a28415a0..bca2d054628651bf2591f9332e231a90d797f5b7 100644
--- a/civicrm/CRM/Logging/Differ.php
+++ b/civicrm/CRM/Logging/Differ.php
@@ -53,7 +53,7 @@ class CRM_Logging_Differ {
   }
 
   /**
-   * @param $table
+   * @param string $table
    * @param int $contactID
    *
    * @return array
diff --git a/civicrm/CRM/Logging/Schema.php b/civicrm/CRM/Logging/Schema.php
index a8ef7185ad64cecb7c75f3d56f7600a4ed4a309c..495119f8cca4a5e12a545509c882589d3d982afa 100644
--- a/civicrm/CRM/Logging/Schema.php
+++ b/civicrm/CRM/Logging/Schema.php
@@ -142,12 +142,13 @@ AND    TABLE_NAME LIKE 'civicrm_%'
     }
 
     // do not log temp import, cache, menu and log tables
-    $this->tables = preg_grep('/^civicrm_import_job_/', $this->tables, PREG_GREP_INVERT);
     $this->tables = preg_grep('/_cache$/', $this->tables, PREG_GREP_INVERT);
     $this->tables = preg_grep('/_log/', $this->tables, PREG_GREP_INVERT);
     $this->tables = preg_grep('/^civicrm_queue_/', $this->tables, PREG_GREP_INVERT);
     //CRM-14672
     $this->tables = preg_grep('/^civicrm_menu/', $this->tables, PREG_GREP_INVERT);
+    // CiviCRM no longer creates temp tables with `_temp` - they are `tmp` - but this is being left in
+    // in case extensions do - since we don't want to suddenly start logging them.
     $this->tables = preg_grep('/_temp_/', $this->tables, PREG_GREP_INVERT);
     // CRM-18178
     $this->tables = preg_grep('/_bak$/', $this->tables, PREG_GREP_INVERT);
diff --git a/civicrm/CRM/Mailing/BAO/MailingJob.php b/civicrm/CRM/Mailing/BAO/MailingJob.php
index 6457ba2c673ccc7eb24c720711fe991837bffe72..5127e1cecdf0cffbf9d3b0c257360e79f16d020d 100644
--- a/civicrm/CRM/Mailing/BAO/MailingJob.php
+++ b/civicrm/CRM/Mailing/BAO/MailingJob.php
@@ -685,7 +685,7 @@ VALUES (%1, %2, %3, %4, %5, %6, %7)
         // Handle SMS errors: CRM-15426
         $job_id = intval($this->id);
         $mailing_id = intval($mailing->id);
-        CRM_Core_Error::debug_log_message("Failed to send SMS message. Vars: mailing_id: ${mailing_id}, job_id: ${job_id}. Error message follows.");
+        CRM_Core_Error::debug_log_message("Failed to send SMS message. Vars: mailing_id: {$mailing_id}, job_id: {$job_id}. Error message follows.");
         CRM_Core_Error::debug_log_message($result->getMessage());
       }
       else {
diff --git a/civicrm/CRM/Mailing/BAO/Query.php b/civicrm/CRM/Mailing/BAO/Query.php
index b9d58a99fcb6e5612aeb4d14f457b1e7673e32db..ced2040d768981410c5e0855759b105e3681673c 100644
--- a/civicrm/CRM/Mailing/BAO/Query.php
+++ b/civicrm/CRM/Mailing/BAO/Query.php
@@ -149,8 +149,8 @@ class CRM_Mailing_BAO_Query {
 
   /**
    * @param string $name
-   * @param $mode
-   * @param $side
+   * @param int $mode
+   * @param string $side
    *
    * @return null|string
    */
@@ -236,7 +236,7 @@ class CRM_Mailing_BAO_Query {
    * @param $query
    */
   public static function whereClauseSingle(&$values, &$query) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     switch ($name) {
       case 'mailing_id':
@@ -281,7 +281,7 @@ class CRM_Mailing_BAO_Query {
       case 'mailing_delivery_status':
         $options = CRM_Mailing_PseudoConstant::yesNoOptions('delivered');
 
-        list($name, $op, $value, $grouping, $wildcard) = $values;
+        [$name, $op, $value, $grouping, $wildcard] = $values;
         if ($value == 'Y') {
           self::mailingEventQueryBuilder($query, $values,
             'civicrm_mailing_event_delivered',
@@ -378,7 +378,7 @@ class CRM_Mailing_BAO_Query {
       case 'mailing_campaign_id':
         $name = 'campaign_id';
         $query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_mailing.$name", $op, $value, 'Integer');
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Mailing_DAO_Mailing', $name, $value, $op);
+        [$op, $value] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Mailing_DAO_Mailing', $name, $value, $op);
         $query->_qill[$grouping][] = ts('Campaign %1 %2', [1 => $op, 2 => $value]);
         $query->_tables['civicrm_mailing'] = $query->_whereTables['civicrm_mailing'] = 1;
         $query->_tables['civicrm_mailing_recipients'] = $query->_whereTables['civicrm_mailing_recipients'] = 1;
@@ -467,7 +467,7 @@ class CRM_Mailing_BAO_Query {
    * @param $valueTitles
    */
   public static function mailingEventQueryBuilder(&$query, &$values, $tableName, $fieldName, $fieldTitle, &$valueTitles) {
-    list($name, $op, $value, $grouping, $wildcard) = $values;
+    [$name, $op, $value, $grouping, $wildcard] = $values;
 
     if (empty($value) || $value == 'A') {
       // don't do any filtering
diff --git a/civicrm/CRM/Mailing/BAO/SMSJob.php b/civicrm/CRM/Mailing/BAO/SMSJob.php
index d558d49e3543b800261fe31bd94e6594a5706de0..1f25c11939bb5e14b0f0edcca3de61e81693d49f 100644
--- a/civicrm/CRM/Mailing/BAO/SMSJob.php
+++ b/civicrm/CRM/Mailing/BAO/SMSJob.php
@@ -78,7 +78,7 @@ class CRM_Mailing_BAO_SMSJob extends CRM_Mailing_BAO_MailingJob {
         // Handle SMS errors: CRM-15426
         $job_id = (int) $this->id;
         $mailing_id = (int) $mailing->id;
-        CRM_Core_Error::debug_log_message("Failed to send SMS message. Vars: mailing_id: ${mailing_id}, job_id: ${job_id}. Error message follows.");
+        CRM_Core_Error::debug_log_message("Failed to send SMS message. Vars: mailing_id: {$mailing_id}, job_id: {$job_id}. Error message follows.");
         CRM_Core_Error::debug_log_message($e->getMessage());
       }
 
diff --git a/civicrm/CRM/Mailing/DAO/BouncePattern.php b/civicrm/CRM/Mailing/DAO/BouncePattern.php
index 92ca3b8eb2dd3e59dc3e0d4fa58f97ab1d689a7a..71d5601bf39194f89dddeae0d57a1cf25eb731be 100644
--- a/civicrm/CRM/Mailing/DAO/BouncePattern.php
+++ b/civicrm/CRM/Mailing/DAO/BouncePattern.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/BouncePattern.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:15aed9731c3f63c29d9d3c0c57297619)
+ * (GenCodeChecksum:476fdbcc7717943843964cb65cb3572e)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/DAO/BounceType.php b/civicrm/CRM/Mailing/DAO/BounceType.php
index c9e6acf97b2e125f6da59656638f4ca7265b3444..de1ef329c67b3d3e6319cb578a86f6e24d5f87db 100644
--- a/civicrm/CRM/Mailing/DAO/BounceType.php
+++ b/civicrm/CRM/Mailing/DAO/BounceType.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/BounceType.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ef69aba971b0a118a9ec2238a180c7c5)
+ * (GenCodeChecksum:d98766824f0e79f32733f360ea96ff87)
  */
 
 /**
@@ -42,7 +42,7 @@ class CRM_Mailing_DAO_BounceType extends CRM_Core_DAO {
    * Type of bounce
    *
    * @var string
-   *   (SQL type: varchar(24))
+   *   (SQL type: varchar(255))
    *   Note that values will be retrieved from the database as a string.
    */
   public $name;
@@ -51,7 +51,7 @@ class CRM_Mailing_DAO_BounceType extends CRM_Core_DAO {
    * A description of this bounce type
    *
    * @var string|null
-   *   (SQL type: varchar(255))
+   *   (SQL type: varchar(2048))
    *   Note that values will be retrieved from the database as a string.
    */
   public $description;
@@ -113,8 +113,8 @@ class CRM_Mailing_DAO_BounceType extends CRM_Core_DAO {
           'title' => ts('Bounce Type Name'),
           'description' => ts('Type of bounce'),
           'required' => TRUE,
-          'maxlength' => 24,
-          'size' => CRM_Utils_Type::MEDIUM,
+          'maxlength' => 255,
+          'size' => CRM_Utils_Type::HUGE,
           'where' => 'civicrm_mailing_bounce_type.name',
           'table_name' => 'civicrm_mailing_bounce_type',
           'entity' => 'BounceType',
@@ -127,7 +127,7 @@ class CRM_Mailing_DAO_BounceType extends CRM_Core_DAO {
           'type' => CRM_Utils_Type::T_STRING,
           'title' => ts('Bounce Type Description'),
           'description' => ts('A description of this bounce type'),
-          'maxlength' => 255,
+          'maxlength' => 2048,
           'size' => CRM_Utils_Type::HUGE,
           'where' => 'civicrm_mailing_bounce_type.description',
           'table_name' => 'civicrm_mailing_bounce_type',
diff --git a/civicrm/CRM/Mailing/DAO/Mailing.php b/civicrm/CRM/Mailing/DAO/Mailing.php
index 5345514b1fa560937b27405126573f2c8f65fab4..bd1efb12c5f01833793dbdee4588aa2d5f4a9493 100644
--- a/civicrm/CRM/Mailing/DAO/Mailing.php
+++ b/civicrm/CRM/Mailing/DAO/Mailing.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Mailing.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4144d565580335c15e750f73a73df644)
+ * (GenCodeChecksum:4e9b6cb841d8377bdf34fa039aa93ef6)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/DAO/MailingAB.php b/civicrm/CRM/Mailing/DAO/MailingAB.php
index f97cada0468f2014b2cc2976c4c5a0b75636f6dd..ad4b7feb341329d64fda812f5b92f0a918a6fdc9 100644
--- a/civicrm/CRM/Mailing/DAO/MailingAB.php
+++ b/civicrm/CRM/Mailing/DAO/MailingAB.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/MailingAB.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:c385d0cae9e88e5a44770cd3ae6fd9d2)
+ * (GenCodeChecksum:5c8a0967e3c97a0b382448924e364bf7)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/DAO/MailingComponent.php b/civicrm/CRM/Mailing/DAO/MailingComponent.php
index 44509bb0e5802e62faeebbab416c309de0a553e7..6a3458abfc49fe62ba47970537ba5fc1459af795 100644
--- a/civicrm/CRM/Mailing/DAO/MailingComponent.php
+++ b/civicrm/CRM/Mailing/DAO/MailingComponent.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/MailingComponent.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0714e4996da6d79fc972efe53df08a26)
+ * (GenCodeChecksum:6c40b8810cfe19d0d7cf52ef6a88fe5b)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/DAO/MailingGroup.php b/civicrm/CRM/Mailing/DAO/MailingGroup.php
index 84118eb8e9a14a7849259a52848dfbc7dbafa9d2..157e40813312e4d0a9aebfa03ba7b87ea212b230 100644
--- a/civicrm/CRM/Mailing/DAO/MailingGroup.php
+++ b/civicrm/CRM/Mailing/DAO/MailingGroup.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/MailingGroup.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:454b529a2ced8428fa3ec9a080fb4887)
+ * (GenCodeChecksum:963f8f1a909497c71cbe4d165e1797b5)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/DAO/MailingJob.php b/civicrm/CRM/Mailing/DAO/MailingJob.php
index 3f366c0dbc8bc9c26f9976e43c21bef250d6fcc6..d4e4418bd73360c3d0d82cfe34e116cee626b072 100644
--- a/civicrm/CRM/Mailing/DAO/MailingJob.php
+++ b/civicrm/CRM/Mailing/DAO/MailingJob.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/MailingJob.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:492e51f255632b9c3d87714bc9ca0f4d)
+ * (GenCodeChecksum:fe545f125a882f22fb95372d5638a0f6)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/DAO/Recipients.php b/civicrm/CRM/Mailing/DAO/Recipients.php
index 88d565694d13c79b90ba7c186e178896785d52f0..b2da3f8a5693f124bbeeeb41a11d085c2eb2f289 100644
--- a/civicrm/CRM/Mailing/DAO/Recipients.php
+++ b/civicrm/CRM/Mailing/DAO/Recipients.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Recipients.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:9b1fd81feabb976bc4447e5df79fb8ad)
+ * (GenCodeChecksum:9e621bb126085835039b2cf250f369c3)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/DAO/Spool.php b/civicrm/CRM/Mailing/DAO/Spool.php
index 891ec8b5c08db91b1807b1b6e8b3848f1140e824..1c4f6d070ed3537be79383251a6675f28b8b3adf 100644
--- a/civicrm/CRM/Mailing/DAO/Spool.php
+++ b/civicrm/CRM/Mailing/DAO/Spool.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Spool.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:be1b386bf2b06844863726171878fb37)
+ * (GenCodeChecksum:5ef6d1661cb18eb1fd2de817d056c5d8)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/DAO/TrackableURL.php b/civicrm/CRM/Mailing/DAO/TrackableURL.php
index e3fa29db83cf8f830c56c55e4f6901da7301b676..2c781d0494e430df4279edf2805a93bc22c78a19 100644
--- a/civicrm/CRM/Mailing/DAO/TrackableURL.php
+++ b/civicrm/CRM/Mailing/DAO/TrackableURL.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/TrackableURL.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:2eba75ecb9fc002adcc4a66cae55650a)
+ * (GenCodeChecksum:fe60c1aedeb870074d0da0e26f4427a8)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/Event/BAO/Confirm.php b/civicrm/CRM/Mailing/Event/BAO/Confirm.php
index c6b8f73e68d5adcca183cca9af175b8512c6f8c1..79a61fe090b12e1d0d6924e7744aed66df6850cf 100644
--- a/civicrm/CRM/Mailing/Event/BAO/Confirm.php
+++ b/civicrm/CRM/Mailing/Event/BAO/Confirm.php
@@ -9,6 +9,8 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Token\TokenProcessor;
+
 /**
  *
  * @package CRM
@@ -77,9 +79,6 @@ class CRM_Mailing_Event_BAO_Confirm extends CRM_Mailing_Event_DAO_Confirm {
 
     $transaction->commit();
 
-    $config = CRM_Core_Config::singleton();
-
-    $domain = CRM_Core_BAO_Domain::getDomain();
     list($domainEmailName, $domainEmailAddress) = CRM_Core_BAO_Domain::getNameAndEmail();
 
     list($display_name, $email) = CRM_Contact_BAO_Contact_Location::getEmailDetails($se->contact_id);
@@ -111,13 +110,23 @@ class CRM_Mailing_Event_BAO_Confirm extends CRM_Mailing_Event_DAO_Confirm {
     $bao = new CRM_Mailing_BAO_Mailing();
     $bao->body_text = $text;
     $bao->body_html = $html;
-    $tokens = $bao->getTokens();
-
-    $html = CRM_Utils_Token::replaceDomainTokens($html, $domain, TRUE, $tokens['html']);
-    $html = CRM_Utils_Token::replaceWelcomeTokens($html, $group->title, TRUE);
-
-    $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, FALSE, $tokens['text']);
-    $text = CRM_Utils_Token::replaceWelcomeTokens($text, $group->title, FALSE);
+    $templates = $bao->getTemplates();
+
+    $html = CRM_Utils_Token::replaceWelcomeTokens($templates['html'], $group->title, TRUE);
+    $text = CRM_Utils_Token::replaceWelcomeTokens($templates['text'], $group->title, FALSE);
+
+    $tokenProcessor = new TokenProcessor(\Civi::dispatcher(), [
+      'controller' => __CLASS__,
+      'smarty' => FALSE,
+      'schema' => ['contactId'],
+    ]);
+
+    $tokenProcessor->addMessage('body_html', $html, 'text/html');
+    $tokenProcessor->addMessage('body_text', $text, 'text/plain');
+    $tokenProcessor->addRow(['contactId' => $contact_id]);
+    $tokenProcessor->evaluate();
+    $html = $tokenProcessor->getRow(0)->render('body_html');
+    $text = $tokenProcessor->getRow(0)->render('body_text');
 
     $mailParams = [
       'groupName' => 'Mailing Event ' . $component->component_type,
diff --git a/civicrm/CRM/Mailing/Event/BAO/Opened.php b/civicrm/CRM/Mailing/Event/BAO/Opened.php
index 81a57a16a082f1de36310da4fa4130a8e47132f1..4242251291494c5391db43a758e9c00f48650537 100644
--- a/civicrm/CRM/Mailing/Event/BAO/Opened.php
+++ b/civicrm/CRM/Mailing/Event/BAO/Opened.php
@@ -108,7 +108,7 @@ class CRM_Mailing_Event_BAO_Opened extends CRM_Mailing_Event_DAO_Opened {
    * @see https://issues.civicrm.org/jira/browse/CRM-12814
    * Get opened count for each mailing for a given set of mailing IDs
    *
-   * @param $mailingIDs
+   * @param int[] $mailingIDs
    *
    * @return array
    *   Opened count per mailing ID
diff --git a/civicrm/CRM/Mailing/Event/BAO/Resubscribe.php b/civicrm/CRM/Mailing/Event/BAO/Resubscribe.php
index dea877f6a0811c2d0307ed4ad0f45a29c76e81fc..4ad33c8479509e97b3368632652ffedc0021b197 100644
--- a/civicrm/CRM/Mailing/Event/BAO/Resubscribe.php
+++ b/civicrm/CRM/Mailing/Event/BAO/Resubscribe.php
@@ -9,6 +9,8 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Token\TokenProcessor;
+
 /**
  *
  * @package CRM
@@ -232,19 +234,32 @@ class CRM_Mailing_Event_BAO_Resubscribe {
     $bao->body_text = $text;
     $bao->body_html = $html;
     $tokens = $bao->getTokens();
+    $templates = $bao->getTemplates();
+
     if ($eq->format == 'HTML' || $eq->format == 'Both') {
-      $html = CRM_Utils_Token::replaceDomainTokens($html, $domain, TRUE, $tokens['html']);
-      $html = CRM_Utils_Token::replaceResubscribeTokens($html, $domain, $groups, TRUE, $eq->contact_id, $eq->hash);
+      $html = CRM_Utils_Token::replaceResubscribeTokens($templates['html'], $domain, $groups, TRUE, $eq->contact_id, $eq->hash);
       $html = CRM_Utils_Token::replaceActionTokens($html, $addresses, $urls, TRUE, $tokens['html']);
       $html = CRM_Utils_Token::replaceMailingTokens($html, $dao, NULL, $tokens['html']);
     }
     if (!$html || $eq->format == 'Text' || $eq->format == 'Both') {
-      $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, TRUE, $tokens['text']);
-      $text = CRM_Utils_Token::replaceResubscribeTokens($text, $domain, $groups, FALSE, $eq->contact_id, $eq->hash);
+      $text = CRM_Utils_Token::replaceResubscribeTokens($templates['text'], $domain, $groups, FALSE, $eq->contact_id, $eq->hash);
       $text = CRM_Utils_Token::replaceActionTokens($text, $addresses, $urls, FALSE, $tokens['text']);
       $text = CRM_Utils_Token::replaceMailingTokens($text, $dao, NULL, $tokens['text']);
     }
 
+    $tokenProcessor = new TokenProcessor(\Civi::dispatcher(), [
+      'controller' => __CLASS__,
+      'smarty' => FALSE,
+      'schema' => ['contactId'],
+    ]);
+
+    $tokenProcessor->addMessage('body_html', $html, 'text/html');
+    $tokenProcessor->addMessage('body_text', $text, 'text/plain');
+    $tokenProcessor->addRow(['contactId' => $eq->contact_id]);
+    $tokenProcessor->evaluate();
+    $html = $tokenProcessor->getRow(0)->render('body_html');
+    $text = $tokenProcessor->getRow(0)->render('body_text');
+
     $params = [
       'subject' => $component->subject,
       'from' => "\"{$domainEmailName}\" <{$domainEmailAddress}>",
diff --git a/civicrm/CRM/Mailing/Event/BAO/Subscribe.php b/civicrm/CRM/Mailing/Event/BAO/Subscribe.php
index c31849b7daeb4e6fbd6a17c19920c4a774b6fc51..5c9044b2bc298da373f13c6d346be60bd26a3626 100644
--- a/civicrm/CRM/Mailing/Event/BAO/Subscribe.php
+++ b/civicrm/CRM/Mailing/Event/BAO/Subscribe.php
@@ -9,6 +9,8 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Token\TokenProcessor;
+
 /**
  *
  * @package CRM
@@ -223,22 +225,27 @@ SELECT     civicrm_email.id as email_id
     $bao = new CRM_Mailing_BAO_Mailing();
     $bao->body_text = $text;
     $bao->body_html = $html;
-    $tokens = $bao->getTokens();
+    $templates = $bao->getTemplates();
 
-    $html = CRM_Utils_Token::replaceDomainTokens($html, $domain, TRUE, $tokens['html']);
-    $html = CRM_Utils_Token::replaceSubscribeTokens($html,
-      $group->title,
-      $url, TRUE
-    );
+    $html = CRM_Utils_Token::replaceSubscribeTokens($templates['html'], $group->title, $url, TRUE);
+    $text = CRM_Utils_Token::replaceSubscribeTokens($templates['text'], $group->title, $url, FALSE);
 
-    $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, FALSE, $tokens['text']);
-    $text = CRM_Utils_Token::replaceSubscribeTokens($text,
-      $group->title,
-      $url, FALSE
-    );
     // render the &amp; entities in text mode, so that the links work
     $text = str_replace('&amp;', '&', $text);
 
+    $tokenProcessor = new TokenProcessor(\Civi::dispatcher(), [
+      'controller' => __CLASS__,
+      'smarty' => FALSE,
+      'schema' => ['contactId'],
+    ]);
+
+    $tokenProcessor->addMessage('body_html', $html, 'text/html');
+    $tokenProcessor->addMessage('body_text', $text, 'text/plain');
+    $tokenProcessor->addRow(['contactId' => $this->contact_id]);
+    $tokenProcessor->evaluate();
+    $html = $tokenProcessor->getRow(0)->render('body_html');
+    $text = $tokenProcessor->getRow(0)->render('body_text');
+
     CRM_Mailing_BAO_Mailing::addMessageIdHeader($params, 's',
       $this->contact_id,
       $this->id,
diff --git a/civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php b/civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php
index 7c393cfec791b50e010e9dd023874e3c59e9e941..f2c92079e923afc9c8a5bbe65c07e05f6c240dc9 100644
--- a/civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php
+++ b/civicrm/CRM/Mailing/Event/BAO/Unsubscribe.php
@@ -9,6 +9,8 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Token\TokenProcessor;
+
 /**
  *
  * @package CRM
@@ -399,20 +401,31 @@ WHERE  email = %2
     $bao->body_text = $text;
     $bao->body_html = $html;
     $tokens = $bao->getTokens();
+    $templates = $bao->getTemplates();
+
     if ($eq->format == 'HTML' || $eq->format == 'Both') {
-      $html = CRM_Utils_Token::replaceDomainTokens($html, $domain, TRUE, $tokens['html']);
-      $html = CRM_Utils_Token::replaceUnsubscribeTokens($html, $domain, $groups, TRUE, $eq->contact_id, $eq->hash);
+      $html = CRM_Utils_Token::replaceUnsubscribeTokens($templates['html'], $domain, $groups, TRUE, $eq->contact_id, $eq->hash);
       $html = CRM_Utils_Token::replaceActionTokens($html, $addresses, $urls, TRUE, $tokens['html']);
       $html = CRM_Utils_Token::replaceMailingTokens($html, $dao, NULL, $tokens['html']);
     }
     if (!$html || $eq->format == 'Text' || $eq->format == 'Both') {
-      $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, FALSE, $tokens['text']);
-      $text = CRM_Utils_Token::replaceUnsubscribeTokens($text, $domain, $groups, FALSE, $eq->contact_id, $eq->hash);
+      $text = CRM_Utils_Token::replaceUnsubscribeTokens($templates['text'], $domain, $groups, FALSE, $eq->contact_id, $eq->hash);
       $text = CRM_Utils_Token::replaceActionTokens($text, $addresses, $urls, FALSE, $tokens['text']);
       $text = CRM_Utils_Token::replaceMailingTokens($text, $dao, NULL, $tokens['text']);
     }
 
-    $emailDomain = CRM_Core_BAO_MailSettings::defaultDomain();
+    $tokenProcessor = new TokenProcessor(\Civi::dispatcher(), [
+      'controller' => __CLASS__,
+      'smarty' => FALSE,
+      'schema' => ['contactId'],
+    ]);
+
+    $tokenProcessor->addMessage('body_html', $html, 'text/html');
+    $tokenProcessor->addMessage('body_text', $text, 'text/plain');
+    $tokenProcessor->addRow(['contactId' => $eq->contact_id]);
+    $tokenProcessor->evaluate();
+    $html = $tokenProcessor->getRow(0)->render('body_html');
+    $text = $tokenProcessor->getRow(0)->render('body_text');
 
     $params = [
       'subject' => $component->subject,
diff --git a/civicrm/CRM/Mailing/Event/DAO/Bounce.php b/civicrm/CRM/Mailing/Event/DAO/Bounce.php
index 0c1d94d0aa95ad5d8daa707769fa9c77d860882a..5815113eea63005e8a8addef256cb3912725d5b5 100644
--- a/civicrm/CRM/Mailing/Event/DAO/Bounce.php
+++ b/civicrm/CRM/Mailing/Event/DAO/Bounce.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Event/Bounce.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:d4f63c10a945788a302f4c199cfc52f0)
+ * (GenCodeChecksum:0039dfc45bc3614afea343b03495ef2f)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/Event/DAO/Confirm.php b/civicrm/CRM/Mailing/Event/DAO/Confirm.php
index 04701df1899fd71f48ccd042e11129bb2b652ab2..c48eaa085f5cc121e0d4a0782ddee841b7878715 100644
--- a/civicrm/CRM/Mailing/Event/DAO/Confirm.php
+++ b/civicrm/CRM/Mailing/Event/DAO/Confirm.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Event/Confirm.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:70037cdb7d4ba64a26993149a95135a9)
+ * (GenCodeChecksum:541fa1d03371978c7f6b627092a5f905)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/Event/DAO/Delivered.php b/civicrm/CRM/Mailing/Event/DAO/Delivered.php
index c3ef1eccbbef9291d85703a5f910084563391fdf..d7fb0708f8db7260f9d28919e19930ffa4874f6b 100644
--- a/civicrm/CRM/Mailing/Event/DAO/Delivered.php
+++ b/civicrm/CRM/Mailing/Event/DAO/Delivered.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Event/Delivered.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0868640ae2c11be9c92be341ca74d0bc)
+ * (GenCodeChecksum:296ca619a8ce90181b074c5462231885)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/Event/DAO/Forward.php b/civicrm/CRM/Mailing/Event/DAO/Forward.php
index 763c5f6d6376cd2887229e0d15c624dd2e9a78e0..5294c57af57c50bccdab005199b06b9a48afcc0e 100644
--- a/civicrm/CRM/Mailing/Event/DAO/Forward.php
+++ b/civicrm/CRM/Mailing/Event/DAO/Forward.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Event/Forward.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4fc0787d204ec05deef20a6b3f3f0de0)
+ * (GenCodeChecksum:00dc8a162f5341080dbc2c5174c02d1e)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/Event/DAO/Opened.php b/civicrm/CRM/Mailing/Event/DAO/Opened.php
index d0ef057592e81a1ccb43a2dcd8badfdfcaccfbff..1b17409c3e8a98f1a4f536e86d6a931c720ff3ed 100644
--- a/civicrm/CRM/Mailing/Event/DAO/Opened.php
+++ b/civicrm/CRM/Mailing/Event/DAO/Opened.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Event/Opened.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a1d86a2d8080e57f206e2a7adcbbc276)
+ * (GenCodeChecksum:d4d67ce8cffda8d6a69393bb05c4de22)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/Event/DAO/Queue.php b/civicrm/CRM/Mailing/Event/DAO/Queue.php
index 1cdc4dd5c8d2d70fe345b903e18fe27dbd1b4463..e2c9316970f7541b6d619bb3a5eb508cd345a3dd 100644
--- a/civicrm/CRM/Mailing/Event/DAO/Queue.php
+++ b/civicrm/CRM/Mailing/Event/DAO/Queue.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Event/Queue.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:774aa2cfd13fdd3f0e27e051453c3dc1)
+ * (GenCodeChecksum:989398dbe144d82d1f6998d7ae3677f3)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/Event/DAO/Reply.php b/civicrm/CRM/Mailing/Event/DAO/Reply.php
index 3b7d04b7bb0fe52e70d0bbded3b4f0a186ea9bcf..5543eb73311b0859fb8f628ecf7da868599369a2 100644
--- a/civicrm/CRM/Mailing/Event/DAO/Reply.php
+++ b/civicrm/CRM/Mailing/Event/DAO/Reply.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Event/Reply.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:530a4b8ec0e37cbd23bf0acf8be67181)
+ * (GenCodeChecksum:ae509f21899ac03e3da0c904bb43cffe)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/Event/DAO/Subscribe.php b/civicrm/CRM/Mailing/Event/DAO/Subscribe.php
index f8e6ea7f95076ae2ee5c93b4e42017d9e58deb08..d10e4ceaa4e7ea097833ccef5ae9c6be60b5424c 100644
--- a/civicrm/CRM/Mailing/Event/DAO/Subscribe.php
+++ b/civicrm/CRM/Mailing/Event/DAO/Subscribe.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Event/Subscribe.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:e58268ec0a5deff45a3b5ab2527bed48)
+ * (GenCodeChecksum:d0c2fb1cb607f3aff970628d70d2b356)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/Event/DAO/TrackableURLOpen.php b/civicrm/CRM/Mailing/Event/DAO/TrackableURLOpen.php
index 7aeefdacac5bcaa38d7db0aad77de0e4a0b8ced7..ec1c76091bbc20eb7d81f71e20e126ecbe593da9 100644
--- a/civicrm/CRM/Mailing/Event/DAO/TrackableURLOpen.php
+++ b/civicrm/CRM/Mailing/Event/DAO/TrackableURLOpen.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Event/TrackableURLOpen.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:a49c335dfa1bde412a6123d715c9ef34)
+ * (GenCodeChecksum:d8f4ab49b2b156e5a954579ebf038572)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/Event/DAO/Unsubscribe.php b/civicrm/CRM/Mailing/Event/DAO/Unsubscribe.php
index 86351e54e7fc268463990c47c51f2fba5aecc50c..f557959418d802c3c65f5a69c760b37c7e2b102b 100644
--- a/civicrm/CRM/Mailing/Event/DAO/Unsubscribe.php
+++ b/civicrm/CRM/Mailing/Event/DAO/Unsubscribe.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Mailing/Event/Unsubscribe.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:3df64dd9a8d374056fcf215672b365d6)
+ * (GenCodeChecksum:50dc3eee57e51ea43d12ede76cb6d6c9)
  */
 
 /**
diff --git a/civicrm/CRM/Mailing/Info.php b/civicrm/CRM/Mailing/Info.php
index 4894c74c9957a5cdf223a83073d3023341a0ef5f..e30a0dee84f4f2ec3d629da577906e197368571f 100644
--- a/civicrm/CRM/Mailing/Info.php
+++ b/civicrm/CRM/Mailing/Info.php
@@ -110,6 +110,7 @@ class CRM_Mailing_Info extends CRM_Core_Component_Info {
       'reportIds' => $reportIds,
       'enabledLanguages' => $enabledLanguages,
       'isMultiLingual' => $isMultiLingual,
+      'autoRecipientRebuild' => Civi::settings()->get('auto_recipient_rebuild'),
     ];
     return $crmMailingSettings;
   }
diff --git a/civicrm/CRM/Mailing/Page/Browse.php b/civicrm/CRM/Mailing/Page/Browse.php
index 74f1d3ff4f397ea3fc3e4623fb61416892354bed..76d97ad3b1130c161b87df2f520b6789c14e002e 100644
--- a/civicrm/CRM/Mailing/Page/Browse.php
+++ b/civicrm/CRM/Mailing/Page/Browse.php
@@ -283,7 +283,7 @@ class CRM_Mailing_Page_Browse extends CRM_Core_Page {
     $url = CRM_Utils_System::url($urlString, $urlParams);
     $session->pushUserContext($url);
 
-    // CRM-6862 -run form cotroller after
+    // CRM-6862 -run form controller after
     // selector, since it erase $_POST
     $this->search();
 
@@ -315,11 +315,8 @@ class CRM_Mailing_Page_Browse extends CRM_Core_Page {
    * @return string
    */
   public function whereClause(&$params, $sortBy = TRUE) {
-    $values = [];
-
     $clauses = [];
     $title = $this->get('mailing_name');
-    // echo " name=$title  ";
     if ($title) {
       $clauses[] = 'name LIKE %1';
       if (strpos($title, '%') !== FALSE) {
@@ -336,12 +333,12 @@ class CRM_Mailing_Page_Browse extends CRM_Core_Page {
       $clauses[] = "name LIKE '" . strtolower(CRM_Core_DAO::escapeWildCardString($this->_sortByCharacter)) . "%'";
     }
 
-    $campainIds = $this->get('campaign_id');
-    if (!CRM_Utils_System::isNull($campainIds)) {
-      if (!is_array($campainIds)) {
+    $campaignIds = $this->get('campaign_id');
+    if (!CRM_Utils_System::isNull($campaignIds)) {
+      if (!is_array($campaignIds)) {
         $campaignIds = [$campaignIds];
       }
-      $clauses[] = '( campaign_id IN ( ' . implode(' , ', array_values($campainIds)) . ' ) )';
+      $clauses[] = '( campaign_id IN ( ' . implode(' , ', array_values($campaignIds)) . ' ) )';
     }
 
     return implode(' AND ', $clauses);
diff --git a/civicrm/CRM/Mailing/PseudoConstant.php b/civicrm/CRM/Mailing/PseudoConstant.php
index aab47354374e6da687f53fdc86d8265f32e06d4f..cd8064400c7fc562d39420904a6e4641bbde25aa 100644
--- a/civicrm/CRM/Mailing/PseudoConstant.php
+++ b/civicrm/CRM/Mailing/PseudoConstant.php
@@ -236,9 +236,8 @@ class CRM_Mailing_PseudoConstant extends CRM_Core_PseudoConstant {
   /**
    * Labels for advanced search against mailing summary.
    *
-   * @param $field
-   *
-   * @return unknown_type
+   * @param string $field
+   * @return array
    */
   public static function &yesNoOptions($field) {
     static $options;
diff --git a/civicrm/CRM/Member/BAO/Membership.php b/civicrm/CRM/Member/BAO/Membership.php
index 7daf555876735d2be9f89262ec2be52bc86ad9ba..40e6d0a5f071c8d44f121085a1f7c7a289dc2a53 100644
--- a/civicrm/CRM/Member/BAO/Membership.php
+++ b/civicrm/CRM/Member/BAO/Membership.php
@@ -915,8 +915,11 @@ INNER JOIN  civicrm_membership_type type ON ( type.id = membership.membership_ty
    * @return array
    *   array of importable Fields
    * @throws \CRM_Core_Exception
+   *
+   * @deprecated
    */
   public static function importableFields($contactType = 'Individual', $status = TRUE) {
+    CRM_Core_Error::deprecatedFunctionWarning('api');
     $fields = Civi::cache('fields')->get('membership_importable_fields' . $contactType . $status);
     if (!$fields) {
       if (!$status) {
diff --git a/civicrm/CRM/Member/BAO/Query.php b/civicrm/CRM/Member/BAO/Query.php
index ed6702e9162e4126a461f2f3763a6c79fe3aca89..7f91f01a4017b9b81cfdabc5a4c1ef7ac3b04f88 100644
--- a/civicrm/CRM/Member/BAO/Query.php
+++ b/civicrm/CRM/Member/BAO/Query.php
@@ -150,7 +150,7 @@ class CRM_Member_BAO_Query extends CRM_Core_BAO_Query {
       // $this->buildRelativeDateQuery($values);
       return;
     }
-    list($name, $op, $value, $grouping) = $values;
+    [$name, $op, $value, $grouping] = $values;
     $fields = self::getFields();
 
     $quoteValue = NULL;
@@ -273,7 +273,7 @@ class CRM_Member_BAO_Query extends CRM_Core_BAO_Query {
           $value,
           "Integer"
         );
-        list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Member_DAO_Membership', $name, $value, $op);
+        [$op, $value] = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Member_DAO_Membership', $name, $value, $op);
         $query->_qill[$grouping][] = $qillName . ' ' . $op . ' ' . $value;
         $query->_tables['civicrm_membership'] = $query->_whereTables['civicrm_membership'] = 1;
         return;
diff --git a/civicrm/CRM/Member/DAO/Membership.php b/civicrm/CRM/Member/DAO/Membership.php
index dd6995cd3011f851dc9a01fa91ce19eff1f44555..1d5af2d3ab0c8608b416063421e567f747224e0d 100644
--- a/civicrm/CRM/Member/DAO/Membership.php
+++ b/civicrm/CRM/Member/DAO/Membership.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Member/Membership.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:1668d4d8a9f2e1686bf9f5b6ea1c55dc)
+ * (GenCodeChecksum:9e0cdfecdacffeddfd0a04e783f4be31)
  */
 
 /**
diff --git a/civicrm/CRM/Member/DAO/MembershipBlock.php b/civicrm/CRM/Member/DAO/MembershipBlock.php
index d51f917e0422e5a2576c37504590be931b88f567..3c967df254dbc6aed39a9ff03b5f99ff07728470 100644
--- a/civicrm/CRM/Member/DAO/MembershipBlock.php
+++ b/civicrm/CRM/Member/DAO/MembershipBlock.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Member/MembershipBlock.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:b8779f341fdb53bc75c0928fea73f06f)
+ * (GenCodeChecksum:0cdddc65191e5eb2732a7878455a3bb9)
  */
 
 /**
diff --git a/civicrm/CRM/Member/DAO/MembershipLog.php b/civicrm/CRM/Member/DAO/MembershipLog.php
index ead87623ba6ed0bc3816534b56f98172b4e62774..5fb5c9d960c38a5f56849f2fd894e8a7d078a650 100644
--- a/civicrm/CRM/Member/DAO/MembershipLog.php
+++ b/civicrm/CRM/Member/DAO/MembershipLog.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Member/MembershipLog.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:0064664a5741cb1f9ba8fea392dcef22)
+ * (GenCodeChecksum:2074f42ef8e122ffb1f44a1fe1967998)
  */
 
 /**
diff --git a/civicrm/CRM/Member/DAO/MembershipPayment.php b/civicrm/CRM/Member/DAO/MembershipPayment.php
index e8dbf3e64e04af3206ebf76f38efa671a8563083..f6fc5e289b3ca138b3d1fc169a426d2279ad2dc7 100644
--- a/civicrm/CRM/Member/DAO/MembershipPayment.php
+++ b/civicrm/CRM/Member/DAO/MembershipPayment.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Member/MembershipPayment.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ff33ff800a373cf9cf5e58ad1d5a3c94)
+ * (GenCodeChecksum:35abcb8b1a0c13be21265b7db9381211)
  */
 
 /**
diff --git a/civicrm/CRM/Member/DAO/MembershipStatus.php b/civicrm/CRM/Member/DAO/MembershipStatus.php
index 0b4d58277acb1d5f4b6ab4c5eb8990c43c1c8c1a..8747bb6a052f9b3fdbe929da3907b5cad5eaca84 100644
--- a/civicrm/CRM/Member/DAO/MembershipStatus.php
+++ b/civicrm/CRM/Member/DAO/MembershipStatus.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Member/MembershipStatus.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:baf51df46a12becf1b8ed3f8a25e2237)
+ * (GenCodeChecksum:33faa2f44bd7805910ac845eae26c31e)
  */
 
 /**
diff --git a/civicrm/CRM/Member/DAO/MembershipType.php b/civicrm/CRM/Member/DAO/MembershipType.php
index 40e9b671d316e9c3da5f3d19b2a5be218d8688d9..4e7eefb63d82a59db014c6ebd42d1ae3c60a9a8e 100644
--- a/civicrm/CRM/Member/DAO/MembershipType.php
+++ b/civicrm/CRM/Member/DAO/MembershipType.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Member/MembershipType.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:ebffd1b4dde86196cd988e43adcd6ad8)
+ * (GenCodeChecksum:bcafd12016f103a4f6e8383dca6c5e79)
  */
 
 /**
diff --git a/civicrm/CRM/Member/Form/Membership.php b/civicrm/CRM/Member/Form/Membership.php
index 78f15d79d191ab887b0485d6f00aca731a15f3b2..60e1d4591223648a620ce98ed4b6b0067e6f66c2 100644
--- a/civicrm/CRM/Member/Form/Membership.php
+++ b/civicrm/CRM/Member/Form/Membership.php
@@ -474,7 +474,7 @@ DESC limit 1");
     // Throw status bounce when no Membership type or priceset is present
     if (empty($this->allMembershipTypeDetails) && empty($priceSets)
     ) {
-      CRM_Core_Error::statusBounce(ts('You do not have all the permissions needed for this page.'));
+      CRM_Core_Error::statusBounce(ts("You either do not have all the permissions needed for this page, or the membership types haven't been fully configured."));
     }
     // retrieve all memberships
     $allMembershipInfo = [];
diff --git a/civicrm/CRM/Member/Form/Search.php b/civicrm/CRM/Member/Form/Search.php
index dd937142ff660f6c8752cd2ec7e52b3e541722e4..a0cc3e5ea01e84d1d24a2542e0e7a98c83dbac6b 100644
--- a/civicrm/CRM/Member/Form/Search.php
+++ b/civicrm/CRM/Member/Form/Search.php
@@ -300,7 +300,7 @@ class CRM_Member_Form_Search extends CRM_Core_Form_Search {
       $cid = CRM_Utils_Type::escape($cid, 'Integer');
       if ($cid > 0) {
         $this->_formValues['contact_id'] = $cid;
-        list($display, $image) = CRM_Contact_BAO_Contact::getDisplayAndImage($cid);
+        [$display, $image] = CRM_Contact_BAO_Contact::getDisplayAndImage($cid);
         $this->_defaults['sort_name'] = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $cid,
           'sort_name'
         );
@@ -311,24 +311,24 @@ class CRM_Member_Form_Search extends CRM_Core_Form_Search {
 
     $fromDate = CRM_Utils_Request::retrieve('start', 'Date');
     if ($fromDate) {
-      list($date) = CRM_Utils_Date::setDateDefaults($fromDate);
+      [$date] = CRM_Utils_Date::setDateDefaults($fromDate);
       $this->_formValues['member_start_date_low'] = $this->_defaults['member_start_date_low'] = $date;
     }
 
     $toDate = CRM_Utils_Request::retrieve('end', 'Date');
     if ($toDate) {
-      list($date) = CRM_Utils_Date::setDateDefaults($toDate);
+      [$date] = CRM_Utils_Date::setDateDefaults($toDate);
       $this->_formValues['member_start_date_high'] = $this->_defaults['member_start_date_high'] = $date;
     }
     $joinDate = CRM_Utils_Request::retrieve('join', 'Date');
     if ($joinDate) {
-      list($date) = CRM_Utils_Date::setDateDefaults($joinDate);
+      [$date] = CRM_Utils_Date::setDateDefaults($joinDate);
       $this->_formValues['member_join_date_low'] = $this->_defaults['member_join_date_low'] = $date;
     }
 
     $joinEndDate = CRM_Utils_Request::retrieve('joinEnd', 'Date');
     if ($joinEndDate) {
-      list($date) = CRM_Utils_Date::setDateDefaults($joinEndDate);
+      [$date] = CRM_Utils_Date::setDateDefaults($joinEndDate);
       $this->_formValues['member_join_date_high'] = $this->_defaults['member_join_date_high'] = $date;
     }
 
diff --git a/civicrm/CRM/Member/Import/Field.php b/civicrm/CRM/Member/Import/Field.php
deleted file mode 100644
index e4f44e5b3d2899a604b552aef04230297e743b82..0000000000000000000000000000000000000000
--- a/civicrm/CRM/Member/Import/Field.php
+++ /dev/null
@@ -1,194 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
- */
-
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC https://civicrm.org/licensing
- */
-class CRM_Member_Import_Field {
-
-  /**
-   * #@+
-   * @var string
-   */
-
-  /**
-   * Name of the field
-   * @var string
-   */
-  public $_name;
-
-  /**
-   * Title of the field to be used in display
-   * @var string
-   */
-  public $_title;
-
-  /**
-   * Type of field
-   * @var int
-   */
-  public $_type;
-
-  /**
-   * Is this field required
-   * @var bool
-   */
-  public $_required;
-
-  /**
-   * Data to be carried for use by a derived class
-   * @var object
-   */
-  public $_payload;
-
-  /**
-   * Regexp to match the CSV header of this column/field
-   * @var string
-   */
-  public $_headerPattern;
-
-  /**
-   * Regexp to match the pattern of data from various column/fields
-   * @var string
-   */
-  public $_dataPattern;
-
-  /**
-   * Value of this field
-   * @var string|null
-   */
-  public $_value;
-
-  /**
-   * @param string $name
-   * @param string $title
-   * @param int $type
-   * @param string $headerPattern
-   * @param string $dataPattern
-   */
-  public function __construct($name, $title, $type = CRM_Utils_Type::T_INT, $headerPattern = '//', $dataPattern = '//') {
-    $this->_name = $name;
-    $this->_title = $title;
-    $this->_type = $type;
-    $this->_headerPattern = $headerPattern;
-    $this->_dataPattern = $dataPattern;
-
-    $this->_value = NULL;
-  }
-
-  public function resetValue() {
-    $this->_value = NULL;
-  }
-
-  /**
-   * The value is in string format. convert the value to the type of this field
-   * and set the field value with the appropriate type
-   *
-   * @param string $value
-   */
-  public function setValue($value) {
-    $this->_value = $value;
-  }
-
-  /**
-   * @return bool
-   */
-  public function validate() {
-
-    if (CRM_Utils_System::isNull($this->_value)) {
-      return TRUE;
-    }
-
-    switch ($this->_name) {
-      case 'contact_id':
-        // note: we validate existence of the contact in API, upon
-        // insert (it would be too costly to do a db call here)
-        return CRM_Utils_Rule::integer($this->_value);
-
-      case 'receive_date':
-      case 'cancel_date':
-      case 'receipt_date':
-      case 'thankyou_date':
-        return CRM_Utils_Rule::date($this->_value);
-
-      case 'non_deductible_amount':
-      case 'total_amount':
-      case 'fee_amount':
-      case 'net_amount':
-        return CRM_Utils_Rule::money($this->_value);
-
-      case 'trxn_id':
-        static $seenTrxnIds = [];
-        if (in_array($this->_value, $seenTrxnIds)) {
-          return FALSE;
-        }
-        elseif ($this->_value) {
-          $seenTrxnIds[] = $this->_value;
-          return TRUE;
-        }
-        else {
-          $this->_value = NULL;
-          return TRUE;
-        }
-        break;
-
-      case 'currency':
-        return CRM_Utils_Rule::currencyCode($this->_value);
-
-      case 'membership_type':
-        static $membershipTypes = NULL;
-        if (!$membershipTypes) {
-          $membershipTypes = CRM_Member_PseudoConstant::membershipType();
-        }
-        if (in_array($this->_value, $membershipTypes)) {
-          return TRUE;
-        }
-        else {
-          return FALSE;
-        }
-        break;
-
-      case 'payment_instrument':
-        static $paymentInstruments = NULL;
-        if (!$paymentInstruments) {
-          $paymentInstruments = CRM_Member_PseudoConstant::paymentInstrument();
-        }
-        if (in_array($this->_value, $paymentInstruments)) {
-          return TRUE;
-        }
-        else {
-          return FALSE;
-        }
-        break;
-
-      default:
-        break;
-    }
-
-    // check whether that's a valid custom field id
-    // and if so, check the contents' validity
-    if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($this->_name)) {
-      static $customFields = NULL;
-      if (!$customFields) {
-        $customFields = CRM_Core_BAO_CustomField::getFields('Membership');
-      }
-      if (!array_key_exists($customFieldID, $customFields)) {
-        return FALSE;
-      }
-      return CRM_Core_BAO_CustomValue::typecheck($customFields[$customFieldID]['data_type'], $this->_value);
-    }
-
-    return TRUE;
-  }
-
-}
diff --git a/civicrm/CRM/Member/Import/Form/MapField.php b/civicrm/CRM/Member/Import/Form/MapField.php
index bee1f3a925518467c6c3d9f698f9a68caf2eb004..50b4b134bd47803a3d0d57a8f9e4570b19ea6451 100644
--- a/civicrm/CRM/Member/Import/Form/MapField.php
+++ b/civicrm/CRM/Member/Import/Form/MapField.php
@@ -23,100 +23,18 @@ class CRM_Member_Import_Form_MapField extends CRM_Import_Form_MapField {
   /**
    * Build the form object.
    *
-   * @return void
+   * @throws \CRM_Core_Exception
    */
-  public function buildQuickForm() {
-    $this->buildSavedMappingFields($this->getSubmittedValue('savedMapping'));
-    $this->addFormRule(array('CRM_Member_Import_Form_MapField', 'formRule'), $this);
-
-    //-------- end of saved mapping stuff ---------
-
-    $defaults = [];
-    $columnHeaders = $this->getColumnHeaders();
-    $hasHeaders = $this->getSubmittedValue('skipColumnHeader');
-    $headerPatterns = $this->getHeaderPatterns();
-    $dataPatterns = $this->getDataPatterns();
-    // For most fields using the html label is a good thing
-    // but for contact ID we really want to specify ID.
-    $this->_mapperFields['membership_contact_id'] = ts('Contact ID');
-    $sel1 = $this->_mapperFields;
-    if (!$this->getSubmittedValue('onDuplicate')) {
-      // If not updating then do not allow membership id.
-      unset($sel1['membership_id']);
-    }
-
-    $js = "<script type='text/javascript'>\n";
-    $formName = 'document.forms.' . $this->_name;
-
-    $fieldMappings = $this->getFieldMappings();
-
-    foreach ($columnHeaders as $i => $columnHeader) {
-      $sel = &$this->addElement('hierselect', "mapper[$i]", ts('Mapper for Field %1', array(1 => $i)), NULL);
-      $jsSet = FALSE;
-      if ($this->getSubmittedValue('savedMapping')) {
-        $fieldMapping = $fieldMappings[$i] ?? NULL;
-        if (isset($fieldMappings[$i])) {
-          if ($fieldMapping['name'] != ts('do_not_import')) {
-            //When locationType is not set
-            $js .= "{$formName}['mapper[$i][1]'].style.display = 'none';\n";
-
-            //When phoneType is not set
-            $js .= "{$formName}['mapper[$i][2]'].style.display = 'none';\n";
+  public function buildQuickForm(): void {
+    $this->addSavedMappingFields();
+    $this->addFormRule(['CRM_Member_Import_Form_MapField', 'formRule'], $this);
 
-            $js .= "{$formName}['mapper[$i][3]'].style.display = 'none';\n";
-
-            $defaults["mapper[$i]"] = [$fieldMapping['name']];
-            $jsSet = TRUE;
-          }
-          else {
-            $defaults["mapper[$i]"] = [];
-          }
-          if (!$jsSet) {
-            for ($k = 1; $k < 4; $k++) {
-              $js .= "{$formName}['mapper[$i][$k]'].style.display = 'none';\n";
-            }
-          }
-        }
-        else {
-          // this load section to help mapping if we ran out of saved columns when doing Load Mapping
-          $js .= "swapOptions($formName, 'mapper[$i]', 0, 3, 'hs_mapper_" . $i . "_');\n";
-
-          if ($hasHeaders) {
-            $defaults["mapper[$i]"] = array($this->defaultFromHeader($columnHeader, $headerPatterns));
-          }
-          else {
-            $defaults["mapper[$i]"] = array($this->defaultFromData($dataPatterns, $i));
-          }
-        }
-        //end of load mapping
-      }
-      else {
-        $js .= "swapOptions($formName, 'mapper[$i]', 0, 3, 'hs_mapper_" . $i . "_');\n";
-        if ($this->getSubmittedValue('skipColumnHeader')) {
-          // Infer the default from the skipped headers if we have them
-          $defaults["mapper[$i]"] = array(
-            $this->defaultFromHeader($columnHeader,
-              $headerPatterns
-            ),
-            //                     $defaultLocationType->id
-            0,
-          );
-        }
-        else {
-          // Otherwise guess the default from the form of the data
-          $defaults["mapper[$i]"] = array(
-            $this->defaultFromData($dataPatterns, $i),
-            //                     $defaultLocationType->id
-            0,
-          );
-        }
-      }
-      $sel->setOptions([$sel1]);
+    $options = $this->getFieldOptions();
+    foreach ($this->getColumnHeaders() as $i => $columnHeader) {
+      $this->add('select2', "mapper[$i]", ts('Mapper for Field %1', [1 => $i]), $options, FALSE, ['class' => 'big', 'placeholder' => ts('- do not import -')]);
     }
-    $js .= "</script>\n";
-    $this->assign('initHideBoxes', $js);
 
-    $this->setDefaults($defaults);
+    $this->setDefaults($this->getDefaults());
 
     $this->addFormButtons();
   }
@@ -138,7 +56,7 @@ class CRM_Member_Import_Form_MapField extends CRM_Import_Form_MapField {
 
     $importKeys = [];
     foreach ($fields['mapper'] as $mapperPart) {
-      $importKeys[] = $mapperPart[0];
+      $importKeys[] = $mapperPart;
     }
     // FIXME: should use the schema titles, not redeclare them
     $requiredFields = array(
@@ -189,29 +107,7 @@ class CRM_Member_Import_Form_MapField extends CRM_Import_Form_MapField {
         }
       }
     }
-
-    if (!empty($fields['saveMapping'])) {
-      $nameField = $fields['saveMappingName'] ?? NULL;
-      if (empty($nameField)) {
-        $errors['saveMappingName'] = ts('Name is required to save Import Mapping');
-      }
-      else {
-        if (CRM_Core_BAO_Mapping::checkMapping($nameField, CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_Mapping', 'mapping_type_id', 'Import Membership'))) {
-          $errors['saveMappingName'] = ts('Duplicate Import Membership Mapping Name');
-        }
-      }
-    }
-
-    if (!empty($errors)) {
-      if (!empty($errors['saveMappingName'])) {
-        $_flag = 1;
-        $assignError = new CRM_Core_Page();
-        $assignError->assign('mappingDetailsError', $_flag);
-      }
-      return $errors;
-    }
-
-    return TRUE;
+    return $errors ?: TRUE;
   }
 
   /**
@@ -281,4 +177,29 @@ class CRM_Member_Import_Form_MapField extends CRM_Import_Form_MapField {
     return $highlightedFields;
   }
 
+  /**
+   * Get default values for the mapping.
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getDefaults(): array {
+    $defaults = [];
+    $headerPatterns = $this->getHeaderPatterns();
+    $fieldMappings = $this->getFieldMappings();
+    foreach ($this->getColumnHeaders() as $i => $columnHeader) {
+      if ($this->getSubmittedValue('savedMapping')) {
+        $fieldMapping = $fieldMappings[$i] ?? NULL;
+        if (isset($fieldMappings[$i])) {
+          $defaults["mapper[$i]"] = ($fieldMapping['name'] !== 'do_not_import') ? $fieldMapping['name'] : NULL;
+        }
+      }
+      if (!isset($defaults["mapper[$i]"]) && $this->getSubmittedValue('skipColumnHeader')) {
+        $defaults["mapper[$i]"] = $this->defaultFromHeader($columnHeader, $headerPatterns);
+      }
+    }
+    return $defaults;
+  }
+
 }
diff --git a/civicrm/CRM/Member/Import/Form/Summary.php b/civicrm/CRM/Member/Import/Form/Summary.php
deleted file mode 100644
index de46749c5eaf644e7fb1ed9f57a8a7143af7861f..0000000000000000000000000000000000000000
--- a/civicrm/CRM/Member/Import/Form/Summary.php
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
- */
-
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC https://civicrm.org/licensing
- */
-
-/**
- * This class summarizes the import results
- * @todo - this class is no longer used - it just needs to
- * be removed when the other summary classes are removed from the
- * import controller.
- */
-class CRM_Member_Import_Form_Summary extends CRM_Import_Form_Summary {
-
-}
diff --git a/civicrm/CRM/Member/Import/Parser/Membership.php b/civicrm/CRM/Member/Import/Parser/Membership.php
index 51cd93dcc18233a12cfbd640da4efd2a755b351a..a2d5554cb61eb331ce9fd9b3c2806d01527b5f54 100644
--- a/civicrm/CRM/Member/Import/Parser/Membership.php
+++ b/civicrm/CRM/Member/Import/Parser/Membership.php
@@ -70,34 +70,21 @@ class CRM_Member_Import_Parser_Membership extends CRM_Import_Parser {
         'id' => 'membership_import',
         'name' => 'membership_import',
         'label' => ts('Membership Import'),
+        'entity' => 'Membership',
       ],
     ];
   }
 
   /**
-   * @param string $name
-   * @param $title
-   * @param int $type
-   * @param string $headerPattern
-   * @param string $dataPattern
+   * Get a list of entities this import supports.
+   *
+   * @return array
    */
-  public function addField($name, $title, $type = CRM_Utils_Type::T_INT, $headerPattern = '//', $dataPattern = '//') {
-    if (empty($name)) {
-      $this->_fields['doNotImport'] = new CRM_Member_Import_Field($name, $title, $type, $headerPattern, $dataPattern);
-    }
-    else {
-
-      //$tempField = CRM_Contact_BAO_Contact::importableFields('Individual', null );
-      $tempField = CRM_Contact_BAO_Contact::importableFields('All', NULL);
-      if (!array_key_exists($name, $tempField)) {
-        $this->_fields[$name] = new CRM_Member_Import_Field($name, $title, $type, $headerPattern, $dataPattern);
-      }
-      else {
-        $this->_fields[$name] = new CRM_Contact_Import_Field($name, $title, $type, $headerPattern, $dataPattern,
-          CRM_Utils_Array::value('hasLocationType', $tempField[$name])
-        );
-      }
-    }
+  public function getImportEntities() : array {
+    return [
+      'Membership' => ['text' => ts('Membership Fields'), 'is_contact' => FALSE],
+      'Contact' => ['text' => ts('Contact Fields'), 'is_contact' => TRUE],
+    ];
   }
 
   /**
@@ -146,6 +133,9 @@ class CRM_Member_Import_Parser_Membership extends CRM_Import_Parser {
     $rowNumber = (int) ($values[array_key_last($values)]);
     try {
       $params = $this->getMappedRow($values);
+      if (!empty($params['contact_id'])) {
+        $this->validateContactID($params['contact_id'], $this->getContactType());
+      }
 
       //assign join date equal to start date if join date is not provided
       if (empty($params['join_date']) && !empty($params['start_date'])) {
@@ -166,9 +156,9 @@ class CRM_Member_Import_Parser_Membership extends CRM_Import_Parser {
         $formatValues[$key] = $field;
       }
 
-      //format params to meet api v2 requirements.
-      //@todo find a way to test removing this formatting
-      $this->membership_format_params($formatValues, $formatted, TRUE);
+      require_once 'api/v3/utils.php';
+      // It's very likely this line does nothing.
+      _civicrm_api3_store_values(CRM_Member_DAO_Membership::fields(), $formatValues, $formatted);
 
       if (!$this->isUpdateExisting()) {
         $formatted['custom'] = CRM_Core_BAO_CustomField::postProcess($formatted,
@@ -388,71 +378,62 @@ class CRM_Member_Import_Parser_Membership extends CRM_Import_Parser {
   }
 
   /**
-   * @deprecated - this function formats params according to v2 standards but
-   * need to be sure about the impact of not calling it so retaining on the import class
-   * take the input parameter list as specified in the data model and
-   * convert it into the same format that we use in QF and BAO object
-   *
-   * @param array $params
-   *   Associative array of property name/value.
-   *                             pairs to insert in new contact.
-   * @param array $values
-   *   The reformatted properties that we can use internally.
-   *
-   * @param array|bool $create Is the formatted Values array going to
-   *                             be used for CRM_Member_BAO_Membership:create()
-   *
-   * @throws Exception
-   * @return array|error
+   * Set field metadata.
    */
-  public function membership_format_params($params, &$values, $create = FALSE) {
-    require_once 'api/v3/utils.php';
-    $fields = CRM_Member_DAO_Membership::fields();
-    _civicrm_api3_store_values($fields, $params, $values);
-
-    foreach ($params as $key => $value) {
-
-      switch ($key) {
-        case 'contact_id':
-          if (!CRM_Utils_Rule::integer($value)) {
-            throw new Exception("contact_id not valid: $value");
-          }
-          $dao = new CRM_Core_DAO();
-          $qParams = [];
-          $svq = $dao->singleValueQuery("SELECT id FROM civicrm_contact WHERE id = $value",
-            $qParams
-          );
-          if (!$svq) {
-            throw new Exception("Invalid Contact ID: There is no contact record with contact_id = $value.");
-          }
-          $values[$key] = $value;
-          break;
-
-        default:
-          break;
-      }
+  protected function setFieldMetadata(): void {
+    if (empty($this->importableFieldsMetadata)) {
+      $metadata = $this->getImportableFields($this->getContactType());
+      // We are consolidating on `importableFieldsMetadata` - but both still used.
+      $this->importableFieldsMetadata = $this->fieldMetadata = $metadata;
     }
-
-    return NULL;
   }
 
   /**
-   * Set field metadata.
+   * @param string $contactType
+   *
+   * @return array|mixed
+   * @throws \CRM_Core_Exception
    */
-  protected function setFieldMetadata(): void {
-    if (empty($this->importableFieldsMetadata)) {
-      $metadata = CRM_Member_BAO_Membership::importableFields($this->getContactType(), FALSE);
-
-      foreach ($metadata as $name => $field) {
-        // @todo - we don't really need to do all this.... fieldMetadata is just fine to use as is.
-        $field['type'] = CRM_Utils_Array::value('type', $field, CRM_Utils_Type::T_INT);
-        $field['dataPattern'] = CRM_Utils_Array::value('dataPattern', $field, '//');
-        $field['headerPattern'] = CRM_Utils_Array::value('headerPattern', $field, '//');
-        $this->addField($name, $field['title'], $field['type'], $field['headerPattern'], $field['dataPattern']);
+  protected function getImportableFields($contactType = 'Individual') {
+    $fields = Civi::cache('fields')->get('membership_importable_fields' . $contactType);
+    if (!$fields) {
+      $fields = ['' => ['title' => '- ' . ts('do not import') . ' -']];
+
+      $tmpFields = CRM_Member_DAO_Membership::import();
+      $contactFields = CRM_Contact_BAO_Contact::importableFields($contactType, NULL);
+
+      // Using new Dedupe rule.
+      $ruleParams = [
+        'contact_type' => $contactType,
+        'used' => 'Unsupervised',
+      ];
+      $fieldsArray = CRM_Dedupe_BAO_DedupeRule::dedupeRuleFields($ruleParams);
+
+      $tmpContactField = [];
+      if (is_array($fieldsArray)) {
+        foreach ($fieldsArray as $value) {
+          $customFieldId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField',
+            $value,
+            'id',
+            'column_name'
+          );
+          $value = trim($customFieldId ? 'custom_' . $customFieldId : $value);
+          $tmpContactField[$value] = $contactFields[$value] ?? NULL;
+          $title = $tmpContactField[$value]['title'] . ' ' . ts('(match to contact)');
+          $tmpContactField[$value]['title'] = $title;
+        }
       }
-      // We are consolidating on `importableFieldsMetadata` - but both still used.
-      $this->importableFieldsMetadata = $this->fieldMetadata = $metadata;
+      $tmpContactField['external_identifier'] = $contactFields['external_identifier'];
+      $tmpContactField['external_identifier']['title'] = $contactFields['external_identifier']['title'] . ' ' . ts('(match to contact)');
+
+      $tmpFields['membership_contact_id']['title'] .= ' ' . ts('(match to contact)');
+
+      $fields = array_merge($fields, $tmpContactField);
+      $fields = array_merge($fields, $tmpFields);
+      $fields = array_merge($fields, CRM_Core_BAO_CustomField::getFieldsForImport('Membership'));
+      Civi::cache('fields')->set('membership_importable_fields' . $contactType, $fields);
     }
+    return $fields;
   }
 
   /**
diff --git a/civicrm/CRM/Member/Page/RecurringContributions.php b/civicrm/CRM/Member/Page/RecurringContributions.php
index 44c9c1062b25baeaeafe053d8a479deb286e9ced..5bd340fd9ded89273de39c439b8176e557b82b72 100644
--- a/civicrm/CRM/Member/Page/RecurringContributions.php
+++ b/civicrm/CRM/Member/Page/RecurringContributions.php
@@ -76,7 +76,6 @@ class CRM_Member_Page_RecurringContributions extends CRM_Core_Page {
       'membership_id' => $membershipID,
     ]);
     $recurringContributions = [];
-    $contributionStatuses = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'label');
 
     foreach ($result['values'] as $payment) {
       $recurringContributionID = (int) $payment['contribution_id.contribution_recur_id.id'];
@@ -96,7 +95,7 @@ class CRM_Member_Page_RecurringContributions extends CRM_Core_Page {
 
       $recurringContributions[$recurringContributionID]['id'] = $recurringContributionID;
       $recurringContributions[$recurringContributionID]['contactId'] = $contactID;
-      $recurringContributions[$recurringContributionID]['contribution_status'] = $contributionStatuses[$contributionStatusID] ?? NULL;
+      $recurringContributions[$recurringContributionID]['contribution_status'] = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', $contributionStatusID);
 
       $this->setActionsForRecurringContribution($recurringContributionID, $recurringContributions[$recurringContributionID]);
     }
diff --git a/civicrm/CRM/Member/Page/Tab.php b/civicrm/CRM/Member/Page/Tab.php
index 085212a2e8aced22cd203b54f91aa90c4f141946..5878ff8d1d5d6239bbc0625e329721e610d5e2e9 100644
--- a/civicrm/CRM/Member/Page/Tab.php
+++ b/civicrm/CRM/Member/Page/Tab.php
@@ -55,6 +55,7 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
     $dao = new CRM_Member_DAO_Membership();
     $dao->contact_id = $this->_contactId;
     $dao->whereAdd($addWhere);
+    $dao->orderBy('end_date DESC');
     $dao->find();
 
     //CRM--4418, check for view, edit, delete
@@ -297,8 +298,7 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
 
         //show associated soft credit when contribution payment is paid by different person in edit mode
         if ($this->_id && $this->_contactId) {
-          $filter = " AND cc.id IN (SELECT contribution_id FROM civicrm_membership_payment WHERE membership_id = {$this->_id})";
-          $softCreditList = CRM_Contribute_BAO_ContributionSoft::getSoftContributionList($this->_contactId, $filter);
+          $softCreditList = CRM_Contribute_BAO_ContributionSoft::getSoftContributionList($this->_contactId, $this->_id);
           if (!empty($softCreditList)) {
             $this->assign('softCredit', TRUE);
             $this->assign('softCreditRows', $softCreditList);
@@ -350,9 +350,11 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
   }
 
   /**
-   * the main function that is called when the page loads, it decides the which action has to be taken for the page.
+   * the main function that is called when the page loads, it decides the which
+   * action has to be taken for the page.
    *
    * @return null
+   * @throws \API_Exception
    */
   public function run() {
     $this->preProcess();
@@ -372,8 +374,7 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
 
       //show associated soft credit when contribution payment is paid by different person
       if ($this->_id && $this->_contactId) {
-        $filter = " AND cc.id IN (SELECT contribution_id FROM civicrm_membership_payment WHERE membership_id = {$this->_id})";
-        $softCreditList = CRM_Contribute_BAO_ContributionSoft::getSoftContributionList($this->_contactId, $filter);
+        $softCreditList = CRM_Contribute_BAO_ContributionSoft::getSoftContributionList($this->_contactId, $this->_id);
         if (!empty($softCreditList)) {
           $this->assign('softCredit', TRUE);
           $this->assign('softCreditRows', $softCreditList);
@@ -650,8 +651,8 @@ class CRM_Member_Page_Tab extends CRM_Core_Page {
    *
    * @param int $memTypeID
    *   membership type ID
-   * @param int $links
-   *   (reference ) action links
+   * @param array $links
+   *   (reference) action links
    */
   public static function getPermissionedLinks($memTypeID, &$links) {
     if (!CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus()) {
diff --git a/civicrm/CRM/Member/Page/UserDashboard.php b/civicrm/CRM/Member/Page/UserDashboard.php
index 05d4581f6cc4e79843aae9beeb85f8906ab006e1..bcc693f61a89706f2cb1ffb973808c5392657075 100644
--- a/civicrm/CRM/Member/Page/UserDashboard.php
+++ b/civicrm/CRM/Member/Page/UserDashboard.php
@@ -29,7 +29,7 @@ class CRM_Member_Page_UserDashboard extends CRM_Contact_Page_View_UserDashBoard
     $dao = new CRM_Member_DAO_Membership();
     $dao->contact_id = $this->_contactId;
     $dao->is_test = 0;
-    $dao->orderBy('start_date DESC');
+    $dao->orderBy('end_date DESC');
     $dao->find();
 
     while ($dao->fetch()) {
diff --git a/civicrm/CRM/Member/Utils/RelationshipProcessor.php b/civicrm/CRM/Member/Utils/RelationshipProcessor.php
index 0279c0a5b6b49eb9c892ebbc23b2fba8e8266e91..7021860f3117c88f12763f5bbcd8f7c24adea3e5 100644
--- a/civicrm/CRM/Member/Utils/RelationshipProcessor.php
+++ b/civicrm/CRM/Member/Utils/RelationshipProcessor.php
@@ -38,7 +38,7 @@ class CRM_Member_Utils_RelationshipProcessor {
   /**
    * CRM_Member_Utils_RelationshipProcessor constructor.
    *
-   * @param [int] $contactIDs
+   * @param int[] $contactIDs
    * @param bool $active
    *
    * @throws \CiviCRM_API3_Exception
diff --git a/civicrm/CRM/PCP/BAO/PCP.php b/civicrm/CRM/PCP/BAO/PCP.php
index c6138349eb75200990298d8258bd509cc410ddbb..dcd24511a9512cd82abeb27f14f5f0cbff6cf52f 100644
--- a/civicrm/CRM/PCP/BAO/PCP.php
+++ b/civicrm/CRM/PCP/BAO/PCP.php
@@ -642,7 +642,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0";
    * @param string $component
    *
    * @throws Exception
-   * @return null
+   * @return bool
    */
   public static function sendStatusUpdate($pcpId, $newStatus, $isInitial = FALSE, $component = 'contribute') {
     $pcpStatusName = CRM_Core_OptionGroup::values("pcp_status", FALSE, FALSE, FALSE, NULL, 'name');
@@ -716,7 +716,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0";
     list($sent, $subject, $message, $html) = CRM_Core_BAO_MessageTemplate::sendTemplate(
       [
         'groupName' => 'msg_tpl_workflow_contribution',
-        'valueName' => $tplName,
+        'workflow' => $tplName,
         'contactId' => $pcpInfo['contact_id'],
         'tplParams' => $tplParams,
         'from' => $receiptFrom,
@@ -746,7 +746,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0";
    * Get pcp block is active.
    *
    * @param int $pcpId
-   * @param $component
+   * @param string $component
    *
    * @return int
    */
@@ -768,7 +768,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0";
    * Get pcp block is enabled for component page.
    *
    * @param int $pageId
-   * @param $component
+   * @param string $component
    *
    * @return string
    */
@@ -833,7 +833,7 @@ WHERE field_name like 'email%' And is_active = 1 And uf_group_id = %1";
    * @param int $pcpId
    * @param $component
    *
-   * @return int
+   * @return string
    */
   public static function getPcpPageTitle($pcpId, $component) {
     if ($component == 'contribute') {
@@ -859,9 +859,9 @@ WHERE field_name like 'email%' And is_active = 1 And uf_group_id = %1";
    * Get pcp block & entity id given pcp id
    *
    * @param int $pcpId
-   * @param $component
+   * @param string $component
    *
-   * @return string
+   * @return int[]
    */
   public static function getPcpBlockEntityId($pcpId, $component) {
     $entity_table = self::getPcpEntityTable($component);
@@ -884,7 +884,7 @@ WHERE pcp.id = %1";
   /**
    * Get pcp entity table given a component.
    *
-   * @param $component
+   * @param string $component
    *
    * @return string
    */
@@ -931,7 +931,7 @@ INNER JOIN civicrm_uf_group ufgroup
    * Get owner notification id.
    *
    * @param int $component_id
-   * @param $component
+   * @param string $component
    *
    * @return int
    */
diff --git a/civicrm/CRM/PCP/DAO/PCP.php b/civicrm/CRM/PCP/DAO/PCP.php
index 96572086a623e39b8e11bfe2d8ddc18664c6dd7c..d5f80f68286fba83bbcb9d64ac047c72268460c6 100644
--- a/civicrm/CRM/PCP/DAO/PCP.php
+++ b/civicrm/CRM/PCP/DAO/PCP.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/PCP/PCP.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:580fcea1bad18a3de9e966545756fbe7)
+ * (GenCodeChecksum:75a91ef42442db8350a6f4806104cce4)
  */
 
 /**
diff --git a/civicrm/CRM/PCP/DAO/PCPBlock.php b/civicrm/CRM/PCP/DAO/PCPBlock.php
index c610d7b8446765a26e73a5ee66ba7e482e55f8d5..e97bb6d56c2ff21d6bc3e321850049a88aaa73ce 100644
--- a/civicrm/CRM/PCP/DAO/PCPBlock.php
+++ b/civicrm/CRM/PCP/DAO/PCPBlock.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/PCP/PCPBlock.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:4b4cbd3c471584e645cd442b994b73bb)
+ * (GenCodeChecksum:fc34e59aa9ea5dd0ed465a4e2dbed821)
  */
 
 /**
diff --git a/civicrm/CRM/PCP/Form/Campaign.php b/civicrm/CRM/PCP/Form/Campaign.php
index bf24d4ce25da351c40ccb49ed1755a901ab5b844..59421cdd42b2445696654d5d0f37423b885f93ba 100644
--- a/civicrm/CRM/PCP/Form/Campaign.php
+++ b/civicrm/CRM/PCP/Form/Campaign.php
@@ -315,7 +315,7 @@ class CRM_PCP_Form_Campaign extends CRM_Core_Form {
       list($sent, $subject, $message, $html) = CRM_Core_BAO_MessageTemplate::sendTemplate(
         [
           'groupName' => 'msg_tpl_workflow_contribution',
-          'valueName' => 'pcp_notify',
+          'workflow' => 'pcp_notify',
           'contactId' => $contactID,
           'from' => "$domainEmailName <$domainEmailAddress>",
           'toEmail' => $to,
diff --git a/civicrm/CRM/Pledge/BAO/Pledge.php b/civicrm/CRM/Pledge/BAO/Pledge.php
index a30813cd9945cb2bc24085e2b3c8fe5bbf3f98a1..8186bd45b42bdcf518bf4704ddea5b790514c142 100644
--- a/civicrm/CRM/Pledge/BAO/Pledge.php
+++ b/civicrm/CRM/Pledge/BAO/Pledge.php
@@ -586,7 +586,7 @@ GROUP BY  currency
     [$sent, $subject, $message, $html] = CRM_Core_BAO_MessageTemplate::sendTemplate(
       [
         'groupName' => 'msg_tpl_workflow_pledge',
-        'valueName' => 'pledge_acknowledge',
+        'workflow' => 'pledge_acknowledge',
         'contactId' => $params['contact_id'],
         'from' => $receiptFrom,
         'toName' => $pledgerDisplayName,
@@ -952,7 +952,7 @@ SELECT  pledge.contact_id              as contact_id,
             ] = CRM_Core_BAO_MessageTemplate::sendTemplate(
               [
                 'groupName' => 'msg_tpl_workflow_pledge',
-                'valueName' => 'pledge_reminder',
+                'workflow' => 'pledge_reminder',
                 'contactId' => $contactId,
                 'from' => $receiptFrom,
                 'toName' => $pledgerName,
diff --git a/civicrm/CRM/Pledge/DAO/Pledge.php b/civicrm/CRM/Pledge/DAO/Pledge.php
index 330bcb9732612042727671534b66cd1543cc3585..6d3e2cdb7d72ef0e5237a3037dfa967c0a0ceec0 100644
--- a/civicrm/CRM/Pledge/DAO/Pledge.php
+++ b/civicrm/CRM/Pledge/DAO/Pledge.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Pledge/Pledge.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:cbecc4833b44f7758722ef898cb8670b)
+ * (GenCodeChecksum:3c3661e23afc0cfc3b2f9c836fc5b80c)
  */
 
 /**
diff --git a/civicrm/CRM/Pledge/DAO/PledgeBlock.php b/civicrm/CRM/Pledge/DAO/PledgeBlock.php
index 72d227201b96cfdbde184a105324b4cff37e74d2..ab9c295cfa2c2703ee463b7e37a3ecdf9b4687c3 100644
--- a/civicrm/CRM/Pledge/DAO/PledgeBlock.php
+++ b/civicrm/CRM/Pledge/DAO/PledgeBlock.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Pledge/PledgeBlock.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:5c573642b549c72e343477a782ed62dc)
+ * (GenCodeChecksum:a15cb74527739ed1a01e365ced4bba4a)
  */
 
 /**
diff --git a/civicrm/CRM/Pledge/DAO/PledgePayment.php b/civicrm/CRM/Pledge/DAO/PledgePayment.php
index 74b6e56dae7dd214a66539e07326dfa1e45ff282..4ece7808e9e7cae406c9205e68cbd680f5dcf59a 100644
--- a/civicrm/CRM/Pledge/DAO/PledgePayment.php
+++ b/civicrm/CRM/Pledge/DAO/PledgePayment.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Pledge/PledgePayment.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:8d427bd23082d6b6dbad3492e9f668ca)
+ * (GenCodeChecksum:92568aec1e6e00476a86d15476e2ab29)
  */
 
 /**
diff --git a/civicrm/CRM/Pledge/Form/PledgeView.php b/civicrm/CRM/Pledge/Form/PledgeView.php
index a18a84a4665f240c08acf6ebea36105d03bc8eff..4d02ec33e35d81fa5d19ba0ea8db54fa42abf9cf 100644
--- a/civicrm/CRM/Pledge/Form/PledgeView.php
+++ b/civicrm/CRM/Pledge/Form/PledgeView.php
@@ -58,7 +58,7 @@ class CRM_Pledge_Form_PledgeView extends CRM_Core_Form {
     $values['financial_type'] = CRM_Utils_Array::value($values['financial_type_id'], CRM_Contribute_PseudoConstant::financialType());
 
     if ($values['status_id']) {
-      $values['pledge_status'] = CRM_Core_PseudoConstant::getKey('CRM_Pledge_BAO_Pledge', 'status_id', $values['status_id']);
+      $values['pledge_status'] = CRM_Core_PseudoConstant::getLabel('CRM_Pledge_BAO_Pledge', 'status_id', $values['status_id']);
     }
 
     $url = CRM_Utils_System::url('civicrm/contact/view/pledge',
diff --git a/civicrm/CRM/Price/DAO/LineItem.php b/civicrm/CRM/Price/DAO/LineItem.php
index 8eaf5a0997ec22f325ca75d83e6d38ed814cd154..179da39221f2c011c918d40a7830933c114e39fd 100644
--- a/civicrm/CRM/Price/DAO/LineItem.php
+++ b/civicrm/CRM/Price/DAO/LineItem.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Price/LineItem.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:188e934ee3cca79e58490e0125c3b51b)
+ * (GenCodeChecksum:5e076dfe479d854ead6ffeb4c73640b1)
  */
 
 /**
diff --git a/civicrm/CRM/Price/DAO/PriceField.php b/civicrm/CRM/Price/DAO/PriceField.php
index 13a15de67e710f2b4d93eb833d28778e0f9606bb..5a12065705a7dfe1641a20ef9c21cc7cf46497aa 100644
--- a/civicrm/CRM/Price/DAO/PriceField.php
+++ b/civicrm/CRM/Price/DAO/PriceField.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Price/PriceField.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:15774f8e0c7f8ef88b21f86cf8ef43bc)
+ * (GenCodeChecksum:400d2bc3c440d0a69e8d194c477dc3de)
  */
 
 /**
diff --git a/civicrm/CRM/Price/DAO/PriceFieldValue.php b/civicrm/CRM/Price/DAO/PriceFieldValue.php
index fc0642b78defc67dafb715129f7e5b0db4cb7e4b..3727e2a3bb7cd1bcc0096a89db8161ed6329bcb3 100644
--- a/civicrm/CRM/Price/DAO/PriceFieldValue.php
+++ b/civicrm/CRM/Price/DAO/PriceFieldValue.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Price/PriceFieldValue.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:d39a35fbdcaed47315fdc0ecce662c7f)
+ * (GenCodeChecksum:d0cc4bcfbe339789c270121574a72847)
  */
 
 /**
diff --git a/civicrm/CRM/Price/DAO/PriceSet.php b/civicrm/CRM/Price/DAO/PriceSet.php
index d9006795a2f340ba5e456e5d968561778dd4ab3b..3255b51e2d888b2132fd9a0fafb9c84700fb1f58 100644
--- a/civicrm/CRM/Price/DAO/PriceSet.php
+++ b/civicrm/CRM/Price/DAO/PriceSet.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Price/PriceSet.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:1aec76208959c72965733e217aaf1fc1)
+ * (GenCodeChecksum:1d36526a1be425a00647ad6b08815658)
  */
 
 /**
diff --git a/civicrm/CRM/Price/DAO/PriceSetEntity.php b/civicrm/CRM/Price/DAO/PriceSetEntity.php
index 50663643b69e7a15a425ad4f446325a2d6282558..7c435281a590bd86f836dfa209b19603ff96ecac 100644
--- a/civicrm/CRM/Price/DAO/PriceSetEntity.php
+++ b/civicrm/CRM/Price/DAO/PriceSetEntity.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Price/PriceSetEntity.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:fd4d4668f512069531d5e3bc7eb143d3)
+ * (GenCodeChecksum:0f2e59643e70edbb600fb388e27093a3)
  */
 
 /**
diff --git a/civicrm/CRM/Queue/DAO/Queue.php b/civicrm/CRM/Queue/DAO/Queue.php
index 65b349c53e602191da666d03661c1ac14657d1af..502e92bce4aade9b8aa6ed369214c8452bf13189 100644
--- a/civicrm/CRM/Queue/DAO/Queue.php
+++ b/civicrm/CRM/Queue/DAO/Queue.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Queue/Queue.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:85012d3cc88cad6b1c868665e0b490c3)
+ * (GenCodeChecksum:3acd90f5bb8a0a19a9ee63952562c843)
  */
 
 /**
diff --git a/civicrm/CRM/Queue/DAO/QueueItem.php b/civicrm/CRM/Queue/DAO/QueueItem.php
index 0ad5fe3be625adc041a5cb5ca3141f50c8ff2dd8..18c9f53215850a8dcad293299e8eb928370ae7bd 100644
--- a/civicrm/CRM/Queue/DAO/QueueItem.php
+++ b/civicrm/CRM/Queue/DAO/QueueItem.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Queue/QueueItem.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:f5163d86b425127deb25d105976212bf)
+ * (GenCodeChecksum:66a10bb763c83fb0f98f5510b2e708af)
  */
 
 /**
@@ -57,7 +57,7 @@ class CRM_Queue_DAO_QueueItem extends CRM_Core_DAO {
    * date on which this item was submitted to the queue
    *
    * @var string
-   *   (SQL type: datetime)
+   *   (SQL type: timestamp)
    *   Note that values will be retrieved from the database as a string.
    */
   public $submit_time;
@@ -65,8 +65,8 @@ class CRM_Queue_DAO_QueueItem extends CRM_Core_DAO {
   /**
    * date on which this job becomes available; null if ASAP
    *
-   * @var string|null
-   *   (SQL type: datetime)
+   * @var string
+   *   (SQL type: timestamp)
    *   Note that values will be retrieved from the database as a string.
    */
   public $release_time;
@@ -166,7 +166,7 @@ class CRM_Queue_DAO_QueueItem extends CRM_Core_DAO {
         ],
         'submit_time' => [
           'name' => 'submit_time',
-          'type' => CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME,
+          'type' => CRM_Utils_Type::T_TIMESTAMP,
           'title' => ts('Submit Time'),
           'description' => ts('date on which this item was submitted to the queue'),
           'required' => TRUE,
@@ -183,10 +183,12 @@ class CRM_Queue_DAO_QueueItem extends CRM_Core_DAO {
         ],
         'release_time' => [
           'name' => 'release_time',
-          'type' => CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME,
+          'type' => CRM_Utils_Type::T_TIMESTAMP,
           'title' => ts('Release Time'),
           'description' => ts('date on which this job becomes available; null if ASAP'),
+          'required' => FALSE,
           'where' => 'civicrm_queue_item.release_time',
+          'default' => NULL,
           'table_name' => 'civicrm_queue_item',
           'entity' => 'QueueItem',
           'bao' => 'CRM_Queue_BAO_QueueItem',
diff --git a/civicrm/CRM/Queue/Queue.php b/civicrm/CRM/Queue/Queue.php
index 83c27b0f4986726ebfb934cb8c8fb9b03ae12e51..9ad305a92809c6297bfd1ec07e4122d024991bb4 100644
--- a/civicrm/CRM/Queue/Queue.php
+++ b/civicrm/CRM/Queue/Queue.php
@@ -101,7 +101,7 @@ abstract class CRM_Queue_Queue {
   }
 
   /**
-   * Perform any registation or resource-allocation for a new queue
+   * Perform any registration or resource-allocation for a new queue
    */
   abstract public function createQueue();
 
@@ -130,6 +130,7 @@ abstract class CRM_Queue_Queue {
    * @param array $options
    *   Queue-dependent options; for example, if this is a
    *   priority-queue, then $options might specify the item's priority.
+   *   Ex: ['release_time' => strtotime('+3 hours')]
    */
   abstract public function createItem($data, $options = []);
 
@@ -137,8 +138,28 @@ abstract class CRM_Queue_Queue {
    * Determine number of items remaining in the queue.
    *
    * @return int
-   */
-  abstract public function numberOfItems();
+   * @deprecated
+   *   Use `getStatistic(string $name)` instead.
+   *   The definition of `numberOfItems()` has become conflicted among different subclasses.
+   */
+  public function numberOfItems() {
+    // This is the statistic traditionally reported by core queue implementations.
+    // However, it may not be as useful, and subclasses may have different interpretations.
+    return $this->getStatistic('total');
+  }
+
+  /**
+   * Get summary information about items in the queue.
+   *
+   * @param string $name
+   *   The desired statistic. Ex:
+   *   - 'ready': The number of items ready for execution (not currently claimed, not scheduled for future).
+   *   - 'blocked': The number of items that may be runnable in the future, but cannot be run right now.
+   *   - 'total': The total number of items known to the queue, regardless of whether their current status.
+   * @return int|float|null
+   *   The value of the statistic, or NULL if the queue backend does not unsupport this statistic.
+   */
+  abstract public function getStatistic(string $name);
 
   /**
    * Get the next item.
diff --git a/civicrm/CRM/Queue/Queue/Memory.php b/civicrm/CRM/Queue/Queue/Memory.php
index b11630f2f516a89912c25acf66b7ab16c10c304b..e66791a5b8a73bf1fab4b03ee93ebbcb19ada50a 100644
--- a/civicrm/CRM/Queue/Queue/Memory.php
+++ b/civicrm/CRM/Queue/Queue/Memory.php
@@ -97,21 +97,48 @@ class CRM_Queue_Queue_Memory extends CRM_Queue_Queue {
    * @param array $options
    *   Queue-dependent options; for example, if this is a
    *   priority-queue, then $options might specify the item's priority.
+   *   Ex: ['release_time' => strtotime('+3 hours')]
    */
   public function createItem($data, $options = []) {
     $id = $this->nextQueueItemId++;
     // force copy, no unintendedsharing effects from pointers
     $this->items[$id] = serialize($data);
     $this->runCounts[$id] = 0;
+    if (isset($options['release_time'])) {
+      $this->releaseTimes[$id] = $options['release_time'];
+    }
   }
 
   /**
-   * Determine number of items remaining in the queue.
-   *
-   * @return int
+   * @param string $name
+   * @return int|float|null
+   * @see \CRM_Queue_Queue::getStatistic()
    */
-  public function numberOfItems() {
-    return count($this->items);
+  public function getStatistic(string $name) {
+    $ready = function(): int {
+      $now = CRM_Utils_Time::time();
+      $ready = 0;
+      foreach ($this->items as $id => $item) {
+        if (empty($this->releaseTimes[$id]) || $this->releaseTimes[$id] <= $now) {
+          $ready++;
+        }
+      }
+      return $ready;
+    };
+
+    switch ($name) {
+      case 'ready':
+        return $ready();
+
+      case 'blocked':
+        return count($this->items) - $ready();
+
+      case 'total':
+        return count($this->items);
+
+      default:
+        return NULL;
+    }
   }
 
   /**
diff --git a/civicrm/CRM/Queue/Queue/SqlTrait.php b/civicrm/CRM/Queue/Queue/SqlTrait.php
index 0f68620c712612739ea04e097b8677c0c621ddae..69f5cf2206897a4e0ddc49ef6997bf5b0fb52446 100644
--- a/civicrm/CRM/Queue/Queue/SqlTrait.php
+++ b/civicrm/CRM/Queue/Queue/SqlTrait.php
@@ -47,22 +47,34 @@ trait CRM_Queue_Queue_SqlTrait {
    * @return bool
    */
   public function existsQueue() {
-    return ($this->numberOfItems() > 0);
+    return ($this->getStatistic('total') > 0);
   }
 
   /**
-   * Determine number of items remaining in the queue.
-   *
-   * @return int
+   * @param string $name
+   * @return int|float|null
+   * @see \CRM_Queue_Queue::getStatistic()
    */
-  public function numberOfItems() {
-    return CRM_Core_DAO::singleValueQuery("
-      SELECT count(*)
-      FROM civicrm_queue_item
-      WHERE queue_name = %1
-    ", [
-      1 => [$this->getName(), 'String'],
-    ]);
+  public function getStatistic(string $name) {
+    switch ($name) {
+      case 'ready':
+        return (int) CRM_Core_DAO::singleValueQuery(
+          'SELECT count(*) FROM civicrm_queue_item WHERE queue_name = %1 AND (release_time is null OR release_time <= FROM_UNIXTIME(%2))',
+          [1 => [$this->getName(), 'String'], 2 => [CRM_Utils_Time::time(), 'Int']]);
+
+      case 'blocked':
+        return (int) CRM_Core_DAO::singleValueQuery(
+          'SELECT count(*) FROM civicrm_queue_item WHERE queue_name = %1 AND release_time > FROM_UNIXTIME(%2)',
+          [1 => [$this->getName(), 'String'], 2 => [CRM_Utils_Time::time(), 'Int']]);
+
+      case 'total':
+        return (int) CRM_Core_DAO::singleValueQuery(
+          'SELECT count(*) FROM civicrm_queue_item WHERE queue_name = %1',
+          [1 => [$this->getName(), 'String']]);
+
+      default:
+        return NULL;
+    }
   }
 
   /**
@@ -73,6 +85,7 @@ trait CRM_Queue_Queue_SqlTrait {
    * @param array $options
    *   Queue-dependent options; for example, if this is a
    *   priority-queue, then $options might specify the item's priority.
+   *   Ex: ['release_time' => strtotime('+3 hours')]
    */
   public function createItem($data, $options = []) {
     $dao = new CRM_Queue_DAO_QueueItem();
@@ -80,6 +93,9 @@ trait CRM_Queue_Queue_SqlTrait {
     $dao->submit_time = CRM_Utils_Time::getTime('YmdHis');
     $dao->data = serialize($data);
     $dao->weight = CRM_Utils_Array::value('weight', $options, 0);
+    if (isset($options['release_time'])) {
+      $dao->release_time = date('Y-m-d H:i:s', $options['release_time']);
+    }
     $dao->save();
   }
 
diff --git a/civicrm/CRM/Queue/Runner.php b/civicrm/CRM/Queue/Runner.php
index 80124b03ee2dd83c438a0911a380f98db81aef47..dfbb37328ac3c4e97b2496492360f59984ff4d9a 100644
--- a/civicrm/CRM/Queue/Runner.php
+++ b/civicrm/CRM/Queue/Runner.php
@@ -9,6 +9,7 @@
  +--------------------------------------------------------------------+
  */
 
+use Civi\Api4\UserJob;
 use Civi\Core\Event\GenericHookEvent;
 
 /**
@@ -76,6 +77,11 @@ class CRM_Queue_Runner {
    */
   public $taskCtx;
 
+  /**
+   * @var string
+   */
+  public $lastTaskTitle;
+
   /**
    * Locate a previously-created instance of the queue-runner.
    *
@@ -147,10 +153,12 @@ class CRM_Queue_Runner {
    * environments which support multiprocessing (background queue-workers) can use those;
    * otherwise, they can use the traditional AJAX runner.
    *
-   * To ensure portability, requesters must satisfy the requirements of *both/all*
-   * execution mechanisms.
+   * To ensure portability, requesters must satisfy the requirements of
+   * *both/all* execution mechanisms.
+   *
+   * @throws \CRM_Core_Exception
    */
-  public function runAllInteractive() {
+  public function runAllInteractive(): void {
     $this->assertRequirementsWeb();
     $this->assertRequirementsBackground();
 
@@ -160,14 +168,13 @@ class CRM_Queue_Runner {
       'onEndUrl' => $this->onEndUrl,
       // 'onEnd' ==> No, see comments in assertRequirementsBackground()
     ];
-    \Civi\Api4\UserJob::save(FALSE)->setRecords([$userJob])->execute();
+    UserJob::save(FALSE)->setRecords([$userJob])->execute();
 
     if (Civi::settings()->get('enableBackgroundQueue')) {
-      return $this->runAllViaBackground();
-    }
-    else {
-      return $this->runAllViaWeb();
+      $this->runAllViaBackground();
+      return;
     }
+    $this->runAllViaWeb();
   }
 
   protected function runAllViaBackground() {
@@ -194,7 +201,7 @@ class CRM_Queue_Runner {
    *
    * If the runner has an onEndUrl, then this function will not return
    *
-   * @return mixed
+   * @return array|true
    *   TRUE if all tasks complete normally; otherwise, an array describing the
    *   failed task
    */
@@ -202,26 +209,17 @@ class CRM_Queue_Runner {
     $this->disableBackgroundExecution();
     $taskResult = $this->formatTaskResult(TRUE);
     while ($taskResult['is_continue']) {
-      // setRaiseException should't be necessary here, but there's a bug
-      // somewhere which causes this setting to be lost.  Observed while
-      // upgrading 4.0=>4.2.  This preference really shouldn't be a global
-      // setting -- it should be more of a contextual/stack-based setting.
-      // This should be appropriate because queue-runners are not used with
-      // basic web pages -- they're used with CLI/REST/AJAX.
       $taskResult = $this->runNext();
-      $errorScope = NULL;
     }
 
-    if ($taskResult['numberOfItems'] == 0) {
+    if ($taskResult['numberOfItems'] === 0) {
       $result = $this->handleEnd();
       if (!empty($result['redirect_url'])) {
         CRM_Utils_System::redirect($result['redirect_url']);
       }
       return TRUE;
     }
-    else {
-      return $taskResult;
-    }
+    return $taskResult;
   }
 
   /**
@@ -375,7 +373,7 @@ class CRM_Queue_Runner {
     $result['is_error'] = $isOK ? 0 : 1;
     $result['exception'] = $exception;
     $result['last_task_title'] = $this->lastTaskTitle ?? '';
-    $result['numberOfItems'] = $this->queue->numberOfItems();
+    $result['numberOfItems'] = (int) $this->queue->numberOfItems();
     if ($result['numberOfItems'] <= 0) {
       // nothing to do
       $result['is_continue'] = 0;
@@ -441,11 +439,15 @@ class CRM_Queue_Runner {
    *
    * @return array|null
    *   The record, per APIv4.
-   *   This may return NULL. UserJobs are required for `runAllInteractively()` and
-   *   `runAllViaBackground()`, but (for backward compatibility) they are not required for `runAllViaWeb()`.
+   *   This may return NULL. UserJobs are required for `runAllInteractively()`
+   *   and
+   *   `runAllViaBackground()`, but (for backward compatibility) they are not
+   *   required for `runAllViaWeb()`.
+   *
+   * @throws \CRM_Core_Exception
    */
   protected function findUserJob(): ?array {
-    return \Civi\Api4\UserJob::get(FALSE)
+    return UserJob::get(FALSE)
       ->addWhere('queue_id.name', '=', $this->queue->getName())
       ->execute()
       ->first();
diff --git a/civicrm/CRM/Queue/Service.php b/civicrm/CRM/Queue/Service.php
index 338c46eac253919d62c41741a960cd0327985394..372a477cc4766dd78e8ed20e6876db61a08754ea 100644
--- a/civicrm/CRM/Queue/Service.php
+++ b/civicrm/CRM/Queue/Service.php
@@ -54,11 +54,11 @@ class CRM_Queue_Service {
    *
    * @return \CRM_Queue_Service
    */
-  public static function &singleton($forceNew = FALSE) {
-    if ($forceNew || !self::$_singleton) {
-      self::$_singleton = new CRM_Queue_Service();
+  public static function &singleton(bool $forceNew = FALSE) {
+    if ($forceNew || !isset(\Civi::$statics[__CLASS__]['singleton'])) {
+      \Civi::$statics[__CLASS__]['singleton'] = new CRM_Queue_Service();
     }
-    return self::$_singleton;
+    return \Civi::$statics[__CLASS__]['singleton'];
   }
 
   /**
diff --git a/civicrm/CRM/Report/BAO/Hook.php b/civicrm/CRM/Report/BAO/Hook.php
index d922a5d68973b21e50e3048d5c0ae6c97b0695f1..4a1acf9a8d861b51ae63a0b76a44b5ac1ea6abb5 100644
--- a/civicrm/CRM/Report/BAO/Hook.php
+++ b/civicrm/CRM/Report/BAO/Hook.php
@@ -65,7 +65,7 @@ class CRM_Report_BAO_Hook {
 
   /**
    * @param $reportObj
-   * @param $table
+   * @param string $table
    *
    * @return array
    */
diff --git a/civicrm/CRM/Report/BAO/HookInterface.php b/civicrm/CRM/Report/BAO/HookInterface.php
index 69f4093a59ed7663c01a1095cc449adde3504f02..72a358b351e9c237f3120fa2cc470c84f4d4bca6 100644
--- a/civicrm/CRM/Report/BAO/HookInterface.php
+++ b/civicrm/CRM/Report/BAO/HookInterface.php
@@ -32,7 +32,7 @@ class CRM_Report_BAO_HookInterface {
 
   /**
    * @param $reportObj
-   * @param $table
+   * @param string $table
    *
    * @return array
    */
diff --git a/civicrm/CRM/Report/DAO/ReportInstance.php b/civicrm/CRM/Report/DAO/ReportInstance.php
index 69b1eac776f386e1594f3164649071bd462adeab..9a2f8594e2335eb68ee66ba0892a82f9d88b8c48 100644
--- a/civicrm/CRM/Report/DAO/ReportInstance.php
+++ b/civicrm/CRM/Report/DAO/ReportInstance.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/Report/ReportInstance.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:588c8712caae98e6765ac8ed21c9e6b2)
+ * (GenCodeChecksum:3795e524e2e3bc1412ef58a9f8db9ad9)
  */
 
 /**
diff --git a/civicrm/CRM/Report/Form.php b/civicrm/CRM/Report/Form.php
index 1b1d1788aade6c9d662127420d43e47b9adaa51f..1626a0383fe277c6309f717a638452ff12c7e995 100644
--- a/civicrm/CRM/Report/Form.php
+++ b/civicrm/CRM/Report/Form.php
@@ -21,7 +21,7 @@ class CRM_Report_Form extends CRM_Core_Form {
    *
    * @var string[]
    */
-  public $expectedSmartyVariables = ['pager', 'skip', 'sections', 'grandStat', 'chartEnabled'];
+  public $expectedSmartyVariables = ['pager', 'skip', 'sections', 'grandStat', 'chartEnabled', 'uniqueId', 'rows'];
 
   /**
    * Deprecated constant, Reports should be updated to use the getRowCount function.
diff --git a/civicrm/CRM/Report/Form/Case/Demographics.php b/civicrm/CRM/Report/Form/Case/Demographics.php
index bbc42eac26125cdd586f166f041dff2797b88150..bba34f581024f23e494ae0e374ee6f1584914c9e 100644
--- a/civicrm/CRM/Report/Form/Case/Demographics.php
+++ b/civicrm/CRM/Report/Form/Case/Demographics.php
@@ -422,7 +422,7 @@ where (cg.extends='Contact' OR cg.extends='Individual' OR cg.extends_entity_colu
 
   /**
    * @param string $fname
-   * @param $val
+   * @param string $val
    *
    * @return null|string
    */
diff --git a/civicrm/CRM/Report/Form/Case/Summary.php b/civicrm/CRM/Report/Form/Case/Summary.php
index 7f2114988d86d837d843f517283267583ac70963..64f8a3173ac1d95bdeb9e4b3354f928040d4f29a 100644
--- a/civicrm/CRM/Report/Form/Case/Summary.php
+++ b/civicrm/CRM/Report/Form/Case/Summary.php
@@ -267,18 +267,18 @@ class CRM_Report_Form_Case_Summary extends CRM_Report_Form {
     if ($this->_relField) {
       $this->_from = "
             FROM civicrm_contact $c
-inner join civicrm_relationship $cr on {$c}.id = ${cr}.contact_id_b OR {$c}.id = ${cr}.contact_id_a
-inner join civicrm_case $cc on ${cc}.id = ${cr}.case_id
-inner join civicrm_relationship_type $crt on ${crt}.id=${cr}.relationship_type_id
-inner join civicrm_case_contact $ccc on ${ccc}.case_id = ${cc}.id
-inner join civicrm_contact $c2 on ${c2}.id=${ccc}.contact_id
+inner join civicrm_relationship $cr on {$c}.id = {$cr}.contact_id_b OR {$c}.id = {$cr}.contact_id_a
+inner join civicrm_case $cc on {$cc}.id = {$cr}.case_id
+inner join civicrm_relationship_type $crt on {$crt}.id={$cr}.relationship_type_id
+inner join civicrm_case_contact $ccc on {$ccc}.case_id = {$cc}.id
+inner join civicrm_contact $c2 on {$c2}.id={$ccc}.contact_id
 ";
     }
     else {
       $this->_from = "
             FROM civicrm_case $cc
-inner join civicrm_case_contact $ccc on ${ccc}.case_id = ${cc}.id
-inner join civicrm_contact $c2 on ${c2}.id=${ccc}.contact_id
+inner join civicrm_case_contact $ccc on {$ccc}.case_id = {$cc}.id
+inner join civicrm_contact $c2 on {$c2}.id={$ccc}.contact_id
 ";
     }
   }
diff --git a/civicrm/CRM/Report/Form/Contact/Detail.php b/civicrm/CRM/Report/Form/Contact/Detail.php
index e0a59e9c414b8032903a683fd721d520007597dc..98c7c18925c00e540018b93a7c9ade1e54a592dd 100644
--- a/civicrm/CRM/Report/Form/Contact/Detail.php
+++ b/civicrm/CRM/Report/Form/Contact/Detail.php
@@ -904,7 +904,7 @@ HERESQL;
   }
 
   /**
-   * @param $componentRows
+   * @param array $componentRows
    */
   public function alterComponentDisplay(&$componentRows) {
     // custom code to alter rows
diff --git a/civicrm/CRM/Report/Form/Contact/LoggingSummary.php b/civicrm/CRM/Report/Form/Contact/LoggingSummary.php
index 8b347fb735b7ddbb58cdcb13389f249af1d799a2..ad6a1903fddd0da1651dfa27b30e55e14e229ebe 100644
--- a/civicrm/CRM/Report/Form/Contact/LoggingSummary.php
+++ b/civicrm/CRM/Report/Form/Contact/LoggingSummary.php
@@ -328,8 +328,8 @@ LEFT  JOIN civicrm_contact altered_by_contact_civireport
   /**
    * Add links & hovers to the detailed report.
    *
-   * @param $baseQueryCriteria
-   * @param $row
+   * @param string $baseQueryCriteria
+   * @param array $row
    *
    * @return mixed
    */
diff --git a/civicrm/CRM/Report/Form/Contribute/Lybunt.php b/civicrm/CRM/Report/Form/Contribute/Lybunt.php
index 5ab5423e2e5bf52b464e5297771e539a7d2ac70e..a8ec85026199c97c276b2ffb8284b20364160572 100644
--- a/civicrm/CRM/Report/Form/Contribute/Lybunt.php
+++ b/civicrm/CRM/Report/Form/Contribute/Lybunt.php
@@ -628,7 +628,7 @@ class CRM_Report_Form_Contribute_Lybunt extends CRM_Report_Form {
   }
 
   /**
-   * @param $rows
+   * @param array $rows
    */
   public function buildChart(&$rows) {
 
diff --git a/civicrm/CRM/Report/Form/Contribute/Sybunt.php b/civicrm/CRM/Report/Form/Contribute/Sybunt.php
index 6c83f631135050044cc71136bc3cfacdbde7e4d3..8f25969dabe00787910e100a51f58623f663ee95 100644
--- a/civicrm/CRM/Report/Form/Contribute/Sybunt.php
+++ b/civicrm/CRM/Report/Form/Contribute/Sybunt.php
@@ -503,7 +503,7 @@ class CRM_Report_Form_Contribute_Sybunt extends CRM_Report_Form {
   }
 
   /**
-   * @param $rows
+   * @param array $rows
    */
   public function buildChart(&$rows) {
     $graphRows = [];
diff --git a/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php b/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php
index 68e78f34281d9d75c889605cf28edddbeab25bbe..457eb69d7f577680d37ca414802dc4677b5b8d9e 100644
--- a/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php
+++ b/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php
@@ -350,7 +350,7 @@ class CRM_Report_Form_Event_IncomeCountSummary extends CRM_Report_Form {
   }
 
   /**
-   * @param $rows
+   * @param array $rows
    */
   public function buildChart(&$rows) {
 
diff --git a/civicrm/CRM/Report/Form/Event/ParticipantListing.php b/civicrm/CRM/Report/Form/Event/ParticipantListing.php
index 8404338b26432faf4a853c9849b6910182ce4eed..6dfe2a946ccd9a26bacbeebf88d7954df346c34c 100644
--- a/civicrm/CRM/Report/Form/Event/ParticipantListing.php
+++ b/civicrm/CRM/Report/Form/Event/ParticipantListing.php
@@ -546,12 +546,12 @@ ORDER BY  cv.label
   }
 
   /**
-   * @param $rows
-   * @param $entryFound
-   * @param $row
-   * @param int $rowId
-   * @param $rowNum
-   * @param $types
+   * @param array $rows
+   * @param bool $entryFound
+   * @param array $row
+   * @param string $rowId
+   * @param int $rowNum
+   * @param array $types
    *
    * @return bool
    */
diff --git a/civicrm/CRM/Report/Form/Event/Summary.php b/civicrm/CRM/Report/Form/Event/Summary.php
index a6265e6663fda1625e8609d28c04dfc358bf3560..edb3b0776a0f6dad6cab7ad8272d595fcbeff5c9 100644
--- a/civicrm/CRM/Report/Form/Event/Summary.php
+++ b/civicrm/CRM/Report/Form/Event/Summary.php
@@ -340,7 +340,7 @@ class CRM_Report_Form_Event_Summary extends CRM_Report_Form {
   }
 
   /**
-   * @param $rows
+   * @param array $rows
    */
   public function buildChart(&$rows) {
     $this->_interval = 'events';
diff --git a/civicrm/CRM/Report/Form/Member/ContributionDetail.php b/civicrm/CRM/Report/Form/Member/ContributionDetail.php
index 985b55ca5c92726ebabc2a8cf74152342252a544..7f13f34f4e958a5207db509ec0cf20f518c17622 100644
--- a/civicrm/CRM/Report/Form/Member/ContributionDetail.php
+++ b/civicrm/CRM/Report/Form/Member/ContributionDetail.php
@@ -639,7 +639,7 @@ class CRM_Report_Form_Member_ContributionDetail extends CRM_Report_Form {
   }
 
   /**
-   * @param $rows
+   * @param array $rows
    */
   public function alterDisplay(&$rows) {
     // custom code to alter rows
diff --git a/civicrm/CRM/Report/Form/Member/Detail.php b/civicrm/CRM/Report/Form/Member/Detail.php
index 67ced4a6503747b20f3caad925136cfa795fd527..abab6c9d4f9927b2d0a0b5ea22b8eceb5f6e0c02 100644
--- a/civicrm/CRM/Report/Form/Member/Detail.php
+++ b/civicrm/CRM/Report/Form/Member/Detail.php
@@ -277,7 +277,7 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form {
     }
   }
 
-  public function from() {
+  public function from(): void {
     $this->setFromBase('civicrm_contact');
     $this->_from .= "
          {$this->_aclFrom}
@@ -312,7 +312,7 @@ HERESQL;
    * Override to add handling for autorenew status.
    */
   public function whereClause(&$field, $op, $value, $min, $max) {
-    if ($field['dbAlias'] == "{$this->_aliases['civicrm_contribution_recur']}.contribution_status_id") {
+    if ($field['dbAlias'] === "{$this->_aliases['civicrm_contribution_recur']}.contribution_status_id") {
       $clauseParts = [];
       switch ($op) {
         case 'in':
@@ -378,7 +378,7 @@ HERESQL;
 
   public function getOperationPair($type = "string", $fieldName = NULL) {
     //re-name IS NULL/IS NOT NULL for clarity
-    if ($fieldName == 'owner_membership_id') {
+    if ($fieldName === 'owner_membership_id') {
       $result = [];
       $result['nll'] = ts('Primary members only');
       $result['nnll'] = ts('Non-primary members only');
@@ -404,14 +404,10 @@ HERESQL;
    * @param array $rows
    *   Rows generated by SQL, with an array for each row.
    */
-  public function alterDisplay(&$rows) {
+  public function alterDisplay(&$rows): void {
     $entryFound = FALSE;
     $checkList = [];
 
-    $contributionTypes = CRM_Contribute_PseudoConstant::financialType();
-    $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'label');
-    $paymentInstruments = CRM_Contribute_PseudoConstant::paymentInstrument();
-
     $repeatFound = FALSE;
     foreach ($rows as $rowNum => $row) {
       if ($repeatFound == FALSE ||
@@ -420,7 +416,7 @@ HERESQL;
         unset($checkList);
         $checkList = [];
       }
-      if (!empty($this->_noRepeats) && $this->_outputMode != 'csv') {
+      if (!empty($this->_noRepeats) && $this->_outputMode !== 'csv') {
         // not repeat contact display names if it matches with the one
         // in previous row
         foreach ($row as $colName => $colVal) {
@@ -431,10 +427,10 @@ HERESQL;
               (!empty($checkList[$colName]) &&
               in_array($colVal, $checkList[$colName]))
               ) {
-              $rows[$rowNum][$colName] = "";
+              $rows[$rowNum][$colName] = '';
               // CRM-15917: Don't blank the name if it's a different contact
-              if ($colName == 'civicrm_contact_exposed_id') {
-                $rows[$rowNum]['civicrm_contact_sort_name'] = "";
+              if ($colName === 'civicrm_contact_exposed_id') {
+                $rows[$rowNum]['civicrm_contact_sort_name'] = '';
               }
               $repeatFound = $rowNum;
             }
@@ -466,19 +462,19 @@ HERESQL;
       }
 
       if ($value = CRM_Utils_Array::value('civicrm_contribution_financial_type_id', $row)) {
-        $rows[$rowNum]['civicrm_contribution_financial_type_id'] = $contributionTypes[$value];
+        $rows[$rowNum]['civicrm_contribution_financial_type_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'financial_type_id', $value);
         $entryFound = TRUE;
       }
       if ($value = CRM_Utils_Array::value('civicrm_contribution_contribution_status_id', $row)) {
-        $rows[$rowNum]['civicrm_contribution_contribution_status_id'] = $contributionStatus[$value];
+        $rows[$rowNum]['civicrm_contribution_contribution_status_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $value);
         $entryFound = TRUE;
       }
       if ($value = CRM_Utils_Array::value('civicrm_contribution_payment_instrument_id', $row)) {
-        $rows[$rowNum]['civicrm_contribution_payment_instrument_id'] = $paymentInstruments[$value];
+        $rows[$rowNum]['civicrm_contribution_payment_instrument_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'payment_instrument_id', $value);
         $entryFound = TRUE;
       }
       if ($value = $row['civicrm_contribution_recur_autorenew_status_id'] ?? NULL) {
-        $rows[$rowNum]['civicrm_contribution_recur_autorenew_status_id'] = $contributionStatus[$value];
+        $rows[$rowNum]['civicrm_contribution_recur_autorenew_status_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_ContributionRecur', 'contribution_status_id', $value);
         if (!empty($row['civicrm_contribution_recur_end_date'])
           && strtotime($row['civicrm_contribution_recur_end_date']) < time()) {
           $ended = ts('ended');
diff --git a/civicrm/CRM/Report/Form/Member/Summary.php b/civicrm/CRM/Report/Form/Member/Summary.php
index 2bacccf5a826a844dd3c302fc1d9cbc7402b7f93..198503f3c209c1a72ffff8abc5ffc13a9e0a9719 100644
--- a/civicrm/CRM/Report/Form/Member/Summary.php
+++ b/civicrm/CRM/Report/Form/Member/Summary.php
@@ -442,7 +442,7 @@ GROUP BY    {$this->_aliases['civicrm_contribution']}.currency
   }
 
   /**
-   * @param $rows
+   * @param array $rows
    */
   public function buildChart(&$rows) {
     $graphRows = [];
diff --git a/civicrm/CRM/Report/Form/Pledge/Detail.php b/civicrm/CRM/Report/Form/Pledge/Detail.php
index 0138995bb24b12a203df8a326a4f46c4ad446416..21ca22a0367cb0ff96d3eee8de2bc358b7d57084 100644
--- a/civicrm/CRM/Report/Form/Pledge/Detail.php
+++ b/civicrm/CRM/Report/Form/Pledge/Detail.php
@@ -195,9 +195,9 @@ class CRM_Report_Form_Pledge_Detail extends CRM_Report_Form {
    * If we are retrieving total paid we need to define the inclusion of pledge_payment.
    *
    * @param string $tableName
-   * @param $tableKey
+   * @param string $tableKey
    * @param string $fieldName
-   * @param $field
+   * @param array $field
    *
    * @return bool|string
    */
diff --git a/civicrm/CRM/Report/Utils/Get.php b/civicrm/CRM/Report/Utils/Get.php
index 20127361a199e4ce211f0d57669f256c4af6e768..0bccfb231bc52e64ead7efe6bc83b89961219b0e 100644
--- a/civicrm/CRM/Report/Utils/Get.php
+++ b/civicrm/CRM/Report/Utils/Get.php
@@ -18,7 +18,8 @@ class CRM_Report_Utils_Get {
 
   /**
    * @param string $name
-   * @param $type
+   * @param int $type
+   *   Integer number identifying the data type.
    *
    * @return mixed|null
    */
@@ -36,7 +37,7 @@ class CRM_Report_Utils_Get {
   /**
    * @param string $fieldName
    * @param $field
-   * @param $defaults
+   * @param array $defaults
    *
    * @return bool
    */
@@ -83,8 +84,8 @@ class CRM_Report_Utils_Get {
 
   /**
    * @param string $fieldName
-   * @param $field
-   * @param $defaults
+   * @param array $field
+   * @param array $defaults
    */
   public static function stringParam($fieldName, &$field, &$defaults) {
     $fieldOP = CRM_Utils_Array::value("{$fieldName}_op", $_GET, 'like');
@@ -123,8 +124,8 @@ class CRM_Report_Utils_Get {
 
   /**
    * @param string $fieldName
-   * @param $field
-   * @param $defaults
+   * @param array $field
+   * @param array $defaults
    */
   public static function intParam($fieldName, &$field, &$defaults) {
     $fieldOP = CRM_Utils_Array::value("{$fieldName}_op", $_GET, 'eq');
@@ -185,7 +186,7 @@ class CRM_Report_Utils_Get {
   }
 
   /**
-   * @param $defaults
+   * @param array $defaults
    */
   public static function processChart(&$defaults) {
     $chartType = $_GET["charts"] ?? NULL;
@@ -198,8 +199,8 @@ class CRM_Report_Utils_Get {
   }
 
   /**
-   * @param $fieldGrp
-   * @param $defaults
+   * @param array $fieldGrp
+   * @param array $defaults
    */
   public static function processFilter(&$fieldGrp, &$defaults) {
     // process only filters for now
@@ -228,7 +229,7 @@ class CRM_Report_Utils_Get {
 
   /**
    * unset default filters.
-   * @param $defaults
+   * @param array $defaults
    */
   public static function unsetFilters(&$defaults) {
     static $unsetFlag = TRUE;
@@ -276,8 +277,8 @@ class CRM_Report_Utils_Get {
   }
 
   /**
-   * @param $reportFields
-   * @param $defaults
+   * @param array|null $reportFields
+   * @param array $defaults
    */
   public static function processFields(&$reportFields, &$defaults) {
     //add filters from url
diff --git a/civicrm/CRM/Report/Utils/Report.php b/civicrm/CRM/Report/Utils/Report.php
index 7e05025016f94675df46ea36ec42c67fd7f3b2bc..51a5dad04dfb836906de06fe3eaa934fe72a3025 100644
--- a/civicrm/CRM/Report/Utils/Report.php
+++ b/civicrm/CRM/Report/Utils/Report.php
@@ -59,7 +59,7 @@ class CRM_Report_Utils_Report {
   }
 
   /**
-   * @param $optionVal
+   * @param string $optionVal
    *
    * @return mixed
    */
@@ -100,7 +100,7 @@ WHERE  TRIM(BOTH '/' FROM CONCAT(report_id, '/', name)) = %1";
   }
 
   /**
-   * @param $urlValue
+   * @param string $urlValue
    * @param string $query
    * @param bool $absolute
    * @param int $instanceID
@@ -137,7 +137,7 @@ WHERE  TRIM(BOTH '/' FROM CONCAT(report_id, '/', name)) = %1";
 
   /**
    * get instance count for a template.
-   * @param $optionVal
+   * @param string $optionVal
    *
    * @return int|null|string
    */
@@ -200,7 +200,7 @@ WHERE  inst.report_id = %1";
 
   /**
    * @param CRM_Core_Form $form
-   * @param $rows
+   * @param array $rows
    */
   public static function export2csv(&$form, &$rows) {
     //Mark as a CSV file.
@@ -524,7 +524,7 @@ WHERE  inst.report_id = %1";
   }
 
   /**
-   * @param $reportUrl
+   * @param string $reportUrl
    *
    * @return mixed
    */
diff --git a/civicrm/CRM/SMS/DAO/Provider.php b/civicrm/CRM/SMS/DAO/Provider.php
index 4605f19e5cc0573848108ae95c1a983d3e7878a7..89ccf8c9500f4d459d2a6d4ff55bad66a267b9b1 100644
--- a/civicrm/CRM/SMS/DAO/Provider.php
+++ b/civicrm/CRM/SMS/DAO/Provider.php
@@ -6,7 +6,7 @@
  *
  * Generated from xml/schema/CRM/SMS/Provider.xml
  * DO NOT EDIT.  Generated by CRM_Core_CodeGen
- * (GenCodeChecksum:77bb8b25b596507446974d9dd3bd4c8e)
+ * (GenCodeChecksum:5a8af4bae4d2f584eb7c4c28dc50f5b4)
  */
 
 /**
diff --git a/civicrm/CRM/Upgrade/Form.php b/civicrm/CRM/Upgrade/Form.php
index 5682df2bf04daa22ca2ca5b1e90e88ab4deb41dd..1fb14e1aa819183aac409d7dcd9bd794f4633d43 100644
--- a/civicrm/CRM/Upgrade/Form.php
+++ b/civicrm/CRM/Upgrade/Form.php
@@ -186,17 +186,6 @@ class CRM_Upgrade_Form extends CRM_Core_Form {
     }
   }
 
-  public function preProcess() {
-    $this->setTitle($this->getTitle());
-    if (!$this->verifyPreDBState($errorMessage)) {
-      if (!isset($errorMessage)) {
-        $errorMessage = 'pre-condition failed for current upgrade step';
-      }
-      throw new CRM_Core_Exception($errorMessage);
-    }
-    $this->assign('recentlyViewed', FALSE);
-  }
-
   public function buildQuickForm() {
     $this->addDefaultButtons($this->getButtonTitle(),
       'next',
@@ -232,36 +221,6 @@ class CRM_Upgrade_Form extends CRM_Core_Form {
     return ts('Continue');
   }
 
-  /**
-   * Use the form name to create the tpl file name.
-   *
-   * @return string
-   */
-
-  /**
-   * @return string
-   */
-  public function getTemplateFileName() {
-    $this->assign('title',
-      $this->getFieldsetTitle()
-    );
-    $this->assign('message',
-      $this->getTemplateMessage()
-    );
-    return 'CRM/Upgrade/Base.tpl';
-  }
-
-  public function postProcess() {
-    $this->upgrade();
-
-    if (!$this->verifyPostDBState($errorMessage)) {
-      if (!isset($errorMessage)) {
-        $errorMessage = 'post-condition failed for current upgrade step';
-      }
-      throw new CRM_Core_Exception($errorMessage);
-    }
-  }
-
   /**
    * @param $version
    *
@@ -592,6 +551,13 @@ SET    version = '$version'
       $queue->createItem($task, ['weight' => 0]);
     }
 
+    $task = new CRM_Queue_Task(
+      ['CRM_Upgrade_Incremental_MessageTemplates', 'updateReservedAndMaybeDefaultTemplates'],
+      [],
+      "Update all reserved message templates"
+    );
+    $queue->createItem($task, ['weight' => 990]);
+
     $task = new CRM_Queue_Task(
       ['CRM_Upgrade_Form', 'doCoreFinish'],
       [$rev, $latestVer, $latestVer, $postUpgradeMessageFile],
@@ -821,7 +787,7 @@ SET    version = '$version'
     $restore = \CRM_Upgrade_DispatchPolicy::useTemporarily('upgrade.finish');
 
     $upgrade = new CRM_Upgrade_Form();
-    list($ignore, $latestVer) = $upgrade->getUpgradeVersions();
+    [$ignore, $latestVer] = $upgrade->getUpgradeVersions();
     // Seems extraneous in context, but we'll preserve old behavior
     $upgrade->setVersion($latestVer);
     // Going forward, any new tasks will run in `upgrade.finish` mode.
@@ -907,8 +873,6 @@ SET    version = '$version'
    * @param $latestVer
    */
   public function setPreUpgradeMessage(&$preUpgradeMessage, $currentVer, $latestVer) {
-    // check for changed message templates
-    CRM_Upgrade_Incremental_General::checkMessageTemplate($preUpgradeMessage, $latestVer, $currentVer);
     // set global messages
     CRM_Upgrade_Incremental_General::setPreUpgradeMessage($preUpgradeMessage, $currentVer, $latestVer);
 
diff --git a/civicrm/CRM/Upgrade/Headless.php b/civicrm/CRM/Upgrade/Headless.php
index 6bd63d32ddd26831d436f899d6956070f2b3955e..44dca076c91657e18b509ab82b2aa6c16f1e33e2 100644
--- a/civicrm/CRM/Upgrade/Headless.php
+++ b/civicrm/CRM/Upgrade/Headless.php
@@ -28,7 +28,7 @@ class CRM_Upgrade_Headless {
     set_time_limit(0);
 
     $upgrade = new CRM_Upgrade_Form();
-    list($currentVer, $latestVer) = $upgrade->getUpgradeVersions();
+    [$currentVer, $latestVer] = $upgrade->getUpgradeVersions();
 
     if ($error = $upgrade->checkUpgradeableVersion($currentVer, $latestVer)) {
       throw new Exception($error);
diff --git a/civicrm/CRM/Upgrade/Incremental/General.php b/civicrm/CRM/Upgrade/Incremental/General.php
index 899dfc784c7b603d3532e44eaed205439484f743..2c9ae583a81646bd17477d0ed3a3963271c6c2b3 100644
--- a/civicrm/CRM/Upgrade/Incremental/General.php
+++ b/civicrm/CRM/Upgrade/Incremental/General.php
@@ -186,80 +186,4 @@ class CRM_Upgrade_Incremental_General {
     $messageObj->updateTemplates();
   }
 
-  /**
-   * @param $message
-   * @param $latestVer
-   * @param $currentVer
-   */
-  public static function checkMessageTemplate(&$message, $latestVer, $currentVer) {
-    if (version_compare($currentVer, 5.0, '>')) {
-      return;
-    }
-    $sql = "SELECT orig.workflow_id as workflow_id,
-             orig.msg_title as title
-            FROM civicrm_msg_template diverted JOIN civicrm_msg_template orig ON (
-                diverted.workflow_id = orig.workflow_id AND
-                orig.is_reserved = 1                    AND (
-                    diverted.msg_subject != orig.msg_subject OR
-                    diverted.msg_text    != orig.msg_text    OR
-                    diverted.msg_html    != orig.msg_html
-                )
-            )";
-
-    $dao = CRM_Core_DAO::executeQuery($sql);
-    while ($dao->fetch()) {
-      $workflows[$dao->workflow_id] = $dao->title;
-    }
-
-    if (empty($workflows)) {
-      return;
-    }
-
-    $html = NULL;
-    $pathName = dirname(dirname(__FILE__));
-    $flag = FALSE;
-    foreach ($workflows as $workflow => $title) {
-      $name = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionValue',
-        $workflow,
-        'name',
-        'id'
-      );
-
-      // check if file exists locally
-      $textFileName = implode(DIRECTORY_SEPARATOR,
-        [
-          $pathName,
-          "{$latestVer}.msg_template",
-          'message_templates',
-          "{$name}_text.tpl",
-        ]
-      );
-
-      $htmlFileName = implode(DIRECTORY_SEPARATOR,
-        [
-          $pathName,
-          "{$latestVer}.msg_template",
-          'message_templates',
-          "{$name}_html.tpl",
-        ]
-      );
-
-      if (file_exists($textFileName) ||
-        file_exists($htmlFileName)
-      ) {
-        $flag = TRUE;
-        $html .= "<li>{$title}</li>";
-      }
-    }
-
-    if ($flag == TRUE) {
-      $html = "<ul>" . $html . "<ul>";
-
-      $message .= '<br />' . ts("The default copies of the message templates listed below will be updated to handle new features or correct a problem. Your installation has customized versions of these message templates, and you will need to apply the updates manually after running this upgrade. <a href='%1' style='color:white; text-decoration:underline; font-weight:bold;' target='_blank'>Click here</a> for detailed instructions. %2", [
-        1 => 'https://docs.civicrm.org/user/en/latest/email/message-templates/#modifying-system-workflow-message-templates',
-        2 => $html,
-      ]);
-    }
-  }
-
 }
diff --git a/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php b/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php
index e85585a5960a1abf7b3884238e2c3531a4d70060..9a0b6c0abdee4deb2bb92e05dc416479a5b9a833 100644
--- a/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php
+++ b/civicrm/CRM/Upgrade/Incremental/MessageTemplates.php
@@ -528,4 +528,86 @@ class CRM_Upgrade_Incremental_MessageTemplates {
     }
   }
 
+  /**
+   * Make sure *all* reserved ones get updated. Might be inefficient because we either already updated or
+   * there were no changes to a given template, but there's only about 30.
+   * This runs near the final steps of the upgrade, otherwise the earlier checks that run during the
+   * individual revisions wouldn't accurately be checking against the right is_reserved version to see
+   * if it had changed.
+   * @todo - do we still need those earlier per-version runs? e.g. the token replacement functions should still work as-is?
+   *
+   * @param CRM_Queue_TaskContext $ctx
+   * @return bool
+   */
+  public static function updateReservedAndMaybeDefaultTemplates(CRM_Queue_TaskContext $ctx): bool {
+    // This has to come first otherwise it would be checking against is_reserved we already updated.
+    $uneditedTemplates = self::getUneditedTemplates();
+
+    $dao = CRM_Core_DAO::executeQuery('SELECT id, workflow_id, workflow_name FROM civicrm_msg_template WHERE is_reserved=1');
+    while ($dao->fetch()) {
+      foreach (['html', 'text', 'subject'] as $type) {
+        $filePath = \Civi::paths()->getPath('[civicrm.root]/xml/templates/message_templates/' . $dao->workflow_name . '_' . $type . '.tpl');
+        if (!file_exists($filePath)) {
+          // The query may have picked up some non-core templates that will not have files to find.
+          continue;
+        }
+        $content = file_get_contents($filePath);
+        if ($content) {
+          CRM_Core_DAO::executeQuery(
+            "UPDATE civicrm_msg_template SET msg_{$type} = %1 WHERE id = %2", [
+              1 => [$content, 'String'],
+              2 => [$dao->id, 'Integer'],
+            ]
+          );
+
+          // If the same workflow_id and type appears in our list of unedited templates, update it too.
+          // There's probably a more efficient way to look this up but simple for now.
+          foreach ($uneditedTemplates as $uneditedTemplate) {
+            if ($uneditedTemplate['workflow_id'] === $dao->workflow_id && $uneditedTemplate['type'] === $type) {
+              CRM_Core_DAO::executeQuery(
+                "UPDATE civicrm_msg_template SET msg_{$type} = %1 WHERE id = %2", [
+                  1 => [$content, 'String'],
+                  2 => [$uneditedTemplate['id'], 'Integer'],
+                ]
+              );
+              break;
+            }
+          }
+        }
+      }
+    }
+    return TRUE;
+  }
+
+  /**
+   * Get all the is_default templates that are the unchanged from their is_reserved counterpart, which
+   * at the time this runs was the version shipped with core when it was last changed.
+   *
+   * @todo have pulled this out since want to re-use it to get the preUpgrade message right. Currently
+   * it always tells you all the ones in the hardcoded per-version list have been customized.
+   *
+   * @return array
+   */
+  public static function getUneditedTemplates(): array {
+    $templates = [];
+    foreach (['html', 'text', 'subject'] as $type) {
+      $dao = CRM_Core_DAO::executeQuery("
+        SELECT default_template.id, default_template.workflow_id FROM civicrm_msg_template reserved
+        LEFT JOIN civicrm_msg_template default_template
+          ON reserved.workflow_id = default_template.workflow_id
+        WHERE reserved.is_reserved = 1 AND default_template.is_default = 1 AND reserved.id <> default_template.id
+        AND reserved.msg_{$type} = default_template.msg_{$type}
+      ");
+      while ($dao->fetch()) {
+        // Note the same id can appear multiple times, e.g. you might change the html but not the subject.
+        $templates[] = [
+          'id' => $dao->id,
+          'type' => $type,
+          'workflow_id' => $dao->workflow_id,
+        ];
+      }
+    }
+    return $templates;
+  }
+
 }
diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyFour.php b/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyFour.php
new file mode 100644
index 0000000000000000000000000000000000000000..c70267b05c3d69ab2988d1d865aec55f3fd7ff8d
--- /dev/null
+++ b/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyFour.php
@@ -0,0 +1,209 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+/**
+ * Upgrade logic for the 5.54.x series.
+ *
+ * Each minor version in the series is handled by either a `5.54.x.mysql.tpl` file,
+ * or a function in this class named `upgrade_5_54_x`.
+ * If only a .tpl file exists for a version, it will be run automatically.
+ * If the function exists, it must explicitly add the 'runSql' task if there is a corresponding .mysql.tpl.
+ *
+ * This class may also implement `setPreUpgradeMessage()` and `setPostUpgradeMessage()` functions.
+ */
+class CRM_Upgrade_Incremental_php_FiveFiftyFour extends CRM_Upgrade_Incremental_Base {
+
+  public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) {
+    parent::setPreUpgradeMessage($preUpgradeMessage, $rev, $currentVer);
+    if ($rev === '5.54.alpha1') {
+      if (\Civi::settings()->get('civicaseActivityRevisions')) {
+        $preUpgradeMessage .= '<p>' . ts('The setting that used to be at <em>Administer &gt; CiviCase &gt; CiviCase Settings</em> for <strong>Enable deprecated Embedded Activity Revisions</strong> is enabled, but is no longer functional.<ul><li>For more information see this <a %1>Lab Snippet</a>.</li></ul>', [1 => 'target="_blank" href="https://lab.civicrm.org/-/snippets/85"']) . '</p>';
+      }
+      $preUpgradeMessage .= ($this->renderQueueMessage() ?: '');
+    }
+  }
+
+  /**
+   * Upgrade step; adds tasks including 'runSql'.
+   *
+   * @param string $rev
+   *   The version number matching this function name
+   */
+  public function upgrade_5_54_alpha1($rev): void {
+    $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev);
+    $this->addTask('Add "created_id" column to "civicrm_participant"', 'addCreatedIDColumnToParticipant');
+    $this->addTask('Convert timestamps in civicrm_queue_item', 'updateQueueTimestamps');
+    $this->addTask('Increase field length of civicrm_dedupe_rule_group.name', 'alterDedupeRuleGroupName');
+    $this->addTask('Add index civicrm_dedupe_rule_group.UI_name', 'addIndex', 'civicrm_dedupe_rule_group', 'name', 'UI');
+    $this->addTask('Install Elavon Payment Processor Extension as needed', 'installElavonPaymentProcessorExtension');
+    $this->addTask('Convert field names for contribution import saved mappings', 'updateContributionMappings');
+  }
+
+  public static function addCreatedIDColumnToParticipant($ctx): bool {
+    CRM_Upgrade_Incremental_Base::addColumn($ctx, 'civicrm_participant', 'created_id', 'int(10) UNSIGNED DEFAULT NULL COMMENT "Created by Contact ID"');
+    if (!CRM_Core_BAO_SchemaHandler::checkFKExists('civicrm_participant', 'FK_civicrm_participant_created_id')) {
+      CRM_Core_DAO::executeQuery('ALTER TABLE `civicrm_participant` ADD CONSTRAINT `FK_civicrm_participant_created_id` FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact` (`id`) ON DELETE SET NULL;');
+    }
+    return TRUE;
+  }
+
+  /**
+   * @param \CRM_Queue_TaskContext $ctx
+   *
+   * @return bool
+   */
+  public static function alterDedupeRuleGroupName(CRM_Queue_TaskContext $ctx) {
+    CRM_Core_DAO::executeQuery("ALTER TABLE `civicrm_dedupe_rule_group` CHANGE COLUMN `name` `name` varchar(255) COMMENT 'Unique name of rule group'", [], TRUE, NULL, FALSE, FALSE);
+    CRM_Core_DAO::executeQuery("UPDATE `civicrm_dedupe_rule_group` g1, `civicrm_dedupe_rule_group` g2 SET g1.name = CONCAT(g1.name, '_', g1.id) WHERE g1.name = g2.name AND g1.id > g2.id", [], TRUE, NULL, FALSE, FALSE);
+    return TRUE;
+  }
+
+  /**
+   * @param CRM_Queue_TaskContext $ctx
+   * @return bool
+   */
+  public static function installElavonPaymentProcessorExtension(CRM_Queue_TaskContext $ctx) {
+    $paymentProcessors = CRM_Core_DAO::singleValueQuery("SELECT count(cpp.id) FROM civicrm_payment_processor cpp
+      INNER JOIN civicrm_payment_processor_type cppt ON cppt.id = cpp.payment_processor_type_id
+      WHERE cppt.name = 'Elavon'");
+    if ($paymentProcessors >= 1) {
+      $paymentProcessorType = CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_payment_processor_type WHERE name = 'Elavon'");
+      $insert = CRM_Utils_SQL_Insert::into('civicrm_extension')->row([
+        'type' => 'module',
+        'full_name' => 'elavon',
+        'name' => 'Elavon Payment Processor',
+        'label' => 'Elavon Payment Processor',
+        'file' => 'elavon',
+        'schema_version' => NULL,
+        'is_active' => 1,
+      ]);
+      CRM_Core_DAO::executeQuery($insert->usingReplace()->toSQL());
+      $mgdInert = CRM_Utils_SQL_Insert::into('civicrm_managed')->row([
+        'module' => 'elavon',
+        'name' => 'PaymentProcessorType_Elavon',
+        'entity_type' => 'PaymentProcessorType',
+        'entity_id' => $paymentProcessorType,
+        'cleanup' => NULL,
+      ]);
+      CRM_Core_DAO::executeQuery($mgdInert->usingReplace()->toSQL());
+      CRM_Extension_System::singleton()->getManager()->refresh();
+    }
+    else {
+      CRM_Core_DAO::executeQuery("DELETE FROM civicrm_payment_processor_type WHERE name = 'Elavon'");
+    }
+    return TRUE;
+  }
+
+  public function renderQueueMessage(): ?string {
+    $taskCounts = CRM_Core_DAO::executeQuery('SELECT queue_name, count(*) as count FROM civicrm_queue_item GROUP BY queue_name')
+      ->fetchMap('queue_name', 'count');
+    unset($taskCounts[CRM_Upgrade_Form::QUEUE_NAME]);
+    if (empty($taskCounts)) {
+      return NULL;
+    }
+
+    $delayedCounts = CRM_Core_DAO::executeQuery('SELECT queue_name, count(*) as count FROM civicrm_queue_item WHERE (release_time IS NOT NULL) GROUP BY queue_name')
+      ->fetchMap('queue_name', 'count');
+
+    $status = ts('<strong>Queue Timezone</strong>: The system has queued tasks, and some tasks may be scheduled for future execution. The upgrade will use your personal timezone (<code>%1</code>) to interpret these tasks. If this timezone is incorrect, the task schedule could shift. The system has %3 queue(s) with %2 pending task(s):', [
+      1 => htmlentities(CRM_Core_Config::singleton()->userSystem->getTimeZoneOffset()),
+      2 => array_sum($taskCounts),
+      3 => count($taskCounts),
+    ]);
+
+    $listItems = [];
+    // $trRows = [];
+    foreach ($taskCounts as $queueName => $itemCount) {
+      $delayedCount = $delayedCounts[$queueName] ?? 0;
+      // $trRows[] = sprintf('<tr><td>%s</td><td>%s</td><td>%s</td></tr>', htmlentities($queueName), $delayedCount, $itemCount - $delayedCount);
+
+      $listItems[] = '<li>' . ts('"<code>%1</code>" has %2 task(s), including %3 time-delayed task(s).', [
+        1 => htmlentities($queueName),
+        2 => $itemCount,
+        3 => $delayedCount,
+      ]) . '</li>';
+    }
+
+    // $header = sprintf('<tr><th>%s</th><th>%s</th><th>%s</th></tr>', ts('Queue'), ts('Time-Delayed Tasks'), ts('Other Tasks'));
+    // return sprintf('<p>%s</p><table><thead>%s</thead><tbody>%s</tbody></table>', $status, $header, implode("\n", $trRows));
+    return sprintf('<p>%s</p><ul>%s</ul>', $status, implode("\n", $listItems));
+  }
+
+  public static function updateQueueTimestamps(CRM_Queue_TaskContext $ctx): bool {
+    // We want to run timestamp conversions in the regular SQL connection, which has @time_zone configured.
+    // So this is NOT going through `*.mysql.tpl`.
+    CRM_Core_DAO::executeQuery('ALTER TABLE `civicrm_queue_item`
+      CHANGE `submit_time` `submit_time` timestamp NOT NULL COMMENT \'date on which this item was submitted to the queue\',
+      CHANGE `release_time` `release_time` timestamp NULL DEFAULT NULL COMMENT \'date on which this job becomes available; null if ASAP\'
+    ');
+    return TRUE;
+  }
+
+  /**
+   * Update saved mappings for contribution imports to use apiv4 style field names.
+   *
+   * In time we will do this to the other imports.
+   *
+   * @return true
+   */
+  public static function updateContributionMappings(): bool {
+    $mappingTypeID = (int) CRM_Core_DAO::singleValueQuery("
+      SELECT option_value.value
+      FROM civicrm_option_value option_value
+        INNER JOIN civicrm_option_group option_group
+        ON option_group.id = option_value.option_group_id
+        AND option_group.name =  'mapping_type'
+      WHERE option_value.name = 'Import Contribution'");
+
+    $mappingFields = CRM_Core_DAO::executeQuery('
+      SELECT field.id, field.name FROM civicrm_mapping_field field
+        INNER JOIN civicrm_mapping mapping
+          ON field.mapping_id = mapping.id
+          AND mapping_type_id = ' . $mappingTypeID
+    );
+    // Only dedupe fields could be stored. Phone number, email, address fields & custom fields
+    // is a realistic set. The impact of missing something is pretty minor as saved field mappings
+    // are easy to update during import & people normally do a visual check - so hard coding a list
+    // feels more future-proof than doing it by code.
+    $fieldsToConvert = [
+      'email' => 'email_primary.email',
+      'phone' => 'phone_primary.phone',
+      'street_address' => 'address_primary.street_address',
+      'supplemental_address_1' => 'address_primary.supplemental_address_1',
+      'supplemental_address_2' => 'address_primary.supplemental_address_2',
+      'supplemental_address_3' => 'address_primary.supplemental_address_3',
+      'city' => 'address_primary.city',
+      'county_id' => 'address_primary.county_id',
+      'state_province_id' => 'address_primary.state_province_id',
+      'country_id' => 'address_primary.country_id',
+    ];
+    $customFields = CRM_Core_DAO::executeQuery('
+      SELECT custom_field.id, custom_field.name, custom_group.name as custom_group_name
+      FROM civicrm_custom_field custom_field INNER JOIN civicrm_custom_group custom_group
+      ON custom_field.custom_group_id = custom_group.id
+      WHERE extends IN ("Contact", "Individual", "Organization", "Household")
+    ');
+    while ($customFields->fetch()) {
+      $fieldsToConvert['custom_' . $customFields->id] = $customFields->custom_group_name . '.' . $customFields->name;
+    }
+    while ($mappingFields->fetch()) {
+      // Convert the field.
+      if (isset($fieldsToConvert[$mappingFields->name])) {
+        CRM_Core_DAO::executeQuery(' UPDATE civicrm_mapping_field SET name = %1 WHERE id = %2', [
+          1 => [$fieldsToConvert[$mappingFields->name], 'String'],
+          2 => [$mappingFields->id, 'Integer'],
+        ]);
+      }
+    }
+    return TRUE;
+  }
+
+}
diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyOne.php b/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyOne.php
index 305167456ef588db5248fc35405ed59eaba3d78e..abff73daa507700e62934e411c85df30bb911ddc 100644
--- a/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyOne.php
+++ b/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyOne.php
@@ -28,6 +28,8 @@ class CRM_Upgrade_Incremental_php_FiveFiftyOne extends CRM_Upgrade_Incremental_B
    *
    * @param string $rev
    *   The version number matching this function name
+   *
+   * @throws \CRM_Core_Exception
    */
   public function upgrade_5_51_alpha1($rev): void {
     $this->addSnapshotTask('mappings', CRM_Utils_SQL_Select::from('civicrm_mapping'));
@@ -94,7 +96,7 @@ class CRM_Upgrade_Incremental_php_FiveFiftyOne extends CRM_Upgrade_Incremental_B
       ->setSelect(['id', 'name'])
       ->addWhere('mapping_id.mapping_type_id:name', '=', 'Import Contribution')
       ->execute();
-    $fields = CRM_Contribute_BAO_Contribution::importableFields('All', FALSE);
+    $fields = self::importableContributionFields('All');
     $fieldMap = [];
     foreach ($fields as $fieldName => $field) {
       $fieldMap[$field['title']] = $fieldName;
@@ -125,7 +127,7 @@ class CRM_Upgrade_Incremental_php_FiveFiftyOne extends CRM_Upgrade_Incremental_B
       ->setSelect(['id', 'name'])
       ->addWhere('mapping_id.mapping_type_id:name', '=', 'Import Membership')
       ->execute();
-    $fields = CRM_Member_BAO_Membership::importableFields('All', FALSE);;
+    $fields = self::getImportableMembershipFields('All');;
     $fieldMap = [];
     foreach ($fields as $fieldName => $field) {
       $fieldMap[$field['title']] = $fieldName;
@@ -243,6 +245,54 @@ class CRM_Upgrade_Incremental_php_FiveFiftyOne extends CRM_Upgrade_Incremental_B
     return TRUE;
   }
 
+  /**
+   * @param string $contactType
+   *
+   * @return array|mixed
+   * @throws \CRM_Core_Exception
+   */
+  protected static function getImportableMembershipFields($contactType = 'Individual') {
+    $fields = Civi::cache('fields')->get('upgrade_membership_importable_fields' . $contactType);
+    if (!$fields) {
+      $fields = ['' => ['title' => '- ' . ts('do not import') . ' -']];
+
+      $tmpFields = CRM_Member_DAO_Membership::import();
+      $contactFields = CRM_Contact_BAO_Contact::importableFields($contactType, NULL);
+
+      // Using new Dedupe rule.
+      $ruleParams = [
+        'contact_type' => $contactType,
+        'used' => 'Unsupervised',
+      ];
+      $fieldsArray = CRM_Dedupe_BAO_DedupeRule::dedupeRuleFields($ruleParams);
+
+      $tmpContactField = [];
+      if (is_array($fieldsArray)) {
+        foreach ($fieldsArray as $value) {
+          $customFieldId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField',
+            $value,
+            'id',
+            'column_name'
+          );
+          $value = trim($customFieldId ? 'custom_' . $customFieldId : $value);
+          $tmpContactField[trim($value)] = $contactFields[$value] ?? NULL;
+          $title = $tmpContactField[trim($value)]['title'] . ' ' . ts('(match to contact)');
+          $tmpContactField[trim($value)]['title'] = $title;
+        }
+      }
+      $tmpContactField['external_identifier'] = $contactFields['external_identifier'];
+      $tmpContactField['external_identifier']['title'] = $contactFields['external_identifier']['title'] . ' ' . ts('(match to contact)');
+
+      $tmpFields['membership_contact_id']['title'] .= ' ' . ts('(match to contact)');
+
+      $fields = array_merge($fields, $tmpContactField);
+      $fields = array_merge($fields, $tmpFields);
+      $fields = array_merge($fields, CRM_Core_BAO_CustomField::getFieldsForImport('Membership'));
+      Civi::cache('fields')->set('upgrade_membership_importable_fields' . $contactType, $fields);
+    }
+    return $fields;
+  }
+
   /**
    * Update user job table to use a text job_type not an integer type_id.
    *
@@ -272,4 +322,55 @@ class CRM_Upgrade_Incremental_php_FiveFiftyOne extends CRM_Upgrade_Incremental_B
     return TRUE;
   }
 
+  /**
+   * Historical copy of Contribution importable fields function.
+   *
+   * @param string $contactType
+   *
+   * @return array
+   *   array of importable Fields
+   */
+  private static function importableContributionFields($contactType = 'Individual'): array {
+    $fields = ['' => ['title' => ts('- do not import -')]];
+    $note = CRM_Core_DAO_Note::import();
+    $tmpFields = CRM_Contribute_DAO_Contribution::import();
+    unset($tmpFields['option_value']);
+    $contactFields = CRM_Contact_BAO_Contact::importableFields($contactType, NULL);
+
+    // Using new Dedupe rule.
+    $ruleParams = [
+      'contact_type' => $contactType,
+      'used' => 'Unsupervised',
+    ];
+    $fieldsArray = CRM_Dedupe_BAO_DedupeRule::dedupeRuleFields($ruleParams);
+    $tmpContactField = [];
+    if (is_array($fieldsArray)) {
+      foreach ($fieldsArray as $value) {
+        //skip if there is no dupe rule
+        if ($value === 'none') {
+          continue;
+        }
+        $customFieldId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField',
+          $value,
+          'id',
+          'column_name'
+        );
+        $value = trim($customFieldId ? 'custom_' . $customFieldId : $value);
+        $tmpContactField[$value] = $contactFields[$value];
+        $title = $tmpContactField[$value]['title'] . ' ' . ts('(match to contact)');
+
+        $tmpContactField[$value]['title'] = $title;
+      }
+    }
+
+    $tmpContactField['external_identifier'] = $contactFields['external_identifier'];
+    $tmpContactField['external_identifier']['title'] = $contactFields['external_identifier']['title'] . ' ' . ts('(match to contact)');
+    $tmpFields['contribution_contact_id']['title'] = $tmpFields['contribution_contact_id']['html']['label'] = $tmpFields['contribution_contact_id']['title'] . ' ' . ts('(match to contact)');
+    $fields = array_merge($fields, $tmpContactField);
+    $fields = array_merge($fields, $tmpFields);
+    $fields = array_merge($fields, $note);
+    $fields = array_merge($fields, CRM_Core_BAO_CustomField::getFieldsForImport('Contribution'));
+    return $fields;
+  }
+
 }
diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyThree.php b/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyThree.php
index c647da3cd236febeebd71ec297aac628e11aaa19..0f4513d393ba9e8aa6337260dfee4093a12e864a 100644
--- a/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyThree.php
+++ b/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyThree.php
@@ -122,23 +122,26 @@ class CRM_Upgrade_Incremental_php_FiveFiftyThree extends CRM_Upgrade_Incremental
       'is_reserved' => 0,
     ]);
     $values = [
-      'Contact' => ['label' => ts('Contacts')],
-      'Relationship' => ['label' => ts('Relationships')],
-      'Activity' => ['label' => ts('Activities')],
-      'Note' => ['label' => ts('Notes')],
-      'Group' => ['label' => ts('Groups')],
-      'Case' => ['label' => ts('Cases')],
-      'Contribution' => ['label' => ts('Contributions')],
-      'Participant' => ['label' => ts('Participants')],
-      'Membership' => ['label' => ts('Memberships')],
-      'Pledge' => ['label' => ts('Pledges')],
-      'Event' => ['label' => ts('Events')],
-      'Campaign' => ['label' => ts('Campaigns')],
+      'Contact' => ts('Contacts'),
+      'Relationship' => ts('Relationships'),
+      'Activity' => ts('Activities'),
+      'Note' => ts('Notes'),
+      'Group' => ts('Groups'),
+      'Case' => ts('Cases'),
+      'Contribution' => ts('Contributions'),
+      'Participant' => ts('Participants'),
+      'Membership' => ts('Memberships'),
+      'Pledge' => ts('Pledges'),
+      'Event' => ts('Events'),
+      'Campaign' => ts('Campaigns'),
     ];
-    foreach ($values as $name => $value) {
-      CRM_Core_BAO_OptionValue::ensureOptionValueExists($value + [
+    foreach ($values as $name => $label) {
+      CRM_Core_BAO_OptionValue::ensureOptionValueExists([
+        'label' => $label,
         'name' => $name,
+        'value' => $name,
         'option_group_id' => 'recent_items_providers',
+        'is_reserved' => TRUE,
       ]);
     }
     return TRUE;
diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveTwenty.php b/civicrm/CRM/Upgrade/Incremental/php/FiveTwenty.php
index 1edbef463cd71e3cf98867c6cbbdb4f2ca6921f8..c88ec4be86cc24c8aab0bae44c4dafed6c780e79 100644
--- a/civicrm/CRM/Upgrade/Incremental/php/FiveTwenty.php
+++ b/civicrm/CRM/Upgrade/Incremental/php/FiveTwenty.php
@@ -130,7 +130,7 @@ class CRM_Upgrade_Incremental_php_FiveTwenty extends CRM_Upgrade_Incremental_Bas
         continue;
       }
       // parse out existing id and direction
-      list($relationshipTypeId, $direction1) = explode('_', $match);
+      [$relationshipTypeId, $direction1] = explode('_', $match);
       // we only care about ones that are b_a
       if ($direction1 === 'b') {
         // we only care about bidirectional
diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyNine.php b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyNine.php
index de6ffb7808b001a9ff4a717c3e19dac39ef8e56c..b862968647460e2e82606716964bfae6fb9b7087 100644
--- a/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyNine.php
+++ b/civicrm/CRM/Upgrade/Incremental/php/FiveTwentyNine.php
@@ -42,7 +42,7 @@ class CRM_Upgrade_Incremental_php_FiveTwentyNine extends CRM_Upgrade_Incremental
     $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev);
     $this->addTask('Install eventcart extension', 'installEventCart');
 
-    list($minId, $maxId) = CRM_Core_DAO::executeQuery("SELECT coalesce(min(id),0), coalesce(max(id),0)
+    [$minId, $maxId] = CRM_Core_DAO::executeQuery("SELECT coalesce(min(id),0), coalesce(max(id),0)
       FROM civicrm_relationship ")->getDatabaseResult()->fetchRow();
     for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) {
       $endId = $startId + self::BATCH_SIZE - 1;
diff --git a/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php b/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php
index c4affbe683541d87e7634e9e73f4af4bf0805e1f..71f6d29712e69ce00a5863ce8eff35c169317f80 100644
--- a/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php
+++ b/civicrm/CRM/Upgrade/Incremental/php/FourSeven.php
@@ -457,7 +457,7 @@ class CRM_Upgrade_Incremental_php_FourSeven extends CRM_Upgrade_Incremental_Base
     // CRM-20868 : Update invoice_numbers (in batch) with value in [invoice prefix][contribution id] format
     $contributionSettings = Civi::settings()->get('contribution_invoice_settings');
     if (!empty($contributionSettings['invoicing']) && !empty($contributionSettings['invoice_prefix'])) {
-      list($minId, $maxId) = CRM_Core_DAO::executeQuery("SELECT coalesce(min(id),0), coalesce(max(id),0)
+      [$minId, $maxId] = CRM_Core_DAO::executeQuery("SELECT coalesce(min(id),0), coalesce(max(id),0)
       FROM civicrm_contribution ")->getDatabaseResult()->fetchRow();
       for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) {
         $endId = $startId + self::BATCH_SIZE - 1;
diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.54.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.54.alpha1.mysql.tpl
new file mode 100644
index 0000000000000000000000000000000000000000..57b267ca3cdc6e46e6534e59946278614bbeb939
--- /dev/null
+++ b/civicrm/CRM/Upgrade/Incremental/sql/5.54.alpha1.mysql.tpl
@@ -0,0 +1,19 @@
+{* file to handle db changes in 5.54.alpha1 during upgrade *}
+ALTER TABLE `civicrm_mailing_bounce_type` CHANGE `name` `name` VARCHAR(255) NOT NULL COMMENT 'Type of bounce', CHANGE `description` `description` VARCHAR(2048) NULL DEFAULT NULL COMMENT 'A description of this bounce type';
+
+SELECT @og_recent_items_providers := max(id) from civicrm_option_group where name = 'recent_items_providers';
+
+{* Ensure all recent_items_providers option values are reserved *}
+UPDATE `civicrm_option_value`
+SET `is_reserved` = 1
+WHERE `option_group_id` = @og_recent_items_providers;
+
+{* Fix option values accidentally created with numeric values in the 5.53.alpha1 upgrade *}
+UPDATE `civicrm_option_value`
+SET `value` = `name`
+WHERE `option_group_id` = @og_recent_items_providers AND `value` REGEXP '^[0-9]+$';
+
+{* Fix option values created with wrong name by the 5.53.0 installer *}
+UPDATE `civicrm_option_value`
+SET `name` = `value`
+WHERE `option_group_id` = @og_recent_items_providers;
diff --git a/civicrm/CRM/Upgrade/Page/Upgrade.php b/civicrm/CRM/Upgrade/Page/Upgrade.php
index cafa24aa22ef23e9ac2b3b27199b2b458e65a0e4..d1b5e2610b27d8504ec1a5114410c98db7cd8b8c 100644
--- a/civicrm/CRM/Upgrade/Page/Upgrade.php
+++ b/civicrm/CRM/Upgrade/Page/Upgrade.php
@@ -16,13 +16,6 @@
  */
 class CRM_Upgrade_Page_Upgrade extends CRM_Core_Page {
 
-  /**
-   * Pre-process.
-   */
-  public function preProcess() {
-    parent::preProcess();
-  }
-
   /**
    * Run upgrade.
    *
@@ -34,7 +27,7 @@ class CRM_Upgrade_Page_Upgrade extends CRM_Core_Page {
     Civi::resources()->addStyleFile('civicrm', 'css/admin.css');
 
     $upgrade = new CRM_Upgrade_Form();
-    list($currentVer, $latestVer) = $upgrade->getUpgradeVersions();
+    [$currentVer, $latestVer] = $upgrade->getUpgradeVersions();
 
     CRM_Utils_System::setTitle(ts('Upgrade CiviCRM to Version %1',
       [1 => $latestVer]
@@ -73,7 +66,7 @@ class CRM_Upgrade_Page_Upgrade extends CRM_Core_Page {
   public function runIntro() {
     $upgrade = new CRM_Upgrade_Form();
     $template = CRM_Core_Smarty::singleton();
-    list($currentVer, $latestVer) = $upgrade->getUpgradeVersions();
+    [$currentVer, $latestVer] = $upgrade->getUpgradeVersions();
     CRM_Core_Smarty::singleton()->assign('sid', CRM_Utils_System::getSiteID());
     // Show success msg if db already upgraded
     if (version_compare($currentVer, $latestVer) == 0) {
@@ -128,7 +121,7 @@ class CRM_Upgrade_Page_Upgrade extends CRM_Core_Page {
    */
   public function runBegin() {
     $upgrade = new CRM_Upgrade_Form();
-    list($currentVer, $latestVer) = $upgrade->getUpgradeVersions();
+    [$currentVer, $latestVer] = $upgrade->getUpgradeVersions();
 
     if ($error = $upgrade->checkUpgradeableVersion($currentVer, $latestVer)) {
       throw new CRM_Core_Exception($error);
@@ -182,7 +175,7 @@ class CRM_Upgrade_Page_Upgrade extends CRM_Core_Page {
     }
 
     // do a version check - after doFinish() sets the final version
-    list($currentVer, $latestVer) = $upgrade->getUpgradeVersions();
+    [$currentVer, $latestVer] = $upgrade->getUpgradeVersions();
     if ($error = $upgrade->checkCurrentVersion($currentVer, $latestVer)) {
       throw new CRM_Core_Exception($error);
     }
diff --git a/civicrm/CRM/Utils/Array.php b/civicrm/CRM/Utils/Array.php
index 12822ae35769bda160e6902831b74e1f96793b29..cf03d320b0f851774600f647f62bbdc0fd7119bc 100644
--- a/civicrm/CRM/Utils/Array.php
+++ b/civicrm/CRM/Utils/Array.php
@@ -1211,6 +1211,35 @@ class CRM_Utils_Array {
     }
   }
 
+  /**
+   * Take one well-defined item out of a single-item list.
+   *
+   * Assert that the list genuinely contains *exactly* one item.
+   *
+   * @param iterable $items
+   * @param string $recordTypeLabel
+   * @return mixed
+   *   The first (and only) item from the $items list.
+   * @throws \CRM_Core_Exception
+   */
+  public static function single(iterable $items, string $recordTypeLabel = 'record') {
+    $result = NULL;
+    foreach ($items as $values) {
+      if ($result === NULL) {
+        $result = $values;
+      }
+      else {
+        throw new \CRM_Core_Exception("Expected to find one {$recordTypeLabel}, but there were multiple.");
+      }
+    }
+
+    if ($result === NULL) {
+      throw new \CRM_Core_Exception("Expected to find one {$recordTypeLabel}, but there were zero.");
+    }
+
+    return $result;
+  }
+
   /**
    * Convert a simple dictionary into separate key+value records.
    *
@@ -1355,7 +1384,7 @@ class CRM_Utils_Array {
    * @param string $prefix
    * @return array
    */
-  public static function prefixKeys(array $collection, string $prefix) {
+  public static function prefixKeys(array $collection, string $prefix): array {
     $result = [];
     foreach ($collection as $key => $value) {
       $result[$prefix . $key] = $value;
@@ -1363,4 +1392,21 @@ class CRM_Utils_Array {
     return $result;
   }
 
+  /**
+   * Removes all items from an array whose keys have a given prefix, and returns them unprefixed.
+   *
+   * @param array $collection
+   * @param string $prefix
+   */
+  public static function filterByPrefix(array &$collection, string $prefix): array {
+    $filtered = [];
+    foreach (array_keys($collection) as $key) {
+      if (!$prefix || strpos($key, $prefix) === 0) {
+        $filtered[substr($key, strlen($prefix))] = $collection[$key];
+        unset($collection[$key]);
+      }
+    }
+    return $filtered;
+  }
+
 }
diff --git a/civicrm/CRM/Utils/AutoClean.php b/civicrm/CRM/Utils/AutoClean.php
index 514283f434676ce7f085001720e22abfe9f3d2b8..b02c67479fd8aaa190143ad23b5bb1cbb012e357 100644
--- a/civicrm/CRM/Utils/AutoClean.php
+++ b/civicrm/CRM/Utils/AutoClean.php
@@ -68,6 +68,47 @@ class CRM_Utils_AutoClean {
     });
   }
 
+  /**
+   * Temporarily override the values for system settings.
+   *
+   * Note: This was written for use with unit-tests. Give a hard think before using it at runtime.
+   *
+   * @param array $newSettings
+   *   List of new settings (key-value pairs).
+   * @return \CRM_Utils_AutoClean
+   */
+  public static function swapSettings(array $newSettings): CRM_Utils_AutoClean {
+    // Overwrite the `civicrm_setting` and (later on) rewrite the original values to `civicrm_setting`.
+    // This process could be simpler if SettingsBag::$mandatory supported multiple layers of overrides.
+    $settings = \Civi::settings();
+
+    // Backup the old settings
+    $oldExplicitSettings = [];
+    foreach ($newSettings as $name => $newSetting) {
+      if ($settings->hasExplict($name)) {
+        $oldExplicitSettings[$name] = $settings->getExplicit($name);
+      }
+      if ($settings->getMandatory($name) !== NULL) {
+        throw new \CRM_Core_Exception("Cannot override mandatory setting ($name)");
+      }
+    }
+
+    // Apply the new settings
+    $settings->add($newSettings);
+
+    // Auto-restore the original settings
+    return CRM_Utils_AutoClean::with(function() use ($newSettings, $oldExplicitSettings) {
+      $settings = \Civi::settings();
+      // Restoring may mean `revert()` or `add()` (depending on the original disposition of the setting).
+      foreach ($newSettings as $name => $newSetting) {
+        if (!array_key_exists($name, $oldExplicitSettings)) {
+          \Civi::settings()->revert($name);
+        }
+      }
+      $settings->add($oldExplicitSettings);
+    });
+  }
+
   /**
    * Temporarily swap values using callback functions, and cleanup
    * when the current context shuts down.
diff --git a/civicrm/CRM/Utils/Cache/FastArrayDecorator.php b/civicrm/CRM/Utils/Cache/FastArrayDecorator.php
index 21efcbbac72231f97f5a3e53e9650205de71b2e8..67ebe54c4fee47c2c66c491aa67aafece2d25911 100644
--- a/civicrm/CRM/Utils/Cache/FastArrayDecorator.php
+++ b/civicrm/CRM/Utils/Cache/FastArrayDecorator.php
@@ -115,7 +115,21 @@ class CRM_Utils_Cache_FastArrayDecorator implements CRM_Utils_Cache_Interface {
   }
 
   public function has($key) {
-    return $this->delegate->has($key);
+    CRM_Utils_Cache::assertValidKey($key);
+    if (array_key_exists($key, $this->values)) {
+      return TRUE;
+    }
+    // Doing a get here populates `$this->values`. If the calling
+    // code does a `has()` followed by a `get` we want only one
+    // look-up so do that lookup on the first request.
+    // (The only real reason to do `has` & then `get` is it is
+    // less ambiguous for false & empty values)
+    // `$this->delegate->has($key)` here then an extra
+    // lookup will be needed if we do `has` followed by `get`.
+    // Reducing `get` calls to the underlying cache has significant
+    // speed improvement (see https://github.com/civicrm/civicrm-core/pull/24156)
+    $this->get($key);
+    return array_key_exists($key, $this->values);
   }
 
 }
diff --git a/civicrm/CRM/Utils/Check.php b/civicrm/CRM/Utils/Check.php
index c53912830e2962f9bbf3dc3e272459e8962fde2c..256fc7e3e7b661c7a6a9a44f536b83673c2bcfb1 100644
--- a/civicrm/CRM/Utils/Check.php
+++ b/civicrm/CRM/Utils/Check.php
@@ -209,7 +209,7 @@ class CRM_Utils_Check {
     $checksNeeded = $statusNames;
     foreach (glob(__DIR__ . '/Check/Component/*.php') as $filePath) {
       $className = 'CRM_Utils_Check_Component_' . basename($filePath, '.php');
-      /* @var CRM_Utils_Check_Component $component */
+      /** @var CRM_Utils_Check_Component $component */
       $component = new $className();
       if ($includeDisabled || $component->isEnabled()) {
         $messages = array_merge($messages, $component->checkAll($statusNames, $includeDisabled));
diff --git a/civicrm/CRM/Utils/Check/Component/ContactTypes.php b/civicrm/CRM/Utils/Check/Component/ContactTypes.php
index bfd2983d1f5b1f2f72de429f0a9d2ce477be7587..ebeee75f9d68bae6836a23f85f35ca294cef006f 100644
--- a/civicrm/CRM/Utils/Check/Component/ContactTypes.php
+++ b/civicrm/CRM/Utils/Check/Component/ContactTypes.php
@@ -41,7 +41,7 @@ class CRM_Utils_Check_Component_ContactTypes extends CRM_Utils_Check_Component {
         'fa-picture-o'
       );
       foreach ($contactTypesWithImages as $contactType) {
-        $message->addAction($contactType['label'], FALSE, 'href', ['path' => 'civicrm/admin/options/subtype', 'query' => ['action' => 'update', 'id' => $contactType['id'], 'reset' => 1]], 'fa-pencil');
+        $message->addAction($contactType['label'], FALSE, 'href', ['path' => 'civicrm/admin/options/subtype/edit', 'query' => ['action' => 'update', 'id' => $contactType['id'], 'reset' => 1]], 'fa-pencil');
       }
       $messages[] = $message;
     }
diff --git a/civicrm/CRM/Utils/Check/Component/Source.php b/civicrm/CRM/Utils/Check/Component/Source.php
index 683f7cd3e38fedaf68608e7add122d8939271bf1..9ab53711f734d37c7f9d41ea3fdac6d2ce97ca63 100644
--- a/civicrm/CRM/Utils/Check/Component/Source.php
+++ b/civicrm/CRM/Utils/Check/Component/Source.php
@@ -35,6 +35,8 @@ class CRM_Utils_Check_Component_Source extends CRM_Utils_Check_Component {
     $files[] = '[civicrm.vendor]/pear/net_smtp/phpdoc.sh';
     $files[] = '[civicrm.vendor]/phpoffice/phpword/samples';
     $files[] = '[civicrm.root]/templates/CRM/common/version.tpl';
+    // TODO: We need more proactive deletion for files like:
+    // $files[]  = '[civicrm.root]/CRM/Contact/Import/Parser.php';
     $files[] = '[civicrm.packages]/Log.php';
     $files[] = '[civicrm.packages]/_ORIGINAL_/Log.php';
     $files[] = '[civicrm.packages]/Log/composite.php';
@@ -58,7 +60,7 @@ class CRM_Utils_Check_Component_Source extends CRM_Utils_Check_Component {
   }
 
   /**
-   * @return CRM_Utils_Check_Message[]
+   * @return array
    *   Each item is an array with keys:
    *     - name: string, an abstract name
    *     - path: string, a full file path
diff --git a/civicrm/CRM/Utils/DeprecatedUtils.php b/civicrm/CRM/Utils/DeprecatedUtils.php
deleted file mode 100644
index 7b9cb3f67da2b381d806f7f4bccab3fba32684b5..0000000000000000000000000000000000000000
--- a/civicrm/CRM/Utils/DeprecatedUtils.php
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-/*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
- */
-
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC https://civicrm.org/licensing
- */
-
-/*
- * These functions have been deprecated out of API v3 Utils folder as they are not part of the
- * API. Calling API functions directly is not supported & these functions are not called by any
- * part of the API so are not really part of the api
- *
- */
-
-require_once 'api/v3/utils.php';
-
-/**
- *
- * @param array $params
- *
- * @return array
- *   <type>
- */
-function _civicrm_api3_deprecated_duplicate_formatted_contact($params) {
-  $id = $params['id'] ?? NULL;
-  $externalId = $params['external_identifier'] ?? NULL;
-  if ($id || $externalId) {
-    $contact = new CRM_Contact_DAO_Contact();
-
-    $contact->id = $id;
-    $contact->external_identifier = $externalId;
-
-    if ($contact->find(TRUE)) {
-      if ($params['contact_type'] != $contact->contact_type) {
-        return ['is_error' => 1, 'error_message' => 'Mismatched contact IDs OR Mismatched contact Types'];
-      }
-      return [
-        'is_error' => 1,
-        'error_message' => [
-          'code' => CRM_Core_Error::DUPLICATE_CONTACT,
-          'params' => [$contact->id],
-          'level' => 'Fatal',
-          'message' => "Found matching contacts: $contact->id",
-        ],
-      ];
-    }
-  }
-  else {
-    $ids = CRM_Contact_BAO_Contact::getDuplicateContacts($params, $params['contact_type'], 'Unsupervised');
-
-    if (!empty($ids)) {
-      return [
-        'is_error' => 1,
-        'error_message' => [
-          'code' => CRM_Core_Error::DUPLICATE_CONTACT,
-          'params' => $ids,
-          'level' => 'Fatal',
-          'message' => 'Found matching contacts: ' . implode(',', $ids),
-        ],
-      ];
-    }
-  }
-  return ['is_error' => 0];
-}
diff --git a/civicrm/CRM/Utils/File.php b/civicrm/CRM/Utils/File.php
index 675709e9e63d05a7e293a923be7ae23e91da373d..977b9fc8368e8d0cf94ee6635f288379a35c4df1 100644
--- a/civicrm/CRM/Utils/File.php
+++ b/civicrm/CRM/Utils/File.php
@@ -766,25 +766,11 @@ HTACCESS;
         }
       }
       // Find subdirs to recurse into.
-      if ($dh = opendir($subdir)) {
-        while (FALSE !== ($entry = readdir($dh))) {
-          $path = $subdir . DIRECTORY_SEPARATOR . $entry;
-          // Exclude . (self) and .. (parent) to avoid infinite loop.
-          // Exclude configured exclude dirs.
-          // Exclude dirs we can't read.
-          // Exclude anything that's not a dir.
-          if (
-            $entry !== '.'
-            && $entry !== '..'
-            && (empty($excludeDirsPattern) || !preg_match($excludeDirsPattern, $path))
-            && is_dir($path)
-            && is_readable($path)
-          ) {
-            $todos[] = $path;
-          }
-        }
-        closedir($dh);
+      $subdirs = glob("$subdir/*", GLOB_ONLYDIR);
+      if (!empty($excludeDirsPattern)) {
+        $subdirs = preg_grep($excludeDirsPattern, $subdirs, PREG_GREP_INVERT);
       }
+      $todos = array_merge($todos, $subdirs);
     }
     return $result;
   }
diff --git a/civicrm/CRM/Utils/Mail/EmailProcessor.php b/civicrm/CRM/Utils/Mail/EmailProcessor.php
index cb72edc273e41a81484bfc955859dc21575d1e0f..49e20acfb364f3297bc779f092c41f478d9452ca 100644
--- a/civicrm/CRM/Utils/Mail/EmailProcessor.php
+++ b/civicrm/CRM/Utils/Mail/EmailProcessor.php
@@ -146,16 +146,16 @@ class CRM_Utils_Mail_EmailProcessor {
         if ($usedfor == 1) {
           foreach ($mail->to as $address) {
             if (preg_match($regex, ($address->email ?? ''), $matches)) {
-              list($match, $action, $job, $queue, $hash) = $matches;
+              [$match, $action, $job, $queue, $hash] = $matches;
               break;
               // FIXME: the below elseifs should be dropped when we drop legacy support
             }
             elseif (preg_match($commonRegex, ($address->email ?? ''), $matches)) {
-              list($match, $action, $_, $job, $queue, $hash) = $matches;
+              [$match, $action, $_, $job, $queue, $hash] = $matches;
               break;
             }
             elseif (preg_match($subscrRegex, ($address->email ?? ''), $matches)) {
-              list($match, $action, $_, $job) = $matches;
+              [$match, $action, $_, $job] = $matches;
               break;
             }
           }
@@ -163,13 +163,13 @@ class CRM_Utils_Mail_EmailProcessor {
           // CRM-5471: if $matches is empty, it still might be a soft bounce sent
           // to another address, so scan the body for ‘Return-Path: …bounce-pattern…’
           if (!$matches and preg_match($rpRegex, ($mail->generateBody() ?? ''), $matches)) {
-            list($match, $action, $job, $queue, $hash) = $matches;
+            [$match, $action, $job, $queue, $hash] = $matches;
           }
 
           // if $matches is still empty, look for the X-CiviMail-Bounce header
           // CRM-9855
           if (!$matches and preg_match($rpXheaderRegex, ($mail->generateBody() ?? ''), $matches)) {
-            list($match, $action, $job, $queue, $hash) = $matches;
+            [$match, $action, $job, $queue, $hash] = $matches;
           }
           // With Mandrilla, the X-CiviMail-Bounce header is produced by generateBody
           // is base64 encoded
@@ -181,7 +181,7 @@ class CRM_Utils_Mail_EmailProcessor {
                 $p_file = $v_part->__get('fileName');
                 $c_file = file_get_contents($p_file);
                 if (preg_match($rpXheaderRegex, ($c_file ?? ''), $matches)) {
-                  list($match, $action, $job, $queue, $hash) = $matches;
+                  [$match, $action, $job, $queue, $hash] = $matches;
                 }
               }
             }
@@ -189,7 +189,7 @@ class CRM_Utils_Mail_EmailProcessor {
 
           // if all else fails, check Delivered-To for possible pattern
           if (!$matches and preg_match($regex, ($mail->getHeader('Delivered-To') ?? ''), $matches)) {
-            list($match, $action, $job, $queue, $hash) = $matches;
+            [$match, $action, $job, $queue, $hash] = $matches;
           }
         }
 
diff --git a/civicrm/CRM/Utils/Money.php b/civicrm/CRM/Utils/Money.php
index 3cc33e4226cc7757f95b975aa93afeb7e2109033..dae51abf9e9802758c6e1105f17c45e975fe4221 100644
--- a/civicrm/CRM/Utils/Money.php
+++ b/civicrm/CRM/Utils/Money.php
@@ -15,10 +15,13 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
-use Brick\Money\Money;
-use Brick\Money\Context\DefaultContext;
-use Brick\Money\Context\CustomContext;
 use Brick\Math\RoundingMode;
+use Brick\Money\Context\CustomContext;
+use Brick\Money\Context\DefaultContext;
+use Brick\Money\Currency;
+use Brick\Money\ISOCurrencyProvider;
+use Brick\Money\Money;
+use Brick\Money\Exception\UnknownCurrencyException;
 
 /**
  * Money utilties
@@ -118,6 +121,31 @@ class CRM_Utils_Money {
     return 2;
   }
 
+  /**
+   * Get the currency object for a given
+   *
+   * Wrapper around the Brick library to support currency codes which Brick doesn't support
+   *
+   * @internal
+   * @param string $currencyCode
+   * @return Brick\Money\Currency
+   */
+  public static function getCurrencyObject(string $currencyCode): Currency {
+    try {
+      $currency = ISOCurrencyProvider::getInstance()->getCurrency($currencyCode);
+    }
+    catch (UnknownCurrencyException $e) {
+      $currency = new Currency(
+        $currencyCode,
+        0,
+        $currencyCode,
+        2
+      );
+    }
+
+    return $currency;
+  }
+
   /**
    * Subtract currencies using integers instead of floats, to preserve precision
    *
@@ -130,8 +158,9 @@ class CRM_Utils_Money {
    */
   public static function subtractCurrencies($leftOp, $rightOp, $currency) {
     if (is_numeric($leftOp) && is_numeric($rightOp)) {
-      $leftMoney = Money::of($leftOp, $currency, new DefaultContext(), RoundingMode::CEILING);
-      $rightMoney = Money::of($rightOp, $currency, new DefaultContext(), RoundingMode::CEILING);
+      $currencyObject = self::getCurrencyObject($currency);
+      $leftMoney = Money::of($leftOp, $currencyObject, new DefaultContext(), RoundingMode::CEILING);
+      $rightMoney = Money::of($rightOp, $currencyObject, new DefaultContext(), RoundingMode::CEILING);
       return $leftMoney->minus($rightMoney)->getAmount()->toFloat();
     }
   }
@@ -173,7 +202,9 @@ class CRM_Utils_Money {
    * @throws \Brick\Money\Exception\UnknownCurrencyException
    */
   protected static function formatLocaleNumeric(string $amount, $locale = NULL, $currency = NULL, $numberOfPlaces = 2): string {
-    $money = Money::of($amount, $currency ?? CRM_Core_Config::singleton()->defaultCurrency, new CustomContext($numberOfPlaces), RoundingMode::HALF_UP);
+    $currency = $currency ?? CRM_Core_Config::singleton()->defaultCurrency;
+    $currencyObject = self::getCurrencyObject($currency);
+    $money = Money::of($amount, $currencyObject, new CustomContext($numberOfPlaces), RoundingMode::HALF_UP);
     $formatter = new \NumberFormatter($locale ?? CRM_Core_I18n::getLocale(), NumberFormatter::DECIMAL);
     $formatter->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, $numberOfPlaces);
     return $money->formatWith($formatter);
@@ -206,7 +237,8 @@ class CRM_Utils_Money {
       }
       return self::formatNumericByFormat($amount, '%!.' . $numberOfPlaces . 'i');
     }
-    $money = Money::of($amount, CRM_Core_Config::singleton()->defaultCurrency, new CustomContext($numberOfPlaces), RoundingMode::HALF_UP);
+    $currencyObject = self::getCurrencyObject(CRM_Core_Config::singleton()->defaultCurrency);
+    $money = Money::of($amount, $currencyObject, new CustomContext($numberOfPlaces), RoundingMode::HALF_UP);
     // @todo - we specify en_US here because we don't want this function to do
     // currency replacement at the moment because
     // formatLocaleNumericRoundedByPrecision is doing it and if it
diff --git a/civicrm/CRM/Utils/REST.php b/civicrm/CRM/Utils/REST.php
index 0848fdeac3de951f7df7dcacb98155050a5e2f19..288c62334eb933ecddb8b36cf1a091f780f739d6 100644
--- a/civicrm/CRM/Utils/REST.php
+++ b/civicrm/CRM/Utils/REST.php
@@ -590,9 +590,6 @@ class CRM_Utils_REST {
     }
 
     if (!CRM_Utils_System::authenticateKey(FALSE)) {
-      // FIXME: At time of writing, this doesn't actually do anything because
-      // authenticateKey abends, but that's a bad behavior which sends a
-      // malformed response.
       CRM_Utils_System::loadBootStrap([], FALSE, FALSE);
       return self::error('Failed to authenticate key');
     }
diff --git a/civicrm/CRM/Utils/System.php b/civicrm/CRM/Utils/System.php
index b980182b80b753bb8f960fd88cde399a0dee2e2e..345db10a479a1fe026e5cdfed8445043c8fed8af 100644
--- a/civicrm/CRM/Utils/System.php
+++ b/civicrm/CRM/Utils/System.php
@@ -126,7 +126,7 @@ class CRM_Utils_System {
       for ($i = 0, $cnt = count($qs); $i < $cnt; $i++) {
         // check first if exist a pair
         if (strstr($qs[$i], '=') !== FALSE) {
-          list($name, $value) = explode('=', $qs[$i]);
+          [$name, $value] = explode('=', $qs[$i]);
           if ($name != $urlVar) {
             $name = rawurldecode($name);
             // check for arrays in parameters: site.php?foo[]=1&foo[]=2&foo[]=3
@@ -265,15 +265,15 @@ class CRM_Utils_System {
 
     // Extract fragment from path or query if munged together
     if ($query && strstr($query, '#')) {
-      list($path, $fragment) = explode('#', $query);
+      [$path, $fragment] = explode('#', $query);
     }
     if ($path && strstr($path, '#')) {
-      list($path, $fragment) = explode('#', $path);
+      [$path, $fragment] = explode('#', $path);
     }
 
     // Extract query from path if munged together
     if ($path && strstr($path, '?')) {
-      list($path, $extraQuery) = explode('?', $path);
+      [$path, $extraQuery] = explode('?', $path);
       $query = $extraQuery . ($query ? "&$query" : '');
     }
 
@@ -723,7 +723,7 @@ class CRM_Utils_System {
     }
     elseif ($storeInSession) {
       // lets store contact id and user id in session
-      list($userID, $ufID, $randomNumber) = $result;
+      [$userID, $ufID, $randomNumber] = $result;
       if ($userID && $ufID) {
         $config = CRM_Core_Config::singleton();
         $config->userSystem->setUserSession([$userID, $ufID]);
@@ -995,7 +995,7 @@ class CRM_Utils_System {
 
     if (!array_key_exists($callback, self::$_callbacks)) {
       if (strpos($callback, '::') !== FALSE) {
-        list($className, $methodName) = explode('::', $callback);
+        [$className, $methodName] = explode('::', $callback);
         $fileName = str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
         // ignore errors if any
         @include_once $fileName;
@@ -1171,7 +1171,7 @@ class CRM_Utils_System {
    * @return string
    */
   public static function majorVersion() {
-    list($a, $b) = explode('.', self::version());
+    [$a, $b] = explode('.', self::version());
     return "$a.$b";
   }
 
diff --git a/civicrm/CRM/Utils/System/Drupal8.php b/civicrm/CRM/Utils/System/Drupal8.php
index 605c7ab04cf6ec26c65dee5ddd214b4b73cdc014..c26f2b63b01d3e19a3b8e1f7a4a622c875f7fcbd 100644
--- a/civicrm/CRM/Utils/System/Drupal8.php
+++ b/civicrm/CRM/Utils/System/Drupal8.php
@@ -430,11 +430,8 @@ class CRM_Utils_System_Drupal8 extends CRM_Utils_System_DrupalBase {
     $kernel->preHandle($request);
     $container = $kernel->rebuildContainer();
     // Add our request to the stack and route context.
-    $routeInterface = class_exists('\Drupal\Core\Routing\RouteObjectInterface')
-      ? '\Drupal\Core\Routing\RouteObjectInterface'
-      : '\Symfony\Cmf\Component\Routing\RouteObjectInterface';
-    $request->attributes->set($routeInterface::ROUTE_OBJECT, new \Symfony\Component\Routing\Route('<none>'));
-    $request->attributes->set($routeInterface::ROUTE_NAME, '<none>');
+    $request->attributes->set(\Drupal\Core\Routing\RouteObjectInterface::ROUTE_OBJECT, new \Symfony\Component\Routing\Route('<none>'));
+    $request->attributes->set(\Drupal\Core\Routing\RouteObjectInterface::ROUTE_NAME, '<none>');
     $container->get('request_stack')->push($request);
     $container->get('router.request_context')->fromRequest($request);
 
diff --git a/civicrm/CRM/Utils/System/Joomla.php b/civicrm/CRM/Utils/System/Joomla.php
index 91dd8b6e232c080c52d7d2e57d2bc88d52701bf3..9bedbdeff2b882d5fab357c5688d16d5ca2e1115 100644
--- a/civicrm/CRM/Utils/System/Joomla.php
+++ b/civicrm/CRM/Utils/System/Joomla.php
@@ -378,7 +378,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
         (version_compare(JVERSION, '3.0', 'ge') && version_compare(JVERSION, '3.2.1', 'lt'))
       ) {
         // now check password
-        list($hash, $salt) = explode(':', $dbPassword);
+        [$hash, $salt] = explode(':', $dbPassword);
         $cryptpass = md5($password . $salt);
         if ($hash != $cryptpass) {
           return FALSE;
@@ -420,7 +420,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
    *   Array with user specific data.
    */
   public function setUserSession($data) {
-    list($userID, $ufID) = $data;
+    [$userID, $ufID] = $data;
     $user = new JUser($ufID);
     $session = JFactory::getSession();
     $session->set('user', $user);
@@ -783,7 +783,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base {
       return $civicrm_paths['cms.root']['path'];
     }
 
-    list($url, $siteName, $siteRoot) = $this->getDefaultSiteSettings();
+    [$url, $siteName, $siteRoot] = $this->getDefaultSiteSettings();
     if (file_exists("$siteRoot/administrator/index.php")) {
       return $siteRoot;
     }
diff --git a/civicrm/CRM/Utils/VersionCheck.php b/civicrm/CRM/Utils/VersionCheck.php
index 4a9407f5dbe8f7783b30a9f77c0f6da81415cd4c..603fa3adfc0ae068c6edeea5244c666e99ad8160 100644
--- a/civicrm/CRM/Utils/VersionCheck.php
+++ b/civicrm/CRM/Utils/VersionCheck.php
@@ -205,7 +205,7 @@ class CRM_Utils_VersionCheck {
     ];
     foreach ($tables as $daoName => $where) {
       if (class_exists($daoName)) {
-        /* @var \CRM_Core_DAO $dao */
+        /** @var \CRM_Core_DAO $dao */
         $dao = new $daoName();
         if ($where) {
           $dao->whereAdd($where);
diff --git a/civicrm/Civi/API/Api3SelectQuery.php b/civicrm/Civi/API/Api3SelectQuery.php
index 7411d4909ba3c00ff9b3d7343e04b2d240096d6c..3bd6708ffa75f8914a4027bd52139729521b3117 100644
--- a/civicrm/Civi/API/Api3SelectQuery.php
+++ b/civicrm/Civi/API/Api3SelectQuery.php
@@ -76,12 +76,12 @@ class Api3SelectQuery extends SelectQuery {
         // If we check a custom field on 'IS NULL', it should also work when there is no
         // record in the custom value table, see CRM-20740.
         $side = empty($value['IS NULL']) ? 'INNER' : 'LEFT OUTER';
-        list($table_name, $column_name) = $this->addCustomField($this->apiFieldSpec['custom_' . $cf_id], $side);
+        [$table_name, $column_name] = $this->addCustomField($this->apiFieldSpec['custom_' . $cf_id], $side);
       }
       elseif (strpos($key, '.')) {
         $fkInfo = $this->addFkField($key, 'INNER');
         if ($fkInfo) {
-          list($table_name, $column_name) = $fkInfo;
+          [$table_name, $column_name] = $fkInfo;
           $this->validateNestedInput($key, $value);
         }
       }
diff --git a/civicrm/Civi/API/Kernel.php b/civicrm/Civi/API/Kernel.php
index 96cc6120fc5f025bd31ba85dc70a032e61eff04d..8dae508a790b552d918d849347e68a7e5a3b4e64 100644
--- a/civicrm/Civi/API/Kernel.php
+++ b/civicrm/Civi/API/Kernel.php
@@ -120,7 +120,7 @@ class Kernel {
 
     try {
       $this->boot($apiRequest);
-      list($apiProvider, $apiRequest) = $this->resolve($apiRequest);
+      [$apiProvider, $apiRequest] = $this->resolve($apiRequest);
       $this->authorize($apiProvider, $apiRequest);
       return TRUE;
     }
@@ -143,9 +143,9 @@ class Kernel {
   public function runRequest($apiRequest) {
     $this->boot($apiRequest);
 
-    list($apiProvider, $apiRequest) = $this->resolve($apiRequest);
+    [$apiProvider, $apiRequest] = $this->resolve($apiRequest);
     $this->authorize($apiProvider, $apiRequest);
-    list ($apiProvider, $apiRequest) = $this->prepare($apiProvider, $apiRequest);
+    [$apiProvider, $apiRequest] = $this->prepare($apiProvider, $apiRequest);
     $result = $apiProvider->invoke($apiRequest);
 
     return $this->respond($apiProvider, $apiRequest, $result);
diff --git a/civicrm/Civi/API/Provider/MagicFunctionProvider.php b/civicrm/Civi/API/Provider/MagicFunctionProvider.php
index e7529b335601afd5907b3a11981efba52b3bef27..8ddcf017cd8f7cd2f4cef745014e9a26b298f0f6 100644
--- a/civicrm/Civi/API/Provider/MagicFunctionProvider.php
+++ b/civicrm/Civi/API/Provider/MagicFunctionProvider.php
@@ -284,7 +284,7 @@ class MagicFunctionProvider implements EventSubscriberInterface, ProviderInterfa
     foreach ($include_dirs as $include_dir) {
       foreach ([$camelName, 'Generic'] as $name) {
         $action_dir = implode(DIRECTORY_SEPARATOR,
-          [$include_dir, 'api', "v${version}", $name]);
+          [$include_dir, 'api', "v{$version}", $name]);
         // see note above in getEntityNames about open_basedir
         if (!\CRM_Utils_File::isDir($action_dir)) {
           continue;
diff --git a/civicrm/Civi/API/Subscriber/DebugSubscriber.php b/civicrm/Civi/API/Subscriber/DebugSubscriber.php
index 0e6be75478e74dd606e2923cd00bf66955aee798..2e1f3ee7188b32bf3459639a227ab877f0e32e1e 100644
--- a/civicrm/Civi/API/Subscriber/DebugSubscriber.php
+++ b/civicrm/Civi/API/Subscriber/DebugSubscriber.php
@@ -37,7 +37,8 @@ class DebugSubscriber implements EventSubscriberInterface {
         break;
 
       case '3.':
-        $xdebugMode = explode(',', ini_get('xdebug.mode'));
+        $xdebugMode = version_compare($version, '3.1', '>=')
+          ? xdebug_info('mode') : explode(',', ini_get('xdebug.mode'));
         $this->enableStats = in_array('develop', $xdebugMode);
         break;
 
diff --git a/civicrm/Civi/API/Subscriber/DynamicFKAuthorization.php b/civicrm/Civi/API/Subscriber/DynamicFKAuthorization.php
index 225a00b402c7505df179750c61807041606f8e7c..ec5a50ac131d1d5d12783d67f3d46cf48d240992 100644
--- a/civicrm/Civi/API/Subscriber/DynamicFKAuthorization.php
+++ b/civicrm/Civi/API/Subscriber/DynamicFKAuthorization.php
@@ -156,7 +156,7 @@ class DynamicFKAuthorization implements EventSubscriberInterface {
       }
 
       if (isset($apiRequest['params']['id'])) {
-        list($isValidId, $entityTable, $entityId) = $this->getDelegate($apiRequest['params']['id']);
+        [$isValidId, $entityTable, $entityId] = $this->getDelegate($apiRequest['params']['id']);
         if ($isValidId && $entityTable && $entityId) {
           $this->authorizeDelegate($apiRequest['action'], $entityTable, $entityId, $apiRequest);
           $this->preventReassignment($apiRequest['params']['id'], $entityTable, $entityId, $apiRequest);
diff --git a/civicrm/Civi/API/Subscriber/I18nSubscriber.php b/civicrm/Civi/API/Subscriber/I18nSubscriber.php
index d3b732972a2a17f59698a3a32d172858823edeaf..5cff1073004ea0a39f62de449ab63f877f26d2e2 100644
--- a/civicrm/Civi/API/Subscriber/I18nSubscriber.php
+++ b/civicrm/Civi/API/Subscriber/I18nSubscriber.php
@@ -12,6 +12,7 @@
 namespace Civi\API\Subscriber;
 
 use Civi\API\Events;
+use Civi\Core\Locale;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
 /**
@@ -24,8 +25,9 @@ class I18nSubscriber implements EventSubscriberInterface {
    * Used for rolling back language to its original setting after the api call.
    *
    * @var array
+   *   Array(string $requestId => \Civi\Core\Locale $locale).
    */
-  public $originalLang = [];
+  protected $originalLocale = [];
 
   /**
    * @return array
@@ -56,7 +58,11 @@ class I18nSubscriber implements EventSubscriberInterface {
       $language = $params['language'] ?? NULL;
     }
     if ($language) {
-      $this->setLocale($language, $apiRequest['id']);
+      $newLocale = Locale::negotiate($language);
+      if ($newLocale) {
+        $this->originalLocale[$apiRequest['id']] = Locale::detect();
+        $newLocale->apply();
+      }
     }
   }
 
@@ -70,48 +76,9 @@ class I18nSubscriber implements EventSubscriberInterface {
   public function onApiRespond(\Civi\API\Event\Event $event) {
     $apiRequest = $event->getApiRequest();
 
-    if (!empty($this->originalLang[$apiRequest['id']])) {
-      global $tsLocale;
-      global $dbLocale;
-      $tsLocale = $this->originalLang[$apiRequest['id']]['tsLocale'];
-      $dbLocale = $this->originalLang[$apiRequest['id']]['dbLocale'];
-    }
-  }
-
-  /**
-   * Sets the tsLocale and dbLocale for multi-lingual sites.
-   * Some code duplication from CRM/Core/BAO/ConfigSetting.php retrieve()
-   * to avoid regressions from refactoring.
-   * @param string $lcMessages
-   * @param int $requestId
-   * @throws \API_Exception
-   */
-  public function setLocale($lcMessages, $requestId) {
-    $domain = new \CRM_Core_DAO_Domain();
-    $domain->id = \CRM_Core_Config::domainID();
-    $domain->find(TRUE);
-
-    // Check if the site is multi-lingual
-    if ($domain->locales && $lcMessages) {
-      // Validate language, otherwise a bad dbLocale could probably lead to sql-injection.
-      if (!array_key_exists($lcMessages, \Civi::settings()->get('languageLimit'))) {
-        throw new \API_Exception(ts('Language not enabled: %1', [1 => $lcMessages]));
-      }
-
-      global $dbLocale;
-      global $tsLocale;
-
-      // Store original value to be restored in $this->onApiRespond
-      $this->originalLang[$requestId] = [
-        'tsLocale' => $tsLocale,
-        'dbLocale' => $dbLocale,
-      ];
-
-      // Set suffix for table names - use views if more than one language
-      $dbLocale = "_{$lcMessages}";
-
-      // Also set tsLocale - CRM-4041
-      $tsLocale = $lcMessages;
+    if (!empty($this->originalLocale[$apiRequest['id']])) {
+      $this->originalLocale[$apiRequest['id']]->apply();
+      unset($this->originalLocale[$apiRequest['id']]);
     }
   }
 
diff --git a/civicrm/Civi/Api4/Action/Contact/ContactSaveTrait.php b/civicrm/Civi/Api4/Action/Contact/ContactSaveTrait.php
index 3fcc920a254b5a80556be5ec9deb38a7844e425e..4dadbe0603b7fe6095846e157546db20ba7fb897 100644
--- a/civicrm/Civi/Api4/Action/Contact/ContactSaveTrait.php
+++ b/civicrm/Civi/Api4/Action/Contact/ContactSaveTrait.php
@@ -13,7 +13,6 @@
 namespace Civi\Api4\Action\Contact;
 
 use Civi\Api4\Utils\CoreUtil;
-use Civi\Api4\Utils\FormattingUtil;
 
 /**
  * Code shared by Contact create/update/save actions
@@ -58,7 +57,7 @@ trait ContactSaveTrait {
     foreach (['Address', 'Email', 'Phone', 'IM'] as $entity) {
       foreach (['primary', 'billing'] as $type) {
         $prefix = strtolower($entity) . '_' . $type . '.';
-        $item = FormattingUtil::filterByPrefix($params, $prefix . '*', '*');
+        $item = \CRM_Utils_Array::filterByPrefix($params, $prefix);
         // Not allowed to update by id or alter primary or billing flags
         unset($item['id'], $item['is_primary'], $item['is_billing']);
         if ($item) {
diff --git a/civicrm/Civi/Api4/Action/Contact/GetDuplicates.php b/civicrm/Civi/Api4/Action/Contact/GetDuplicates.php
new file mode 100644
index 0000000000000000000000000000000000000000..a45cf1ab535946fd81b9cf535fa68990a9a79d9e
--- /dev/null
+++ b/civicrm/Civi/Api4/Action/Contact/GetDuplicates.php
@@ -0,0 +1,162 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Action\Contact;
+
+use Civi\Api4\DedupeRuleGroup;
+use Civi\Api4\Generic\BasicGetFieldsAction;
+use Civi\Api4\Generic\Result;
+use Civi\Api4\Utils\FormattingUtil;
+
+/**
+ * Get matching contacts based on a dedupe rule
+ * @method setDedupeRule(string $dedupeRule)
+ * @method string getDedupeRule()
+ */
+class GetDuplicates extends \Civi\Api4\Generic\DAOCreateAction {
+
+  /**
+   * Name of dedupe rule to use.
+   *
+   * A default rule group can be used such as "Individual.Unsupervised" or "Household.Supervised"
+   * or else the name of a specific rule group can be given.
+   *
+   * @var string
+   * @optionsCallback getRuleGroupNames
+   * @required
+   */
+  protected $dedupeRule;
+
+  /**
+   * Options callback for dedupeRule param
+   * @return string[]
+   */
+  protected function getRuleGroupNames() {
+    $rules = [];
+    foreach (\CRM_Contact_BAO_ContactType::basicTypes() as $contactType) {
+      $rules[] = $contactType . '.Unsupervised';
+      $rules[] = $contactType . '.Supervised';
+    }
+    $specific = DedupeRuleGroup::get(FALSE)
+      ->addSelect('name')
+      ->execute()->column('name');
+    return array_merge($rules, $specific);
+  }
+
+  /**
+   * @param \Civi\Api4\Generic\Result $result
+   */
+  public function _run(Result $result) {
+    $dedupeParams = [
+      'check_permission' => $this->getCheckPermissions(),
+    ];
+    $item = $this->values;
+
+    $this->formatWriteValues($item);
+
+    if (strpos($this->dedupeRule, '.Unsupervised') || strpos($this->dedupeRule, '.Supervised')) {
+      [$contactType, $ruleType] = explode('.', $this->dedupeRule);
+      if (!empty($item['contact_type']) && $contactType !== $item['contact_type']) {
+        throw new \API_Exception('Mismatched contact type.');
+      }
+      $item['contact_type'] = $contactType;
+      $dedupeParams['rule'] = $ruleType;
+    }
+    else {
+      $ruleGroup = DedupeRuleGroup::get(FALSE)
+        ->addWhere('name', '=', $this->dedupeRule)
+        ->addSelect('id', 'contact_type')
+        ->execute()->single();
+      if (!empty($item['contact_type']) && $ruleGroup['contact_type'] !== $item['contact_type']) {
+        throw new \API_Exception('Mismatched contact type.');
+      }
+      $item['contact_type'] = $ruleGroup['contact_type'];
+      $dedupeParams['rule_group_id'] = $ruleGroup['id'];
+    }
+
+    $this->formatDedupeParams($item, $dedupeParams);
+
+    foreach (\CRM_Contact_BAO_Contact::findDuplicates($dedupeParams) as $id) {
+      $result[] = ['id' => $id];
+    }
+  }
+
+  /**
+   * Sorts fields by table+column name per deduper expectations.
+   *
+   * @param array $item
+   * @param array $dedupeParams
+   */
+  private function formatDedupeParams(array $item, array &$dedupeParams) {
+    foreach (['Email', 'Phone', 'Address', 'IM'] as $entity) {
+      $prefix = strtolower($entity) . '_primary.';
+      $entityValues = \CRM_Utils_Array::filterByPrefix($item, $prefix);
+      $this->transformCustomParams($entityValues, $dedupeParams);
+      if ($entityValues) {
+        $dedupeParams['civicrm_' . strtolower($entity)] = $entityValues;
+      }
+    }
+    // After removing all other entity fields, remaining fields belong to contact
+    $this->transformCustomParams($item, $dedupeParams);
+    $dedupeParams['civicrm_contact'] = $item;
+    $dedupeParams['contact_type'] = $item['contact_type'];
+  }
+
+  /**
+   * Sorts custom fields by table+column name per deduper expectations.
+   *
+   * @param array $entityValues
+   * @param array $dedupeParams
+   * @throws \API_Exception
+   */
+  private function transformCustomParams(array &$entityValues, array &$dedupeParams) {
+    foreach ($entityValues as $name => $value) {
+      $field = $this->getCustomFieldInfo($name);
+      if ($field) {
+        unset($entityValues[$name]);
+        if (isset($value)) {
+          if ($field['suffix']) {
+            $options = FormattingUtil::getPseudoconstantList($field, $name, $entityValues, 'create');
+            $value = FormattingUtil::replacePseudoconstant($options, $value, TRUE);
+          }
+          $dedupeParams[$field['table_name']][$field['column_name']] = $value;
+        }
+      }
+    }
+  }
+
+  /**
+   * Combines getFields from Contact + related entities into a flat array
+   *
+   * @return array
+   */
+  public static function fields(BasicGetFieldsAction $action) {
+    $fields = [];
+    $ignore = ['id', 'contact_id', 'is_primary', 'on_hold', 'location_type_id', 'phone_type_id'];
+    foreach (['Contact', 'Email', 'Phone', 'Address', 'IM'] as $entity) {
+      $entityFields = (array) civicrm_api4($entity, 'getFields', [
+        'action' => 'create',
+        'loadOptions' => $action->getLoadOptions(),
+        'where' => [['name', 'NOT IN', $ignore], ['type', 'IN', ['Field', 'Custom']]],
+      ]);
+      if ($entity !== 'Contact') {
+        $prefix = strtolower($entity) . '_primary.';
+        foreach ($entityFields as &$field) {
+          $field['name'] = $prefix . $field['name'];
+        }
+      }
+      $fields = array_merge($fields, $entityFields);
+    }
+    return $fields;
+  }
+
+}
diff --git a/civicrm/Civi/Api4/Action/GetActions.php b/civicrm/Civi/Api4/Action/GetActions.php
index 1720ee701655f33bc10c327498611366f2332fe8..5f3dbd9a619761e8d3e4e94ec3e860a5caa486dd 100644
--- a/civicrm/Civi/Api4/Action/GetActions.php
+++ b/civicrm/Civi/Api4/Action/GetActions.php
@@ -99,14 +99,6 @@ class GetActions extends BasicGetAction {
           }
           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);
-            }
           }
         }
       }
diff --git a/civicrm/Civi/Api4/Action/WorkflowMessage/Render.php b/civicrm/Civi/Api4/Action/WorkflowMessage/Render.php
index 86611072b9f7170ea52dea0b455096bdfe6a0d56..6a5658cb6b8b3b02aec0c38b93a09f96ccea8a0f 100644
--- a/civicrm/Civi/Api4/Action/WorkflowMessage/Render.php
+++ b/civicrm/Civi/Api4/Action/WorkflowMessage/Render.php
@@ -75,13 +75,12 @@ class Render extends \Civi\Api4\Generic\AbstractAction {
 
   public function _run(\Civi\Api4\Generic\Result $result) {
     $this->validateValues();
-
     $r = \CRM_Core_BAO_MessageTemplate::renderTemplate([
       'model' => $this->_model,
       'messageTemplate' => $this->getMessageTemplate(),
       'messageTemplateId' => $this->getMessageTemplateId(),
+      'language' => $this->getLanguage(),
     ]);
-
     $result[] = \CRM_Utils_Array::subset($r, ['subject', 'html', 'text']);
   }
 
diff --git a/civicrm/Civi/Api4/Activity.php b/civicrm/Civi/Api4/Activity.php
index 2de02dceed474a05f6b0008e5be1568658e46089..30925b1a3df3922c2aa0d1432fb02b7f7ee95cd3 100644
--- a/civicrm/Civi/Api4/Activity.php
+++ b/civicrm/Civi/Api4/Activity.php
@@ -24,6 +24,7 @@ namespace Civi\Api4;
  * @see https://docs.civicrm.org/user/en/latest/organising-your-data/activities/
  * @searchable primary
  * @since 5.19
+ * @iconField activity_type_id:icon
  * @package Civi\Api4
  */
 class Activity extends Generic\DAOEntity {
diff --git a/civicrm/Civi/Api4/Contact.php b/civicrm/Civi/Api4/Contact.php
index cd717f128c3544886168ff202494ef1a865c1973..4b7db45231d0683f295e11971939754af166aa2c 100644
--- a/civicrm/Civi/Api4/Contact.php
+++ b/civicrm/Civi/Api4/Contact.php
@@ -21,6 +21,7 @@ namespace Civi\Api4;
  * @see https://docs.civicrm.org/user/en/latest/organising-your-data/contacts/
  * @searchable primary
  * @orderBy sort_name
+ * @iconField contact_sub_type:icon,contact_type:icon
  * @since 5.19
  * @package Civi\Api4
  */
@@ -80,4 +81,13 @@ class Contact extends Generic\DAOEntity {
       ->setCheckPermissions($checkPermissions);
   }
 
+  /**
+   * @param bool $checkPermissions
+   * @return Action\Contact\GetDuplicates
+   */
+  public static function getDuplicates($checkPermissions = TRUE) {
+    return (new Action\Contact\GetDuplicates(__CLASS__, __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
 }
diff --git a/civicrm/Civi/Api4/ContactType.php b/civicrm/Civi/Api4/ContactType.php
index e949845613a168a4e8f6decb856397471e899e6b..cf478def15b1a5abb14a014af4a3db8612733b4a 100644
--- a/civicrm/Civi/Api4/ContactType.php
+++ b/civicrm/Civi/Api4/ContactType.php
@@ -21,7 +21,7 @@ namespace Civi\Api4;
  *
  * @see https://docs.civicrm.org/user/en/latest/organising-your-data/contacts/#contact-subtypes
  * @see \Civi\Api4\Contact
- * @searchable none
+ * @searchable secondary
  * @since 5.19
  * @package Civi\Api4
  */
diff --git a/civicrm/Civi/Api4/Entity.php b/civicrm/Civi/Api4/Entity.php
index a53248cf3ac8c0e752210bb0dba40a46639e1a2f..6b84d73b9ce759ddbf564e68f378c63dba9d8dd1 100644
--- a/civicrm/Civi/Api4/Entity.php
+++ b/civicrm/Civi/Api4/Entity.php
@@ -72,6 +72,11 @@ class Entity extends Generic\AbstractEntity {
       'name' => 'label_field',
       'description' => 'Field to show when displaying a record',
     ],
+    [
+      'name' => 'icon_field',
+      'data_type' => 'Array',
+      'description' => 'Field(s) which contain the icon for a record, listed in order of precedence',
+    ],
     [
       'name' => 'order_by',
       'description' => 'Default column to sort results',
diff --git a/civicrm/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php
new file mode 100644
index 0000000000000000000000000000000000000000..0c234dd8ade581ced3e7a48d2ebe91728d333311
--- /dev/null
+++ b/civicrm/Civi/Api4/Event/Subscriber/ActivitySchemaMapSubscriber.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi\Api4\Event\Events;
+use Civi\Api4\Event\SchemaMapBuildEvent;
+use Civi\Api4\Service\Schema\Joinable\ExtraJoinable;
+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): void {
+    $schema = $event->getSchemaMap();
+    $table = $schema->getTableByName('civicrm_activity');
+
+    $link = (new ExtraJoinable('civicrm_case', 'id', 'case_id'))
+      ->setBaseTable('civicrm_activity')
+      ->setJoinType(Joinable::JOIN_TYPE_MANY_TO_ONE)
+      ->addCondition('`{target_table}`.`id` = (SELECT `civicrm_case_activity`.`case_id` FROM `civicrm_case_activity` WHERE `civicrm_case_activity`.`activity_id` = `{base_table}`.`id` LIMIT 1)');
+    $table->addTableLink('id', $link);
+
+  }
+
+}
diff --git a/civicrm/Civi/Api4/Event/Subscriber/ContactSchemaMapSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/ContactSchemaMapSubscriber.php
index 6177ebe98a34d03a6cd4604a5ca3010dd1482718..d8aec88dc4320160f04d2574cbf0a004351aec15 100644
--- a/civicrm/Civi/Api4/Event/Subscriber/ContactSchemaMapSubscriber.php
+++ b/civicrm/Civi/Api4/Event/Subscriber/ContactSchemaMapSubscriber.php
@@ -19,6 +19,10 @@ class ContactSchemaMapSubscriber implements EventSubscriberInterface {
   }
 
   /**
+   * This creates a joinable which gets exposed and rendered by:
+   *
+   * @see \Civi\Api4\Service\Spec\Provider\ContactGetSpecProvider
+   *
    * @param \Civi\Api4\Event\SchemaMapBuildEvent $event
    */
   public function onSchemaBuild(SchemaMapBuildEvent $event) {
diff --git a/civicrm/Civi/Api4/Event/Subscriber/PermissionCheckSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/PermissionCheckSubscriber.php
index e71e6707e017f649ac23770c4770fbdb71bd2354..07f3c41055134b8b9180350f0323e4c333ceac59 100644
--- a/civicrm/Civi/Api4/Event/Subscriber/PermissionCheckSubscriber.php
+++ b/civicrm/Civi/Api4/Event/Subscriber/PermissionCheckSubscriber.php
@@ -37,7 +37,7 @@ class PermissionCheckSubscriber implements EventSubscriberInterface {
    *   API authorization event.
    */
   public function onApiAuthorize(\Civi\API\Event\AuthorizeEvent $event) {
-    /* @var \Civi\Api4\Generic\AbstractAction $apiRequest */
+    /** @var \Civi\Api4\Generic\AbstractAction $apiRequest */
     $apiRequest = $event->getApiRequest();
     if ($apiRequest['version'] == 4) {
       if (!$apiRequest->getCheckPermissions() || $apiRequest->isAuthorized(\CRM_Core_Session::singleton()->getLoggedInContactID())) {
diff --git a/civicrm/Civi/Api4/Extension.php b/civicrm/Civi/Api4/Extension.php
index 503253b8d3c92ce3d37aa0ceb6587cb281d0ac53..b09290093611f7430ebb25e53f5fdb6f4947acd3 100644
--- a/civicrm/Civi/Api4/Extension.php
+++ b/civicrm/Civi/Api4/Extension.php
@@ -36,7 +36,7 @@ class Extension extends Generic\AbstractEntity {
           $result[] = $info;
         }
         catch (\CRM_Extension_Exception $ex) {
-          \Civi::log()->error(sprintf('Failed to read extension (%1). Please refresh the extension list.', [1 => $key]));
+          \Civi::log()->error(sprintf('Failed to read extension (%s). Please refresh the extension list.', $key));
         }
       }
       return $result;
diff --git a/civicrm/Civi/Api4/Generic/AbstractAction.php b/civicrm/Civi/Api4/Generic/AbstractAction.php
index 9347394ada9d15cae280015073f09c0db43dc211..5ad1a3e45826d6a92fa0925ec940a15c52ec8ec9 100644
--- a/civicrm/Civi/Api4/Generic/AbstractAction.php
+++ b/civicrm/Civi/Api4/Generic/AbstractAction.php
@@ -32,6 +32,8 @@ use Civi\Api4\Utils\ReflectionUtils;
  * @method bool getDebug()
  * @method $this setChain(array $chain)
  * @method array getChain()
+ * @method $this setLanguage(string|null $language)
+ * @method string|null getLanguage()
  */
 abstract class AbstractAction implements \ArrayAccess {
 
@@ -44,6 +46,20 @@ abstract class AbstractAction implements \ArrayAccess {
    */
   protected $version = 4;
 
+  /**
+   * Preferred language (optional)
+   *
+   * This option will notify major localization subsystems (`ts()`, multilingual, etc)
+   * about which locale should be used for composing/formatting messaging.
+   *
+   * This indicates the preferred language. The effective language is determined
+   * by `Civi\Core\Locale::negotiate($preferredLanguage)`.
+   *
+   * @var string
+   * @optionsCallback getLanguageOptions
+   */
+  protected $language;
+
   /**
    * Additional api requests - will be called once per result.
    *
@@ -564,4 +580,20 @@ abstract class AbstractAction implements \ArrayAccess {
     }
   }
 
+  /**
+   * Get available preferred languages.
+   *
+   * @return array
+   */
+  protected function getLanguageOptions(): array {
+    $languages = \CRM_Contact_BAO_Contact::buildOptions('preferred_language');
+    ksort($languages);
+    $result = array_keys($languages);
+    if (!\Civi::settings()->get('partial_locales')) {
+      $uiLanguages = \CRM_Core_I18n::uiLanguages(TRUE);
+      $result = array_values(array_intersect($result, $uiLanguages));
+    }
+    return $result;
+  }
+
 }
diff --git a/civicrm/Civi/Api4/Generic/AbstractEntity.php b/civicrm/Civi/Api4/Generic/AbstractEntity.php
index bc99c02a41274641846510f7873e14a25f41c8be..083e3359e2cc4fdda0210ae8ffb6e4a0a658ca9d 100644
--- a/civicrm/Civi/Api4/Generic/AbstractEntity.php
+++ b/civicrm/Civi/Api4/Generic/AbstractEntity.php
@@ -154,6 +154,7 @@ abstract class AbstractEntity {
       $info['label_field'] = $dao::$_labelField;
       $info['dao'] = $dao;
       $info['table_name'] = $dao::$_tableName;
+      $info['icon_field'] = (array) ($dao::fields()['icon']['name'] ?? NULL);
     }
     foreach (ReflectionUtils::getTraits(static::class) as $trait) {
       $info['type'][] = self::stripNamespace($trait);
diff --git a/civicrm/Civi/Api4/Generic/AbstractSaveAction.php b/civicrm/Civi/Api4/Generic/AbstractSaveAction.php
index d61718d646e0ea9acf229beadfd17ef64a07d723..3ab1838035890d2cb37312cf54ff285852b507f4 100644
--- a/civicrm/Civi/Api4/Generic/AbstractSaveAction.php
+++ b/civicrm/Civi/Api4/Generic/AbstractSaveAction.php
@@ -38,6 +38,7 @@ use Civi\Api4\Utils\CoreUtil;
  * @package Civi\Api4\Generic
  */
 abstract class AbstractSaveAction extends AbstractAction {
+  use Traits\MatchParamTrait;
 
   /**
    * Array of $ENTITIES to save.
@@ -71,20 +72,6 @@ abstract class AbstractSaveAction extends AbstractAction {
    */
   protected $reload = FALSE;
 
-  /**
-   * Specify fields to match for update.
-   *
-   * Normally each record is either created or updated based on the presence of an `id`.
-   * Specifying `$match` fields will also perform an update if an existing $ENTITY matches all specified fields.
-   *
-   * Note: the fields named in this param should be without any options suffix (e.g. `my_field` not `my_field:name`).
-   * Any options suffixes in the $records will be resolved by the api prior to matching.
-   *
-   * @var array
-   * @optionsCallback getMatchFields
-   */
-  protected $match = [];
-
   /**
    * @throws \API_Exception
    * @throws \Civi\API\Exception\UnauthorizedException
@@ -194,19 +181,4 @@ abstract class AbstractSaveAction extends AbstractAction {
     return $this;
   }
 
-  /**
-   * Options callback for $this->match
-   * @return array
-   */
-  protected function getMatchFields() {
-    return (array) civicrm_api4($this->getEntityName(), 'getFields', [
-      'checkPermissions' => FALSE,
-      'action' => 'get',
-      'where' => [
-        ['type', 'IN', ['Field', 'Custom']],
-        ['name', 'NOT IN', (array) CoreUtil::getInfoItem($this->getEntityName(), 'primary_key')],
-      ],
-    ], ['name']);
-  }
-
 }
diff --git a/civicrm/Civi/Api4/Generic/AutocompleteAction.php b/civicrm/Civi/Api4/Generic/AutocompleteAction.php
new file mode 100644
index 0000000000000000000000000000000000000000..bb686d2bb796089125162a5d4ecd7cd482beae39
--- /dev/null
+++ b/civicrm/Civi/Api4/Generic/AutocompleteAction.php
@@ -0,0 +1,224 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Generic;
+
+use Civi\Api4\Utils\CoreUtil;
+
+/**
+ * Retrieve $ENTITIES for an autocomplete form field.
+ *
+ * @method $this setInput(string $input) Set input term.
+ * @method string getInput()
+ * @method $this setIds(array $ids) Set array of ids.
+ * @method array getIds()
+ * @method $this setPage(int $page) Set current page.
+ * @method array getPage()
+ * @method $this setFormName(string $formName) Set formName.
+ * @method string getFormName()
+ * @method $this setFieldName(string $fieldName) Set fieldName.
+ * @method string getFieldName()
+ * @method $this setClientFilters(array $clientFilters) Set array of untrusted filter values.
+ * @method array getClientFilters()
+ */
+class AutocompleteAction extends AbstractAction {
+  use Traits\SavedSearchInspectorTrait;
+
+  /**
+   * Autocomplete search input for search mode
+   *
+   * @var string
+   */
+  protected $input = '';
+
+  /**
+   * Array of ids for render mode
+   *
+   * @var array
+   */
+  protected $ids;
+
+  /**
+   * @var int
+   */
+  protected $page = 1;
+
+  /**
+   * Name of SavedSearch to use for filtering.
+   * @var string
+   */
+  protected $savedSearch;
+
+  /**
+   * @var string
+   */
+  protected $formName;
+
+  /**
+   * @var string
+   */
+  protected $fieldName;
+
+  /**
+   * Filters requested by untrusted client, permissions will be checked before applying (even if this request has checkPermissions = FALSE).
+   *
+   * Format: [fieldName => value][]
+   * @var array
+   */
+  protected $clientFilters = [];
+
+  /**
+   * Filters set programmatically by `civi.api.prepare` listener. Automatically trusted.
+   *
+   * Format: [fieldName => value][]
+   * @var array
+   */
+  private $trustedFilters = [];
+
+  /**
+   * Fetch results.
+   *
+   * @param \Civi\Api4\Generic\Result $result
+   */
+  public function _run(Result $result) {
+    $entityName = $this->getEntityName();
+    $fields = CoreUtil::getApiClass($entityName)::get()->entityFields();
+    $idField = CoreUtil::getIdFieldName($entityName);
+    $labelField = CoreUtil::getInfoItem($entityName, 'label_field');
+    $iconFields = CoreUtil::getInfoItem($entityName, 'icon_field') ?? [];
+    $map = [
+      'id' => $idField,
+      'label' => $labelField,
+    ];
+    // FIXME: Use metadata
+    if (isset($fields['description'])) {
+      $map['description'] = 'description';
+    }
+    if (isset($fields['color'])) {
+      $map['color'] = 'color';
+    }
+    $select = array_merge(array_values($map), $iconFields);
+
+    if (!$this->savedSearch) {
+      $this->savedSearch = ['api_entity' => $entityName];
+    }
+    $this->loadSavedSearch();
+    // Pass-through this parameter
+    $this->_apiParams['checkPermissions'] = $this->savedSearch['api_params']['checkPermissions'] = $this->getCheckPermissions();
+    // Render mode: fetch by id
+    if ($this->ids) {
+      $this->_apiParams['where'][] = [$idField, 'IN', $this->ids];
+      $resultsPerPage = NULL;
+    }
+    // Search mode: fetch a page of results based on input
+    else {
+      $resultsPerPage = \Civi::settings()->get('search_autocomplete_count') ?: 10;
+      // Adding one extra result allows us to see if there are any more
+      $this->_apiParams['limit'] = $resultsPerPage + 1;
+      $this->_apiParams['offset'] = ($this->page - 1) * $resultsPerPage;
+
+      $orderBy = CoreUtil::getInfoItem($this->getEntityName(), 'order_by') ?: $labelField;
+      $this->_apiParams['orderBy'] = [$orderBy => 'ASC'];
+      if (strlen($this->input)) {
+        $prefix = \Civi::settings()->get('includeWildCardInName') ? '%' : '';
+        $this->_apiParams['where'][] = [$labelField, 'LIKE', $prefix . $this->input . '%'];
+      }
+    }
+    if (empty($this->_apiParams['having'])) {
+      $this->_apiParams['select'] = $select;
+    }
+    // A HAVING clause depends on the SELECT clause so don't overwrite it.
+    else {
+      $this->_apiParams['select'] = array_unique(array_merge($this->_apiParams['select'], $select));
+    }
+    $this->applyFilters();
+    $apiResult = civicrm_api4($entityName, 'get', $this->_apiParams);
+    $rawResults = array_slice((array) $apiResult, 0, $resultsPerPage);
+    foreach ($rawResults as $row) {
+      $mapped = [];
+      foreach ($map as $key => $fieldName) {
+        $mapped[$key] = $row[$fieldName];
+      }
+      // Get icon in order of priority
+      foreach ($iconFields as $fieldName) {
+        if (!empty($row[$fieldName])) {
+          // Icon field may be multivalued e.g. contact_sub_type
+          $icon = \CRM_Utils_Array::first(array_filter((array) $row[$fieldName]));
+          if ($icon) {
+            $mapped['icon'] = $icon;
+          }
+          break;
+        }
+      }
+      $result[] = $mapped;
+    }
+    $result->setCountMatched($apiResult->countFetched());
+  }
+
+  /**
+   * Method for `civi.api.prepare` listener to add a trusted filter.
+   *
+   * @param string $fieldName
+   * @param mixed $value
+   */
+  public function addFilter(string $fieldName, $value) {
+    $this->trustedFilters[$fieldName] = $value;
+  }
+
+  /**
+   * Applies trusted filters. Checks access before applying client filters.
+   */
+  private function applyFilters() {
+    foreach ($this->trustedFilters as $field => $val) {
+      if ($this->hasValue($val)) {
+        $this->applyFilter($field, $val);
+      }
+    }
+    foreach ($this->clientFilters as $field => $val) {
+      if ($this->hasValue($val) && $this->checkFieldAccess($field)) {
+        $this->applyFilter($field, $val);
+      }
+    }
+  }
+
+  /**
+   * @param $fieldNameWithSuffix
+   * @return bool
+   */
+  private function checkFieldAccess($fieldNameWithSuffix) {
+    [$fieldName] = explode(':', $fieldNameWithSuffix);
+    if (
+      in_array($fieldName, $this->_apiParams['select'], TRUE) ||
+      in_array($fieldNameWithSuffix, $this->_apiParams['select'], TRUE) ||
+      in_array($fieldName, $this->savedSearch['api_params']['select'], TRUE) ||
+      in_array($fieldNameWithSuffix, $this->savedSearch['api_params']['select'], TRUE)
+    ) {
+      return TRUE;
+    }
+    // Proceed only if permissions are being enforced.'
+    // Anonymous users in permission-bypass mode should not be allowed to set arbitrary filters.
+    if ($this->getCheckPermissions()) {
+      // This function checks field permissions
+      return (bool) $this->getField($fieldName);
+    }
+    return FALSE;
+  }
+
+  /**
+   * @return array
+   */
+  public function getPermissions() {
+    // Permissions for this action are checked internally
+    return [];
+  }
+
+}
diff --git a/civicrm/Civi/Api4/Generic/BasicEntity.php b/civicrm/Civi/Api4/Generic/BasicEntity.php
index 066ef04e7a5c54b379ccc72857337b2f351b51b4..87ae77c443624fbef9b55ca570f08d9eabf94cb9 100644
--- a/civicrm/Civi/Api4/Generic/BasicEntity.php
+++ b/civicrm/Civi/Api4/Generic/BasicEntity.php
@@ -136,6 +136,15 @@ abstract class BasicEntity extends AbstractEntity {
       ->setCheckPermissions($checkPermissions);
   }
 
+  /**
+   * @param bool $checkPermissions
+   * @return AutocompleteAction
+   */
+  public static function autocomplete($checkPermissions = TRUE) {
+    return (new AutocompleteAction(static::getEntityName(), __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
   /**
    * @inheritDoc
    */
diff --git a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php
index 36452822316be7824fcfa85bb9ee2cd54489e1f7..b89293e16d971033f1601be64e763ee8759beeaf 100644
--- a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php
+++ b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php
@@ -89,7 +89,7 @@ class BasicGetFieldsAction extends BasicGetAction {
     catch (NotImplementedException $e) {
     }
     if (isset($actionClass) && method_exists($actionClass, 'fields')) {
-      $values = $actionClass->fields();
+      $values = $actionClass->fields($this);
     }
     else {
       $values = $this->getRecords();
diff --git a/civicrm/Civi/Api4/Generic/DAOCreateAction.php b/civicrm/Civi/Api4/Generic/DAOCreateAction.php
index 14914175bcb0e2066f336eb49d4aafcf24c8fc8b..b40a67d448b8c2d0ff9074cbeb283c786031962e 100644
--- a/civicrm/Civi/Api4/Generic/DAOCreateAction.php
+++ b/civicrm/Civi/Api4/Generic/DAOCreateAction.php
@@ -12,6 +12,8 @@
 
 namespace Civi\Api4\Generic;
 
+use Civi\Api4\Utils\CoreUtil;
+
 /**
  * Create a new $ENTITY from supplied values.
  *
@@ -37,8 +39,9 @@ class DAOCreateAction extends AbstractCreateAction {
    * @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.');
+    $idField = CoreUtil::getIdFieldName($this->getEntityName());
+    if (!empty($this->values[$idField])) {
+      throw new \API_Exception("Cannot pass $idField to Create action. Use Update action instead.");
     }
     parent::validateValues();
   }
diff --git a/civicrm/Civi/Api4/Generic/DAODeleteAction.php b/civicrm/Civi/Api4/Generic/DAODeleteAction.php
index 84d818de9b1c51d34b46a547a2eb583a9e5aa0c5..cd7a32fc1d5534740074c691b3671fa1a25c9e02 100644
--- a/civicrm/Civi/Api4/Generic/DAODeleteAction.php
+++ b/civicrm/Civi/Api4/Generic/DAODeleteAction.php
@@ -36,8 +36,10 @@ class DAODeleteAction extends AbstractBatchAction {
     $items = $this->getBatchRecords();
 
     if ($this->getCheckPermissions()) {
+      $idField = CoreUtil::getIdFieldName($this->getEntityName());
       foreach ($items as $key => $item) {
-        if (!CoreUtil::checkAccessRecord($this, $item, \CRM_Core_Session::getLoggedInContactID() ?: 0)) {
+        // Don't pass the entire item because only the id is a trusted value
+        if (!CoreUtil::checkAccessRecord($this, [$idField => $item[$idField]], \CRM_Core_Session::getLoggedInContactID() ?: 0)) {
           throw new UnauthorizedException("ACL check failed");
         }
         $items[$key]['check_permissions'] = TRUE;
@@ -54,28 +56,29 @@ class DAODeleteAction extends AbstractBatchAction {
    * @throws \API_Exception
    */
   protected function deleteObjects($items) {
-    $ids = [];
+    $idField = CoreUtil::getIdFieldName($this->getEntityName());
+    $result = [];
     $baoName = $this->getBaoName();
 
     // Use BAO::del() method if it is not deprecated
     if (method_exists($baoName, 'del') && !ReflectionUtils::isMethodDeprecated($baoName, 'del')) {
       foreach ($items as $item) {
-        $args = [$item['id']];
+        $args = [$item[$idField]];
         $bao = call_user_func_array([$baoName, 'del'], $args);
         if ($bao !== FALSE) {
-          $ids[] = ['id' => $item['id']];
+          $result[] = [$idField => $item[$idField]];
         }
         else {
-          throw new \API_Exception("Could not delete {$this->getEntityName()} id {$item['id']}");
+          throw new \API_Exception("Could not delete {$this->getEntityName()} $idField {$item[$idField]}");
         }
       }
     }
     else {
       foreach ($baoName::deleteRecords($items) as $instance) {
-        $ids[] = ['id' => $instance->id];
+        $result[] = [$idField => $instance->$idField];
       }
     }
-    return $ids;
+    return $result;
   }
 
 }
diff --git a/civicrm/Civi/Api4/Generic/DAOEntity.php b/civicrm/Civi/Api4/Generic/DAOEntity.php
index 3bec3919bbdd129a52cdb1535c0c09aeb2af68f3..ea7473e87a9fee0608c3d712f9e4eb4335373ff9 100644
--- a/civicrm/Civi/Api4/Generic/DAOEntity.php
+++ b/civicrm/Civi/Api4/Generic/DAOEntity.php
@@ -90,4 +90,13 @@ abstract class DAOEntity extends AbstractEntity {
       ->setCheckPermissions($checkPermissions);
   }
 
+  /**
+   * @param bool $checkPermissions
+   * @return AutocompleteAction
+   */
+  public static function autocomplete($checkPermissions = TRUE) {
+    return (new AutocompleteAction(static::getEntityName(), __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
 }
diff --git a/civicrm/Civi/Api4/Generic/DAOGetAction.php b/civicrm/Civi/Api4/Generic/DAOGetAction.php
index 0c33d2acc0bf8a34b19c33727df4a89d320b87ed..3d6c8753e8ad5fd96a1b7aea217f5957ac104eab 100644
--- a/civicrm/Civi/Api4/Generic/DAOGetAction.php
+++ b/civicrm/Civi/Api4/Generic/DAOGetAction.php
@@ -24,6 +24,8 @@ use Civi\Api4\Utils\CoreUtil;
  *
  * @method $this setHaving(array $clauses)
  * @method array getHaving()
+ * @method $this setTranslationMode(string|null $mode)
+ * @method string|null getTranslationMode()
  */
 class DAOGetAction extends AbstractGetAction {
   use Traits\DAOActionTrait;
@@ -80,6 +82,15 @@ class DAOGetAction extends AbstractGetAction {
    */
   protected $having = [];
 
+  /**
+   * Should we automatically overload the result with translated data?
+   * How do we pick the suitable translation?
+   *
+   * @var string|null
+   * @options fuzzy,strict
+   */
+  protected $translationMode;
+
   /**
    * @throws \API_Exception
    * @throws \CRM_Core_Exception
diff --git a/civicrm/Civi/Api4/Generic/DAOSaveAction.php b/civicrm/Civi/Api4/Generic/DAOSaveAction.php
index 7d6d6b709f270a3323d36980af5d0b809fee2494..f79bef33ebf6fd89f0aef5b5d9b97312c115bf21 100644
--- a/civicrm/Civi/Api4/Generic/DAOSaveAction.php
+++ b/civicrm/Civi/Api4/Generic/DAOSaveAction.php
@@ -12,6 +12,8 @@
 
 namespace Civi\Api4\Generic;
 
+use Civi\Api4\Utils\CoreUtil;
+
 /**
  * @inheritDoc
  */
@@ -22,11 +24,12 @@ class DAOSaveAction extends AbstractSaveAction {
    * @inheritDoc
    */
   public function _run(Result $result) {
+    $idField = CoreUtil::getIdFieldName($this->getEntityName());
     foreach ($this->records as &$record) {
       $record += $this->defaults;
       $this->formatWriteValues($record);
       $this->matchExisting($record);
-      if (empty($record['id'])) {
+      if (empty($record[$idField])) {
         $this->fillDefaults($record);
       }
     }
diff --git a/civicrm/Civi/Api4/Generic/ExportAction.php b/civicrm/Civi/Api4/Generic/ExportAction.php
index b7e73717960ef36592aed1f02ee26d5f1b4ab2c5..e7cce1bb9fe70140ca5ed7f5482bedcdda26ec3b 100644
--- a/civicrm/Civi/Api4/Generic/ExportAction.php
+++ b/civicrm/Civi/Api4/Generic/ExportAction.php
@@ -29,6 +29,7 @@ use Civi\Api4\Utils\CoreUtil;
  * @method string getUpdate()
  */
 class ExportAction extends AbstractAction {
+  use Traits\MatchParamTrait;
 
   /**
    * Id of $ENTITY to export
@@ -145,7 +146,7 @@ class ExportAction extends AbstractAction {
         unset($record[$fieldName]);
       }
     }
-    $result[] = [
+    $export = [
       'name' => $name,
       'entity' => $entityType,
       'cleanup' => $this->cleanup,
@@ -155,6 +156,10 @@ class ExportAction extends AbstractAction {
         'values' => $record,
       ],
     ];
+    foreach (array_intersect($this->match, array_keys($allFields)) as $match) {
+      $export['params']['match'][] = $match;
+    }
+    $result[] = $export;
     // Export entities that reference this one
     $daoName = CoreUtil::getInfoItem($entityType, 'dao');
     if ($daoName) {
diff --git a/civicrm/Civi/Api4/Generic/Result.php b/civicrm/Civi/Api4/Generic/Result.php
index c1896890bf32b20edc7f542588ef89bea52db5b4..fb8401e4d10bdbfe5c6ea95504d22d8f119f826e 100644
--- a/civicrm/Civi/Api4/Generic/Result.php
+++ b/civicrm/Civi/Api4/Generic/Result.php
@@ -87,21 +87,7 @@ class Result extends \ArrayObject implements \JsonSerializable {
    * @throws \API_Exception
    */
   public function single() {
-    $result = NULL;
-    foreach ($this as $values) {
-      if ($result === NULL) {
-        $result = $values;
-      }
-      else {
-        throw new \API_Exception("Expected to find one {$this->entity} record, but there were multiple.");
-      }
-    }
-
-    if ($result === NULL) {
-      throw new \API_Exception("Expected to find one {$this->entity} record, but there were zero.");
-    }
-
-    return $result;
+    return \CRM_Utils_Array::single($this, "{$this->entity} record");
   }
 
   /**
diff --git a/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php
index 94e0d7af21eecc39bd64f38a0fab88a6da490f1b..047cdd26c2744361b198582bfe86589566699071 100644
--- a/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php
+++ b/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php
@@ -19,20 +19,13 @@ use Civi\Api4\Utils\CoreUtil;
 use Civi\Api4\Utils\ReflectionUtils;
 
 /**
- * @method string getLanguage()
- * @method $this setLanguage(string $language)
+ * Common properties and helper-methods used for DB-oriented actions.
  */
 trait DAOActionTrait {
 
   /**
-   * Specify the language to use if this is a multi-lingual environment.
-   *
-   * E.g. "en_US" or "fr_CA"
-   *
-   * @var string
+   * @var array
    */
-  protected $language;
-
   private $_maxWeights = [];
 
   /**
@@ -121,9 +114,10 @@ trait DAOActionTrait {
     }
 
     $result = [];
+    $idField = CoreUtil::getIdFieldName($this->getEntityName());
 
     foreach ($items as &$item) {
-      $entityId = $item['id'] ?? NULL;
+      $entityId = $item[$idField] ?? NULL;
       FormattingUtil::formatWriteParams($item, $this->entityFields());
       $this->formatCustomParams($item, $entityId);
 
@@ -309,11 +303,13 @@ trait DAOActionTrait {
     if (!isset($info[$fieldName])) {
       $info = [];
       $fields = CustomField::get(FALSE)
-        ->addSelect('id', 'name', 'html_type', 'data_type', 'custom_group_id.extends')
+        ->addSelect('id', 'name', 'html_type', 'data_type', 'custom_group_id.extends', 'column_name', 'custom_group_id.table_name')
         ->addWhere('custom_group_id.name', '=', $groupName)
         ->execute()->indexBy('name');
       foreach ($fields as $name => $field) {
         $field['custom_field_id'] = $field['id'];
+        $field['table_name'] = $field['custom_group_id.table_name'];
+        unset($field['custom_group_id.table_name']);
         $field['name'] = $groupName . '.' . $name;
         $field['entity'] = CustomGroupJoinable::getEntityFromExtends($field['custom_group_id.extends']);
         $info[$name] = $field;
diff --git a/civicrm/Civi/Api4/Generic/Traits/MatchParamTrait.php b/civicrm/Civi/Api4/Generic/Traits/MatchParamTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..6d8ed6c78696548ea4775f4a0a8a79174517233d
--- /dev/null
+++ b/civicrm/Civi/Api4/Generic/Traits/MatchParamTrait.php
@@ -0,0 +1,50 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Generic\Traits;
+
+/**
+ * @method $this setMatch(array $match) Specify fields to match for update.
+ * @method bool getMatch()
+ * @package Civi\Api4\Generic
+ */
+trait MatchParamTrait {
+
+  /**
+   * Specify fields to match for update.
+   *
+   * The API will perform an update if an existing $ENTITY matches all specified fields.
+   *
+   * Note: the fields named in this param should be without any options suffix (e.g. `my_field` not `my_field:name`).
+   * Any options suffixes in the $records will be resolved by the api prior to matching.
+   *
+   * @var array
+   * @optionsCallback getMatchFields
+   */
+  protected $match = [];
+
+  /**
+   * Options callback for $this->match
+   * @return array
+   */
+  protected function getMatchFields() {
+    return (array) civicrm_api4($this->getEntityName(), 'getFields', [
+      'checkPermissions' => FALSE,
+      'action' => 'get',
+      'where' => [
+        ['type', 'IN', ['Field', 'Custom']],
+        ['readonly', '!=', TRUE],
+      ],
+    ], ['name']);
+  }
+
+}
diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/SavedSearchInspectorTrait.php b/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php
similarity index 58%
rename from civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/SavedSearchInspectorTrait.php
rename to civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php
index 1f935a4619290728e9ea699a8e6731c31616cf50..0cd0f230a11929bc71edd4655f32b230d33d87f7 100644
--- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/SavedSearchInspectorTrait.php
+++ b/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Civi\Api4\Action\SearchDisplay;
+namespace Civi\Api4\Generic\Traits;
 
 use Civi\API\Request;
 use Civi\Api4\Query\SqlExpression;
@@ -54,6 +54,10 @@ trait SavedSearchInspectorTrait {
         ->addWhere('name', '=', $this->savedSearch)
         ->execute()->single();
     }
+    if (is_array($this->savedSearch)) {
+      $this->savedSearch += ['api_params' => []];
+      $this->savedSearch['api_params'] += ['version' => 4, 'select' => [], 'where' => []];
+    }
     $this->_apiParams = ($this->savedSearch['api_params'] ?? []) + ['select' => [], 'where' => []];
   }
 
@@ -176,4 +180,103 @@ trait SavedSearchInspectorTrait {
     return !in_array($idField, $apiParams['groupBy']);
   }
 
+  /**
+   * @param string|array $fieldName
+   *   If multiple field names are given they will be combined in an OR clause
+   * @param mixed $value
+   */
+  protected function applyFilter($fieldName, $value) {
+    // Global setting determines if % wildcard should be added to both sides (default) or only the end of a search string
+    $prefixWithWildcard = \Civi::settings()->get('includeWildCardInName');
+
+    $fieldNames = (array) $fieldName;
+    // Based on the first field, decide which clause to add this condition to
+    $fieldName = $fieldNames[0];
+    $field = $this->getField($fieldName);
+    // If field is not found it must be an aggregated column & belongs in the HAVING clause.
+    if (!$field) {
+      $this->_apiParams += ['having' => []];
+      $clause =& $this->_apiParams['having'];
+    }
+    // If field belongs to an EXCLUDE join, it should be added as a join condition
+    else {
+      $prefix = strpos($fieldName, '.') ? explode('.', $fieldName)[0] : NULL;
+      foreach ($this->_apiParams['join'] ?? [] as $idx => $join) {
+        if (($join[1] ?? 'LEFT') === 'EXCLUDE' && (explode(' AS ', $join[0])[1] ?? '') === $prefix) {
+          $clause =& $this->_apiParams['join'][$idx];
+        }
+      }
+    }
+    // Default: add filter to WHERE clause
+    if (!isset($clause)) {
+      $clause =& $this->_apiParams['where'];
+    }
+
+    $filterClauses = [];
+
+    foreach ($fieldNames as $fieldName) {
+      $field = $this->getField($fieldName);
+      $dataType = $field['data_type'] ?? NULL;
+      // Array is either associative `OP => VAL` or sequential `IN (...)`
+      if (is_array($value)) {
+        $value = array_filter($value, [$this, 'hasValue']);
+        // If array does not contain operators as keys, assume array of values
+        if (array_diff_key($value, array_flip(CoreUtil::getOperators()))) {
+          // Use IN for regular fields
+          if (empty($field['serialize'])) {
+            $filterClauses[] = [$fieldName, 'IN', $value];
+          }
+          // Use an OR group of CONTAINS for array fields
+          else {
+            $orGroup = [];
+            foreach ($value as $val) {
+              $orGroup[] = [$fieldName, 'CONTAINS', $val];
+            }
+            $filterClauses[] = ['OR', $orGroup];
+          }
+        }
+        // Operator => Value array
+        else {
+          $andGroup = [];
+          foreach ($value as $operator => $val) {
+            $andGroup[] = [$fieldName, $operator, $val];
+          }
+          $filterClauses[] = ['AND', $andGroup];
+        }
+      }
+      elseif (!empty($field['serialize'])) {
+        $filterClauses[] = [$fieldName, 'CONTAINS', $value];
+      }
+      elseif (!empty($field['options']) || in_array($dataType, ['Integer', 'Boolean', 'Date', 'Timestamp'])) {
+        $filterClauses[] = [$fieldName, '=', $value];
+      }
+      elseif ($prefixWithWildcard) {
+        $filterClauses[] = [$fieldName, 'CONTAINS', $value];
+      }
+      else {
+        $filterClauses[] = [$fieldName, 'LIKE', $value . '%'];
+      }
+    }
+    // Single field
+    if (count($filterClauses) === 1) {
+      $clause[] = $filterClauses[0];
+    }
+    else {
+      $clause[] = ['OR', $filterClauses];
+    }
+  }
+
+  /**
+   * Checks if a filter contains a non-empty value
+   *
+   * "Empty" search values are [], '', and NULL.
+   * Also recursively checks arrays to ensure they contain at least one non-empty value.
+   *
+   * @param $value
+   * @return bool
+   */
+  protected function hasValue($value) {
+    return $value !== '' && $value !== NULL && (!is_array($value) || array_filter($value, [$this, 'hasValue']));
+  }
+
 }
diff --git a/civicrm/Civi/Api4/Group.php b/civicrm/Civi/Api4/Group.php
index e92567a9d4bd72060d913b4f77c9d8c684d4d337..67a34edeef798f3617d81a0bb2aff938ed6a5640 100644
--- a/civicrm/Civi/Api4/Group.php
+++ b/civicrm/Civi/Api4/Group.php
@@ -22,4 +22,19 @@ namespace Civi\Api4;
 class Group extends Generic\DAOEntity {
   use Generic\Traits\ManagedEntity;
 
+  /**
+   * Provides more-open permissions that will be further restricted by checkAccess
+   *
+   * @see \CRM_Contact_BAO_Group::_checkAccess()
+   * @return array
+   */
+  public static function permissions():array {
+    $permissions = parent::permissions();
+
+    return [
+      // Create permission depends on the group type (see CRM_Contact_BAO_Group::_checkAccess).
+      'create' => ['access CiviCRM', ['edit groups', 'access CiviMail', 'create mailings']],
+    ] + $permissions;
+  }
+
 }
diff --git a/civicrm/Civi/Api4/GroupContact.php b/civicrm/Civi/Api4/GroupContact.php
index 13fa4e66370cb4c37621ea96f1d5663af59f8e71..f484a1cce64fc85243173cb7ab420b0b6f3251ab 100644
--- a/civicrm/Civi/Api4/GroupContact.php
+++ b/civicrm/Civi/Api4/GroupContact.php
@@ -71,4 +71,16 @@ class GroupContact extends Generic\DAOEntity {
     return $info;
   }
 
+  /**
+   * Returns a list of permissions needed to access the various actions in this api.
+   *
+   * @return array
+   */
+  public static function permissions() {
+    // Override CRM_Core_Permission::getEntityActionPermissions() because the v3 API is nonstandard
+    return [
+      'default' => ['access CiviCRM'],
+    ];
+  }
+
 }
diff --git a/civicrm/Civi/Api4/Managed.php b/civicrm/Civi/Api4/Managed.php
index d10e4fcc158c8bded2ca66ab1cea22b02bcf4f90..10b15eafd014d4c3186c1d9a3a3d2c44dd0e95b0 100644
--- a/civicrm/Civi/Api4/Managed.php
+++ b/civicrm/Civi/Api4/Managed.php
@@ -11,9 +11,9 @@
 namespace Civi\Api4;
 
 /**
- * Managed entities API.
+ * Records "packaged" by extensions and managed by CiviCRM.
  *
- * Managed entities allow extensions to add and manage entities.
+ * Extensions can package records in a declarative fashion, typically in `.mgd.php` files.
  *
  * @searchable secondary
  * @see https://civicrm.org/blog/totten/api-and-art-installation
diff --git a/civicrm/templates/CRM/Report/Form/Contact/Relationship.tpl b/civicrm/Civi/Api4/PCP.php
similarity index 75%
rename from civicrm/templates/CRM/Report/Form/Contact/Relationship.tpl
rename to civicrm/Civi/Api4/PCP.php
index 5f5a9d4f66cf04b3dc2f1aacfe0321521df82d0f..626a0cde65bb16d2d856dd27b21a5ef40d2a3c26 100644
--- a/civicrm/templates/CRM/Report/Form/Contact/Relationship.tpl
+++ b/civicrm/Civi/Api4/PCP.php
@@ -1,4 +1,5 @@
-{*
+<?php
+/*
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC. All rights reserved.                        |
  |                                                                    |
@@ -6,5 +7,16 @@
  | permitted exceptions and without any warranty. For full license    |
  | and copyright information, see https://civicrm.org/licensing       |
  +--------------------------------------------------------------------+
-*}
-{include file="CRM/Report/Form.tpl"}
+ */
+namespace Civi\Api4;
+
+/**
+ * PCP entity.
+ *
+ * @searchable secondary
+ * @since 5.42
+ * @package Civi\Api4
+ */
+class PCP extends Generic\DAOEntity {
+
+}
diff --git a/civicrm/Civi/Api4/Provider/ActionObjectProvider.php b/civicrm/Civi/Api4/Provider/ActionObjectProvider.php
index 2b1b845bb18c7d17f62c18e5be1f99d840074144..8bfa560507170ebbbc0b72d760b69cb0bfc28e69 100644
--- a/civicrm/Civi/Api4/Provider/ActionObjectProvider.php
+++ b/civicrm/Civi/Api4/Provider/ActionObjectProvider.php
@@ -96,7 +96,7 @@ class ActionObjectProvider implements EventSubscriberInterface, ProviderInterfac
    * @throws \API_Exception
    */
   protected function runChain($request, $row) {
-    list($entity, $action, $params, $index) = $request;
+    [$entity, $action, $params, $index] = $request;
     // Swap out variables in $entity, $action & $params
     $this->resolveChainLinks($entity, $row);
     $this->resolveChainLinks($action, $row);
diff --git a/civicrm/Civi/Api4/Query/Api4SelectQuery.php b/civicrm/Civi/Api4/Query/Api4SelectQuery.php
index 0ccce5e8b8d67c9ac9f8f7c52e338613bb7756e4..f4abb51acc1d1bbece0955a3082ef2ec92f4412a 100644
--- a/civicrm/Civi/Api4/Query/Api4SelectQuery.php
+++ b/civicrm/Civi/Api4/Query/Api4SelectQuery.php
@@ -452,7 +452,7 @@ class Api4SelectQuery {
 
     // For WHERE clause, expr must be the name of a field.
     if ($type === 'WHERE' && !$isExpression) {
-      $expr = $this->getExpression($expr, ['SqlField', 'SqlFunction']);
+      $expr = $this->getExpression($expr, ['SqlField', 'SqlFunction', 'SqlEquation']);
       if ($expr->getType() === 'SqlField') {
         $fieldName = count($expr->getFields()) === 1 ? $expr->getFields()[0] : NULL;
         $field = $this->getField($fieldName, TRUE);
@@ -484,9 +484,9 @@ class Api4SelectQuery {
       }
       // If either the having or select field contains a pseudoconstant suffix, match and perform substitution
       else {
-        list($fieldName) = explode(':', $expr);
+        [$fieldName] = explode(':', $expr);
         foreach ($this->selectAliases as $selectAlias => $selectExpr) {
-          list($selectField) = explode(':', $selectAlias);
+          [$selectField] = explode(':', $selectAlias);
           if ($selectAlias === $selectExpr && $fieldName === $selectField && isset($this->apiFieldSpec[$fieldName])) {
             $field = $this->getField($fieldName);
             FormattingUtil::formatInputValue($value, $expr, $field, $operator);
@@ -712,7 +712,7 @@ class Api4SelectQuery {
       // First item in the array is the entity name
       $entity = array_shift($join);
       // Which might contain an alias. Split on the keyword "AS"
-      list($entity, $alias) = array_pad(explode(' AS ', $entity), 2, NULL);
+      [$entity, $alias] = array_pad(explode(' AS ', $entity), 2, NULL);
       // Ensure permissions
       if (!$this->checkEntityAccess($entity)) {
         continue;
@@ -785,7 +785,7 @@ class Api4SelectQuery {
     $stack = [NULL, NULL];
     // See if the ON clause already contains an FK reference to joinEntity
     $explicitFK = array_filter($joinTree, function($clause) use ($alias, $joinEntityFields) {
-      list($sideA, $op, $sideB) = array_pad((array) $clause, 3, NULL);
+      [$sideA, $op, $sideB] = array_pad((array) $clause, 3, NULL);
       if ($op !== '=' || !$sideB) {
         return FALSE;
       }
@@ -896,7 +896,7 @@ class Api4SelectQuery {
    */
   private function getBridgeRefs(string $bridgeEntity, string $joinEntity): array {
     $bridges = CoreUtil::getInfoItem($bridgeEntity, 'bridge') ?? [];
-    /* @var \CRM_Core_DAO $bridgeDAO */
+    /** @var \CRM_Core_DAO $bridgeDAO */
     $bridgeDAO = CoreUtil::getInfoItem($bridgeEntity, 'dao');
     $bridgeEntityFields = \Civi\API\Request::create($bridgeEntity, 'get', ['version' => 4, 'checkPermissions' => $this->getCheckPermissions()])->entityFields();
     $bridgeTable = $bridgeDAO::getTableName();
@@ -987,7 +987,7 @@ class Api4SelectQuery {
     $bridgeAlias = $side === 'INNER' ? $bridgeAlias : $alias;
     // Find explicit bridge join conditions and move them out of the joinTree
     $joinTree = array_filter($joinTree, function ($clause) use ($baseRef, $alias, $bridgeAlias, &$bridgeConditions) {
-      list($sideA, $op, $sideB) = array_pad((array) $clause, 3, NULL);
+      [$sideA, $op, $sideB] = array_pad((array) $clause, 3, NULL);
       // Skip AND/OR/NOT branches
       if (!$sideB) {
         return TRUE;
diff --git a/civicrm/Civi/Api4/Query/SqlExpression.php b/civicrm/Civi/Api4/Query/SqlExpression.php
index fca26025b3a7b67ba101da801f057eef58280550..d52c0a2d415b05cdfb7ebc045ff2159cc95dc5aa 100644
--- a/civicrm/Civi/Api4/Query/SqlExpression.php
+++ b/civicrm/Civi/Api4/Query/SqlExpression.php
@@ -192,7 +192,7 @@ abstract class SqlExpression {
    * @return mixed|null
    */
   protected function captureKeyword($keywords, &$arg) {
-    foreach ($keywords as $key) {
+    foreach (array_filter($keywords, 'strlen') as $key) {
       // Match keyword followed by a space or eol
       if (strpos($arg, $key . ' ') === 0 || rtrim($arg) === $key) {
         $arg = ltrim(substr($arg, strlen($key)));
diff --git a/civicrm/Civi/Api4/Query/SqlFunction.php b/civicrm/Civi/Api4/Query/SqlFunction.php
index 7cdb358aacacb6e64ab647be8625fdeaeb8414f7..32843bafa924fbb739d3ab30917d92c00dc0eabd 100644
--- a/civicrm/Civi/Api4/Query/SqlFunction.php
+++ b/civicrm/Civi/Api4/Query/SqlFunction.php
@@ -163,7 +163,7 @@ abstract class SqlFunction extends SqlExpression {
     $params = [];
     foreach (static::params() as $param) {
       // Merge in defaults to ensure each param has these properties
-      $params[] = $param + [
+      $param += [
         'name' => NULL,
         'label' => ts('Select'),
         'min_expr' => 1,
@@ -174,6 +174,10 @@ abstract class SqlFunction extends SqlExpression {
         'must_be' => ['SqlField', 'SqlFunction', 'SqlString', 'SqlNumber', 'SqlNull'],
         'api_default' => NULL,
       ];
+      if (!$param['max_expr']) {
+        $param['must_be'] = [];
+      }
+      $params[] = $param;
     }
     return $params;
   }
diff --git a/civicrm/Civi/Api4/Query/SqlFunctionAVG.php b/civicrm/Civi/Api4/Query/SqlFunctionAVG.php
index d385b29eb95f0b893820bb9bd2617d25fbdccc52..3d951be66ffcce8572c5cab2f4b153f95979ed02 100644
--- a/civicrm/Civi/Api4/Query/SqlFunctionAVG.php
+++ b/civicrm/Civi/Api4/Query/SqlFunctionAVG.php
@@ -23,7 +23,7 @@ class SqlFunctionAVG extends SqlFunction {
   protected static function params(): array {
     return [
       [
-        'flag_before' => ['DISTINCT' => ts('Distinct')],
+        'flag_before' => ['' => NULL, 'DISTINCT' => ts('Distinct')],
         'must_be' => ['SqlField'],
       ],
     ];
diff --git a/civicrm/Civi/Api4/Query/SqlFunctionCOUNT.php b/civicrm/Civi/Api4/Query/SqlFunctionCOUNT.php
index 360ce7d8af0a0f9c979185521ae935a3199e5829..2f58ce09b61c7f9846d0a53f0547c444073f8b68 100644
--- a/civicrm/Civi/Api4/Query/SqlFunctionCOUNT.php
+++ b/civicrm/Civi/Api4/Query/SqlFunctionCOUNT.php
@@ -23,7 +23,7 @@ class SqlFunctionCOUNT extends SqlFunction {
   protected static function params(): array {
     return [
       [
-        'flag_before' => ['DISTINCT' => ts('Distinct')],
+        'flag_before' => ['' => NULL, 'DISTINCT' => ts('Distinct')],
         'max_expr' => 1,
         'must_be' => ['SqlField', 'SqlWild'],
       ],
diff --git a/civicrm/Civi/Api4/Query/SqlFunctionEXTRACT.php b/civicrm/Civi/Api4/Query/SqlFunctionEXTRACT.php
new file mode 100644
index 0000000000000000000000000000000000000000..ff555ec46bf31d7d8e5fdd3f3587ce475b917729
--- /dev/null
+++ b/civicrm/Civi/Api4/Query/SqlFunctionEXTRACT.php
@@ -0,0 +1,66 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Query;
+
+/**
+ * Sql function
+ */
+class SqlFunctionEXTRACT extends SqlFunction {
+
+  protected static $category = self::CATEGORY_DATE;
+
+  protected static function params(): array {
+    return [
+      [
+        'label' => ts('Unit'),
+        'flag_before' => [
+          'SECOND' => ts('Seconds'),
+          'MINUTE' => ts('Minutes'),
+          'HOUR' => ts('Hours'),
+          'DAY' => ts('Days'),
+          'WEEK' => ts('Weeks'),
+          'MONTH' => ts('Months'),
+          'QUARTER' => ts('Quarters'),
+          'YEAR' => ts('Years'),
+          'MINUTE_SECOND' => ts('Minutes:Seconds'),
+          'HOUR_SECOND' => ts('Hours:Minutes:Seconds'),
+          'HOUR_MINUTE' => ts('Hours:Minutes'),
+          'DAY_SECOND' => ts('Days Hours:Minutes:Seconds'),
+          'DAY_MINUTE' => ts('Days Hours:Minutes'),
+          'DAY_HOUR' => ts('Days Hours'),
+          'YEAR_MONTH' => ts('Years-Months'),
+        ],
+        'max_expr' => 0,
+        'optional' => FALSE,
+      ],
+      [
+        'name' => 'FROM',
+        'must_be' => ['SqlField'],
+      ],
+    ];
+  }
+
+  /**
+   * @return string
+   */
+  public static function getTitle(): string {
+    return ts('Partial Date');
+  }
+
+  /**
+   * @return string
+   */
+  public static function getDescription(): string {
+    return ts('The numeric month (1-12) of a date.');
+  }
+
+}
diff --git a/civicrm/Civi/Api4/Query/SqlFunctionGROUP_CONCAT.php b/civicrm/Civi/Api4/Query/SqlFunctionGROUP_CONCAT.php
index 3c90f1a3236d969ccf892c03db7cc3d5bb93aad6..e9f72907cc111a52650efaff7eb18e50feda87f5 100644
--- a/civicrm/Civi/Api4/Query/SqlFunctionGROUP_CONCAT.php
+++ b/civicrm/Civi/Api4/Query/SqlFunctionGROUP_CONCAT.php
@@ -23,7 +23,7 @@ class SqlFunctionGROUP_CONCAT extends SqlFunction {
   protected static function params(): array {
     return [
       [
-        'flag_before' => ['DISTINCT' => ts('Distinct')],
+        'flag_before' => ['' => NULL, 'DISTINCT' => ts('Distinct')],
         'max_expr' => 1,
         'must_be' => ['SqlField', 'SqlFunction'],
         'optional' => FALSE,
diff --git a/civicrm/Civi/Api4/Query/SqlFunctionMAX.php b/civicrm/Civi/Api4/Query/SqlFunctionMAX.php
index 24ad68af4a58e5e932d7a2d090e0573004e7b974..c1aabcd9ffbbbb86c326ff253579b377572ef9da 100644
--- a/civicrm/Civi/Api4/Query/SqlFunctionMAX.php
+++ b/civicrm/Civi/Api4/Query/SqlFunctionMAX.php
@@ -23,7 +23,7 @@ class SqlFunctionMAX extends SqlFunction {
   protected static function params(): array {
     return [
       [
-        'flag_before' => ['DISTINCT' => ts('Distinct')],
+        'flag_before' => ['' => NULL, 'DISTINCT' => ts('Distinct')],
         'must_be' => ['SqlField'],
       ],
     ];
diff --git a/civicrm/Civi/Api4/Query/SqlFunctionMIN.php b/civicrm/Civi/Api4/Query/SqlFunctionMIN.php
index 0883ee4c8ffdbae3505452558415b3326a496b7e..663915ff610849f20609a305825dc4ab2d8d19ce 100644
--- a/civicrm/Civi/Api4/Query/SqlFunctionMIN.php
+++ b/civicrm/Civi/Api4/Query/SqlFunctionMIN.php
@@ -23,7 +23,7 @@ class SqlFunctionMIN extends SqlFunction {
   protected static function params(): array {
     return [
       [
-        'flag_before' => ['DISTINCT' => ts('Distinct')],
+        'flag_before' => ['' => NULL, 'DISTINCT' => ts('Distinct')],
         'must_be' => ['SqlField'],
       ],
     ];
diff --git a/civicrm/Civi/Api4/Query/SqlFunctionSUM.php b/civicrm/Civi/Api4/Query/SqlFunctionSUM.php
index 71c56611b88a0229bc02ef2603125be9b7655590..879baf9d797d755ccf55c8f774750c8a164bd61f 100644
--- a/civicrm/Civi/Api4/Query/SqlFunctionSUM.php
+++ b/civicrm/Civi/Api4/Query/SqlFunctionSUM.php
@@ -21,7 +21,7 @@ class SqlFunctionSUM extends SqlFunction {
   protected static function params(): array {
     return [
       [
-        'flag_before' => ['DISTINCT' => ts('Distinct')],
+        'flag_before' => ['' => NULL, 'DISTINCT' => ts('Distinct')],
         'must_be' => ['SqlField'],
       ],
     ];
diff --git a/civicrm/Civi/Api4/Service/Schema/Joinable/ExtraJoinable.php b/civicrm/Civi/Api4/Service/Schema/Joinable/ExtraJoinable.php
new file mode 100644
index 0000000000000000000000000000000000000000..bfd22006d3558049eeecd4a10021821de9172c4a
--- /dev/null
+++ b/civicrm/Civi/Api4/Service/Schema/Joinable/ExtraJoinable.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Service\Schema\Joinable;
+
+/**
+ * Like Joinable but without any default conditions so it can be fully customized.
+ */
+class ExtraJoinable extends Joinable {
+
+  /**
+   * This type of join relies entirely on the extra join conditions.
+   *
+   * @param string $baseTableAlias
+   * @param string $targetTableAlias
+   *
+   * @return array
+   */
+  public function getConditionsForJoin(string $baseTableAlias, string $targetTableAlias) {
+    $conditions = [];
+    $this->addExtraJoinConditions($conditions, $baseTableAlias, $targetTableAlias);
+    return $conditions;
+  }
+
+}
diff --git a/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php b/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php
index 95b14cb95c233f675cdeeb55fa580c1fd2d0ae73..33e26026108fa38892d6479e8050a35c902d9bd2 100644
--- a/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php
+++ b/civicrm/Civi/Api4/Service/Schema/Joinable/Joinable.php
@@ -98,23 +98,32 @@ class Joinable {
    * Gets conditions required when joining to a base table
    *
    * @param string $baseTableAlias
-   * @param string $tableAlias
+   * @param string $targetTableAlias
    *
    * @return array
    */
-  public function getConditionsForJoin(string $baseTableAlias, string $tableAlias) {
+  public function getConditionsForJoin(string $baseTableAlias, string $targetTableAlias) {
     $conditions = [];
     $conditions[] = sprintf(
       '`%s`.`%s` =  `%s`.`%s`',
       $baseTableAlias,
       $this->baseColumn,
-      $tableAlias,
+      $targetTableAlias,
       $this->targetColumn
     );
+    $this->addExtraJoinConditions($conditions, $baseTableAlias, $targetTableAlias);
+    return $conditions;
+  }
+
+  /**
+   * @param $conditions
+   * @param string $baseTableAlias
+   * @param string $targetTableAlias
+   */
+  protected function addExtraJoinConditions(&$conditions, string $baseTableAlias, string $targetTableAlias):void {
     foreach ($this->conditions as $condition) {
-      $conditions[] = str_replace(['{base_table}', '{target_table}'], [$baseTableAlias, $tableAlias], $condition);
+      $conditions[] = str_replace(['{base_table}', '{target_table}'], [$baseTableAlias, $targetTableAlias], $condition);
     }
-    return $conditions;
   }
 
   /**
@@ -203,13 +212,6 @@ class Joinable {
     return $this;
   }
 
-  /**
-   * @return array
-   */
-  public function getExtraJoinConditions() {
-    return $this->conditions;
-  }
-
   /**
    * @param string[] $conditions
    *
diff --git a/civicrm/Civi/Api4/Service/Schema/Joiner.php b/civicrm/Civi/Api4/Service/Schema/Joiner.php
index 169466dfd5ef4b4e8e07ba343ee5c3c9b33551e2..cda0a8344ef124698ee8c5bb53291f78761fc3a4 100644
--- a/civicrm/Civi/Api4/Service/Schema/Joiner.php
+++ b/civicrm/Civi/Api4/Service/Schema/Joiner.php
@@ -12,6 +12,8 @@
 
 namespace Civi\Api4\Service\Schema;
 
+use Civi\Api4\Query\Api4SelectQuery;
+
 class Joiner {
   /**
    * @var SchemaMap
@@ -62,4 +64,22 @@ class Joiner {
     return $this->cache[$cacheKey];
   }
 
+  /**
+   * SpecProvider callback for joins added via a SchemaMapSubscriber.
+   *
+   * This works for extra joins declared via SchemaMapSubscriber.
+   * It allows implicit joins through custom sql, by virtue of the fact
+   * that `$query->getField` will create the join not just to the `id` field
+   * but to every field on the joined entity, allowing e.g. joins to `address_primary.country_id:label`.
+   *
+   * @param array $field
+   * @param \Civi\Api4\Query\Api4SelectQuery $query
+   * @return string
+   */
+  public static function getExtraJoinSql(array $field, Api4SelectQuery $query): string {
+    $prefix = empty($field['explicit_join']) ? '' : $field['explicit_join'] . '.';
+    $idField = $query->getField($prefix . $field['name'] . '.id');
+    return $idField['sql_name'];
+  }
+
 }
diff --git a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php
index d9baef14cd45dc57a13a4d6b76635fe8f9cd0000..a19c20a6920d2e06e05041e54ec18c54fd964fdd 100644
--- a/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php
+++ b/civicrm/Civi/Api4/Service/Schema/SchemaMapBuilder.php
@@ -82,14 +82,6 @@ class SchemaMapBuilder {
     if ($fkClass) {
       $tableName = AllCoreTables::getTableForClass($fkClass);
       $fkKey = $data['FKKeyColumn'] ?? 'id';
-      // Backward-compatibility for older api calls using e.g. "contact" instead of "contact_id"
-      if (strpos($field, '_id')) {
-        $alias = str_replace('_id', '', $field);
-        $joinable = new Joinable($tableName, $fkKey, $alias);
-        $joinable->setJoinType($joinable::JOIN_TYPE_MANY_TO_ONE);
-        $joinable->setDeprecated();
-        $table->addTableLink($field, $joinable);
-      }
       $joinable = new Joinable($tableName, $fkKey, $field);
       $joinable->setJoinType($joinable::JOIN_TYPE_MANY_TO_ONE);
       $table->addTableLink($field, $joinable);
diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ActivitySpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ActivitySpecProvider.php
index 53998937986dbfac12779d1f24f1cc9920f576d5..496f7e64d0d94f2bfe81825fa1f54b6c7c159169 100644
--- a/civicrm/Civi/Api4/Service/Spec/Provider/ActivitySpecProvider.php
+++ b/civicrm/Civi/Api4/Service/Spec/Provider/ActivitySpecProvider.php
@@ -23,45 +23,59 @@ class ActivitySpecProvider implements Generic\SpecProviderInterface {
   public function modifySpec(RequestSpec $spec) {
     $action = $spec->getAction();
 
-    // The database default '1' is problematic as the option list is user-configurable,
-    // so activity type '1' doesn't necessarily exist. Best make the field required.
-    $spec->getFieldByName('activity_type_id')
-      ->setDefaultValue(NULL)
-      ->setRequired($action === 'create');
+    if (\CRM_Core_Component::isEnabled('CiviCase')) {
+      $field = new FieldSpec('case_id', 'Activity', 'Integer');
+      $field->setTitle(ts('Case ID'));
+      $field->setLabel($action === 'get' ? ts('Filed on Case') : ts('File on Case'));
+      $field->setDescription(ts('CiviCase this activity belongs to.'));
+      $field->setFkEntity('Case');
+      $field->setInputType('EntityRef');
+      $field->setColumnName('id');
+      $field->setSqlRenderer(['\Civi\Api4\Service\Schema\Joiner', 'getExtraJoinSql']);
+      $spec->addFieldSpec($field);
+    }
 
-    $field = new FieldSpec('source_contact_id', 'Activity', 'Integer');
-    $field->setTitle(ts('Source Contact'));
-    $field->setLabel(ts('Added by'));
-    $field->setDescription(ts('Contact who created this activity.'));
-    $field->setRequired($action === 'create');
-    $field->setFkEntity('Contact');
-    $field->setInputType('EntityRef');
-    $spec->addFieldSpec($field);
+    if (in_array($action, ['create', 'update'], TRUE)) {
+      // The database default '1' is problematic as the option list is user-configurable,
+      // so activity type '1' doesn't necessarily exist. Best make the field required.
+      $spec->getFieldByName('activity_type_id')
+        ->setDefaultValue(NULL)
+        ->setRequired($action === 'create');
 
-    $field = new FieldSpec('target_contact_id', 'Activity', 'Array');
-    $field->setTitle(ts('Target Contacts'));
-    $field->setLabel(ts('With Contact(s)'));
-    $field->setDescription(ts('Contact(s) involved in this activity.'));
-    $field->setFkEntity('Contact');
-    $field->setInputType('EntityRef');
-    $field->setInputAttrs(['multiple' => TRUE]);
-    $spec->addFieldSpec($field);
+      $field = new FieldSpec('source_contact_id', 'Activity', 'Integer');
+      $field->setTitle(ts('Source Contact'));
+      $field->setLabel(ts('Added by'));
+      $field->setDescription(ts('Contact who created this activity.'));
+      $field->setRequired($action === 'create');
+      $field->setFkEntity('Contact');
+      $field->setInputType('EntityRef');
+      $spec->addFieldSpec($field);
 
-    $field = new FieldSpec('assignee_contact_id', 'Activity', 'Array');
-    $field->setTitle(ts('Assignee Contacts'));
-    $field->setLabel(ts('Assigned to'));
-    $field->setDescription(ts('Contact(s) assigned to this activity.'));
-    $field->setFkEntity('Contact');
-    $field->setInputType('EntityRef');
-    $field->setInputAttrs(['multiple' => TRUE]);
-    $spec->addFieldSpec($field);
+      $field = new FieldSpec('target_contact_id', 'Activity', 'Array');
+      $field->setTitle(ts('Target Contacts'));
+      $field->setLabel(ts('With Contact(s)'));
+      $field->setDescription(ts('Contact(s) involved in this activity.'));
+      $field->setFkEntity('Contact');
+      $field->setInputType('EntityRef');
+      $field->setInputAttrs(['multiple' => TRUE]);
+      $spec->addFieldSpec($field);
+
+      $field = new FieldSpec('assignee_contact_id', 'Activity', 'Array');
+      $field->setTitle(ts('Assignee Contacts'));
+      $field->setLabel(ts('Assigned to'));
+      $field->setDescription(ts('Contact(s) assigned to this activity.'));
+      $field->setFkEntity('Contact');
+      $field->setInputType('EntityRef');
+      $field->setInputAttrs(['multiple' => TRUE]);
+      $spec->addFieldSpec($field);
+    }
   }
 
   /**
    * @inheritDoc
    */
   public function applies($entity, $action) {
-    return $entity === 'Activity' && in_array($action, ['create', 'update'], TRUE);
+    return $entity === 'Activity';
   }
 
 }
diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php
index 74d4665beb71b3bc1c490e3d872fe3935f5d5358..dd8ed75dfff9dfcdcd5728594cace067274a8fff 100644
--- a/civicrm/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php
+++ b/civicrm/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php
@@ -30,10 +30,10 @@ class CaseCreationSpecProvider implements Generic\SpecProviderInterface {
     $creator->setDefaultValue('user_contact_id');
     $spec->addFieldSpec($creator);
 
-    $contact = new FieldSpec('contact_id', $spec->getEntity(), 'Array');
-    $contact->setTitle(ts('Case Contact(s)'));
-    $contact->setLabel(ts('Case Client(s)'));
-    $contact->setDescription('Contact(s) who are case clients.');
+    $multiClient = \Civi::settings()->get('civicaseAllowMultipleClients');
+    $contact = new FieldSpec('contact_id', $spec->getEntity(), $multiClient ? 'Array' : 'Integer');
+    $contact->setTitle($multiClient ? ts('Case Clients') : ts('Case Client'));
+    $contact->setDescription($multiClient ? 'Contact(s) who are case clients.' : 'The case client');
     $contact->setFkEntity('Contact');
     $contact->setInputType('EntityRef');
     $contact->setRequired(TRUE);
@@ -55,9 +55,9 @@ class CaseCreationSpecProvider implements Generic\SpecProviderInterface {
     $duration->setDescription('Open Case activity duration (minutes).');
     $spec->addFieldSpec($duration);
 
+    // Set defualt value for status_id so it is not required
     $defaultStatus = \CRM_Core_DAO::singleValueQuery('SELECT value FROM civicrm_option_value
       WHERE is_default
-        AND domain_id = ' . \CRM_Core_BAO_Domain::getDomain()->id . '
         AND option_group_id = (SELECT id FROM civicrm_option_group WHERE name = "case_status")
       LIMIT 1');
     if ($defaultStatus) {
diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ContactGetSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ContactGetSpecProvider.php
index d3c9dab9219e45c63fe8391b1fc46ddb4a719e3b..31be2aeb631010f39982656c517dc87e668fa2e0 100644
--- a/civicrm/Civi/Api4/Service/Spec/Provider/ContactGetSpecProvider.php
+++ b/civicrm/Civi/Api4/Service/Spec/Provider/ContactGetSpecProvider.php
@@ -50,7 +50,9 @@ class ContactGetSpecProvider implements Generic\SpecProviderInterface {
       $spec->addFieldSpec($field);
     }
 
-    // Address, Email, Phone, IM
+    // Address, Email, Phone, IM primary/billing virtual fields
+    // This exposes the joins created by
+    // \Civi\Api4\Event\Subscriber\ContactSchemaMapSubscriber::onSchemaBuild()
     $entities = [
       'Address' => [
         'primary' => [
@@ -96,13 +98,13 @@ class ContactGetSpecProvider implements Generic\SpecProviderInterface {
     foreach ($entities as $entity => $types) {
       foreach ($types as $type => $info) {
         $name = strtolower($entity) . '_' . $type;
-        $field = new FieldSpec($name, 'Contact', 'String');
+        $field = new FieldSpec($name, 'Contact', 'Integer');
         $field->setLabel($info['label'])
           ->setTitle($info['title'])
           ->setColumnName('id')
           ->setType('Extra')
           ->setFkEntity($entity)
-          ->setSqlRenderer([__CLASS__, 'getLocationFieldSql']);
+          ->setSqlRenderer(['\Civi\Api4\Service\Schema\Joiner', 'getExtraJoinSql']);
         $spec->addFieldSpec($field);
       }
     }
@@ -173,20 +175,8 @@ class ContactGetSpecProvider implements Generic\SpecProviderInterface {
    * @param array $field
    * @return string
    */
-  public static function calculateAge(array $field) {
+  public static function calculateAge(array $field): string {
     return "TIMESTAMPDIFF(YEAR, {$field['sql_name']}, CURDATE())";
   }
 
-  /**
-   * Generate SQL for address/email/phone/im id field
-   * @param array $field
-   * @param \Civi\Api4\Query\Api4SelectQuery $query
-   * @return string
-   */
-  public static function getLocationFieldSql(array $field, Api4SelectQuery $query) {
-    $prefix = empty($field['explicit_join']) ? '' : $field['explicit_join'] . '.';
-    $idField = $query->getField($prefix . $field['name'] . '.id');
-    return $idField['sql_name'];
-  }
-
 }
diff --git a/civicrm/Civi/Api4/Service/Spec/RequestSpec.php b/civicrm/Civi/Api4/Service/Spec/RequestSpec.php
index c18381c1ebb1a4288e9e95e9c57b140df6fca722..ac711c6aa8baa13575110ab544e66fec4c51170a 100644
--- a/civicrm/Civi/Api4/Service/Spec/RequestSpec.php
+++ b/civicrm/Civi/Api4/Service/Spec/RequestSpec.php
@@ -31,6 +31,13 @@ class RequestSpec implements \Iterator {
    */
   protected $entityTableName;
 
+  /**
+   * @return string
+   */
+  public function getEntityTableName(): ?string {
+    return $this->entityTableName;
+  }
+
   /**
    * @var FieldSpec[]
    */
diff --git a/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php b/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php
index fb0b83a7360e419fec7b1fefe31bde3c37e0509b..0697a64b3eca8d649fd2ec26b6a7eb44e4deaa36 100644
--- a/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php
+++ b/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php
@@ -197,7 +197,6 @@ class SpecFormatter {
     $returnFormat = array_diff($returnFormat, ['id', 'name', 'label']);
     // CRM_Core_Pseudoconstant doesn't know how to fetch extra stuff like icon, description, color, etc., so we have to invent that wheel here...
     if ($returnFormat) {
-      $optionIds = implode(',', array_column($options, 'id'));
       $optionIndex = array_flip(array_column($options, 'id'));
       if ($spec instanceof CustomFieldSpec) {
         $optionGroupId = \CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField', $spec->getCustomFieldId(), 'option_group_id');
@@ -229,15 +228,18 @@ class SpecFormatter {
           $returnFormat = array_diff($returnFormat, ['abbr']);
         }
         // Fetch anything else (color, icon, description)
-        if ($returnFormat && !empty($pseudoconstant['table']) && \CRM_Utils_Rule::commaSeparatedIntegers($optionIds)) {
-          $sql = "SELECT * FROM {$pseudoconstant['table']} WHERE id IN (%1)";
-          $query = \CRM_Core_DAO::executeQuery($sql, [1 => [$optionIds, 'CommaSeparatedIntegers']]);
+        if ($returnFormat && !empty($pseudoconstant['table'])) {
+          $idCol = $pseudoconstant['keyColumn'] ?? 'id';
+          $optionIds = \CRM_Core_DAO::escapeStrings(array_column($options, 'id'));
+          $sql = "SELECT * FROM {$pseudoconstant['table']} WHERE `$idCol` IN ($optionIds)";
+          $query = \CRM_Core_DAO::executeQuery($sql);
           while ($query->fetch()) {
             foreach ($returnFormat as $ret) {
-              if (property_exists($query, $ret)) {
+              $retCol = $pseudoconstant[$ret . 'Column'] ?? $ret;
+              if (property_exists($query, $retCol)) {
                 // Note: our schema is inconsistent about whether `description` fields allow html,
                 // but it's usually assumed to be plain text, so we strip_tags() to standardize it.
-                $options[$optionIndex[$query->id]][$ret] = $ret === 'description' ? strip_tags($query->$ret ?? '') : $query->$ret;
+                $options[$optionIndex[$query->$idCol]][$ret] = isset($query->$retCol) ? strip_tags($query->$retCol) : NULL;
               }
             }
           }
@@ -285,6 +287,10 @@ class SpecFormatter {
     if ($inputType == 'Date' && !empty($inputAttrs['formatType'])) {
       self::setLegacyDateFormat($inputAttrs);
     }
+    // Number input for integer fields
+    if ($inputType === 'Text' && $dataTypeName === 'Int') {
+      $inputType = 'Number';
+    }
     // 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);
diff --git a/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php b/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php
index 8dad1642eb2f8f7f91c415848aab95ed2cff3180..7b0a3b9e8a78a95863e23803bf78ec8f695cec8c 100644
--- a/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php
+++ b/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php
@@ -87,7 +87,7 @@ class SpecGatherer {
 
     foreach ($DAOFields as $DAOField) {
       if ($DAOField['name'] == 'id' && $action == 'create') {
-        continue;
+        $DAOField['required'] = FALSE;
       }
       if (array_key_exists('contactType', $DAOField) && $spec->getValue('contact_type') && $DAOField['contactType'] != $spec->getValue('contact_type')) {
         continue;
diff --git a/civicrm/Civi/Api4/Utils/FormattingUtil.php b/civicrm/Civi/Api4/Utils/FormattingUtil.php
index efacccb3de3ee905d0d262f04dced2e3d89a188c..3e92ddd2e023dbf8a56c062e82073d18827f0b72 100644
--- a/civicrm/Civi/Api4/Utils/FormattingUtil.php
+++ b/civicrm/Civi/Api4/Utils/FormattingUtil.php
@@ -211,7 +211,7 @@ class FormattingUtil {
         // Evaluate pseudoconstant suffixes
         $suffix = strrpos(($fieldName ?? ''), ':');
         $fieldOptions = NULL;
-        if ($suffix) {
+        if (isset($value) && $suffix) {
           $fieldOptions = self::getPseudoconstantList($field, $fieldName, $result, $action);
           $dataType = NULL;
         }
@@ -261,7 +261,7 @@ class FormattingUtil {
     // Use BAO::buildOptions if possible
     if ($baoName) {
       $fieldName = empty($field['custom_field_id']) ? $field['name'] : 'custom_' . $field['custom_field_id'];
-      $options = $baoName::buildOptions($fieldName, $context, self::filterByPrefix($params, $fieldPath, $field['name']));
+      $options = $baoName::buildOptions($fieldName, $context, self::filterByPath($params, $fieldPath, $field['name']));
     }
     // Fallback for option lists that exist in the api but not the BAO
     if (!isset($options) || $options === FALSE) {
@@ -308,7 +308,7 @@ class FormattingUtil {
    * @param mixed $value
    */
   private static function applyFormatters(array $result, string $fieldPath, array $field, &$value) {
-    $row = self::filterByPrefix($result, $fieldPath, $field['name']);
+    $row = self::filterByPath($result, $fieldPath, $field['name']);
 
     foreach ($field['output_formatters'] as $formatter) {
       $formatter($value, $row, $field);
@@ -382,8 +382,7 @@ class FormattingUtil {
    * Given a field belonging to either the main entity or a joined entity,
    * and a values array of [path => value], this returns all values which share the same root path.
    *
-   * Works by filtering array keys to only include those with the same prefix as a given field,
-   * stripping them of that prefix.
+   * Note: Unlike CRM_Utils_Array::filterByPrefix this does not mutate the original array.
    *
    * Ex:
    * ```
@@ -409,15 +408,9 @@ class FormattingUtil {
    * @param string $fieldName
    * @return array
    */
-  public static function filterByPrefix(array $values, string $fieldPath, string $fieldName): array {
-    $filtered = [];
+  public static function filterByPath(array $values, string $fieldPath, string $fieldName): array {
     $prefix = substr($fieldPath, 0, strpos($fieldPath, $fieldName));
-    foreach ($values as $key => $val) {
-      if (!$prefix || strpos($key, $prefix) === 0) {
-        $filtered[substr($key, strlen($prefix))] = $val;
-      }
-    }
-    return $filtered;
+    return \CRM_Utils_Array::filterByPrefix($values, $prefix);
   }
 
 }
diff --git a/civicrm/Civi/Core/CiviEventDispatcher.php b/civicrm/Civi/Core/CiviEventDispatcher.php
index d8db0119bc6395ac64dcd2ab6b7ffe2d05c69921..3aec51f3d1d309ae8b701134c34027def985e402 100644
--- a/civicrm/Civi/Core/CiviEventDispatcher.php
+++ b/civicrm/Civi/Core/CiviEventDispatcher.php
@@ -155,7 +155,15 @@ class CiviEventDispatcher extends EventDispatcher {
       throw new \InvalidArgumentException('Expected an array("service", "method") argument');
     }
 
-    $this->addListener($eventName, new \Civi\Core\Event\ServiceListener($callback), $priority);
+    if ($eventName[0] === '&') {
+      $eventName = substr($eventName, 1);
+      $listener = new \Civi\Core\Event\HookStyleServiceListener($callback);
+    }
+    else {
+      $listener = new \Civi\Core\Event\ServiceListener($callback);
+    }
+
+    $this->addListener($eventName, $listener, $priority);
   }
 
   /**
diff --git a/civicrm/Civi/Core/ClassScanner.php b/civicrm/Civi/Core/ClassScanner.php
index 486b91e4dbd7cd7c0b5927139a5be07ed6885492..c50f0b850e32dea8880825f2dbb8472671d7b7bf 100644
--- a/civicrm/Civi/Core/ClassScanner.php
+++ b/civicrm/Civi/Core/ClassScanner.php
@@ -137,8 +137,10 @@ class ClassScanner {
     static::scanFolders($classes, $civicrmRoot, 'Civi/WorkflowMessage', '\\');
     static::scanFolders($classes, $civicrmRoot, 'CRM/*/Import', '_');
     if (\CRM_Utils_Constant::value('CIVICRM_UF') === 'UnitTests') {
-      static::scanFolders($classes, $civicrmRoot . 'tests/phpunit', 'CRM/*/WorkflowMessage', '_');
-      static::scanFolders($classes, $civicrmRoot . 'tests/phpunit', 'Civi/*/WorkflowMessage', '\\');
+      if (strpos(get_include_path(), $civicrmRoot . 'tests/phpunit') !== FALSE) {
+        static::scanFolders($classes, $civicrmRoot . 'tests/phpunit', 'CRM/*/WorkflowMessage', '_');
+        static::scanFolders($classes, $civicrmRoot . 'tests/phpunit', 'Civi/*/WorkflowMessage', '\\');
+      }
     }
 
     $cache->set($cacheKey, $classes, static::TTL);
@@ -198,6 +200,11 @@ class ClassScanner {
             $classes[] = $class;
           }
         }
+        elseif (!interface_exists($class) && !trait_exists($class)) {
+          // If you get this error, then perhaps (a) you need to fix the name of file/class/namespace or (b) you should disable class-scanning.
+          // throw new \RuntimeException("Scanned file {$relFile} for class {$class}, but it was not found.");
+          // We can't throw an exception since it breaks some test environments. We can't log because this happens too early and it leads to an infinite loop. error_log() works but is debatable if anyone will look there.
+        }
       }
     }
   }
@@ -221,6 +228,7 @@ class ClassScanner {
     if (!isset(static::$caches[$name])) {
       switch ($name) {
         case 'index':
+          global $_DB_DATAOBJECT;
           if (empty($_DB_DATAOBJECT['CONFIG'])) {
             // Atypical example: You have a test with a @dataProvider that relies on ClassScanner. Runs before bot.
             return new \CRM_Utils_Cache_ArrayCache([]);
diff --git a/civicrm/Civi/Core/Compiler/EventScannerPass.php b/civicrm/Civi/Core/Compiler/EventScannerPass.php
new file mode 100644
index 0000000000000000000000000000000000000000..9ad002add8d739f37571f4727b9a5e668f80d8d8
--- /dev/null
+++ b/civicrm/Civi/Core/Compiler/EventScannerPass.php
@@ -0,0 +1,35 @@
+<?php
+namespace Civi\Core\Compiler;
+
+use Civi\Core\Event\EventScanner;
+use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+
+/**
+ * Scan for services that have the tag 'event_subscriber'.
+ *
+ * Specifically, any class tagged as `event_subscriber` will be scanned for event listeners.
+ * The subscriber should implement a relevant interface, such as:
+ *
+ * - HookInterface: The class uses `hook_*()` methods.
+ * - EventSubscriberInterface: the class provides a `getSubscribedEvents()` method.
+ *
+ * The list of listeners will be extracted stored as part of the container-cache.
+ *
+ * NOTE: This is similar to Symfony's `RegisterListenersPass()` but differs in a few ways:
+ *   - Works with both HookInterface and EventSubscriberInterface
+ *   - Watches tag 'event_subscriber' (not 'kernel.event_listener' or 'kernel.event_subscriber')
+ */
+class EventScannerPass implements CompilerPassInterface {
+
+  public function process(ContainerBuilder $container) {
+    $dispatcher = $container->getDefinition('dispatcher');
+    $subscribers = $container->findTaggedServiceIds('event_subscriber');
+
+    foreach (array_keys($subscribers) as $subscriber) {
+      $listenerMap = EventScanner::findListeners($container->findDefinition($subscriber)->getClass());
+      $dispatcher->addMethodCall('addSubscriberServiceMap', [$subscriber, $listenerMap]);
+    }
+  }
+
+}
diff --git a/civicrm/Civi/Core/Compiler/SpecProviderPass.php b/civicrm/Civi/Core/Compiler/SpecProviderPass.php
new file mode 100644
index 0000000000000000000000000000000000000000..71eed94753d9eb1d7cd8fe122102ea830400d26e
--- /dev/null
+++ b/civicrm/Civi/Core/Compiler/SpecProviderPass.php
@@ -0,0 +1,26 @@
+<?php
+namespace Civi\Core\Compiler;
+
+use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Reference;
+
+/**
+ * Scan the container for services tagged as 'spec_provider'.
+ * Register each with the `spec_gatherer`.
+ */
+class SpecProviderPass implements CompilerPassInterface {
+
+  public function process(ContainerBuilder $container) {
+    $providers = $container->findTaggedServiceIds('spec_provider');
+    $gatherer = $container->getDefinition('spec_gatherer');
+
+    foreach (array_keys($providers) as $provider) {
+      $gatherer->addMethodCall(
+        'addSpecProvider',
+        [new Reference($provider)]
+      );
+    }
+  }
+
+}
diff --git a/civicrm/Civi/Core/Container.php b/civicrm/Civi/Core/Container.php
index b33f950604c1608e01525fb0957ca1bf7d943aae..e0f205c0ce478fbd8fbf657a3bf8a4228f911ccc 100644
--- a/civicrm/Civi/Core/Container.php
+++ b/civicrm/Civi/Core/Container.php
@@ -1,6 +1,8 @@
 <?php
 namespace Civi\Core;
 
+use Civi\Core\Compiler\EventScannerPass;
+use Civi\Core\Compiler\SpecProviderPass;
 use Civi\Core\Event\EventScanner;
 use Civi\Core\Lock\LockManager;
 use Symfony\Component\Config\ConfigCache;
@@ -90,7 +92,9 @@ class Container {
   public function createContainer() {
     $civicrm_base_path = dirname(dirname(__DIR__));
     $container = new ContainerBuilder();
-    $container->addCompilerPass(new RegisterListenersPass('dispatcher'));
+    $container->addCompilerPass(new EventScannerPass());
+    $container->addCompilerPass(new SpecProviderPass());
+    $container->addCompilerPass(new RegisterListenersPass());
     $container->addObjectResource($this);
     $container->setParameter('civicrm_base_path', $civicrm_base_path);
     //$container->set(self::SELF, $this);
@@ -132,6 +136,9 @@ class Container {
       []
     ))
       ->setFactory([new Reference(self::SELF), 'createEventDispatcher'])->setPublic(TRUE);
+    // In symfony 6 it only accepts event_dispatcher as the id, but there are
+    // several places in civi and extensions that reference dispatcher.
+    $container->setAlias('event_dispatcher', 'dispatcher')->setPublic(TRUE);
 
     $container->setDefinition('magic_function_provider', new Definition(
       'Civi\API\Provider\MagicFunctionProvider',
@@ -635,21 +642,30 @@ class Container {
       $runtime->includeCustomPath();
 
       $c = new self();
-      $container = $c->loadContainer();
-      foreach ($bootServices as $name => $obj) {
-        $container->set($name, $obj);
-      }
-      \Civi::$statics[__CLASS__]['container'] = $container;
-      // Ensure all container-based serivces have a chance to add their listeners.
-      // Without this, it's a matter of happenstance (dependent upon particular page-request/configuration/etc).
-      $container->get('dispatcher');
-
+      static::useContainer($c->loadContainer());
     }
     else {
       $bootServices['dispatcher.boot']->setDispatchPolicy(\CRM_Core_Config::isUpgradeMode() ? \CRM_Upgrade_DispatchPolicy::pick() : NULL);
     }
   }
 
+  /**
+   * Set the active container (over-writing the current container, if defined).
+   *
+   * @param \Symfony\Component\DependencyInjection\ContainerInterface $container
+   * @internal Intended for bootstrap and unit-testing.
+   */
+  public static function useContainer($container): void {
+    $bootServices = \Civi::$statics[__CLASS__]['boot'];
+    foreach ($bootServices as $name => $obj) {
+      $container->set($name, $obj);
+    }
+    \Civi::$statics[__CLASS__]['container'] = $container;
+    // Ensure all container-based serivces have a chance to add their listeners.
+    // Without this, it's a matter of happenstance (dependent upon particular page-request/configuration/etc).
+    $container->get('dispatcher');
+  }
+
   /**
    * @param string $name
    *
diff --git a/civicrm/Civi/Core/Event/HookStyleServiceListener.php b/civicrm/Civi/Core/Event/HookStyleServiceListener.php
new file mode 100644
index 0000000000000000000000000000000000000000..53a03c40b7c28ee56b0feeb3aebfc6f5f5a823f3
--- /dev/null
+++ b/civicrm/Civi/Core/Event/HookStyleServiceListener.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace Civi\Core\Event;
+
+/**
+ * A hook-style service-listener is a callable with two properties:
+ *
+ * - The parameters are given in hook style.
+ * - The callback is a method in a service-class.
+ *
+ * It is comparable to running:
+ *
+ *   Civi::service('foo')->hook_civicrm_foo($arg1, $arg2, ...);
+ */
+class HookStyleServiceListener extends ServiceListener {
+
+  public function __invoke(...$args) {
+    if ($this->liveCb === NULL) {
+      $c = $this->container ?: \Civi::container();
+      $this->liveCb = [$c->get($this->inertCb[0]), $this->inertCb[1]];
+    }
+
+    $result = call_user_func_array($this->liveCb, $args[0]->getHookValues());
+    $args[0]->addReturnValues($result);
+  }
+
+  public function __toString() {
+    $class = $this->getServiceClass();
+    if ($class) {
+      return sprintf('$(%s)->%s(...$args) [%s]', $this->inertCb[0], $this->inertCb[1], $class);
+    }
+    else {
+      return sprintf('\$(%s)->%s(...$args)', $this->inertCb[0], $this->inertCb[1]);
+    }
+  }
+
+}
diff --git a/civicrm/Civi/Core/Event/ServiceListener.php b/civicrm/Civi/Core/Event/ServiceListener.php
index 63df85bc7149da86bf70490337c5aee7ce35fe29..faf58cc7fdf1bb965db0388408330bd21f83da46 100644
--- a/civicrm/Civi/Core/Event/ServiceListener.php
+++ b/civicrm/Civi/Core/Event/ServiceListener.php
@@ -24,18 +24,18 @@ class ServiceListener {
    * @var array
    *   Ex: ['service_name', 'someMethod']
    */
-  private $inertCb = NULL;
+  protected $inertCb = NULL;
 
   /**
    * @var array|null
    *   Ex: [$svcObj, 'someMethod']
    */
-  private $liveCb = NULL;
+  protected $liveCb = NULL;
 
   /**
    * @var \Symfony\Component\DependencyInjection\ContainerInterface
    */
-  private $container = NULL;
+  protected $container = NULL;
 
   /**
    * @param array $callback
@@ -53,7 +53,7 @@ class ServiceListener {
     return call_user_func_array($this->liveCb, $args);
   }
 
-  public function __toString() {
+  protected function getServiceClass(): ?string {
     $class = NULL;
     if (\Civi\Core\Container::isContainerBooted()) {
       try {
@@ -63,6 +63,11 @@ class ServiceListener {
       catch (Throwable $t) {
       }
     }
+    return $class;
+  }
+
+  public function __toString() {
+    $class = $this->getServiceClass();
     if ($class) {
       return sprintf('$(%s)->%s($e) [%s]', $this->inertCb[0], $this->inertCb[1], $class);
     }
diff --git a/civicrm/Civi/Core/Format.php b/civicrm/Civi/Core/Format.php
index 2f127ee33210871745b953f12b3b90864f3c6a14..8a711933f66afc2091cdbc0ddbd3f04abb638583 100644
--- a/civicrm/Civi/Core/Format.php
+++ b/civicrm/Civi/Core/Format.php
@@ -9,6 +9,7 @@ use Civi;
 use CRM_Core_Config;
 use CRM_Core_I18n;
 use CRM_Utils_Constant;
+use CRM_Utils_Money;
 use NumberFormatter;
 use Brick\Money\Context\AutoContext;
 
@@ -43,9 +44,11 @@ class Format {
       $currency = Civi::settings()->get('defaultCurrency');
     }
     if (!isset($locale)) {
-      $locale = Civi::settings()->get('format_locale') ?? CRM_Core_I18n::getLocale();
+      global $civicrmLocale;
+      $locale = $civicrmLocale->moneyFormat ?? (Civi::settings()->get('format_locale') ?? CRM_Core_I18n::getLocale());
     }
-    $money = Money::of($amount, $currency, NULL, RoundingMode::HALF_UP);
+    $currencyObject = CRM_Utils_Money::getCurrencyObject($currency);
+    $money = Money::of($amount, $currencyObject, NULL, RoundingMode::HALF_UP);
     $formatter = $this->getMoneyFormatter($currency, $locale);
     return $money->formatWith($formatter);
   }
@@ -93,7 +96,8 @@ class Format {
       return '';
     }
     $formatter = $this->getMoneyFormatter($currency, $locale, NumberFormatter::DECIMAL);
-    return Money::of($amount, $currency, NULL, RoundingMode::HALF_UP)->formatWith($formatter);
+    $currencyObject = CRM_Utils_Money::getCurrencyObject($currency);
+    return Money::of($amount, $currencyObject, NULL, RoundingMode::HALF_UP)->formatWith($formatter);
   }
 
   /**
@@ -120,7 +124,8 @@ class Format {
    */
   public function machineMoney($amount, string $currency = 'USD'): string {
     $formatter = $this->getMoneyFormatter($currency, 'en_US', NumberFormatter::DECIMAL, [NumberFormatter::GROUPING_USED => FALSE]);
-    return Money::of($amount, $currency, NULL, RoundingMode::HALF_UP)->formatWith($formatter);
+    $currencyObject = CRM_Utils_Money::getCurrencyObject($currency);
+    return Money::of($amount, $currencyObject, NULL, RoundingMode::HALF_UP)->formatWith($formatter);
   }
 
   /**
@@ -142,7 +147,8 @@ class Format {
     $formatter = $this->getMoneyFormatter($currency, $locale, NumberFormatter::CURRENCY, [
       NumberFormatter::MAX_FRACTION_DIGITS => 9,
     ]);
-    $money = Money::of($amount, $currency, new AutoContext());
+    $currencyObject = CRM_Utils_Money::getCurrencyObject($currency);
+    $money = Money::of($amount, $currencyObject, new AutoContext());
     return $money->formatWith($formatter);
   }
 
@@ -165,18 +171,26 @@ class Format {
     $formatter = $this->getMoneyFormatter($currency, $locale, NumberFormatter::DECIMAL, [
       NumberFormatter::MAX_FRACTION_DIGITS => 9,
     ]);
-    $money = Money::of($amount, $currency, new AutoContext());
+    $currencyObject = CRM_Utils_Money::getCurrencyObject($currency);
+    $money = Money::of($amount, $currencyObject, new AutoContext());
     return $money->formatWith($formatter);
   }
 
   /**
    * Should we use the configured thousand & decimal separators.
    *
-   * The goal is to phase this into being FALSE - but for now
-   * we are looking at how to manage an 'opt in'
+   * Historically, separators were configured with system-settings, but this is problematic
+   * when you have multiple locales with divergent separator rules (eg en_GB / fr_FR).
+   * The goal is to transition to locale-based-separators instead of setting-based-separators;
+   * but for now, we only switch if there's an opt-in flag.
    */
   protected function isUseSeparatorSettings(): bool {
-    return !Civi::settings()->get('format_locale') && !CRM_Utils_Constant::value('IGNORE_SEPARATOR_CONFIG');
+    // If system enables `format_locale`, then abide the specified locale (regardless of old separator settings).
+    // If system enables IGNORE_SEPARATOR_CONFIG, then abide the active locale's spec (regardless of old separator settings).
+    // If system enables `partial_locales`, then abide active locale's spec (regardless of old separator settings).
+    return !Civi::settings()->get('format_locale')
+      && !CRM_Utils_Constant::value('IGNORE_SEPARATOR_CONFIG')
+      && !Civi::settings()->get('partial_locales');
   }
 
   /**
@@ -200,17 +214,18 @@ class Format {
     if (!$currency) {
       $currency = Civi::settings()->get('defaultCurrency');
     }
+    $locale = $locale ?: \Civi\Core\Locale::detect()->moneyFormat;
+
     $cacheKey = __CLASS__ . $currency . '_' . $locale . '_' . $style . (!empty($attributes) ? md5(json_encode($attributes)) : '');
     if (!isset(\Civi::$statics[$cacheKey])) {
       $formatter = new NumberFormatter($locale, $style);
 
+      $currencyObject = CRM_Utils_Money::getCurrencyObject($currency);
       if (!isset($attributes[NumberFormatter::MIN_FRACTION_DIGITS])) {
-        $attributes[NumberFormatter::MIN_FRACTION_DIGITS] = Currency::of($currency)
-          ->getDefaultFractionDigits();
+        $attributes[NumberFormatter::MIN_FRACTION_DIGITS] = $currencyObject->getDefaultFractionDigits();
       }
       if (!isset($attributes[NumberFormatter::MAX_FRACTION_DIGITS])) {
-        $attributes[NumberFormatter::MAX_FRACTION_DIGITS] = Currency::of($currency)
-          ->getDefaultFractionDigits();
+        $attributes[NumberFormatter::MAX_FRACTION_DIGITS] = $currencyObject->getDefaultFractionDigits();
       }
 
       foreach ($attributes as $attribute => $value) {
diff --git a/civicrm/Civi/Core/HookInterface.php b/civicrm/Civi/Core/HookInterface.php
index 24592b50352f71292bd6660ace99bcff84bbe4e6..3ef70d6bacada03724a6d785fc218833cde30230 100644
--- a/civicrm/Civi/Core/HookInterface.php
+++ b/civicrm/Civi/Core/HookInterface.php
@@ -11,7 +11,7 @@ namespace Civi\Core;
  *
  * ```
  * class CRM_Foo_BAO_Bar implements \Civi\Core\HookInterface {
- *   public function hook_civicrm_post($op, $objectName, $objectId, &$objectRef) {
+ *   public static function hook_civicrm_post($op, $objectName, $objectId, &$objectRef) {
  *     echo "Running hook_civicrm_post\n";
  *   }
  * }
@@ -21,10 +21,10 @@ namespace Civi\Core;
  *
  * ```
  * class CRM_Foo_BAO_Bar implements \Civi\Core\HookInterface {
- *   public function on_civi_api_authorize(AuthorizeEvent $e): void {
+ *   public static function on_civi_api_authorize(AuthorizeEvent $e): void {
  *     echo "Running civi.api.authorize\n";
  *   }
- *   public function on_hook_civicrm_post(GenericHookEvent $e): void {
+ *   public static function on_hook_civicrm_post(PostEvent $e): void {
  *     echo "Running hook_civicrm_post\n";
  *   }
  * }
diff --git a/civicrm/Civi/Core/Locale.php b/civicrm/Civi/Core/Locale.php
new file mode 100644
index 0000000000000000000000000000000000000000..9a02cd130d671cc84035bb68200bec87d8567bb8
--- /dev/null
+++ b/civicrm/Civi/Core/Locale.php
@@ -0,0 +1,319 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Core;
+
+/**
+ * Define a locale.
+ *
+ * ## FULL AND PARTIAL LOCALES
+ *
+ * Compare:
+ *
+ *   // FULL LOCALE - All localization services support this locale.
+ *   $quebecois = new Locale([
+ *     'nominal' => 'fr_CA',
+ *     'ts' => 'fr_CA',
+ *     'db' => 'fr_CA',
+ *     'moneyFormat' => 'fr_CA',
+ *     'uf' => 'fr_CA',
+ *   ]);
+ *   $quebecois->apply();
+ *
+ *   // PARTIAL LOCALE - Some localization services are not available, but the locale is still used.
+ *   $chicano = new Locale([
+ *     'nominal' => 'es_US',
+ *     'ts' => 'es_MX',
+ *     'db' => NULL,
+ *     'moneyFormat' => 'en_US',
+ *     'uf' => 'es_US',
+ *   ]);
+ *   $chicano->apply();
+ *
+ * The existence of partial-locales is (perhaps) unfortunate but (at large scale) inevitable.
+ * The software comes with a list of 200 communication-locales (OptionValues), and admins may
+ * register more. There are only ~50 locales supported by `ts()` and 1-3 locales in the DB
+ * (for a typical business-entity). If you use any of these other locales, then some services
+ * must raise errors (or fallback to an alternate locale).
+ *
+ * ## NEGOTIATION
+ *
+ * The process of _negotiation_ takes a requested locale and determines how to configure
+ * the localization services. For example, suppose a caller requests `es_US` (which isn't fully supported):
+ *
+ * - You could activate an adjacent locale which has full support (like `es_MX` or `en_US`).
+ * - You could activate `es_US` and mix elements from different locales (eg `ts()` uses `es_MX`;
+ *   workflow-messages use `es_US` or `es_MX`, as available).
+ *
+ * To negotiate an effective locale and apply it:
+ *
+ *   Locale::negotiate('es_US')->apply();
+ *
+ * At time of writing, the negotiation behavior is based on system-setting `partial_locales`
+ * (which enables or disables support for partial locales). It may be useful to make this hookable.
+ *
+ * It is also possible to perform a re-negotiation. For example, suppose the user requests
+ * locale `es_US`, and we're sending an automated email -- but we only have emails written for
+ * three languages.
+ *
+ *   $msgs = ['es_MX' => 'Buenos dias', 'en_US' => 'Good day', 'fr_CA' => 'Bon jour'];
+ *   $locale = Locale::negotiate('es_US')
+ *     ->renegotiate(array_keys($msgs))
+ *     ->apply();
+ *   $msg = $msgs[$locale->nominal];
+ *
+ * In a world where you only allow fully supported locales, there would be no need for
+ * re-negotiation. However, if you have partially supported locales (with different mix of
+ * resources in each), then you need some defined behavior for unsupported edges
+ * (either raising an error or using a fallback).
+ */
+class Locale {
+
+  /**
+   * The official/visible name of the current locale.
+   *
+   * This can be any active locale that appears in communication preferences
+   * (eg `civicrm_contact.preferred_language`; ie option-group `languages`).
+   *
+   * @var string
+   * @readonly
+   */
+  public $nominal = '';
+
+  /**
+   * Locale used for `ts()` and `l10n/**.mo` lookups.
+   *
+   * @var string
+   * @readonly
+   * @internal
+   */
+  public $ts;
+
+  /**
+   * Locale used for multilingual MySQL schema.
+   *
+   * Only defined on systems where multilingual is configured. Otherwise, null.
+   *
+   * @var string|null
+   * @readonly
+   * @internal
+   */
+  public $db;
+
+  /**
+   * Locale used for `Civi::format()` operations (dates and currencies).
+   *
+   * @var string
+   * @readonly
+   * @internal
+   */
+  public $moneyFormat;
+
+  /**
+   * Locale used by CMS.
+   *
+   * @var string
+   * @readonly
+   * @internal
+   */
+  public $uf;
+
+  /**
+   * Lookup details about the desired locale.
+   *
+   * @param string|null $locale
+   *   The name of a locale that one wishes to use.
+   *   The name may be NULL to use the current/active locale.
+   * @return \Civi\Core\Locale
+   */
+  public static function resolve(?string $locale): Locale {
+    return $locale === NULL ? static::detect() : static::negotiate($locale);
+  }
+
+  /**
+   * Determine the current locale based on global properties.
+   *
+   * @return \Civi\Core\Locale
+   */
+  public static function detect(): Locale {
+    // If anyone has ever called `setLocale()` (*which they should, ideally*), then we already have an object...
+    global $civicrmLocale;
+    if ($civicrmLocale) {
+      return $civicrmLocale;
+    }
+
+    // If they haven't (*which wasn't required before*)... then we'll figure it out...
+    global $tsLocale, $dbLocale;
+    $locale = new Locale();
+    $locale->nominal = $tsLocale;
+    $locale->ts = $tsLocale;
+    $locale->db = $dbLocale ? ltrim($dbLocale, '_') : NULL;
+    $locale->moneyFormat = $tsLocale;
+    $locale->uf = \CRM_Utils_System::getUFLocale();
+    return $locale;
+  }
+
+  /**
+   * Negotiate an effective locale, based on the user's preference.
+   *
+   * @param string $preferred
+   *   The locale that is preferred by the user.
+   *   Ex: `en_US`, `es_ES`, `fr_CA`
+   * @return \Civi\Core\Locale
+   *   The effective locale specification.
+   */
+  public static function negotiate(string $preferred): Locale {
+    // Create a locale for the requested language
+    if (!preg_match(';^[a-z][a-z]_[A-Z][A-Z]$;', $preferred)) {
+      throw new \RuntimeException("Cannot instantiate malformed locale: $preferred");
+    }
+
+    $systemDefault = \Civi::settings()->get('lcMessages');
+
+    if (\Civi::settings()->get('partial_locales')) {
+      \CRM_Core_OptionValue::getValues(['name' => 'languages'], $optionValues, 'weight', TRUE);
+      $validNominalLocales = array_column($optionValues, 'label', 'name');
+      $validTsLocales = \CRM_Core_I18n::languages(FALSE); /* Active OV _and_ available MO */
+    }
+    else {
+      $validNominalLocales = $validTsLocales = $validFormatLocales
+        = \CRM_Core_I18n::languages(FALSE);
+      // Or stricter? array_fill_keys(\CRM_Core_I18n::uiLanguages(TRUE), TRUE);
+    }
+
+    $locale = new static();
+    $locale->nominal = static::pickFirstLocale(array_keys($validNominalLocales), static::getAllFallbacks($preferred)) ?: $systemDefault;
+    $fallbacks = static::getAllFallbacks($locale->nominal);
+
+    $locale->ts = static::pickFirstLocale(array_keys($validTsLocales), $fallbacks) ?: $systemDefault;
+    $locale->moneyFormat = $locale->nominal;
+    if (!\CRM_Core_I18n::isMultiLingual()) {
+      $locale->db = NULL;
+    }
+    else {
+      $validDbLocales = \Civi::settings()->get('languageLimit');
+      $locale->db = static::pickFirstLocale(array_keys($validDbLocales), $fallbacks) ?: $systemDefault;
+    }
+    return $locale;
+  }
+
+  public static function null(): Locale {
+    return new Locale([
+      'nominal' => NULL,
+      'ts' => NULL,
+      'moneyFormat' => NULL,
+      'db' => \CRM_Core_I18n::isMultiLingual() ? \Civi::settings()->get('lcMessages') : NULL  ,
+    ]);
+  }
+
+  public function __construct(array $params = []) {
+    foreach ($params as $key => $value) {
+      $this->{$key} = $value;
+    }
+  }
+
+  /**
+   * Activate this locale, updating any active PHP services that rely on it.
+   *
+   * @return static
+   */
+  public function apply(): Locale {
+    \CRM_Core_I18n::singleton()->setLocale($this);
+    return $this;
+  }
+
+  /**
+   * Re-negotiate the effective locale.
+   *
+   * This is useful if you are beginning some business-transaction where the business
+   * record has localized resources. For example, a CiviContribute receipt might have
+   * different templates for a handful of locales -- in which case, you should choose
+   * among those locales.
+   *
+   * The current implementation prefers to match the nominal language.
+   *
+   * @param string[] $availableLocales
+   *   List of locales that you know how to serve.
+   *   Ex: ['en_US', 'fr_CA', 'es_MX']
+   * @return \Civi\Core\Locale
+   *   The chosen locale.
+   *   If no good locales could be chosen, then NULL.
+   */
+  public function renegotiate(array $availableLocales): ?Locale {
+    $picked = static::pickFirstLocale($availableLocales, static::getAllFallbacks($this->nominal));
+    return $picked ? static::negotiate($picked) : NULL;
+  }
+
+  /**
+   * (Internal helper) Given a list of available locales and a general preference, pick the best match.
+   *
+   * @param array $availableLocales
+   *   Ex: ['en_US', 'es_MX', 'es_ES', 'fr_CA']
+   * @param array $preferredLocales
+   *   Ex: ['es_PR', 'es_419', 'es_MX', 'es_ES']
+   * @return string|null
+   *   The available locale with the highest preference.
+   *   Ex: 'es_MX'
+   */
+  private static function pickFirstLocale(array $availableLocales, array $preferredLocales): ?string {
+    foreach ($preferredLocales as $locale) {
+      if (in_array($locale, $availableLocales, TRUE)) {
+        return $locale;
+      }
+    }
+    return NULL;
+  }
+
+  /**
+   * @param string|null $preferred
+   *   ex: 'es_PR'
+   * @return array
+   *   Ex: ['es_PR', 'es_419', 'es_MX', 'es_ES', 'en_US', 'en_GB]
+   */
+  private static function getAllFallbacks(?string $preferred): array {
+    return array_merge(
+    // We'd like to stay in the active locale (or something closely related)
+      ($preferred ? static::getLocalePrecedence($preferred) : []),
+      // If we can't, then try the system locale (or something closely related)
+      static::getLocalePrecedence(\Civi::settings()->get('lcMessages'))
+    );
+  }
+
+  /**
+   * (Internal helper) Given a $preferred locale, determine a prioritized list of alternate locales.
+   *
+   * @param string $preferred
+   *   Ex: 'es_PR'
+   * @return string[]
+   *   Ex: ['es_PR', 'es_419', 'es_MX', 'es_ES']
+   */
+  private static function getLocalePrecedence(string $preferred): array {
+    [$lang] = explode('_', $preferred);
+
+    // (Eileen) In this situation we have multiple language options but no exact match.
+    // This might be, for example, a case where we have, for example, a US English and
+    // a British English, but no Kiwi English. In that case the best is arguable
+    // but I think we all agree that we want to avoid Aussie English here.
+    $defaultLanguages = [
+      'de' => ['de_DE'],
+      'en' => ['en_US', 'en_GB', 'en_AU', 'en_NZ'],
+      'fr' => ['fr_FR', 'fr_CA'],
+      'es' => ['es_419', 'es_MX', 'es_ES'],
+      'nl' => ['nl_NL'],
+      'pt' => ['pt_PT', 'pt_BR'],
+      'zh' => ['zh_TW'],
+    ];
+    $fallbacks = $defaultLanguages[$lang] ?? [];
+    array_unshift($fallbacks, $preferred);
+    return $fallbacks;
+  }
+
+}
diff --git a/civicrm/Civi/Core/SettingsMetadata.php b/civicrm/Civi/Core/SettingsMetadata.php
index c91e5b616b96b31e74b0fd065c096b22735bc2c7..00b8f034f0eb9f061a5d3690ca01cf01bb6b19d7 100644
--- a/civicrm/Civi/Core/SettingsMetadata.php
+++ b/civicrm/Civi/Core/SettingsMetadata.php
@@ -61,7 +61,7 @@ class SettingsMetadata {
 
     if (!is_array($settingsMetadata)) {
       global $civicrm_root;
-      $metaDataFolders = [$civicrm_root . '/settings'];
+      $metaDataFolders = [\CRM_Utils_File::addTrailingSlash($civicrm_root) . 'settings'];
       \CRM_Utils_Hook::alterSettingsFolders($metaDataFolders);
       $settingsMetadata = self::loadSettingsMetaDataFolders($metaDataFolders);
       \CRM_Utils_Hook::alterSettingsMetaData($settingsMetadata, $domainID, NULL);
diff --git a/civicrm/Civi/Core/SettingsStack.php b/civicrm/Civi/Core/SettingsStack.php
index 9183857d5cb6a28e433a2f7363ae3774c2c0c344..5c0e64d3010e1c100e5ea4ab85436aafeb563088 100644
--- a/civicrm/Civi/Core/SettingsStack.php
+++ b/civicrm/Civi/Core/SettingsStack.php
@@ -43,7 +43,7 @@ class SettingsStack {
    */
   public function popAll() {
     while ($frame = array_pop($this->stack)) {
-      list($setting, $value) = $frame;
+      [$setting, $value] = $frame;
       if ($value === NULL) {
         unset($GLOBALS['civicrm_setting']['domain'][$setting]);
       }
diff --git a/civicrm/Civi/Crypto/CryptoRegistry.php b/civicrm/Civi/Crypto/CryptoRegistry.php
index 5c6fd958da83b7142c91d2207af531359607fde0..0ae3d1afd20b0ccddc24827ac3d26d38c8bb0e7c 100644
--- a/civicrm/Civi/Crypto/CryptoRegistry.php
+++ b/civicrm/Civi/Crypto/CryptoRegistry.php
@@ -287,7 +287,7 @@ class CryptoRegistry {
    * @throws CryptoException
    */
   public function parseKey($keyExpr) {
-    list($suite, $keyFunc, $keyVal) = explode(':', $keyExpr);
+    [$suite, $keyFunc, $keyVal] = explode(':', $keyExpr);
     if ($suite === '') {
       $suite = self::DEFAULT_SUITE;
     }
diff --git a/civicrm/Civi/Payment/PropertyBag.php b/civicrm/Civi/Payment/PropertyBag.php
index 19cfcd66d996e4a8990beedb7dc7a4450af54ff4..2b39b8474302804c0e47509b447f86b37baea463 100644
--- a/civicrm/Civi/Payment/PropertyBag.php
+++ b/civicrm/Civi/Payment/PropertyBag.php
@@ -43,6 +43,7 @@ class PropertyBag implements \ArrayAccess {
     'billing_state_province'      => 'billingStateProvince',
     'state_province'              => 'billingStateProvince',
     'billingCountry'              => TRUE,
+    'country'                     => 'billingCountry',
     'contactID'                   => TRUE,
     'contact_id'                  => 'contactID',
     'contributionID'              => TRUE,
diff --git a/civicrm/Civi/Test/Api3TestTrait.php b/civicrm/Civi/Test/Api3TestTrait.php
index dafe7e70a63ad275eb59c093ab2f181335f5d8dd..59eb25c063a049e98b821519889167585cae903e 100644
--- a/civicrm/Civi/Test/Api3TestTrait.php
+++ b/civicrm/Civi/Test/Api3TestTrait.php
@@ -639,7 +639,7 @@ trait Api3TestTrait {
     }
 
     // Handle single api call
-    list(, $chainEntity, $chainAction) = explode('.', $key);
+    [, $chainEntity, $chainAction] = explode('.', $key);
     $lcChainEntity = \CRM_Core_DAO_AllCoreTables::convertEntityNameToLower($chainEntity);
     $chainEntity = \CRM_Core_DAO_AllCoreTables::convertEntityNameToCamel($chainEntity);
     $lcMainEntity = \CRM_Core_DAO_AllCoreTables::convertEntityNameToLower($mainEntity);
diff --git a/civicrm/Civi/Test/ExampleData/Contact/Alex.php b/civicrm/Civi/Test/ExampleData/Contact/Alex.php
index ebb2e78296699774c10abc27dc4156fae62805c4..b6f00fdf16aa2b2830c4fad5e090d840031924ac 100644
--- a/civicrm/Civi/Test/ExampleData/Contact/Alex.php
+++ b/civicrm/Civi/Test/ExampleData/Contact/Alex.php
@@ -12,11 +12,17 @@ class Alex extends \Civi\Test\EntityExample {
 
   public function build(array &$example): void {
     $example['data'] = [
-      'contact_id' => '100',
+      'id' => '100',
+      'first_name' => 'Alex',
+      'middle_name' => '',
+      'last_name' => 'D\u00edaz',
       'contact_type' => 'Individual',
       'contact_sub_type' => NULL,
       'sort_name' => 'D\u00edaz, Alex',
       'display_name' => 'Dr. Alex D\u00edaz',
+      'prefix_id:label' => 'Dr.',
+      'gender_id:label' => 'Female',
+      'email_greeting_display' => 'Dear Alex',
       'do_not_email' => '1',
       'do_not_phone' => '1',
       'do_not_mail' => '0',
@@ -30,16 +36,9 @@ class Alex extends \Civi\Test\EntityExample {
       'image_URL' => NULL,
       'preferred_communication_method' => NULL,
       'preferred_language' => NULL,
-      'preferred_mail_format' => 'Both',
-      'first_name' => 'Alex',
-      'middle_name' => '',
-      'last_name' => 'D\u00edaz',
-      'prefix_id' => '4',
-      'suffix_id' => NULL,
       'formal_title' => NULL,
       'communication_style_id' => NULL,
       'job_title' => NULL,
-      'gender_id' => '1',
       'birth_date' => '1994-04-21',
       'is_deceased' => '0',
       'deceased_date' => NULL,
@@ -56,8 +55,6 @@ class Alex extends \Civi\Test\EntityExample {
       'city' => NULL,
       'postal_code_suffix' => NULL,
       'postal_code' => NULL,
-      'geo_code_1' => NULL,
-      'geo_code_2' => NULL,
       'state_province_id' => NULL,
       'country_id' => NULL,
       'phone_id' => '7',
@@ -65,17 +62,11 @@ class Alex extends \Civi\Test\EntityExample {
       'phone' => '293-6934',
       'email_id' => '7',
       'email' => 'daz.alex67@testing.net',
-      'on_hold' => '0',
       'im_id' => NULL,
       'provider_id' => NULL,
       'im' => NULL,
       'worldregion_id' => NULL,
       'world_region' => NULL,
-      'languages' => NULL,
-      'individual_prefix' => 'Dr.',
-      'individual_suffix' => NULL,
-      'communication_style' => NULL,
-      'gender' => 'Female',
       'state_province_name' => NULL,
       'state_province' => NULL,
       'country' => NULL,
diff --git a/civicrm/Civi/Test/HttpTestTrait.php b/civicrm/Civi/Test/HttpTestTrait.php
index 0f6637a58c116422d8de3d260736a64fad377e5a..e3384ecbec2a3d763a84710695ed95aaf4705a3a 100644
--- a/civicrm/Civi/Test/HttpTestTrait.php
+++ b/civicrm/Civi/Test/HttpTestTrait.php
@@ -139,7 +139,7 @@ trait HttpTestTrait {
    */
   protected function assertContentType($expectType, $response = NULL) {
     $response = $this->resolveResponse($response);
-    list($actualType) = explode(';', $response->getHeader('Content-Type')[0]);
+    [$actualType] = explode(';', $response->getHeader('Content-Type')[0]);
     $fmt = $actualType === $expectType ? '' : $this->formatFailure($response);
     $this->assertEquals($expectType, $actualType, "Expected content-type $expectType. Received content-type $actualType.\n$fmt");
     return $this;
diff --git a/civicrm/Civi/Test/LocaleTestTrait.php b/civicrm/Civi/Test/LocaleTestTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..9f5cbdb30ca925edcc2756ac3bad906a798239f6
--- /dev/null
+++ b/civicrm/Civi/Test/LocaleTestTrait.php
@@ -0,0 +1,93 @@
+<?php
+
+namespace Civi\Test;
+
+/**
+ * Define helpers for testing multiple locales.
+ *
+ * Ex: Multilingual test with try/finally
+ *   try {
+ *     $this->enableMultilingual(['en_US' => 'fr_CA']);
+ *     $this->assert(...);
+ *   } finally {
+ *     $this->disbleMultilingual();
+ *   }
+ *
+ * Ex: Multilingual with auto-clean
+ *   $cleanup = $this->useMultilingual(['en_US' => 'fr_CA']);
+ */
+trait LocaleTestTrait {
+
+  /**
+   * Get the default system locale.
+   *
+   * @return string
+   */
+  protected function getDefaultSystemLocale(): string {
+    return 'en_US';
+  }
+
+  /**
+   * Temporarily use multilingual.
+   *
+   * @param array $addLocales
+   *   A list of new locales to setup.
+   *   A locale is initialized by copying from an existing locale.
+   *
+   *   Ex: Copy from en_US to fr_CA
+   *       ['en_US' => 'fr_CA']
+   *   Ex: Copy from en_US to fr_CA and de_DE
+   *       ['en_US' => ['fr_CA', 'de_DE]]
+   * @return \CRM_Utils_AutoClean
+   *   A reference to the temporary configuration. Once removed, the system will revert to single language.
+   */
+  public function useMultilingual(array $addLocales): \CRM_Utils_AutoClean {
+    $this->enableMultilingual($addLocales);
+    return \CRM_Utils_AutoClean::with([$this, 'disableMultilingual']);
+  }
+
+  /**
+   * Enable multilingual.
+   *
+   * @param array|null $addLocales
+   *   A list of new locales to setup.
+   *   A locale is initialized by copying from an existing locale.
+   *
+   *   Ex: Copy from en_US to fr_CA
+   *       ['en_US' => 'fr_CA']
+   *   Ex: Copy from en_US to fr_CA and de_DE
+   *       ['en_US' => ['fr_CA', 'de_DE]]
+   */
+  public function enableMultilingual(?array $addLocales = NULL): void {
+    $this->callAPISuccess('Setting', 'create', [
+      'lcMessages' => $this->getDefaultSystemLocale(),
+      'languageLimit' => [
+        $this->getDefaultSystemLocale() => 1,
+      ],
+    ]);
+
+    \CRM_Core_I18n_Schema::makeMultilingual($this->getDefaultSystemLocale());
+
+    global $dbLocale;
+    $dbLocale = '_' . $this->getDefaultSystemLocale();
+
+    if ($addLocales !== NULL) {
+      $languageLimit = \Civi::settings()->get('languageLimit');
+      foreach ($addLocales as $fromLocale => $toLocales) {
+        foreach ((array) $toLocales as $toLocale) {
+          \CRM_Core_I18n_Schema::addLocale($toLocale, $fromLocale);
+          $languageLimit[$toLocale] = '1';
+        }
+      }
+      \Civi::settings()->set('languageLimit', $languageLimit);
+    }
+  }
+
+  public function disableMultilingual(): void {
+    \CRM_Core_I18n::singleton()->setLocale($this->getDefaultSystemLocale());
+    \CRM_Core_I18n_Schema::makeSinglelingual($this->getDefaultSystemLocale());
+    \Civi::settings()->revert('languageLimit');
+    \Civi::$statics['CRM_Core_I18n']['singleton'] = [];
+  }
+
+}
diff --git a/civicrm/Civi/Test/QueueTestTrait.php b/civicrm/Civi/Test/QueueTestTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..6b0290e4f7d1f1be4cea4ba9559871dc502722d6
--- /dev/null
+++ b/civicrm/Civi/Test/QueueTestTrait.php
@@ -0,0 +1,20 @@
+<?php
+
+namespace Civi\Test;
+
+/**
+ * Helper functions for testing queues.
+ */
+trait QueueTestTrait {
+
+  protected function assertQueueStats(int $total, int $ready, int $blocked, \CRM_Queue_Queue $queue) {
+    $format = 'total=%d ready=%d blocked=%d';
+    $expect = [$total, $ready, $blocked];
+    $actual = [$queue->getStatistic('total'), $queue->getStatistic('ready'), $queue->getStatistic('blocked')];
+    $this->assertEquals(sprintf($format, ...$expect), sprintf($format, ...$actual));
+
+    // Deprecated - but checking for continuity.
+    $this->assertEquals($total, $queue->numberOfItems());
+  }
+
+}
diff --git a/civicrm/ang/crmAttachment.js b/civicrm/ang/crmAttachment.js
index 16bb212553c6e1bb6b038984b15f75fc7e479213..ef104f4154ecb4bc01558602b0a99b99873246ad 100644
--- a/civicrm/ang/crmAttachment.js
+++ b/civicrm/ang/crmAttachment.js
@@ -156,11 +156,7 @@
         var model = $parse(attr.crmAttachments);
         scope.att = model(scope.$parent);
         scope.ts = CRM.ts(null);
-        CRM.api4('Setting', 'get', {
-          select: ["maxFileSize"]
-        }).then(function(settings) {
-          scope.max_size = settings[0].value;
-        });
+        scope.max_size = CRM.crmAttachment.maxFileSize;
         scope.inclUrl = '~/crmAttachment/attachments.html';
 
         // delay rendering of child tree until after model has been populated
diff --git a/civicrm/ang/crmMailing/EditRecipCtrl.js b/civicrm/ang/crmMailing/EditRecipCtrl.js
index 9fca637a73d8be3edf87b04e009f1487de97bffb..304b56959eaf130b4acff76c0c37dc13d79ebe33 100644
--- a/civicrm/ang/crmMailing/EditRecipCtrl.js
+++ b/civicrm/ang/crmMailing/EditRecipCtrl.js
@@ -73,9 +73,7 @@
     // refresh setting at a duration on 5sec
     var refreshSetting = _.debounce(function() {
       $scope.$apply(function() {
-        crmApi('Setting', 'getvalue', {"name": 'auto_recipient_rebuild', "return": "value"}).then(function(response) {
-          $scope.permitRecipientRebuild = (response.result === 0);
-        });
+        $scope.permitRecipientRebuild = !$scope.$parent.crmMailingConst.autoRecipientRebuild;
       });
     }, SETTING_DEBOUNCE_MS);
     $scope.$watchCollection("permitRecipientRebuild", refreshSetting);
diff --git a/civicrm/ang/crmUi.js b/civicrm/ang/crmUi.js
index cd59407bd268d45dee6b3b595959103f7c1d8ab6..b9ee8a086ec3e48e052a14f742df9e40199f3bcd 100644
--- a/civicrm/ang/crmUi.js
+++ b/civicrm/ang/crmUi.js
@@ -711,6 +711,32 @@
       };
     })
 
+    // Render a crmAutocomplete APIv4 widget
+    // usage: <input crm-autocomplete="'Contact'" crm-autocomplete-params={savedSearch: 'mySearch', filters: {is_deceased: false}}" ng-model="myobj.field" />
+    .directive('crmAutocomplete', function () {
+      return {
+        require: {
+          ngModel: '?ngModel'
+        },
+        bindToController: {
+          crmAutocomplete: '<',
+          crmAutocompleteParams: '<'
+        },
+        controller: function($element, $timeout) {
+          var ctrl = this;
+          $timeout(function() {
+            $element.crmAutocomplete(ctrl.crmAutocomplete, ctrl.crmAutocompleteParams);
+            // Ensure widget is updated when model changes
+            if (ctrl.ngModel) {
+              ctrl.ngModel.$render = function() {
+                $element.val(ctrl.ngModel.$viewValue || '').change();
+              };
+            }
+          });
+        }
+      };
+    })
+
     // validate multiple email text
     // usage: <input crm-multiple-email type="text" ng-model="myobj.field" />
     .directive('crmMultipleEmail', function ($parse, $timeout) {
diff --git a/civicrm/api/v3/Activity.php b/civicrm/api/v3/Activity.php
index 275105a5038f3ab451c9a40e06f1603528df8ad7..878304bac48d123673a5fd40b720f34bed736acc 100644
--- a/civicrm/api/v3/Activity.php
+++ b/civicrm/api/v3/Activity.php
@@ -63,76 +63,15 @@ function civicrm_api3_activity_create($params) {
   // needs testing
   $params['skipRecentView'] = TRUE;
 
-  // If this is a case activity, see if there is an existing activity
-  // and set it as an old revision. Also retrieve details we'll need.
-  // this handling should all be moved to the BAO layer
-  $case_id = '';
-  $createRevision = FALSE;
-  $oldActivityValues = [];
-  // Lookup case id if not supplied
-  if (!isset($params['case_id']) && !empty($params['id'])) {
-    $params['case_id'] = CRM_Core_DAO::singleValueQuery("SELECT case_id FROM civicrm_case_activity WHERE activity_id = " . (int) $params['id']);
-  }
-  if (!empty($params['case_id'])) {
-    $case_id = $params['case_id'];
-    if (!empty($params['id']) && Civi::settings()->get('civicaseActivityRevisions')) {
-      $oldActivityParams = ['id' => $params['id']];
-      if (!$oldActivityValues) {
-        CRM_Activity_BAO_Activity::retrieve($oldActivityParams, $oldActivityValues);
-      }
-      if (empty($oldActivityValues)) {
-        throw new API_Exception(ts("Unable to locate existing activity."));
-      }
-      else {
-        $activityDAO = new CRM_Activity_DAO_Activity();
-        $activityDAO->id = $params['id'];
-        $activityDAO->is_current_revision = 0;
-        if (!$activityDAO->save()) {
-          throw new API_Exception(ts("Unable to revision existing case activity."));
-        }
-        $createRevision = TRUE;
-      }
-    }
-  }
-
-  if ($case_id && $createRevision) {
-    // This is very similar to the copy-to-case action.
-    if (!CRM_Utils_Array::crmIsEmptyArray($oldActivityValues['target_contact'])) {
-      $oldActivityValues['targetContactIds'] = implode(',', array_unique($oldActivityValues['target_contact']));
-    }
-    if (!CRM_Utils_Array::crmIsEmptyArray($oldActivityValues['assignee_contact'])) {
-      $oldActivityValues['assigneeContactIds'] = implode(',', array_unique($oldActivityValues['assignee_contact']));
-    }
-    $oldActivityValues['mode'] = 'copy';
-    $oldActivityValues['caseID'] = $case_id;
-    $oldActivityValues['activityID'] = $oldActivityValues['id'];
-    $oldActivityValues['contactID'] = $oldActivityValues['source_contact_id'];
-
-    $copyToCase = CRM_Activity_Page_AJAX::_convertToCaseActivity($oldActivityValues);
-    if (empty($copyToCase['error_msg'])) {
-      // now fix some things that are different from copy-to-case
-      // then fall through to the create below to update with the passed in params
-      $params['id'] = $copyToCase['newId'];
-      $params['is_auto'] = 0;
-      $params['original_id'] = empty($oldActivityValues['original_id']) ? $oldActivityValues['id'] : $oldActivityValues['original_id'];
-    }
-    else {
-      throw new API_Exception(ts("Unable to create new revision of case activity."));
-    }
+  // In APIv3, only new activities can be filed on a case.
+  if (!$isNew && isset($params['case_id'])) {
+    unset($params['case_id']);
   }
 
   // create activity
   $activityBAO = CRM_Activity_BAO_Activity::create($params);
 
   if (isset($activityBAO->id)) {
-    if ($case_id && $isNew && !$createRevision) {
-      // If this is a brand new case activity, add to case(s)
-      foreach ((array) $case_id as $singleCaseId) {
-        $caseActivityParams = ['activity_id' => $activityBAO->id, 'case_id' => $singleCaseId];
-        CRM_Case_BAO_Case::processCaseActivity($caseActivityParams);
-      }
-    }
-
     _civicrm_api3_object_to_array($activityBAO, $activityArray[$activityBAO->id]);
     return civicrm_api3_create_success($activityArray, $params, 'Activity', 'get', $activityBAO);
   }
diff --git a/civicrm/api/v3/Generic.php b/civicrm/api/v3/Generic.php
index ce0740035a977ab9c791bfe873ba31dcec4c2279..429ee56acdbc4dd614a037e742cd5885c7f2b853 100644
--- a/civicrm/api/v3/Generic.php
+++ b/civicrm/api/v3/Generic.php
@@ -374,7 +374,7 @@ function civicrm_api3_generic_getrefcount($apiRequest) {
   }
   $daoClass = $entityToClassMap[$apiRequest['entity']];
 
-  /* @var $dao CRM_Core_DAO */
+  /** @var CRM_Core_DAO $dao */
   $dao = new $daoClass();
   $dao->id = $apiRequest['params']['id'];
   if ($dao->find(TRUE)) {
diff --git a/civicrm/api/v3/Group.php b/civicrm/api/v3/Group.php
index a963122f739fee2f3ca61d04c5cb0a679d7167c3..6ebd4ded372c2cd47023c96be7885b6d50bb2889 100644
--- a/civicrm/api/v3/Group.php
+++ b/civicrm/api/v3/Group.php
@@ -63,9 +63,6 @@ function civicrm_api3_group_get($params) {
 
   $groups = _civicrm_api3_basic_get(_civicrm_api3_get_BAO(__FUNCTION__), $params, FALSE, 'Group');
   foreach ($groups as $id => $group) {
-    if (!empty($params['check_permissions']) && !CRM_Contact_BAO_Group::checkPermission($group['id'])) {
-      unset($groups[$id]);
-    }
     if (!empty($options['return']) && in_array('member_count', $options['return'])) {
       $groups[$id]['member_count'] = CRM_Contact_BAO_Group::memberCount($id);
     }
diff --git a/civicrm/api/v3/MessageTemplate.php b/civicrm/api/v3/MessageTemplate.php
index b75e43df5b32a01d141d806275e8694303eb85e0..40a7a559086d0946d3e620e0ea990895425b0e6c 100644
--- a/civicrm/api/v3/MessageTemplate.php
+++ b/civicrm/api/v3/MessageTemplate.php
@@ -93,18 +93,27 @@ function civicrm_api3_message_template_send($params) {
   _civicrm_api3_message_template_send_spec($fieldSpec);
 
   foreach ($fieldSpec as $field => $spec) {
-    if (isset($spec['api.aliases']) && array_key_exists($field, $params)) {
+    // There is some dark magic going on here.
+    // The point of the 'api.aliases' metadata is generally
+    // to ensure that old params can be passed in and they still work.
+    // However, in this case the api params don't match the BAO
+    // params so the names that have been determined as
+    // 'right' for the api are being transformed into
+    // the 'wrong' BAO ones. It works, it's tested &
+    // we can do better in apiv4 once we get a suitable
+    // api there.
+    if ($spec['name'] !== 'workflow' && isset($spec['api.aliases']) && array_key_exists($field, $params)) {
       $params[CRM_Utils_Array::first($spec['api.aliases'])] = $params[$field];
       unset($params[$field]);
     }
   }
   if (empty($params['messageTemplateID'])) {
-    if (empty($params['valueName'])) {
+    if (empty($params['workflow'])) {
       // Can't use civicrm_api3_verify_mandatory for this because it would give the wrong field names
       throw new API_Exception(
-        'Mandatory key(s) missing from params array: requires id or option_value_name',
+        'Mandatory key(s) missing from params array: requires id or workflow',
         'mandatory_missing',
-        ['fields' => ['id', 'option_value_name']]
+        ['fields' => ['id', 'workflow']]
       );
     }
   }
@@ -126,10 +135,11 @@ function _civicrm_api3_message_template_send_spec(&$params) {
   $params['id']['api.aliases'] = ['messageTemplateID', 'message_template_id'];
   $params['id']['type'] = CRM_Utils_Type::T_INT;
 
-  $params['option_value_name']['description'] = 'option value name of the template (required if no id supplied)';
-  $params['option_value_name']['title'] = 'Option Value Name';
-  $params['option_value_name']['api.aliases'] = ['valueName'];
-  $params['option_value_name']['type'] = CRM_Utils_Type::T_STRING;
+  $params['workflow']['description'] = 'option value name of the template (required if no id supplied)';
+  $params['workflow']['title'] = ts('Workflow');
+  $params['workflow']['api.aliases'] = ['option_value_name', 'valueName'];
+  $params['workflow']['type'] = CRM_Utils_Type::T_STRING;
+  $params['workflow']['name'] = 'workflow';
 
   $params['contact_id']['description'] = 'contact id if contact tokens are to be replaced';
   $params['contact_id']['title'] = 'Contact ID';
diff --git a/civicrm/api/v3/PaymentProcessor.php b/civicrm/api/v3/PaymentProcessor.php
index 803f38dce4e4509854108d6b1801f562c4e33e21..ba98d4fa713fe34cd26914c3aa3d9c2ad52039e4 100644
--- a/civicrm/api/v3/PaymentProcessor.php
+++ b/civicrm/api/v3/PaymentProcessor.php
@@ -111,7 +111,6 @@ function _civicrm_api3_payment_processor_getlist_defaults(&$request) {
  * @throws \CiviCRM_API3_Exception
  */
 function civicrm_api3_payment_processor_pay($params) {
-  /* @var CRM_Core_Payment $processor */
   $processor = Civi\Payment\System::singleton()->getById($params['payment_processor_id']);
   $processor->setPaymentProcessor(civicrm_api3('PaymentProcessor', 'getsingle', ['id' => $params['payment_processor_id']]));
   try {
diff --git a/civicrm/api/v3/ReportTemplate.php b/civicrm/api/v3/ReportTemplate.php
index 2b96179265d1c7561a6c60e8b3fd2a4267d5bba8..60b1068b19837694d8d2d48057e05648f3bcab87 100644
--- a/civicrm/api/v3/ReportTemplate.php
+++ b/civicrm/api/v3/ReportTemplate.php
@@ -129,7 +129,7 @@ function _civicrm_api3_report_template_getrows($params) {
   ]
   );
 
-  /* @var \CRM_Report_Form $reportInstance */
+  /** @var \CRM_Report_Form $reportInstance */
   $reportInstance = new $class();
   if (!empty($params['instance_id'])) {
     $reportInstance->setID($params['instance_id']);
diff --git a/civicrm/api/v3/RuleGroup.php b/civicrm/api/v3/RuleGroup.php
index fe40d28ae0df00848088fb1dacefe3a721a96be4..7edbcd33ce976a43d75ab6dca2d5d159b45cb89b 100644
--- a/civicrm/api/v3/RuleGroup.php
+++ b/civicrm/api/v3/RuleGroup.php
@@ -27,6 +27,7 @@
  *   API result array
  */
 function civicrm_api3_rule_group_create($params) {
+  civicrm_api3_verify_one_mandatory($params, NULL, ['title', 'name']);
   return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'DedupeRuleGroup');
 }
 
@@ -42,7 +43,6 @@ function _civicrm_api3_rule_group_create_spec(&$params) {
   $params['contact_type']['api.required'] = TRUE;
   $params['threshold']['api.required'] = TRUE;
   $params['used']['api.required'] = TRUE;
-  $params['name']['api.required'] = TRUE;
 }
 
 /**
diff --git a/civicrm/api/v3/examples/Setting/GetFields.ex.php b/civicrm/api/v3/examples/Setting/GetFields.ex.php
index e48cac75aa6056867f6c5a73d231f636e0a5aa78..2765ad7ac76b5a855beae2e87d2c429594e205b3 100644
--- a/civicrm/api/v3/examples/Setting/GetFields.ex.php
+++ b/civicrm/api/v3/examples/Setting/GetFields.ex.php
@@ -199,21 +199,6 @@ function setting_getfields_expectedresult() {
         'description' => 'How to sort activity-types on the \"Manage Case\" screen? (Set \"Default\" to load setting from the legacy \"Settings.xml\" file.)',
         'help_text' => '',
       ],
-      'civicaseActivityRevisions' => [
-        'group_name' => 'CiviCRM Preferences',
-        'group' => 'core',
-        'name' => 'civicaseActivityRevisions',
-        'type' => 'Boolean',
-        'quick_form_type' => 'YesNo',
-        'default' => '',
-        'html_type' => 'radio',
-        'add' => '4.7',
-        'title' => 'Enable deprecated Embedded Activity Revisions',
-        'is_domain' => 1,
-        'is_contact' => 0,
-        'description' => 'Enable tracking of activity revisions embedded within the \"civicrm_activity\" table. This should not be enabled on new installs and will be unsupported in the future. You should enable \"Administer => System Settings => Misc => Logging\" instead.',
-        'help_text' => '',
-      ],
       'civicaseShowCaseActivities' => [
         'group_name' => 'CiviCRM Preferences',
         'group' => 'core',
diff --git a/civicrm/api/v3/utils.php b/civicrm/api/v3/utils.php
index 53fa5e03994912d798a6abf5890314d02d10f271..4e650695db3370606cf0ed840896e04966cf6224 100644
--- a/civicrm/api/v3/utils.php
+++ b/civicrm/api/v3/utils.php
@@ -1774,7 +1774,7 @@ function _civicrm_api3_validate_constraint($fieldValue, $fieldName, $fieldInfo,
   $fieldInfo = [$fieldName => $fieldInfo];
   $params = [$fieldName => $fieldValue];
   _civicrm_api3_validate_fields($entity, NULL, $params, $fieldInfo);
-  /* @var CRM_Core_DAO $dao*/
+  /** @var CRM_Core_DAO $dao */
   $dao = new $daoName();
   $dao->id = $params[$fieldName];
   $dao->selectAdd();
diff --git a/civicrm/bin/regen.sh b/civicrm/bin/regen.sh
index d50c444a232c3405b65e9c34e0232de361150958..57309fe1043640aff20d43e2e264b27bdd505ac0 100755
--- a/civicrm/bin/regen.sh
+++ b/civicrm/bin/regen.sh
@@ -47,7 +47,7 @@ php GenerateData.php
 
 ## Prune local data
 $MYSQLCMD -e "DROP TABLE IF EXISTS civicrm_install_canary; DELETE FROM civicrm_cache; DELETE FROM civicrm_setting;"
-$MYSQLCMD -e "DELETE FROM civicrm_extension WHERE full_name NOT IN ('sequentialcreditnotes', 'eventcart', 'greenwich', 'search', 'org.civicrm.flexmailer', 'financialacls', 'contributioncancelactions', 'recaptcha', 'ckeditor4', 'legacycustomsearches');"
+$MYSQLCMD -e "DELETE FROM civicrm_extension WHERE full_name NOT IN ('sequentialcreditnotes', 'eventcart', 'greenwich', 'search', 'org.civicrm.flexmailer', 'financialacls', 'contributioncancelactions', 'recaptcha', 'ckeditor4', 'legacycustomsearches', 'civiimport');"
 TABLENAMES=$( echo "show tables like 'civicrm_%'" | $MYSQLCMD | grep ^civicrm_ | xargs )
 
 cd $CIVISOURCEDIR/sql
diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php
index b8cd14bddce5a146a42aa93abe5ee67e76d30d9d..441b2b8e668e965bf37a7c715f4fbaf69d9bd3fd 100644
--- a/civicrm/civicrm-version.php
+++ b/civicrm/civicrm-version.php
@@ -1,7 +1,7 @@
 <?php
 /** @deprecated */
 function civicrmVersion( ) {
-  return array( 'version'  => '5.53.0',
+  return array( 'version'  => '5.54.0',
                 'cms'      => 'Wordpress',
                 'revision' => '' );
 }
diff --git a/civicrm/composer.json b/civicrm/composer.json
index 71f8f71e3746e3e50603cbca294658552ed88569..c2eeb630d7a0f34f8c4cc29ab17d91cf603660bf 100644
--- a/civicrm/composer.json
+++ b/civicrm/composer.json
@@ -53,7 +53,7 @@
     "php": "~7.2.5 || ~7.3 || ~8",
     "composer-runtime-api": "~2.0",
     "cache/integration-tests": "~0.17.0",
-    "dompdf/dompdf" : "~2",
+    "dompdf/dompdf" : "~2.0.1",
     "firebase/php-jwt": ">=3 <6",
     "rubobaquero/phpquery": "^0.9.15",
     "symfony/config": "~4.4",
@@ -69,7 +69,7 @@
     "tecnickcom/tcpdf" : "6.4.*",
     "totten/ca-config": "~22.05",
     "zetacomponents/base": "1.9.*",
-    "zetacomponents/mail": "~1.9.3",
+    "zetacomponents/mail": "~1.9.4",
     "marcj/topsort": "~1.1",
     "phpoffice/phpword": "^0.18.0",
     "pear/validate_finance_creditcard": "0.7.0",
diff --git a/civicrm/composer.lock b/civicrm/composer.lock
index 1bd4b84bb85fa69ecd39f56fc7111f3d561a7666..d0048cbd6469d6216131b64cc8d2463058b51577 100644
--- a/civicrm/composer.lock
+++ b/civicrm/composer.lock
@@ -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": "dabb3c7d59caccf8b70e618133cea611",
+    "content-hash": "3111ffc7dadaf54de6e97cc171d95c39",
     "packages": [
         {
             "name": "adrienrn/php-mimetyper",
@@ -612,24 +612,24 @@
         },
         {
             "name": "dompdf/dompdf",
-            "version": "v2.0.0",
+            "version": "v2.0.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/dompdf/dompdf.git",
-                "reference": "79573d8b8a141ec8a17312515de8740eed014fa9"
+                "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/dompdf/dompdf/zipball/79573d8b8a141ec8a17312515de8740eed014fa9",
-                "reference": "79573d8b8a141ec8a17312515de8740eed014fa9",
+                "url": "https://api.github.com/repos/dompdf/dompdf/zipball/c5310df0e22c758c85ea5288175fc6cd777bc085",
+                "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-mbstring": "*",
                 "masterminds/html5": "^2.0",
-                "phenx/php-font-lib": "^0.5.4",
-                "phenx/php-svg-lib": "^0.3.3 || ^0.4.0",
+                "phenx/php-font-lib": ">=0.5.4 <1.0.0",
+                "phenx/php-svg-lib": ">=0.3.3 <1.0.0",
                 "php": "^7.1 || ^8.0"
             },
             "require-dev": {
@@ -660,25 +660,17 @@
             ],
             "authors": [
                 {
-                    "name": "Fabien Ménager",
-                    "email": "fabien.menager@gmail.com"
-                },
-                {
-                    "name": "Brian Sweeney",
-                    "email": "eclecticgeek@gmail.com"
-                },
-                {
-                    "name": "Gabriel Bull",
-                    "email": "me@gabrielbull.com"
+                    "name": "The Dompdf Community",
+                    "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md"
                 }
             ],
             "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
             "homepage": "https://github.com/dompdf/dompdf",
             "support": {
                 "issues": "https://github.com/dompdf/dompdf/issues",
-                "source": "https://github.com/dompdf/dompdf/tree/v2.0.0"
+                "source": "https://github.com/dompdf/dompdf/tree/v2.0.1"
             },
-            "time": "2022-06-21T21:14:57+00:00"
+            "time": "2022-09-22T13:43:41+00:00"
         },
         {
             "name": "ezyang/htmlpurifier",
@@ -5630,16 +5622,16 @@
         },
         {
             "name": "zetacomponents/mail",
-            "version": "1.9.3",
+            "version": "1.9.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/zetacomponents/Mail.git",
-                "reference": "7f7cf8135320fabf27f6530381da4977a31e1c78"
+                "reference": "83ba646f36f753c0bbc8b2189c88d41ece326ea0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/zetacomponents/Mail/zipball/7f7cf8135320fabf27f6530381da4977a31e1c78",
-                "reference": "7f7cf8135320fabf27f6530381da4977a31e1c78",
+                "url": "https://api.github.com/repos/zetacomponents/Mail/zipball/83ba646f36f753c0bbc8b2189c88d41ece326ea0",
+                "reference": "83ba646f36f753c0bbc8b2189c88d41ece326ea0",
                 "shasum": ""
             },
             "require": {
@@ -5704,9 +5696,9 @@
             "homepage": "https://github.com/zetacomponents",
             "support": {
                 "issues": "https://github.com/zetacomponents/Mail/issues",
-                "source": "https://github.com/zetacomponents/Mail/tree/1.9.3"
+                "source": "https://github.com/zetacomponents/Mail/tree/1.9.4"
             },
-            "time": "2022-08-09T09:42:33+00:00"
+            "time": "2022-09-14T10:13:21+00:00"
         }
     ],
     "packages-dev": [],
diff --git a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php
index a0f4b9061c053bd878f969d616c54e49e56a208b..4b16828c3ebcfd52efa1ba8790788b16adb7732e 100644
--- a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php
+++ b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php
@@ -123,8 +123,14 @@ class AfformAdminMeta {
     }
     // Index by name
     $fields = array_column($fields, NULL, 'name');
-    // Mix in alterations declared by afform entities
     if ($params['action'] === 'create') {
+      // Add existing entity field
+      $idField = CoreUtil::getIdFieldName($entityName);
+      $fields[$idField]['readonly'] = FALSE;
+      $fields[$idField]['input_type'] = 'Existing';
+      $fields[$idField]['is_id'] = TRUE;
+      $fields[$idField]['label'] = E::ts('Existing %1', [1 => CoreUtil::getInfoItem($entityName, 'title')]);
+      // Mix in alterations declared by afform entities
       $afEntity = self::getMetadata()['entities'][$entityName] ?? [];
       if (!empty($afEntity['alterFields'])) {
         foreach ($afEntity['alterFields'] as $fieldName => $changes) {
diff --git a/civicrm/ext/afform/admin/Civi/Api4/Action/Afform/LoadAdminData.php b/civicrm/ext/afform/admin/Civi/Api4/Action/Afform/LoadAdminData.php
index db70363cdce744b6be979f8edce3785bae2e62aa..9ee74c6585bbd216b51f88487bebc340c29805bb 100644
--- a/civicrm/ext/afform/admin/Civi/Api4/Action/Afform/LoadAdminData.php
+++ b/civicrm/ext/afform/admin/Civi/Api4/Action/Afform/LoadAdminData.php
@@ -5,7 +5,6 @@ namespace Civi\Api4\Action\Afform;
 use Civi\AfformAdmin\AfformAdminMeta;
 use Civi\Api4\Afform;
 use Civi\Api4\Utils\CoreUtil;
-use Civi\Api4\Query\SqlExpression;
 
 /**
  * This action is used by the Afform Admin extension to load metadata for the Admin GUI.
@@ -186,7 +185,10 @@ class LoadAdminData extends \Civi\Api4\Generic\AbstractAction {
         $display = $displayGet
           ->addSelect('*', 'type:name', 'type:icon', 'saved_search_id.name', 'saved_search_id.label', 'saved_search_id.api_entity', 'saved_search_id.api_params')
           ->execute()->first();
-        $display['calc_fields'] = $this->getCalcFields($display['saved_search_id.api_entity'], $display['saved_search_id.api_params']);
+        if (!$display) {
+          continue;
+        }
+        $display['calc_fields'] = \Civi\Search\Meta::getCalcFields($display['saved_search_id.api_entity'], $display['saved_search_id.api_params']);
         $display['filters'] = empty($displayTag['filters']) ? NULL : (\CRM_Utils_JS::getRawProps($displayTag['filters']) ?: NULL);
         $info['search_displays'][] = $display;
         if ($newForm) {
@@ -195,11 +197,18 @@ class LoadAdminData extends \Civi\Api4\Generic\AbstractAction {
         $entities[] = $display['saved_search_id.api_entity'];
         foreach ($display['saved_search_id.api_params']['join'] ?? [] as $join) {
           $entities[] = explode(' AS ', $join[0])[0];
+          // Add bridge entities (but only if they are tagged searchable e.g. RelationshipCache)
+          if (is_string($join[2] ?? NULL) &&
+            in_array(CoreUtil::getInfoItem($join[2], 'searchable'), ['primary', 'secondary'])
+          ) {
+            $entities[] = $join[2];
+          }
         }
       }
       if (!$newForm) {
         $scanBlocks($info['definition']['layout']);
       }
+      $entities = array_unique($entities);
       $this->loadAvailableBlocks($entities, $info, [['join_entity', 'IS NULL']]);
     }
 
@@ -257,51 +266,6 @@ class LoadAdminData extends \Civi\Api4\Generic\AbstractAction {
     }
   }
 
-  /**
-   * @param string $apiEntity
-   * @param array $apiParams
-   * @return array
-   */
-  private function getCalcFields($apiEntity, $apiParams) {
-    $calcFields = [];
-    $api = \Civi\API\Request::create($apiEntity, 'get', $apiParams);
-    $selectQuery = new \Civi\Api4\Query\Api4SelectQuery($api);
-    $joinMap = $joinCount = [];
-    foreach ($apiParams['join'] ?? [] as $join) {
-      [$entityName, $alias] = explode(' AS ', $join[0]);
-      $num = '';
-      if (!empty($joinCount[$entityName])) {
-        $num = ' ' . (++$joinCount[$entityName]);
-      }
-      else {
-        $joinCount[$entityName] = 1;
-      }
-      $label = CoreUtil::getInfoItem($entityName, 'title');
-      $joinMap[$alias] = $label . $num;
-    }
-
-    foreach ($apiParams['select'] ?? [] as $select) {
-      if (strstr($select, ' AS ')) {
-        $expr = SqlExpression::convert($select, TRUE);
-        $label = $expr::getTitle();
-        foreach ($expr->getFields() as $num => $fieldName) {
-          $field = $selectQuery->getField($fieldName);
-          $joinName = explode('.', $fieldName)[0];
-          $label .= ($num ? ', ' : ': ') . (isset($joinMap[$joinName]) ? $joinMap[$joinName] . ' ' : '') . $field['title'];
-        }
-        $calcFields[] = [
-          '#tag' => 'af-field',
-          'name' => $expr->getAlias(),
-          'defn' => [
-            'label' => $label,
-            'input_type' => 'Text',
-          ],
-        ];
-      }
-    }
-    return $calcFields;
-  }
-
   /**
    * @return array[]
    */
diff --git a/civicrm/ext/afform/admin/afformEntities/Case.php b/civicrm/ext/afform/admin/afformEntities/Case.php
new file mode 100644
index 0000000000000000000000000000000000000000..54daddc89c8b22072892282898ba3e4dd03c41ec
--- /dev/null
+++ b/civicrm/ext/afform/admin/afformEntities/Case.php
@@ -0,0 +1,18 @@
+<?php
+$multiClient = \Civi::settings()->get('civicaseAllowMultipleClients');
+// Format contact_id as an array if multivalued
+$default = $multiClient ? "['user_contact_id']" : "'user_contact_id'";
+// phpcs:disable
+return [
+  'type' => 'primary',
+  'defaults' => "{
+    data: {
+      contact_id: $default,
+      case_type_id: ''
+    },
+    actions: {create: true, update: false}
+  }",
+  'boilerplate' => [
+    ['#tag' => 'af-field', 'name' => 'subject'],
+  ],
+];
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.component.js
index d6f93f6c073a93b8fab8db50c13ba1a4d28e0194..d33e3441e2ecb770891f8dceb1f2bcbeba8e6108 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.component.js
@@ -14,6 +14,7 @@
       $scope.controls = {};
       $scope.fieldList = [];
       $scope.calcFieldList = [];
+      $scope.calcFieldTitles = [];
       $scope.blockList = [];
       $scope.blockTitles = [];
       $scope.elementList = [];
@@ -29,7 +30,7 @@
           fieldGroups.push({
             text: ts('Calculated Fields'),
             children: _.transform(ctrl.display.settings.calc_fields, function(fields, el) {
-              fields.push({id: el.name, text: el.defn.label, disabled: ctrl.fieldInUse(el.name)});
+              fields.push({id: el.name, text: el.label, disabled: ctrl.fieldInUse(el.name)});
             }, [])
           });
         }
@@ -69,11 +70,28 @@
         return entity || ctrl.display.settings['saved_search_id.api_entity'];
       };
 
+      function fieldDefaults(field, prefix) {
+        var tag = {
+          "#tag": "af-field",
+          name: prefix + field.name
+        };
+        if (field.input_type === 'Select' || field.input_type === 'ChainSelect') {
+          tag.defn = {input_attrs: {multiple: true}};
+        } else if (field.input_type === 'Date') {
+          tag.defn = {input_type: 'Select', search_range: true};
+        } else if (field.options) {
+          tag.defn = {input_type: 'Select', input_attrs: {multiple: true}};
+        }
+        return tag;
+      }
+
       function buildCalcFieldList(search) {
         $scope.calcFieldList.length = 0;
+        $scope.calcFieldTitles.length = 0;
         _.each(_.cloneDeep(ctrl.display.settings.calc_fields), function(field) {
-          if (!search || _.contains(field.defn.label.toLowerCase(), search)) {
-            $scope.calcFieldList.push(field);
+          if (!search || _.contains(field.label.toLowerCase(), search)) {
+            $scope.calcFieldList.push(fieldDefaults(field, ''));
+            $scope.calcFieldTitles.push(field.label);
           }
         });
       }
@@ -101,18 +119,32 @@
             label: mainEntity.label,
             fields: mainEntity.fields
           }];
-        entityCount[mainEntity.entity] = 1;
+
+        // Increment count of entityName and return a suffix string if > 1
+        function countEntity(entityName) {
+          entityCount[entityName] = (entityCount[entityName] || 0) + 1;
+          return entityCount[entityName] > 1 ? ' ' + entityCount[entityName] : '';
+        }
+        countEntity(mainEntity.entity);
 
         _.each(ctrl.display.settings['saved_search_id.api_params'].join, function(join) {
           var joinInfo = join[0].split(' AS '),
-            entity = afGui.getEntity(joinInfo[0]);
-          entityCount[entity.entity] = (entityCount[entity.entity] || 0) + 1;
+            entity = afGui.getEntity(joinInfo[0]),
+            joinEntity = afGui.getEntity(join[2]);
           entities.push({
             name: entity.entity,
             prefix: joinInfo[1] + '.',
-            label: entity.label + (entityCount[entity.entity] > 1 ? ' ' + entityCount[entity.entity] : ''),
+            label: entity.label + countEntity(entity.entity),
             fields: entity.fields,
           });
+          if (joinEntity) {
+            entities.push({
+              name: joinEntity.entity,
+              prefix: joinInfo[1] + '.',
+              label: joinEntity.label + countEntity(joinEntity.entity),
+              fields: _.omit(joinEntity.fields, _.keys(entity.fields)),
+            });
+          }
         });
 
         return entities;
@@ -136,21 +168,6 @@
             }
           }, []);
         }
-
-        function fieldDefaults(field, prefix) {
-          var tag = {
-            "#tag": "af-field",
-            name: prefix + field.name
-          };
-          if (field.input_type === 'Select' || field.input_type === 'ChainSelect') {
-            tag.defn = {input_attrs: {multiple: true}};
-          } else if (field.input_type === 'Date') {
-            tag.defn = {input_type: 'Select', search_range: true};
-          } else if (field.options) {
-            tag.defn = {input_type: 'Select', input_attrs: {multiple: true}};
-          }
-          return tag;
-        }
       }
 
       function buildElementList(search) {
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html
index 76e42ba6b8efaa37aadcfcb1ec1954dfc59439ca..1d1001f88815fa3816450bb6b4f86fc4c9072c1f 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiSearch.html
@@ -61,7 +61,7 @@
         <label>{{:: ts('Calculated Fields') }}</label>
         <div ui-sortable="$ctrl.editor.getSortableOptions($ctrl.editor.getSelectedEntityName())" ui-sortable-update="buildPaletteLists" ng-model="calcFieldList">
           <div ng-repeat="field in calcFieldList" ng-class="{disabled: $ctrl.fieldInUse(field.name)}">
-            <div class="af-gui-palette-item">{{:: field.defn.label }}</div>
+            <div class="af-gui-palette-item">{{:: calcFieldTitles[$index] }}</div>
           </div>
         </div>
       </div>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js
index 8a0d0a0e11394042c99cffe5ea814a29c5ee5f35..a61c47e1447f144337d570d72723d432b43cd8a5 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiContainer.component.js
@@ -400,7 +400,7 @@
       };
 
       // Returns the entity type for fields within this conainer (join entity type if this is a join, else the primary entity type)
-      this.getFieldEntityType = function(fieldName) {
+      this.getFieldEntityType = function(fieldKey) {
         var entityType;
         // If entityName is declared for this fieldset, return entity-type or join-type
         if (ctrl.entityName) {
@@ -409,17 +409,22 @@
         } else {
           var searchKey = ctrl.getDataEntity(),
             searchDisplay = afGui.getSearchDisplay.apply(null, searchKey.split('.')),
-            prefix = _.includes(fieldName, '.') ? fieldName.split('.')[0] : null;
+            fieldName = fieldKey.substr(fieldKey.indexOf('.') + 1),
+            prefix = _.includes(fieldKey, '.') ? fieldKey.split('.')[0] : null;
           if (prefix) {
             _.each(searchDisplay['saved_search_id.api_params'].join, function(join) {
               var joinInfo = join[0].split(' AS ');
               if (prefix === joinInfo[1]) {
                 entityType = joinInfo[0];
+                // If entity doesn't contain field, it belongs to the bridge join
+                if (!(fieldName in afGui.getEntity(entityType).fields)) {
+                  entityType = join[2];
+                }
                 return false;
               }
             });
           }
-          if (!entityType && fieldName && afGui.getField(searchDisplay['saved_search_id.api_entity'], fieldName)) {
+          if (!entityType) {
             entityType = searchDisplay['saved_search_id.api_entity'];
           }
         }
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html
index 85de8d309f5a915ef0e397608a59e5125ce622c7..6896abf1b20e78f6e62ef7f8f82fa63554c6fdd3 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html
@@ -1,4 +1,4 @@
-<li>
+<li ng-if="$ctrl.fieldDefn.input_type !== 'Existing'">
   <div href ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown">
     <label>{{:: ts('Type:') }}</label>
     <select class="form-control" ng-model="getSet('input_type')" ng-model-options="{getterSetter: true}" title="{{:: ts('Field type') }}">
@@ -6,19 +6,25 @@
     </select>
   </div>
 </li>
+<li ng-if="$ctrl.fieldDefn.input_type === 'Existing'" title="{{:: ts('Use a saved search to filter the autocomplete results') }}">
+  <div href ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown">
+    <label>{{:: ts('Saved Search:') }}</label>
+    <input class="form-control" crm-entityref="{entity: 'SavedSearch', api: {id_field: 'name', params: {api_entity: $ctrl.getEntity().name}}}" ng-model="getSet('saved_search')" ng-model-options="{getterSetter: true}">
+  </div>
+</li>
 <li>
   <a href ng-click="toggleRequired(); $event.stopPropagation(); $event.target.blur();" title="{{:: ts('Require this field') }}">
     <i class="crm-i fa-{{ getProp('required') ? 'check-' : '' }}square-o"></i>
     {{:: ts('Required') }}
   </a>
 </li>
-<li>
+<li ng-if="$ctrl.fieldDefn.input_type !== 'Existing'">
   <a href ng-click="toggleDefaultValue(); $event.stopPropagation(); $event.target.blur();" title="{{:: ts('Pre-fill this field with a value') }}">
     <i class="crm-i fa-{{ $ctrl.hasDefaultValue ? 'check-' : '' }}square-o"></i>
     {{:: ts('Default value') }}
   </a>
 </li>
-<li ng-if="$ctrl.hasDefaultValue">
+<li ng-if="$ctrl.fieldDefn.input_type !== 'Existing' && $ctrl.hasDefaultValue">
   <div ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown form-inline">
     <input class="form-control" af-gui-field-value="$ctrl.fieldDefn" ng-model="getSet('afform_default')" ng-model-options="{getterSetter: true}" >
   </div>
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js
index 0102c32e9bf1dd73e46337d8b9ffdea47a84d7a3..882ea3fd1a91996f7539adcfd39ee947e77430a3 100644
--- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js
@@ -20,8 +20,6 @@
         // When search-by-range is enabled the second element gets a suffix for some properties like "placeholder2"
         rangeElements = ['', '2'],
         dateRangeElements = ['1', '2'],
-        relativeDatesWithPickRange = CRM.afGuiEditor.dateRanges,
-        relativeDatesWithoutPickRange = relativeDatesWithPickRange.slice(1),
         yesNo = [
           {id: '1', label: ts('Yes')},
           {id: '0', label: ts('No')}
@@ -30,7 +28,7 @@
 
       this.$onInit = function() {
         ctrl.hasDefaultValue = !!getSet('afform_default');
-        ctrl.fieldDefn = angular.extend({}, ctrl.getDefn(), ctrl.node.defn);
+        setFieldDefn();
         ctrl.inputTypes = _.transform(_.cloneDeep(afGui.meta.inputTypes), function(inputTypes, type) {
           if (inputTypeCanBe(type.name)) {
             // Change labels for EntityRef fields
@@ -49,10 +47,12 @@
             inputTypes.push(type);
           }
         });
+        setDateOptions();
       };
 
       this.getFkEntity = function() {
-        var fkEntity = ctrl.getDefn().fk_entity;
+        var defn = ctrl.getDefn(),
+          fkEntity = defn.is_id ? ctrl.container.getMainEntityType() : defn.fk_entity;
         return ctrl.editor.meta.entities[fkEntity];
       };
 
@@ -89,6 +89,11 @@
       // Returns the original field definition from metadata
       this.getDefn = function() {
         var defn = afGui.getField(ctrl.container.getFieldEntityType(ctrl.node.name), ctrl.node.name);
+        // Calc fields are specific to a search display, not part of the schema
+        if (!defn && ctrl.container.getSearchDisplay(ctrl.container.node)) {
+          var searchDisplay = ctrl.container.getSearchDisplay(ctrl.container.node);
+          defn = _.findWhere(searchDisplay.calc_fields, {name: ctrl.node.name});
+        }
         defn = defn || {
           label: ts('Untitled'),
           required: false
@@ -99,11 +104,18 @@
         return defn;
       };
 
+      // Get the api entity this field belongs to
+      this.getEntity = function() {
+        return afGui.getEntity(ctrl.container.getFieldEntityType(ctrl.node.name));
+      };
+
       $scope.getOriginalLabel = function() {
+        // Use afform entity if available (e.g. "Individual1")
         if (ctrl.container.getEntityName()) {
           return ctrl.editor.getEntity(ctrl.container.getEntityName()).label + ': ' + ctrl.getDefn().label;
         }
-        return afGui.getEntity(ctrl.container.getFieldEntityType(ctrl.node.name)).label + ': ' + ctrl.getDefn().label;
+        // Use generic entity (e.g. "Contact")
+        return ctrl.getEntity().label + ': ' + ctrl.getDefn().label;
       };
 
       $scope.hasOptions = function() {
@@ -112,11 +124,8 @@
       };
 
       this.getOptions = function() {
-        if (ctrl.node.defn && ctrl.node.defn.options) {
-          return ctrl.node.defn.options;
-        }
-        if (_.includes(['Date', 'Timestamp'], $scope.getProp('data_type'))) {
-          return $scope.getProp('search_range') ? relativeDatesWithPickRange : relativeDatesWithoutPickRange;
+        if (ctrl.fieldDefn.options) {
+          return ctrl.fieldDefn.options;
         }
         if (ctrl.getDefn().input_type === 'EntityRef') {
           // Build a list of all entities in this form that can be referenced by this field.
@@ -210,6 +219,10 @@
         if (newVal && getSet('input_attrs.multiple')) {
           getSet('input_attrs.multiple', false);
         }
+        if (ctrl.hasDefaultValue) {
+          $scope.toggleDefaultValue();
+        }
+        setDateOptions();
       };
 
       $scope.toggleRequired = function() {
@@ -225,6 +238,16 @@
           ($scope.getProp('input_type') === 'CheckBox' || $scope.getProp('input_attrs.multiple')));
       }
 
+      function setFieldDefn() {
+        ctrl.fieldDefn = angular.extend({}, ctrl.getDefn(), ctrl.node.defn);
+      }
+
+      function setDateOptions() {
+        if (_.includes(['Date', 'Timestamp'], $scope.getProp('data_type'))) {
+          ctrl.node.defn.options = $scope.getProp('search_range') ? CRM.afGuiEditor.dateRanges : CRM.afGuiEditor.dateRanges.slice(1);
+          setFieldDefn();
+        }
+      }
 
       $scope.toggleDefaultValue = function() {
         if (ctrl.hasDefaultValue) {
@@ -294,7 +317,7 @@
               clearOut(ctrl.node, ['defn', 'input_attrs']);
             }
           }
-          ctrl.fieldDefn = angular.extend({}, ctrl.getDefn(), ctrl.node.defn);
+          setFieldDefn();
 
           // When changing the multiple property, force-reset the default value widget
           if (ctrl.hasDefaultValue && _.includes(['input_type', 'input_attrs.multiple'], propName)) {
diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Existing.html b/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Existing.html
new file mode 100644
index 0000000000000000000000000000000000000000..d2538363fd30eee1801ef55882a6ebc26732bd3d
--- /dev/null
+++ b/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Existing.html
@@ -0,0 +1,8 @@
+<div class="form-inline">
+  <div class="input-group">
+    <input autocomplete="off" type="text" class="form-control" placeholder="{{:: ts('Select %1', {1: $ctrl.getFkEntity().label}) }}" title="{{:: ts('Click to add placeholder text') }}" ng-model="getSet('input_attrs.placeholder')" ng-model-options="$ctrl.editor.debounceWithGetterSetter">
+    <div class="input-group-btn">
+      <button type="button" class="btn btn-default" disabled><i class="crm-i fa-search"></i></button>
+    </div>
+  </div>
+</div>
diff --git a/civicrm/ext/afform/admin/info.xml b/civicrm/ext/afform/admin/info.xml
index c0f46803e69e3e3a150958eb8744fad1c6951205..4d30c57f4d81547b416bbcb8fc36f23279d72441 100644
--- a/civicrm/ext/afform/admin/info.xml
+++ b/civicrm/ext/afform/admin/info.xml
@@ -13,10 +13,10 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-01-09</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>beta</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <comments>Form Builder provides a UI to administer and edit forms. It is an optional admin tool and not required for the forms to function.</comments>
   <requires>
diff --git a/civicrm/ext/afform/core/Civi/Afform/AfformMetadataInjector.php b/civicrm/ext/afform/core/Civi/Afform/AfformMetadataInjector.php
index ca20b3ac78f55ea0ab1ddd8b130fe375f071e43e..c2b128c62f6676486573d79a891efc5ab09b2362 100644
--- a/civicrm/ext/afform/core/Civi/Afform/AfformMetadataInjector.php
+++ b/civicrm/ext/afform/core/Civi/Afform/AfformMetadataInjector.php
@@ -11,6 +11,7 @@
 
 namespace Civi\Afform;
 
+use Civi\Api4\Utils\CoreUtil;
 use CRM_Afform_ExtensionUtil as E;
 
 /**
@@ -29,6 +30,11 @@ class AfformMetadataInjector {
         try {
           $module = \Civi::service('angular')->getModule(basename($path, '.aff.html'));
           $meta = \Civi\Api4\Afform::get(FALSE)->addWhere('name', '=', $module['_afform'])->setSelect(['join_entity', 'entity_type'])->execute()->first();
+
+          // Add ngForm directive to afForm controllers
+          foreach (pq('af-form[ctrl]') as $afForm) {
+            pq($afForm)->attr('ng-form', $module['_afform']);
+          }
         }
         catch (\Exception $e) {
         }
@@ -74,72 +80,101 @@ class AfformMetadataInjector {
   }
 
   /**
-   * Merge field definition metadata into an afform field's definition
-   *
-   * @param string $entityName
+   * @param $entityNames
    * @param string $action
+   * @param string $fieldName
+   * @return array|null
+   */
+  private static function getFieldMetadata($entityNames, string $action, string $fieldName):? array {
+    foreach ((array) $entityNames as $entityName) {
+      $fieldInfo = self::getField($entityName, $fieldName, $action);
+      if ($fieldInfo) {
+        return $fieldInfo;
+      }
+    }
+    return NULL;
+  }
+
+  /**
+   * Merge a field's definition with whatever's already in the markup
+   *
    * @param \DOMElement $afField
+   * @param array $fieldInfo
    * @throws \API_Exception
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\API\Exception\NotImplementedException
    */
-  private static function fillFieldMetadata($entityName, $action, \DOMElement $afField) {
-    $fieldName = $afField->getAttribute('name');
-    $fieldInfo = self::getField($entityName, $fieldName, $action);
-    // Merge field definition data with whatever's already in the markup.
+  public static function setFieldMetadata(\DOMElement $afField, array $fieldInfo):void {
     $deep = ['input_attrs'];
-    if ($fieldInfo) {
-      // Defaults for attributes not in spec
-      $fieldInfo['search_range'] = FALSE;
+    // Defaults for attributes not in spec
+    $fieldInfo['search_range'] = FALSE;
 
-      $existingFieldDefn = trim(pq($afField)->attr('defn') ?: '');
-      if ($existingFieldDefn && $existingFieldDefn[0] != '{') {
-        // If it's not an object, don't mess with it.
-        return;
-      }
+    $existingFieldDefn = trim(pq($afField)->attr('defn') ?: '');
+    if ($existingFieldDefn && $existingFieldDefn[0] != '{') {
+      // If it's not an object, don't mess with it.
+      return;
+    }
 
-      // Get field defn from afform markup
-      $fieldDefn = $existingFieldDefn ? \CRM_Utils_JS::getRawProps($existingFieldDefn) : [];
-      // This is the input type set on the form (may be different from the default input type in the field spec)
-      $inputType = !empty($fieldDefn['input_type']) ? \CRM_Utils_JS::decode($fieldDefn['input_type']) : $fieldInfo['input_type'];
-      // On a search form, search_range will present a pair of fields (or possibly 3 fields for date select + range)
-      $isSearchRange = !empty($fieldDefn['search_range']) && \CRM_Utils_JS::decode($fieldDefn['search_range']);
+    // Get field defn from afform markup
+    $fieldDefn = $existingFieldDefn ? \CRM_Utils_JS::getRawProps($existingFieldDefn) : [];
+    // This is the input type set on the form (may be different from the default input type in the field spec)
+    $inputType = !empty($fieldDefn['input_type']) ? \CRM_Utils_JS::decode($fieldDefn['input_type']) : $fieldInfo['input_type'];
+    // On a search form, search_range will present a pair of fields (or possibly 3 fields for date select + range)
+    $isSearchRange = !empty($fieldDefn['search_range']) && \CRM_Utils_JS::decode($fieldDefn['search_range']);
 
-      // Default placeholder for select inputs
-      if ($inputType === 'Select' || $inputType === 'ChainSelect') {
-        $fieldInfo['input_attrs']['placeholder'] = E::ts('Select');
-      }
-      elseif ($inputType === 'EntityRef') {
-        $info = civicrm_api4('Entity', 'get', [
-          'where' => [['name', '=', $fieldInfo['fk_entity']]],
-          'checkPermissions' => FALSE,
-          'select' => ['title', 'title_plural'],
-        ], 0);
-        $label = empty($fieldInfo['input_attrs']['multiple']) ? $info['title'] : $info['title_plural'];
-        $fieldInfo['input_attrs']['placeholder'] = E::ts('Select %1', [1 => $label]);
-      }
+    // Default placeholder for select inputs
+    if ($inputType === 'Select' || $inputType === 'ChainSelect') {
+      $fieldInfo['input_attrs']['placeholder'] = E::ts('Select');
+    }
+    elseif ($inputType === 'EntityRef') {
+      $info = civicrm_api4('Entity', 'get', [
+        'where' => [['name', '=', $fieldInfo['fk_entity']]],
+        'checkPermissions' => FALSE,
+        'select' => ['title', 'title_plural'],
+      ], 0);
+      $label = empty($fieldInfo['input_attrs']['multiple']) ? $info['title'] : $info['title_plural'];
+      $fieldInfo['input_attrs']['placeholder'] = E::ts('Select %1', [1 => $label]);
+    }
 
-      if ($fieldInfo['input_type'] === 'Date') {
-        // This flag gets used by the afField controller
-        $fieldDefn['is_date'] = TRUE;
-        // For date fields that have been converted to Select
-        if ($inputType === 'Select') {
-          $dateOptions = \CRM_Utils_Array::makeNonAssociative(\CRM_Core_OptionGroup::values('relative_date_filters'), 'id', 'label');
-          if ($isSearchRange) {
-            $dateOptions = array_merge([['id' => '{}', 'label' => E::ts('Choose Date Range')]], $dateOptions);
-          }
-          $fieldInfo['options'] = $dateOptions;
+    if ($fieldInfo['input_type'] === 'Date') {
+      // This flag gets used by the afField controller
+      $fieldDefn['is_date'] = TRUE;
+      // For date fields that have been converted to Select
+      if ($inputType === 'Select') {
+        $dateOptions = \CRM_Utils_Array::makeNonAssociative(\CRM_Core_OptionGroup::values('relative_date_filters'), 'id', 'label');
+        if ($isSearchRange) {
+          $dateOptions = array_merge([['id' => '{}', 'label' => E::ts('Choose Date Range')]], $dateOptions);
         }
+        $fieldInfo['options'] = $dateOptions;
       }
+    }
 
-      foreach ($fieldInfo as $name => $prop) {
-        // Merge array props 1 level deep
-        if (in_array($name, $deep) && !empty($fieldDefn[$name])) {
-          $fieldDefn[$name] = \CRM_Utils_JS::writeObject(\CRM_Utils_JS::getRawProps($fieldDefn[$name]) + array_map(['\CRM_Utils_JS', 'encode'], $prop));
-        }
-        elseif (!isset($fieldDefn[$name])) {
-          $fieldDefn[$name] = \CRM_Utils_JS::encode($prop);
-        }
+    foreach ($fieldInfo as $name => $prop) {
+      // Merge array props 1 level deep
+      if (in_array($name, $deep) && !empty($fieldDefn[$name])) {
+        $fieldDefn[$name] = \CRM_Utils_JS::writeObject(\CRM_Utils_JS::getRawProps($fieldDefn[$name]) + array_map(['\CRM_Utils_JS', 'encode'], $prop));
+      }
+      elseif (!isset($fieldDefn[$name])) {
+        $fieldDefn[$name] = \CRM_Utils_JS::encode($prop);
       }
-      pq($afField)->attr('defn', htmlspecialchars(\CRM_Utils_JS::writeObject($fieldDefn)));
+    }
+    pq($afField)->attr('defn', htmlspecialchars(\CRM_Utils_JS::writeObject($fieldDefn)));
+  }
+
+  /**
+   * Merge field definition metadata into an afform field's definition
+   *
+   * @param string|array $entityNames
+   * @param string $action
+   * @param \DOMElement $afField
+   * @throws \API_Exception
+   */
+  private static function fillFieldMetadata($entityNames, string $action, \DOMElement $afField):void {
+    $fieldName = $afField->getAttribute('name');
+    $fieldInfo = self::getFieldMetadata($entityNames, $action, $fieldName);
+    // Merge field definition data with whatever's already in the markup.
+    if ($fieldInfo) {
+      self::setFieldMetadata($afField, $fieldInfo);
     }
   }
 
@@ -163,7 +198,7 @@ class AfformMetadataInjector {
     $params = [
       'action' => $action,
       'where' => [['name', 'IN', $namesToMatch]],
-      'select' => ['name', 'label', 'input_type', 'input_attrs', 'help_pre', 'help_post', 'options', 'fk_entity'],
+      'select' => ['name', 'label', 'input_type', 'input_attrs', 'help_pre', 'help_post', 'options', 'fk_entity', 'required'],
       'loadOptions' => ['id', 'label'],
       // If the admin included this field on the form, then it's OK to get metadata about the field regardless of user permissions.
       'checkPermissions' => FALSE,
@@ -178,6 +213,17 @@ class AfformMetadataInjector {
         break;
       }
     }
+    if (!isset($field)) {
+      return NULL;
+    }
+    // Id field for selecting existing entity
+    if ($action === 'create' && $field['name'] === CoreUtil::getIdFieldName($entityName)) {
+      $entityTitle = CoreUtil::getInfoItem($entityName, 'title');
+      $field['input_type'] = 'Existing';
+      $field['entity'] = $entityName;
+      $field['label'] = E::ts('Existing %1', [1 => $entityTitle]);
+      $field['input_attrs']['placeholder'] = E::ts('Select %1', [1 => $entityTitle]);
+    }
     // If this is an implicit join, get new field from fk entity
     if ($field['name'] !== $fieldName && $field['fk_entity']) {
       $params['where'] = [['name', '=', substr($fieldName, 1 + strrpos($fieldName, '.'))]];
@@ -191,24 +237,28 @@ class AfformMetadataInjector {
   }
 
   /**
-   * Determines name of the api entity based on the field name prefix
+   * Determines name of the api entit(ies) based on the field name prefix
+   *
+   * Note: Normally will return a single entity name, but
+   * Will return 2 entity names in the case of Bridge joins e.g. RelationshipCache
    *
    * @param string $fieldName
    * @param string[] $entityList
-   * @return string
+   * @return string|array
    */
   private static function getFieldEntityType($fieldName, $entityList) {
     $prefix = strpos($fieldName, '.') ? explode('.', $fieldName)[0] : NULL;
+    $joinEntities = [];
     $baseEntity = array_shift($entityList);
     if ($prefix) {
       foreach ($entityList as $entityAndAlias) {
         [$entity, $alias] = explode(' AS ', $entityAndAlias);
         if ($alias === $prefix) {
-          return $entityAndAlias;
+          $joinEntities[] = $entityAndAlias;
         }
       }
     }
-    return $baseEntity;
+    return $joinEntities ?: $baseEntity;
   }
 
   private static function getFormEntities(\phpQueryObject $doc) {
diff --git a/civicrm/ext/afform/core/Civi/Afform/FormDataModel.php b/civicrm/ext/afform/core/Civi/Afform/FormDataModel.php
index a36872826260b1e3623b61bbe0b9579c9715e422..8d99733f8cd46adcde69f7cc80e6ed4f25a378ed 100644
--- a/civicrm/ext/afform/core/Civi/Afform/FormDataModel.php
+++ b/civicrm/ext/afform/core/Civi/Afform/FormDataModel.php
@@ -50,7 +50,7 @@ class FormDataModel {
       $this->entities[$entity]['fields'] = $this->entities[$entity]['joins'] = [];
     }
     // Pre-load full list of afforms in case this layout embeds other afform directives
-    $this->blocks = (array) Afform::get()->setCheckPermissions(FALSE)->setSelect(['name', 'directive_name'])->execute()->indexBy('directive_name');
+    $this->blocks = (array) Afform::get(FALSE)->setSelect(['name', 'directive_name'])->execute()->indexBy('directive_name');
     $this->parseFields($layout);
   }
 
@@ -171,7 +171,7 @@ class FormDataModel {
       // Recurse into embedded blocks
       if (isset($this->blocks[$node['#tag']])) {
         if (!isset($this->blocks[$node['#tag']]['layout'])) {
-          $this->blocks[$node['#tag']] = Afform::get()->setCheckPermissions(FALSE)->setSelect(['name', 'layout'])->addWhere('name', '=', $this->blocks[$node['#tag']]['name'])->execute()->first();
+          $this->blocks[$node['#tag']] = Afform::get(FALSE)->setSelect(['name', 'layout'])->addWhere('name', '=', $this->blocks[$node['#tag']]['name'])->execute()->first();
         }
         if (!empty($this->blocks[$node['#tag']]['layout'])) {
           $this->parseFields($this->blocks[$node['#tag']]['layout'], $entity, $join, $searchDisplay);
diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php
index 870254d1c161c35664f301220719c459012082bc..35af3eb3ef66f20eae9a218d951913c1e7a54586 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php
@@ -9,6 +9,9 @@ use Civi\Api4\Utils\CoreUtil;
 /**
  * Shared functionality for form submission pre & post processing.
  * @package Civi\Api4\Action\Afform
+ *
+ * @method $this setFillMode(string $fillMode) Set entity/form fill mode.
+ * @method string getFillMode()
  */
 abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
 
@@ -25,6 +28,13 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
    */
   protected $args = [];
 
+  /**
+   * Used by prefill action to indicate if the entire form or just one entity is being filled.
+   * @var string
+   * @options form,entity
+   */
+  protected $fillMode = 'form';
+
   /**
    * @var array
    */
@@ -68,14 +78,18 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
   protected function loadEntities() {
     foreach ($this->_formDataModel->getEntities() as $entityName => $entity) {
       $this->_entityIds[$entityName] = [];
+      $idField = CoreUtil::getIdFieldName($entity['type']);
       if (!empty($entity['actions']['update'])) {
-        if (!empty($this->args[$entityName]) && !empty($entity['url-autofill'])) {
-          $ids = array_map('trim', explode(',', $this->args[$entityName]));
+        if (
+          !empty($this->args[$entityName]) &&
+          (!empty($entity['url-autofill']) || isset($entity['fields'][$idField]))
+        ) {
+          $ids = (array) $this->args[$entityName];
           // Limit number of records to 1 unless using af-repeat
           $ids = array_slice($ids, 0, !empty($entity['af-repeat']) ? $entity['max'] ?? NULL : 1);
           $this->loadEntity($entity, $ids);
         }
-        elseif (!empty($entity['autofill'])) {
+        elseif (!empty($entity['autofill']) && $this->fillMode !== 'entity') {
           $this->autofillEntity($entity, $entity['autofill']);
         }
       }
@@ -90,10 +104,17 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
    */
   private function loadEntity(array $entity, array $ids) {
     $api4 = $this->_formDataModel->getSecureApi4($entity['name']);
+    $idField = CoreUtil::getIdFieldName($entity['type']);
+    if (!empty($entity['fields'][$idField]['saved_search'])) {
+      $ids = $this->validateBySavedSearch($entity, $ids);
+    }
+    if (!$ids) {
+      return;
+    }
     $result = $api4($entity['type'], 'get', [
       'where' => [['id', 'IN', $ids]],
       'select' => array_keys($entity['fields']),
-    ])->indexBy('id');
+    ])->indexBy($idField);
     foreach ($ids as $index => $id) {
       $this->_entityIds[$entity['name']][$index] = [
         'id' => isset($result[$id]) ? $id : NULL,
@@ -133,6 +154,23 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction {
     }
   }
 
+  private function validateBySavedSearch($entity, array $ids) {
+    $idField = CoreUtil::getIdFieldName($entity['type']);
+    $fetched = civicrm_api4($entity['type'], 'autocomplete', [
+      'ids' => $ids,
+      'formName' => 'afform:' . $this->name,
+      'fieldName' => $entity['name'] . ':' . $idField,
+    ])->indexBy($idField);
+    $validIds = [];
+    // Preserve keys
+    foreach ($ids as $index => $id) {
+      if (isset($fetched[$id])) {
+        $validIds[$index] = $id;
+      }
+    }
+    return $validIds;
+  }
+
   /**
    * @return array
    */
diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/GetOptions.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/GetOptions.php
index a9726940726bfc946200601f66bf3c6103f68d9e..7251d2eb2e07b3bec471125d962ac3d6bddb687e 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/GetOptions.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/GetOptions.php
@@ -87,7 +87,7 @@ class GetOptions extends AbstractProcessor {
       'where' => [['name', '=', $fieldName]],
       'select' => ['options'],
       'loadOptions' => ['id', 'label'],
-      'values' => FormattingUtil::filterByPrefix($this->values, $this->fieldName, $fieldName),
+      'values' => FormattingUtil::filterByPath($this->values, $this->fieldName, $fieldName),
     ], 0)['options'] ?: [];
   }
 
diff --git a/civicrm/ext/afform/core/Civi/Api4/Afform.php b/civicrm/ext/afform/core/Civi/Api4/Afform.php
index 0f71813b78497a4ac8111e8bf5109917a8f23ec2..8da02bd89d2f04892af08888f99c0c64d4c3e6e2 100644
--- a/civicrm/ext/afform/core/Civi/Api4/Afform.php
+++ b/civicrm/ext/afform/core/Civi/Api4/Afform.php
@@ -2,6 +2,7 @@
 
 namespace Civi\Api4;
 
+use Civi\Api4\Generic\AutocompleteAction;
 use Civi\Api4\Generic\BasicGetFieldsAction;
 
 /**
@@ -16,6 +17,8 @@ use Civi\Api4\Generic\BasicGetFieldsAction;
  *      The `prefill` and `submit` actions are used for preparing forms and processing submissions.
  *
  * @see https://lab.civicrm.org/extensions/afform
+ * @labelField title
+ * @iconField type:icon
  * @searchable none
  * @package Civi\Api4
  */
@@ -57,6 +60,15 @@ class Afform extends Generic\AbstractEntity {
       ->setCheckPermissions($checkPermissions);
   }
 
+  /**
+   * @param bool $checkPermissions
+   * @return \Civi\Api4\Generic\AutocompleteAction
+   */
+  public static function autocomplete($checkPermissions = TRUE) {
+    return (new AutocompleteAction('Afform', __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
   /**
    * @param bool $checkPermissions
    * @return Action\Afform\Convert
diff --git a/civicrm/ext/afform/core/Civi/Api4/Subscriber/AutocompleteSubscriber.php b/civicrm/ext/afform/core/Civi/Api4/Subscriber/AutocompleteSubscriber.php
new file mode 100644
index 0000000000000000000000000000000000000000..685a99c95d94a60cb700bf15beba830998a83749
--- /dev/null
+++ b/civicrm/ext/afform/core/Civi/Api4/Subscriber/AutocompleteSubscriber.php
@@ -0,0 +1,77 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Subscriber;
+
+use Civi\Afform\FormDataModel;
+use Civi\API\Events;
+use Civi\Api4\Afform;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+
+/**
+ * Preprocess api autocomplete requests
+ */
+class AutocompleteSubscriber implements EventSubscriberInterface {
+
+  /**
+   * @return array
+   */
+  public static function getSubscribedEvents() {
+    return [
+      'civi.api.prepare' => ['onApiPrepare', Events::W_MIDDLE],
+    ];
+  }
+
+  /**
+   * @param \Civi\API\Event\PrepareEvent $event
+   *   API preparation event.
+   */
+  public function onApiPrepare(\Civi\API\Event\PrepareEvent $event) {
+    $apiRequest = $event->getApiRequest();
+    if (is_object($apiRequest) && is_a($apiRequest, 'Civi\Api4\Generic\AutocompleteAction')) {
+      $formName = $apiRequest->getFormName();
+      if (!str_starts_with((string) $formName, 'afform:') || !strpos((string) $apiRequest->getFieldName(), ':')) {
+        return;
+      }
+      [$entityName, $fieldName] = explode(':', $apiRequest->getFieldName());
+      // Load afform only if user has permission
+      $afform = Afform::get()
+        ->addWhere('name', '=', str_replace('afform:', '', $formName))
+        ->addSelect('layout')
+        ->execute()->first();
+      if (!$afform) {
+        return;
+      }
+      $formDataModel = new FormDataModel($afform['layout']);
+      $entity = $formDataModel->getEntity($entityName);
+
+      // Look up the "type" fields (e.g. contact_type, activity_type_id, case_type_id, etc)
+      $typeFields = [];
+      if ($entity['type'] === 'Contact') {
+        $typeFields = ['contact_type', 'contact_sub_type'];
+      }
+      else {
+        $extends = array_column(\CRM_Core_BAO_CustomGroup::getCustomGroupExtendsOptions(), 'grouping', 'id');
+        $typeFields = (array) ($extends[$entity['type']] ?? NULL);
+      }
+      // If entity has a type set in the values, auto-apply that to filters
+      foreach ($typeFields as $typeField) {
+        if (!empty($entity['data'][$typeField])) {
+          $apiRequest->addFilter($typeField, $entity['data'][$typeField]);
+        }
+      }
+
+      $apiRequest->setCheckPermissions($entity['security'] !== 'FBAC');
+      $apiRequest->setSavedSearch($entity['fields'][$fieldName]['defn']['saved_search'] ?? NULL);
+    }
+  }
+
+}
diff --git a/civicrm/ext/afform/core/afform.php b/civicrm/ext/afform/core/afform.php
index a0b1100347e19a5012ae662ea58472b606f841f4..711f1a43be0041e6dd39540413763923ce11b4df 100644
--- a/civicrm/ext/afform/core/afform.php
+++ b/civicrm/ext/afform/core/afform.php
@@ -56,6 +56,7 @@ function afform_civicrm_config(&$config) {
   $dispatcher->addListener('hook_civicrm_alterAngular', ['\Civi\Afform\AfformMetadataInjector', 'preprocess']);
   $dispatcher->addListener('hook_civicrm_check', ['\Civi\Afform\StatusChecks', 'hook_civicrm_check']);
   $dispatcher->addListener('civi.afform.get', ['\Civi\Api4\Action\Afform\Get', 'getCustomGroupBlocks']);
+  $dispatcher->addSubscriber(new \Civi\Api4\Subscriber\AutocompleteSubscriber());
 
   // Register support for email tokens
   if (CRM_Extension_System::singleton()->getMapper()->isActiveModule('authx')) {
@@ -526,6 +527,11 @@ function afform_civicrm_alterApiRoutePermissions(&$permissions, $entity, $action
       $permissions = CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION;
     }
   }
+  // This is temporarily stuck here, but probably belongs in core (until this hook is finally abolished)
+  elseif ($action === 'autocomplete') {
+    // Autocomplete widget must be accessible by anonymous users. Permissions are checked internally.
+    $permissions = CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION;
+  }
 }
 
 /**
diff --git a/civicrm/ext/afform/core/ang/af/afEntity.component.js b/civicrm/ext/afform/core/ang/af/afEntity.component.js
index 6f0fef14d2ccf265cef2f9b6fc9a0a5b2c4ac1f1..c778856ff288fee18fe8dbf4da0115b1f4820da0 100644
--- a/civicrm/ext/afform/core/ang/af/afEntity.component.js
+++ b/civicrm/ext/afform/core/ang/af/afEntity.component.js
@@ -4,6 +4,7 @@
   var modelProps = {
     type: '@',
     data: '=',
+    actions: '=',
     modelName: '@name',
     label: '@',
     autofill: '@'
@@ -16,6 +17,7 @@
 
       this.$onInit = function() {
         var entity = _.pick(this, _.keys(modelProps));
+        entity.actions = entity.actions || {update: true, create: true};
         entity.id = null;
         this.afForm.registerEntity(entity);
       };
diff --git a/civicrm/ext/afform/core/ang/af/afField.component.js b/civicrm/ext/afform/core/ang/af/afField.component.js
index aa83eac8fbae9dced69200437e697e5dc774f4c0..eb2da82a6ae720cf797e5b16fa75dfd5f5ce8c22 100644
--- a/civicrm/ext/afform/core/ang/af/afField.component.js
+++ b/civicrm/ext/afform/core/ang/af/afField.component.js
@@ -37,26 +37,6 @@
           namePrefix = this.fieldName.substr(0, this.fieldName.length - this.defn.name.length);
         }
 
-        if (ctrl.defn.search_range) {
-          // Initialize value as object unless using relative date select
-          var initialVal = $scope.dataProvider.getFieldData()[ctrl.fieldName];
-          if (!_.isArray($scope.dataProvider.getFieldData()[ctrl.fieldName]) &&
-            (ctrl.defn.input_type !== 'Select' || !ctrl.defn.is_date || initialVal !== '{}')
-          ) {
-            $scope.dataProvider.getFieldData()[ctrl.fieldName] = {};
-          }
-          // Initialize inputAttrs (only used for datePickers at the moment)
-          if (ctrl.defn.is_date) {
-            this.inputAttrs.push(ctrl.defn.input_attrs || {});
-            for (var i = 1; i <= 2; ++i) {
-              var attrs = _.cloneDeep(ctrl.defn.input_attrs || {});
-              attrs.placeholder = attrs['placeholder' + i];
-              attrs.timePlaceholder = attrs['timePlaceholder' + i];
-              ctrl.inputAttrs.push(attrs);
-            }
-          }
-        }
-
         // is_primary field - watch others in this afRepeat block to ensure only one is selected
         if (ctrl.fieldName === 'is_primary' && 'repeatIndex' in $scope.dataProvider) {
           $scope.$watch('dataProvider.afRepeat.getEntityController().getData()', function (items, prev) {
@@ -135,6 +115,26 @@
           else if (ctrl.defn.afform_default) {
             setValue(ctrl.defn.afform_default);
           }
+
+          if (ctrl.defn.search_range) {
+            // Initialize value as object unless using relative date select
+            var initialVal = $scope.dataProvider.getFieldData()[ctrl.fieldName];
+            if (!_.isArray($scope.dataProvider.getFieldData()[ctrl.fieldName]) &&
+              (ctrl.defn.input_type !== 'Select' || !ctrl.defn.is_date || initialVal === '{}')
+            ) {
+              $scope.dataProvider.getFieldData()[ctrl.fieldName] = {};
+            }
+            // Initialize inputAttrs (only used for datePickers at the moment)
+            if (ctrl.defn.is_date) {
+              ctrl.inputAttrs.push(ctrl.defn.input_attrs || {});
+              for (var i = 1; i <= 2; ++i) {
+                var attrs = _.cloneDeep(ctrl.defn.input_attrs || {});
+                attrs.placeholder = attrs['placeholder' + i];
+                attrs.timePlaceholder = attrs['timePlaceholder' + i];
+                ctrl.inputAttrs.push(attrs);
+              }
+            }
+          }
         });
       };
 
@@ -149,13 +149,17 @@
           }
         } else if (ctrl.defn.input_type === 'Number') {
           value = +value;
-        } else if (ctrl.defn.search_range && !_.isPlainObject(value)) {
+        }
+        // Initialze search range unless the field also has options (as in a date search) and
+        // the default value is a valid option.
+        else if (ctrl.defn.search_range && !_.isPlainObject(value) &&
+          !(ctrl.defn.options && _.findWhere(ctrl.defn.options, {id: value}))
+        ) {
           value = {
             '>=': ('' + value).split('-')[0],
             '<=': ('' + value).split('-')[1] || '',
           };
         }
-
         $scope.dataProvider.getFieldData()[ctrl.fieldName] = value;
       }
 
@@ -169,6 +173,14 @@
         }
       };
 
+      // ngChange callback from Existing entity field
+      ctrl.onSelectExisting = function() {
+        var val = $scope.getSetSelect();
+        var entity = ctrl.afFieldset.modelName;
+        var index = ctrl.getEntityIndex();
+        ctrl.afFieldset.afFormCtrl.loadData(entity, index, val);
+      };
+
       // Params for the Afform.submitFile API when uploading a file field
       ctrl.getFileUploadParams = function() {
         return {
diff --git a/civicrm/ext/afform/core/ang/af/afField.html b/civicrm/ext/afform/core/ang/af/afField.html
index 88e226c43b63e2a3fe973c79596f90650c97db1b..1965f74c7f629d868deac78b5aa62343ea6eac91 100644
--- a/civicrm/ext/afform/core/ang/af/afField.html
+++ b/civicrm/ext/afform/core/ang/af/afField.html
@@ -1,5 +1,6 @@
 <label class="crm-af-field-label" ng-if=":: $ctrl.defn.label" for="{{:: fieldId }}">
   {{:: $ctrl.defn.label }}
+  <span class="crm-marker" title="{{:: ts('Required') }}" ng-if=":: $ctrl.defn.required">*</span>
 </label>
 <p class="crm-af-field-help-pre" ng-if=":: $ctrl.defn.help_pre">{{:: $ctrl.defn.help_pre }}</p>
 <div class="crm-af-field" ng-include="'~/af/fields/' + $ctrl.defn.input_type + '.html'"></div>
diff --git a/civicrm/ext/afform/core/ang/af/afFieldset.directive.js b/civicrm/ext/afform/core/ang/af/afFieldset.directive.js
index 384fad9b90f07c37c30f2db1ad9af9d414e8e236..d67216de0505a40cc5bc2a7cc755bc834040fa04 100644
--- a/civicrm/ext/afform/core/ang/af/afFieldset.directive.js
+++ b/civicrm/ext/afform/core/ang/af/afFieldset.directive.js
@@ -24,6 +24,9 @@
             // If there is no Afform entity, get the name of embedded search display
             $element.find('[search-name][display-name]').attr('display-name');
         };
+        this.getEntity = function() {
+          return this.afFormCtrl.getEntity(this.modelName);
+        };
         this.getEntityType = function() {
           return this.afFormCtrl.getEntity(this.modelName).type;
         };
diff --git a/civicrm/ext/afform/core/ang/af/afForm.component.js b/civicrm/ext/afform/core/ang/af/afForm.component.js
index 79514948a479e6f5aad17c0358083711a9826312..eae28a02c7cec6321dbd96ae0719b3f43237b518 100644
--- a/civicrm/ext/afform/core/ang/af/afForm.component.js
+++ b/civicrm/ext/afform/core/ang/af/afForm.component.js
@@ -4,6 +4,9 @@
     bindings: {
       ctrl: '@'
     },
+    require: {
+      ngForm: 'form'
+    },
     controller: function($scope, $element, $timeout, crmApi4, crmStatus, $window, $location, $parse, FileUploader) {
       var schema = {},
         data = {},
@@ -37,16 +40,33 @@
       this.getFormMeta = function getFormMeta() {
         return $scope.$parent.meta;
       };
-      this.loadData = function() {
-        var toLoad = 0;
-        args = _.assign({}, $scope.$parent.routeParams || {}, $scope.$parent.options || {});
-        _.each(schema, function(entity, entityName) {
-          if (args[entityName] || entity.autofill) {
-            toLoad++;
-          }
-        });
+      // With no arguments this will prefill the entire form based on url args
+      // With selectedEntity, selectedIndex & selectedId provided this will prefill a single entity
+      this.loadData = function(selectedEntity, selectedIndex, selectedId) {
+        var toLoad = 0,
+          params = {name: ctrl.getFormMeta().name, args: {}};
+        // Load single entity
+        if (selectedEntity) {
+          toLoad = selectedId;
+          params.fillMode = 'entity';
+          params.args[selectedEntity] = {};
+          params.args[selectedEntity][selectedIndex] = selectedId;
+        }
+        // Prefill entire form
+        else {
+          args = _.assign({}, $scope.$parent.routeParams || {}, $scope.$parent.options || {});
+          _.each(schema, function (entity, entityName) {
+            if (args[entityName] || entity.autofill) {
+              toLoad++;
+            }
+            if (args[entityName] && typeof args[entityName] === 'string') {
+              args[entityName] = args[entityName].split(',');
+            }
+          });
+          params.args = args;
+        }
         if (toLoad) {
-          crmApi4('Afform', 'prefill', {name: ctrl.getFormMeta().name, args: args})
+          crmApi4('Afform', 'prefill', params)
             .then(function(result) {
               _.each(result, function(item) {
                 data[item.name] = data[item.name] || {};
@@ -54,6 +74,13 @@
               });
             });
         }
+        // Clear existing contact selection
+        else if (selectedEntity) {
+          data[selectedEntity][selectedIndex].fields = {};
+          if (data[selectedEntity][selectedIndex].joins) {
+            data[selectedEntity][selectedIndex].joins = {};
+          }
+        }
       };
 
       // Used when submitting file fields
@@ -98,7 +125,6 @@
       function replaceTokens(str, vars) {
         function recurse(stack, values) {
           _.each(values, function(value, key) {
-            console.log('value:' + value, stack);
             if (_.isArray(value) || _.isPlainObject(value)) {
               recurse(stack.concat([key]), value);
             } else {
@@ -112,6 +138,10 @@
       }
 
       this.submit = function() {
+        if (!ctrl.ngForm.$valid) {
+          CRM.alert(ts('Please fill all required fields.'), ts('Form Error'));
+          return;
+        }
         status = CRM.status({});
         $element.block();
 
diff --git a/civicrm/ext/afform/core/ang/af/fields/ChainSelect.html b/civicrm/ext/afform/core/ang/af/fields/ChainSelect.html
index d1763602ff3f5b056513ba6f8a9383e98057b669..ed756897ad8d8a359e217cd2cb055321bd5e3a74 100644
--- a/civicrm/ext/afform/core/ang/af/fields/ChainSelect.html
+++ b/civicrm/ext/afform/core/ang/af/fields/ChainSelect.html
@@ -1 +1 @@
-<input class="form-control" crm-ui-select="{data: select2Options, multiple: $ctrl.defn.input_attrs.multiple, placeholder: $ctrl.defn.input_attrs.placeholder}" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]" />
+<input class="form-control" ng-required="$ctrl.defn.required" crm-ui-select="{data: select2Options, multiple: $ctrl.defn.input_attrs.multiple, placeholder: $ctrl.defn.input_attrs.placeholder}" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]" />
diff --git a/civicrm/ext/afform/core/ang/af/fields/CheckBox.html b/civicrm/ext/afform/core/ang/af/fields/CheckBox.html
index f2edac2a4e5f552040899bac96f73028e367b690..169baa2599b73cd6db287e72c7954f505f7ac1f2 100644
--- a/civicrm/ext/afform/core/ang/af/fields/CheckBox.html
+++ b/civicrm/ext/afform/core/ang/af/fields/CheckBox.html
@@ -4,4 +4,4 @@
     <label for="{{ fieldId + opt.id }}">{{:: opt.label }}</label>
   </li>
 </ul>
-<input type="checkbox" ng-if="!$ctrl.defn.options" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]" />
+<input type="checkbox" ng-required="$ctrl.defn.required" ng-if="!$ctrl.defn.options" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]" />
diff --git a/civicrm/ext/afform/core/ang/af/fields/Date.html b/civicrm/ext/afform/core/ang/af/fields/Date.html
index 2707b64a4aa1954c6611542154ee219063c390cd..2722191d28815fbf2a1adafb0f5ae29b2b62d8f9 100644
--- a/civicrm/ext/afform/core/ang/af/fields/Date.html
+++ b/civicrm/ext/afform/core/ang/af/fields/Date.html
@@ -1,6 +1,6 @@
 <input ng-if=":: !$ctrl.defn.search_range" class="form-control" crm-ui-datepicker=":: $ctrl.defn.input_attrs" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]" />
 <div ng-if=":: $ctrl.defn.search_range" class="form-inline">
-  <input class="form-control" crm-ui-datepicker=":: $ctrl.inputAttrs[1]" id="{{:: fieldId }}1" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]['>=']" />
+  <input class="form-control" ng-required="$ctrl.defn.required" crm-ui-datepicker=":: $ctrl.inputAttrs[1]" id="{{:: fieldId }}1" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]['>=']" />
   <span class="af-field-range-sep">-</span>
   <input class="form-control" crm-ui-datepicker=":: $ctrl.inputAttrs[2]" id="{{:: fieldId }}2" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]['<=']" />
 </div>
diff --git a/civicrm/ext/afform/core/ang/af/fields/EntityRef.html b/civicrm/ext/afform/core/ang/af/fields/EntityRef.html
index 2874725fbf2528da616c1288a0cf259f9442db06..70cb8d2284cbd1b65d147b26340db92d5929dddc 100644
--- a/civicrm/ext/afform/core/ang/af/fields/EntityRef.html
+++ b/civicrm/ext/afform/core/ang/af/fields/EntityRef.html
@@ -1 +1 @@
-<input class="form-control" id="{{:: fieldId }}" ng-model="getSetSelect" ng-model-options="{getterSetter: true}" crm-entityref="{entity: $ctrl.defn.fk_entity, select: {multiple: !!$ctrl.defn.input_attrs.multiple, placeholder: $ctrl.defn.input_attrs.placeholder}}" >
+<input class="form-control" id="{{:: fieldId }}" ng-required="$ctrl.defn.required" ng-model="getSetSelect" ng-model-options="{getterSetter: true}" crm-entityref="{entity: $ctrl.defn.fk_entity, select: {multiple: !!$ctrl.defn.input_attrs.multiple, placeholder: $ctrl.defn.input_attrs.placeholder}}" >
diff --git a/civicrm/ext/afform/core/ang/af/fields/Existing.html b/civicrm/ext/afform/core/ang/af/fields/Existing.html
new file mode 100644
index 0000000000000000000000000000000000000000..7824c6dfdc2ac11e3437cfdd17a18d23f2750366
--- /dev/null
+++ b/civicrm/ext/afform/core/ang/af/fields/Existing.html
@@ -0,0 +1,9 @@
+<input id="{{:: fieldId }}"
+       class="form-control"
+       ng-disabled="$ctrl.afFieldset.getEntity().actions.update === false"
+       ng-model="getSetSelect"
+       ng-model-options="{getterSetter: true}"
+       crm-autocomplete="$ctrl.defn.entity"
+       crm-autocomplete-params="{formName: 'afform:' + $ctrl.afFieldset.getFormName(), fieldName: $ctrl.afFieldset.modelName + ':' + $ctrl.fieldName}"
+       placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}"
+       ng-change="$ctrl.onSelectExisting()" >
diff --git a/civicrm/ext/afform/core/ang/af/fields/File.html b/civicrm/ext/afform/core/ang/af/fields/File.html
index 1412e80138344b6f49c156f465476574af4e49bb..c02d56d8bb1e6520cc57dfc2f4569f9bbffa3ce1 100644
--- a/civicrm/ext/afform/core/ang/af/fields/File.html
+++ b/civicrm/ext/afform/core/ang/af/fields/File.html
@@ -1,3 +1,4 @@
 <input type="file" nv-file-select
+       ng-required="$ctrl.defn.required"
        uploader="$ctrl.afFieldset.afFormCtrl.fileUploader"
        options="{crmApiParams: $ctrl.getFileUploadParams}">
diff --git a/civicrm/ext/afform/core/ang/af/fields/Number.html b/civicrm/ext/afform/core/ang/af/fields/Number.html
index 2675bcc8652bb63bda42c5bfa1b60f2bd1571d3c..3980ec65a8cb6cde94cc8aa999c2d6751217b546 100644
--- a/civicrm/ext/afform/core/ang/af/fields/Number.html
+++ b/civicrm/ext/afform/core/ang/af/fields/Number.html
@@ -1,4 +1,4 @@
-<input ng-if=":: !$ctrl.defn.search_range" class="form-control" type="number" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" >
+<input ng-if=":: !$ctrl.defn.search_range" class="form-control" ng-required="$ctrl.defn.required" type="number" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" >
 <div ng-if=":: $ctrl.defn.search_range" class="form-inline">
   <input class="form-control" type="number" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]['>=']" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" >
   <span class="af-field-range-sep">-</span>
diff --git a/civicrm/ext/afform/core/ang/af/fields/Text.html b/civicrm/ext/afform/core/ang/af/fields/Text.html
index 862fa07322d2f04b185786b32754899a774a4a6e..fe9c3cf138f8e501a98bd78acd7889ae6baa9a1b 100644
--- a/civicrm/ext/afform/core/ang/af/fields/Text.html
+++ b/civicrm/ext/afform/core/ang/af/fields/Text.html
@@ -1,4 +1,4 @@
-<input ng-if=":: !$ctrl.defn.search_range" class="form-control" type="text" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" >
+<input ng-if=":: !$ctrl.defn.search_range" class="form-control" type="text" ng-required="$ctrl.defn.required" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" >
 <div ng-if=":: $ctrl.defn.search_range" class="form-inline">
   <input class="form-control" type="text" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]['>=']" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" >
   <span class="af-field-range-sep">-</span>
diff --git a/civicrm/ext/afform/core/ang/af/fields/TextArea.html b/civicrm/ext/afform/core/ang/af/fields/TextArea.html
index 6ded2d4f1ad5ab2764bca31dddf72aa6db21c186..3d10e3acbf3457f98b434762a256ed1c39e9c3d7 100644
--- a/civicrm/ext/afform/core/ang/af/fields/TextArea.html
+++ b/civicrm/ext/afform/core/ang/af/fields/TextArea.html
@@ -1 +1 @@
-<textarea class="crm-form-textarea" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]" ></textarea>
+<textarea class="crm-form-textarea" id="{{:: fieldId }}" ng-required="$ctrl.defn.required" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]" ></textarea>
diff --git a/civicrm/ext/afform/core/info.xml b/civicrm/ext/afform/core/info.xml
index e01c86c89ee5d5e43077e19d541dd7d81a083f3c..428fc5613f0260472bcc8ef9a1b2e0888efc3c81 100644
--- a/civicrm/ext/afform/core/info.xml
+++ b/civicrm/ext/afform/core/info.xml
@@ -13,10 +13,10 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-01-09</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>beta</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <comments>The Form Core extension is required to use any dynamic form. To administer and edit forms, also install the Form Builder extension.</comments>
   <civix>
diff --git a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetFieldsTest.php b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetFieldsTest.php
deleted file mode 100644
index b42cd4af4c35819daff1b20b376c6e68eee94f0c..0000000000000000000000000000000000000000
--- a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetFieldsTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-<?php
-namespace Civi\Afform;
-
-use Civi\Api4\Afform;
-use Civi\Test\HeadlessInterface;
-
-/**
- * @group headless
- */
-class AfformGetFieldsTest extends \PHPUnit\Framework\TestCase implements HeadlessInterface {
-
-  public function setUpHeadless() {
-    return \Civi\Test::headless()->installMe(__DIR__)->apply();
-  }
-
-  public function testGetFields() {
-    $fields = Afform::getFields(FALSE)
-      ->setAction('get')
-      ->execute()->indexBy('name');
-    $this->assertTrue($fields['type']['options']);
-    $this->assertEquals(['name', 'label', 'icon', 'description'], $fields['type']['suffixes']);
-
-    $this->assertTrue($fields['base_module']['options']);
-    $this->assertTrue($fields['contact_summary']['options']);
-  }
-
-}
diff --git a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php
index 8be0dc3fb128d67f62df18e8983d8ad90b561b45..3218f02869556f6937c5cdcd472e2be36fb6a6f5 100644
--- a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php
+++ b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php
@@ -55,6 +55,23 @@ class AfformGetTest extends \PHPUnit\Framework\TestCase implements HeadlessInter
     $this->assertArrayNotHasKey('base_module', $result);
   }
 
+  public function testAfformAutocomplete(): void {
+    $title = uniqid();
+    Afform::create()
+      ->addValue('name', $this->formName)
+      ->addValue('title', $title)
+      ->addValue('type', 'form')
+      ->execute();
+
+    $result = Afform::autocomplete()
+      ->setInput(substr($title, 0, 9))
+      ->execute();
+
+    $this->assertEquals($this->formName, $result[0]['id']);
+    $this->assertEquals($title, $result[0]['label']);
+    $this->assertEquals('fa-list-alt', $result[0]['icon']);
+  }
+
   public function testGetSearchDisplays() {
     Afform::create()
       ->addValue('name', $this->formName)
diff --git a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformMetadataTest.php b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformMetadataTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..5dfc62e1bc19e0807673d43acc0f06842fb782b5
--- /dev/null
+++ b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformMetadataTest.php
@@ -0,0 +1,35 @@
+<?php
+namespace Civi\Afform;
+
+use Civi\Api4\Afform;
+use Civi\Test\HeadlessInterface;
+
+/**
+ * @group headless
+ */
+class AfformMetadataTest extends \PHPUnit\Framework\TestCase implements HeadlessInterface {
+
+  public function setUpHeadless() {
+    return \Civi\Test::headless()->install(['org.civicrm.search_kit', 'org.civicrm.afform', 'org.civicrm.afform_admin'])->apply();
+  }
+
+  public function testGetFields():void {
+    $fields = Afform::getFields(FALSE)
+      ->setAction('get')
+      ->execute()->indexBy('name');
+    $this->assertTrue($fields['type']['options']);
+    $this->assertEquals(['name', 'label', 'icon', 'description'], $fields['type']['suffixes']);
+
+    $this->assertTrue($fields['base_module']['options']);
+    $this->assertTrue($fields['contact_summary']['options']);
+  }
+
+  public function testGetEntityFields():void {
+    $individualFields = \Civi\AfformAdmin\AfformAdminMeta::getFields('Individual');
+
+    // Ensure the "Existing" contact field exists
+    $this->assertEquals('Existing Contact', $individualFields['id']['label']);
+    $this->assertEquals('Existing', $individualFields['id']['input_type']);
+  }
+
+}
diff --git a/civicrm/ext/afform/html/info.xml b/civicrm/ext/afform/html/info.xml
index ce1ad31a9db2d8549c25f66837876d95550837b8..8c605810d7ce765817c2cba83db57ba9c4cd592f 100644
--- a/civicrm/ext/afform/html/info.xml
+++ b/civicrm/ext/afform/html/info.xml
@@ -13,10 +13,10 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-01-09</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.afform</ext>
diff --git a/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.html b/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.html
index 90de6fee163d4ab35923387fef1d5d7276645ff2..f0629148e3997bd2ca02ba7d2a25cdac0236e59e 100644
--- a/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.html
+++ b/civicrm/ext/afform/mock/ang/testContactEmailSearchForm.aff.html
@@ -2,6 +2,7 @@
   <af-field name="source" />
   <div class="af-container af-layout-inline">
     <af-field name="Contact_Email_contact_id_01.email" />
+    <af-field name="YEAR_birth_date" defn="{search_range: true}" />
     <af-field name="Contact_Email_contact_id_01.location_type_id" defn="{input_attrs: {multiple: true}}" />
   </div>
   <crm-search-display-table filters="{last_name: 'AfformTest', contact_type: dummy_var}" search-name="TestContactEmailSearch" display-name="TestContactEmailDisplay"></crm-search-display-table>
diff --git a/civicrm/ext/afform/mock/info.xml b/civicrm/ext/afform/mock/info.xml
index d193212c725b1ea33c4796c0696c001d90902556..6d1d7477ef298ac92b92e7044867ba1c1d30958d 100644
--- a/civicrm/ext/afform/mock/info.xml
+++ b/civicrm/ext/afform/mock/info.xml
@@ -12,13 +12,13 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-01-09</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.afform</ext>
diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..748c8fe32e4ff2a4c16e6ee5bcce0e26843e51de
--- /dev/null
+++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php
@@ -0,0 +1,74 @@
+<?php
+
+use Civi\Api4\Contact;
+
+/**
+ * Test case for Afform with autocomplete.
+ *
+ * @group headless
+ */
+class api_v4_AfformAutocompleteUsageTest extends api_v4_AfformUsageTestCase {
+
+  /**
+   * Tests creating a relationship between multiple contacts
+   */
+  public function testAutocompleteWithSavedSearchFilter(): void {
+    $layout = <<<EOHTML
+<af-form ctrl="afform">
+  <af-entity data="{contact_type: 'Individual'}" type="Contact" name="Individual1" label="Individual 1" actions="{create: true, update: true}" security="RBAC" />
+  <fieldset af-fieldset="Individual1" class="af-container" af-title="Individual 1">
+    <div class="af-container">
+      <af-field name="id" defn="{saved_search: 'the_unit_test_search', input_attrs: {}}" />
+      <afblock-name-individual></afblock-name-individual>
+    </div>
+  </fieldset>
+</af-form>
+EOHTML;
+
+    $this->useValues([
+      'layout' => $layout,
+      'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION,
+    ]);
+
+    // Saved search for filtering
+    \Civi\Api4\SavedSearch::create(FALSE)
+      ->setValues([
+        'name' => 'the_unit_test_search',
+        'label' => 'the_unit_test_search',
+        'api_entity' => 'Contact',
+        'api_params' => [
+          'version' => 4,
+          'select' => ['id', 'display_name'],
+          'orderBy' => [],
+          'where' => [
+            ['contact_type:name', '=', 'Individual'],
+            ['source', '=', 'Yes'],
+          ],
+        ],
+      ])
+      ->execute();
+
+    $lastName = uniqid(__FUNCTION__);
+
+    $sampleContacts = [
+      ['source' => 'Yes', 'first_name' => 'B'],
+      ['source' => 'Yes', 'first_name' => 'A'],
+      ['source' => 'No', 'first_name' => 'C'],
+    ];
+    Contact::save(FALSE)
+      ->setRecords($sampleContacts)
+      ->addDefault('last_name', $lastName)
+      ->execute();
+
+    $result = Contact::autocomplete()
+      ->setFormName('afform:' . $this->formName)
+      ->setFieldName('Individual1:id')
+      ->setInput($lastName)
+      ->execute();
+
+    $this->assertCount(2, $result);
+    $this->assertEquals('A ' . $lastName, $result[0]['label']);
+    $this->assertEquals('B ' . $lastName, $result[1]['label']);
+  }
+
+}
diff --git a/civicrm/ext/authx/info.xml b/civicrm/ext/authx/info.xml
index 0d3d5257534584be843b457f0492fb2e1c8969f4..53351b658845ad6169b75fc7051d94f33155d81a 100644
--- a/civicrm/ext/authx/info.xml
+++ b/civicrm/ext/authx/info.xml
@@ -15,10 +15,10 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-02-11</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <comments>AuthX enables remote applications to connect to CiviCRM. Use it to enable and disable different forms of authentication (such as username-password, API key, and/or JWT).</comments>
   <classloader>
diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php
index b446671e1f37891ed4e9dac94d87d6688557480b..be9ed1e498295793d5b4f24638837cbdeb4afb27 100644
--- a/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php
+++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php
@@ -448,7 +448,7 @@ class AllFlowsTest extends \PHPUnit\Framework\TestCase implements EndToEndInterf
         case 'A':
           $request = $this->requestMyContact();
           $response = $http->send($request);
-          $this->assertAnonymousContact($response);
+          $this->assertAnonymousContact($response, 'Expected Anonymous Contact in step #' . $i);
           $actualSteps .= 'A';
           break;
 
@@ -659,8 +659,9 @@ class AllFlowsTest extends \PHPUnit\Framework\TestCase implements EndToEndInterf
    * Assert the AJAX request provided empty contact information
    *
    * @param \Psr\Http\Message\ResponseInterface $response
+   * @param string $additionalMessage
    */
-  public function assertAnonymousContact(ResponseInterface $response): void {
+  public function assertAnonymousContact(ResponseInterface $response, $additionalMessage = ''): void {
     $formattedFailure = $this->formatFailure($response);
     $this->assertContentType('application/json', $response);
     $this->assertStatusCode(200, $response);
@@ -668,8 +669,8 @@ class AllFlowsTest extends \PHPUnit\Framework\TestCase implements EndToEndInterf
     if (json_last_error() !== JSON_ERROR_NONE || empty($j)) {
       $this->fail('Malformed JSON' . $formattedFailure);
     }
-    $this->assertTrue(array_key_exists('contact_id', $j) && $j['contact_id'] === NULL, 'contact_id should be null' . $formattedFailure);
-    $this->assertTrue(array_key_exists('user_id', $j) && $j['user_id'] === NULL, 'user_id should be null' . $formattedFailure);
+    $this->assertTrue(array_key_exists('contact_id', $j) && $j['contact_id'] === NULL, 'contact_id should be null' . $formattedFailure . ' ' . $additionalMessage);
+    $this->assertTrue(array_key_exists('user_id', $j) && $j['user_id'] === NULL, 'user_id should be null' . $formattedFailure . ' ' . $additionalMessage);
   }
 
   /**
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminContactTypes.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminContactTypes.aff.html
new file mode 100644
index 0000000000000000000000000000000000000000..fc89171324d1990f1c0555294afc2f724cb9aba0
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminContactTypes.aff.html
@@ -0,0 +1,9 @@
+<div af-fieldset="">
+  <div class="af-markup">
+    <div class="help">
+      {{:: ts('CiviCRM comes with 3 basic (built-in) contact types: Individual, Household, and Organization. You can create additional contact types based on these basic types to further differentiate contacts (for example you might create Student, Parent, Staff, and /or Volunteer "subtypes" from the basic Individual type...). You can also re-name the built-in types. Contact subtypes are especially useful when you need to collect and display different sets of custom data for different types of contacts.') }}
+      <a href="https://docs.civicrm.org/user/en/latest/organising-your-data/contacts/" target="_blank" class="crm-doc-link no-popup">{{:: ts('Learn more...') }}</a>
+    </div>
+  </div>
+  <crm-search-display-table search-name="Administer_Contact_Types" display-name="Contact_Types_Table"></crm-search-display-table>
+</div>
diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminContactTypes.aff.json b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminContactTypes.aff.json
new file mode 100644
index 0000000000000000000000000000000000000000..902c469d7f2aa57cbb5d0a93e0ddcadf09b17d68
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminContactTypes.aff.json
@@ -0,0 +1,8 @@
+{
+    "type": "search",
+    "title": "Contact Types",
+    "description": "Administer contact types and sub-types",
+    "icon": "fa-list-alt",
+    "server_route": "civicrm/admin/options/subtype",
+    "permission": "access CiviCRM"
+}
diff --git a/civicrm/ext/civicrm_admin_ui/info.xml b/civicrm/ext/civicrm_admin_ui/info.xml
index 52d5f66a3841aba7ce633c7d454de5e462109953..2b85c74479b4e63bf981c47ecd44a6fd876928fd 100644
--- a/civicrm/ext/civicrm_admin_ui/info.xml
+++ b/civicrm/ext/civicrm_admin_ui/info.xml
@@ -15,10 +15,10 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2022-01-02</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.search_kit</ext>
diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.php
new file mode 100644
index 0000000000000000000000000000000000000000..bce63cb882ed98c9d755646b137f0933b82a9fac
--- /dev/null
+++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.php
@@ -0,0 +1,151 @@
+<?php
+return [
+  [
+    'name' => 'SavedSearch_Administer_Contact_Types',
+    'entity' => 'SavedSearch',
+    'cleanup' => 'always',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Administer_Contact_Types',
+        'label' => 'Administer Contact Types',
+        'form_values' => NULL,
+        'mapping_id' => NULL,
+        'search_custom_id' => NULL,
+        'api_entity' => 'ContactType',
+        'api_params' => [
+          'version' => 4,
+          'select' => [
+            'label',
+            'parent_id:label',
+            'description',
+          ],
+          'orderBy' => [],
+          'where' => [],
+          'groupBy' => [],
+          'join' => [],
+          'having' => [],
+        ],
+        'expires_date' => NULL,
+        'description' => NULL,
+      ],
+    ],
+  ],
+  [
+    'name' => 'SavedSearch_Administer_Contact_Types_SearchDisplay_Contact_Types_Table',
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'always',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Contact_Types_Table',
+        'label' => 'Contact Types Table',
+        'saved_search_id.name' => 'Administer_Contact_Types',
+        'type' => 'table',
+        'settings' => [
+          'actions' => FALSE,
+          'limit' => 50,
+          'classes' => [
+            'table',
+            'table-striped',
+          ],
+          'pager' => [
+            'show_count' => TRUE,
+          ],
+          'placeholder' => 5,
+          'sort' => [
+            [
+              'parent_id:label',
+              'ASC',
+            ],
+            [
+              'label',
+              'ASC',
+            ],
+          ],
+          'columns' => [
+            [
+              'type' => 'field',
+              'key' => 'label',
+              'dataType' => 'String',
+              'label' => 'Label',
+              'sortable' => TRUE,
+              'icons' => [
+                [
+                  'field' => 'icon',
+                  'side' => 'left',
+                ],
+              ],
+              'editable' => TRUE,
+            ],
+            [
+              'type' => 'field',
+              'key' => 'parent_id:label',
+              'dataType' => 'Integer',
+              'label' => 'Parent',
+              'sortable' => TRUE,
+              'icons' => [
+                [
+                  'icon' => 'fa-lock',
+                  'side' => 'left',
+                  'if' => [
+                    'parent_id:label',
+                    'IS EMPTY',
+                  ],
+                ],
+              ],
+            ],
+            [
+              'type' => 'field',
+              'key' => 'description',
+              'dataType' => 'Text',
+              'label' => 'Description',
+              'sortable' => TRUE,
+              'editable' => TRUE,
+            ],
+            [
+              'size' => 'btn-sm',
+              'links' => [
+                [
+                  'entity' => 'ContactType',
+                  'action' => 'update',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-pencil',
+                  'text' => 'Edit',
+                  'style' => 'default',
+                  'path' => '',
+                  'condition' => [],
+                ],
+                [
+                  'entity' => 'ContactType',
+                  'action' => 'delete',
+                  'join' => '',
+                  'target' => 'crm-popup',
+                  'icon' => 'fa-trash',
+                  'text' => 'Delete',
+                  'style' => 'danger',
+                  'path' => '',
+                  'condition' => [
+                    'parent_id:label',
+                    'IS NOT EMPTY',
+                  ],
+                ],
+              ],
+              'type' => 'buttons',
+              'alignment' => 'text-right',
+            ],
+          ],
+          'addButton' => [
+            'path' => 'civicrm/admin/options/subtype/edit?action=add&reset=1',
+            'text' => 'Add Contact Type',
+            'icon' => 'fa-plus',
+          ],
+        ],
+        'acl_bypass' => FALSE,
+      ],
+    ],
+  ],
+];
diff --git a/civicrm/ext/civigrant/CRM/Grant/BAO/Grant.php b/civicrm/ext/civigrant/CRM/Grant/BAO/Grant.php
index 51d09236b58883055a0a4db03dc603bbe55e0962..fbf9f1420ceb004a85105767c4ab4d18d5ca901e 100644
--- a/civicrm/ext/civigrant/CRM/Grant/BAO/Grant.php
+++ b/civicrm/ext/civigrant/CRM/Grant/BAO/Grant.php
@@ -114,12 +114,12 @@ class CRM_Grant_BAO_Grant extends CRM_Grant_DAO_Grant {
       $title = CRM_Contact_BAO_Contact::displayName($grant->contact_id) . ' - ' . ts('Grant') . ': ' . $grantTypes[$grant->grant_type_id];
 
       $recentOther = [];
-      if (CRM_Core_Permission::checkActionPermission('CiviGrant', CRM_Core_Action::UPDATE)) {
+      if (CRM_Core_Permission::check('edit grants')) {
         $recentOther['editUrl'] = CRM_Utils_System::url('civicrm/contact/view/grant',
           "action=update&reset=1&id={$grant->id}&cid={$grant->contact_id}&context=home"
         );
       }
-      if (CRM_Core_Permission::checkActionPermission('CiviGrant', CRM_Core_Action::DELETE)) {
+      if (CRM_Core_Permission::check('delete in CiviGrant')) {
         $recentOther['deleteUrl'] = CRM_Utils_System::url('civicrm/contact/view/grant',
           "action=delete&reset=1&id={$grant->id}&cid={$grant->contact_id}&context=home"
         );
diff --git a/civicrm/ext/civigrant/CRM/Grant/BAO/Query.php b/civicrm/ext/civigrant/CRM/Grant/BAO/Query.php
index 5247bac153b1c5bbb0fcc79fbb9700356c54efea..503f01e9bdd72aaa136c57936c90bad093e934e4 100644
--- a/civicrm/ext/civigrant/CRM/Grant/BAO/Query.php
+++ b/civicrm/ext/civigrant/CRM/Grant/BAO/Query.php
@@ -227,8 +227,8 @@ class CRM_Grant_BAO_Query extends CRM_Contact_BAO_Query_Interface {
 
   /**
    * @param string $name
-   * @param $mode
-   * @param $side
+   * @param int $mode
+   * @param string $side
    *
    * @return null|string
    */
diff --git a/civicrm/ext/civigrant/CRM/Grant/Form/Grant.php b/civicrm/ext/civigrant/CRM/Grant/Form/Grant.php
index 6d9a7aab2691a2fb6f0857f59f7b2c8e1e2dbd9d..870ddf432682afde9c48b495a28d278dbeb6d6fb 100644
--- a/civicrm/ext/civigrant/CRM/Grant/Form/Grant.php
+++ b/civicrm/ext/civigrant/CRM/Grant/Form/Grant.php
@@ -54,8 +54,9 @@ class CRM_Grant_Form_Grant extends CRM_Core_Form {
     $this->assign('action', $this->_action);
     $this->assign('context', $this->_context);
 
-    //check permission for action.
-    if (!CRM_Core_Permission::checkActionPermission('CiviGrant', $this->_action)) {
+    // check permission for action.
+    $perm = $this->_action & CRM_Core_Action::DELETE ? 'delete in CiviGrant' : 'edit grants';
+    if (!CRM_Core_Permission::check($perm)) {
       CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.'));
     }
 
diff --git a/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php b/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php
index b6e4cfa4f55fb43dc99b20403ea261fe96c0801e..261060bfeb34ace44e57111454139bb30cfee280 100644
--- a/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php
+++ b/civicrm/ext/civigrant/CRM/Grant/Form/GrantView.php
@@ -76,12 +76,12 @@ class CRM_Grant_Form_GrantView extends CRM_Core_Form {
     $title = CRM_Contact_BAO_Contact::displayName($values['contact_id']) . ' - ' . ts('Grant') . ': ' . CRM_Utils_Money::format($values['amount_total']) . ' (' . $grantType[$values['grant_type_id']] . ')';
 
     $recentOther = [];
-    if (CRM_Core_Permission::checkActionPermission('CiviGrant', CRM_Core_Action::UPDATE)) {
+    if (CRM_Core_Permission::check('edit grants')) {
       $recentOther['editUrl'] = CRM_Utils_System::url('civicrm/contact/view/grant',
         "action=update&reset=1&id={$values['id']}&cid={$values['contact_id']}&context=home"
       );
     }
-    if (CRM_Core_Permission::checkActionPermission('CiviGrant', CRM_Core_Action::DELETE)) {
+    if (CRM_Core_Permission::check('delete in CiviGrant')) {
       $recentOther['deleteUrl'] = CRM_Utils_System::url('civicrm/contact/view/grant',
         "action=delete&reset=1&id={$values['id']}&cid={$values['contact_id']}&context=home"
       );
diff --git a/civicrm/ext/civigrant/CRM/Grant/Form/Task/Delete.php b/civicrm/ext/civigrant/CRM/Grant/Form/Task/Delete.php
index 5a05c0d98cc576500a9ab23ea0829ed4688583e3..c6f3036cac2811f594e13579cc399252adc699ba 100644
--- a/civicrm/ext/civigrant/CRM/Grant/Form/Task/Delete.php
+++ b/civicrm/ext/civigrant/CRM/Grant/Form/Task/Delete.php
@@ -39,7 +39,7 @@ class CRM_Grant_Form_Task_Delete extends CRM_Grant_Form_Task {
     parent::preProcess();
 
     //check permission for delete.
-    if (!CRM_Core_Permission::checkActionPermission('CiviGrant', CRM_Core_Action::DELETE)) {
+    if (!CRM_Core_Permission::check('delete in CiviGrant')) {
       CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.'));
     }
   }
diff --git a/civicrm/ext/civigrant/CRM/Grant/Form/Task/Update.php b/civicrm/ext/civigrant/CRM/Grant/Form/Task/Update.php
index d8388cb5f29e797c3ffa044fc1ac254bc2b87beb..074ef3fee8e385ec39ec3f3d8c18378bb70069cf 100644
--- a/civicrm/ext/civigrant/CRM/Grant/Form/Task/Update.php
+++ b/civicrm/ext/civigrant/CRM/Grant/Form/Task/Update.php
@@ -31,7 +31,7 @@ class CRM_Grant_Form_Task_Update extends CRM_Grant_Form_Task {
     parent::preProcess();
 
     //check permission for update.
-    if (!CRM_Core_Permission::checkActionPermission('CiviGrant', CRM_Core_Action::UPDATE)) {
+    if (!CRM_Core_Permission::check('edit grants')) {
       CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.'));
     }
   }
diff --git a/civicrm/ext/civigrant/info.xml b/civicrm/ext/civigrant/info.xml
index 416399128656b9588ec0c7881b9c743034fff58b..ade74ae08f5066884bce0dbaf67b472f7d48f5ef 100644
--- a/civicrm/ext/civigrant/info.xml
+++ b/civicrm/ext/civigrant/info.xml
@@ -13,10 +13,10 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-11-11</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <comments>CiviGrant was originally a core component before migrating to an extension</comments>
   <requires>
diff --git a/civicrm/ext/civigrant/managed/OptionGroup_recent_items_providers_OptionValue_Grant.mgd.php b/civicrm/ext/civigrant/managed/OptionGroup_recent_items_providers_OptionValue_Grant.mgd.php
index d0359dd2f4ae36444d21c2681a8967d0c20cc7fe..2c0d94417de46f619d471da06b79e8d219bf67fd 100644
--- a/civicrm/ext/civigrant/managed/OptionGroup_recent_items_providers_OptionValue_Grant.mgd.php
+++ b/civicrm/ext/civigrant/managed/OptionGroup_recent_items_providers_OptionValue_Grant.mgd.php
@@ -22,19 +22,9 @@ return [
         'option_group_id.name' => 'recent_items_providers',
         'label' => E::ts('Grants'),
         'value' => 'Grant',
-        'name' => 'Grants',
-        'grouping' => NULL,
-        'filter' => 0,
-        'is_default' => FALSE,
-        'description' => NULL,
-        'is_optgroup' => FALSE,
-        'is_reserved' => FALSE,
+        'name' => 'Grant',
+        'is_reserved' => TRUE,
         'is_active' => TRUE,
-        'icon' => NULL,
-        'color' => NULL,
-        'component_id' => NULL,
-        'domain_id' => NULL,
-        'visibility_id' => NULL,
       ],
     ],
   ],
diff --git a/civicrm/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php b/civicrm/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php
new file mode 100644
index 0000000000000000000000000000000000000000..4643a24a7e60db6febcd0d7f38811ed5510030b2
--- /dev/null
+++ b/civicrm/ext/civiimport/Civi/Api4/Event/Subscriber/ImportSubscriber.php
@@ -0,0 +1,113 @@
+<?php
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+namespace Civi\Api4\Event\Subscriber;
+
+use Civi;
+use Civi\API\Event\AuthorizeEvent;
+use Civi\API\Events;
+use Civi\Api4\Entity;
+use Civi\Api4\Managed;
+use Civi\Api4\UserJob;
+use Civi\Core\Event\PostEvent;
+use Civi\Core\Event\GenericHookEvent;
+use CRM_Core_DAO_AllCoreTables;
+use Civi\Api4\Import;
+use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+use Civi\API\Exception\UnauthorizedException;
+
+/**
+ * Listening class that registers each Import table as an entity.
+ */
+class ImportSubscriber implements EventSubscriberInterface {
+
+  /**
+   * Get the events this class listens to.
+   *
+   * @return string[]
+   */
+  public static function getSubscribedEvents(): array {
+    return [
+      'hook_civicrm_post' => 'on_hook_civicrm_post',
+      'civi.api4.entityTypes' => 'on_civi_api4_entityTypes',
+      'civi.api.authorize' => [['onApiAuthorize', Events::W_EARLY]],
+    ];
+  }
+
+  /**
+   * Register each valid import as an entity
+   *
+   * @param \Civi\Core\Event\GenericHookEvent $event
+   */
+  public static function on_civi_api4_entityTypes(GenericHookEvent $event): void {
+    $importEntities = Civi\BAO\Import::getImportTables();
+    foreach ($importEntities as $userJobID => $table) {
+      /** @noinspection PhpUndefinedFieldInspection */
+      $event->entities['Import_' . $userJobID] = [
+        'name' => 'Import_' . $userJobID,
+        'title' => ts('Import Data') . ' ' . $userJobID . (empty($table['created_by']) ? '' : '(' . $table['created_by'] . ')'),
+        'title_plural' => ts('Import Data') . ' ' . $userJobID,
+        'description' => ts('Import Job temporary data'),
+        'primary_key' => ['_id'],
+        'type' => ['Import'],
+        'table_name' => $table['table_name'],
+        'class_args' => [$userJobID],
+        'label_field' => '_id',
+        'searchable' => 'secondary',
+        'paths' => [
+          //  'browse' => "civicrm/eck/entity/list/{$entity_type['name']}",
+          //  'view' => "civicrm/eck/entity?reset=1&action=view&type={$entity_type['name']}&id=[id]",
+          //  'update' => "civicrm/eck/entity/edit/{$entity_type['name']}/[subtype:name]#?{$entity_type['entity_name']}=[id]",
+          //  'add' => "civicrm/eck/entity/edit/{$entity_type['name']}/[subtype:name]",
+        ],
+        'class' => Import::class,
+        'icon' => 'fa-upload',
+      ];
+    }
+  }
+
+  /**
+   * Callback for hook_civicrm_post().
+   */
+  public function on_hook_civicrm_post(PostEvent $event): void {
+    if ($event->entity === 'UserJob') {
+      try {
+        $exists = Entity::get(FALSE)->addWhere('name', '=', 'Import_' . $event->id)->selectRowCount()->execute()->count();
+        if (!$exists || $event->action === 'delete') {
+          // Flush entities cache key so our new Import will load as an entity.
+          Civi::cache('metadata')->set('api4.entities.info', NULL);
+          CRM_Core_DAO_AllCoreTables::flush();
+          Managed::reconcile(FALSE)->setModules(['civiimport'])->execute();
+        }
+      }
+      catch (\CRM_Core_Exception $e) {
+        // Log & move on.
+        \Civi::log()->warning('Failed to flush cache on UserJob clear', ['exception' => $e]);
+        return;
+      }
+    }
+  }
+
+  /**
+   * @param \Civi\API\Event\AuthorizeEvent $event
+   *   API authorization event.
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  public function onApiAuthorize(AuthorizeEvent $event): void {
+    $apiRequest = $event->getApiRequest();
+    $entity = $apiRequest['entity'];
+    if (strpos($entity, 'Import_') === 0) {
+      $userJobID = (int) (str_replace('Import_', '', $entity));
+      if (!UserJob::get(TRUE)->addWhere('id', '=', $userJobID)->selectRowCount()->execute()->count()) {
+        throw new UnauthorizedException('Import access not permitted');
+      }
+    }
+  }
+
+}
diff --git a/civicrm/ext/civiimport/Civi/Api4/Import.php b/civicrm/ext/civiimport/Civi/Api4/Import.php
new file mode 100644
index 0000000000000000000000000000000000000000..c68f42fd5888e7e7305c10f1150d47e336a758ec
--- /dev/null
+++ b/civicrm/ext/civiimport/Civi/Api4/Import.php
@@ -0,0 +1,148 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+namespace Civi\Api4;
+
+use Civi\Api4\Generic\CheckAccessAction;
+use Civi\Api4\Generic\DAOGetAction;
+use Civi\Api4\Generic\DAOGetFieldsAction;
+use Civi\Api4\Action\GetActions;
+use Civi\Api4\Import\Create;
+use Civi\Api4\Import\Save;
+use Civi\Api4\Import\Update;
+use Civi\Api4\Import\Import as ImportAction;
+use Civi\Api4\Import\Validate;
+
+/**
+ * Import entity.
+ *
+ * @searchable secondary
+ * @since 5.54
+ * @package Civi\Api4
+ */
+class Import {
+
+  /**
+   * Constructor.
+   *
+   * This is here cos otherwise phpcs complains about the `import` function
+   * having the same name as the class.
+   */
+  public function __construct() {}
+
+  /**
+   * @param int $userJobID
+   * @param bool $checkPermissions
+   *
+   * @return \Civi\Api4\Generic\DAOGetFieldsAction
+   */
+  public static function getFields(int $userJobID, bool $checkPermissions = TRUE): DAOGetFieldsAction {
+    return (new DAOGetFieldsAction('Import_' . $userJobID, __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
+  /**
+   * @param int $userJobID
+   * @param bool $checkPermissions
+   * @return \Civi\Api4\Generic\DAOGetAction
+   * @throws \CRM_Core_Exception
+   */
+  public static function get(int $userJobID, bool $checkPermissions = TRUE): DAOGetAction {
+    return (new DAOGetAction('Import_' . $userJobID, __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
+  /**
+   * @param int $userJobID
+   * @param bool $checkPermissions
+   * @return \Civi\Api4\Import\Save
+   * @throws \API_Exception
+   */
+  public static function save(int $userJobID, bool $checkPermissions = TRUE): Save {
+    return (new Save('Import_' . $userJobID, __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
+  /**
+   * @param int $userJobID
+   * @param bool $checkPermissions
+   *
+   * @return \Civi\Api4\Import\Create
+   * @throws \API_Exception
+   */
+  public static function create(int $userJobID, bool $checkPermissions = TRUE): Create {
+    return (new Create('Import_' . $userJobID, __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
+  /**
+   * @param int $userJobID
+   * @param bool $checkPermissions
+   * @return \Civi\Api4\Import\Update
+   * @throws \API_Exception
+   */
+  public static function update(int $userJobID, bool $checkPermissions = TRUE): Update {
+    return (new Update('Import_' . $userJobID, __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
+  /**
+   * @param int $userJobID
+   * @param bool $checkPermissions
+   * @return \Civi\Api4\Action\GetActions
+   */
+  public static function getActions(int $userJobID, bool $checkPermissions = TRUE): GetActions {
+    return (new GetActions('Import_' . $userJobID, __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
+  /**
+   * @param int $userJobID
+   * @return \Civi\Api4\Generic\CheckAccessAction
+   * @throws \API_Exception
+   */
+  public static function checkAccess(int $userJobID): CheckAccessAction {
+    return new CheckAccessAction('Import_' . $userJobID, __FUNCTION__);
+  }
+
+  /**
+   * @param int $userJobID
+   * @param bool $checkPermissions
+   *
+   * @return \Civi\Api4\Import\Import
+   *
+   * @throws \API_Exception
+   */
+  public static function import(int $userJobID, bool $checkPermissions = TRUE): ImportAction {
+    return (new ImportAction('Import_' . $userJobID, __FUNCTION__))
+      ->setCheckPermissions($checkPermissions);
+  }
+
+  /**
+   * @param int $userJobID
+   * @param bool $checkPermissions
+   *
+   * @return \Civi\Api4\Import\Validate
+   * @throws \API_Exception
+   */
+  public static function validate(int $userJobID, bool $checkPermissions = TRUE): Validate {
+    return (new Validate('Import_' . $userJobID, __FUNCTION__))->setCheckPermissions($checkPermissions);
+  }
+
+  /**
+   * We need to implement these elsewhere as we permit based on 'created_id'.
+   *
+   * @return array
+   */
+  public static function permissions(): array {
+    return [];
+  }
+
+}
diff --git a/civicrm/templates/CRM/Custom/Import/Form/Summary.tpl b/civicrm/ext/civiimport/Civi/Api4/Import/Create.php
similarity index 77%
rename from civicrm/templates/CRM/Custom/Import/Form/Summary.tpl
rename to civicrm/ext/civiimport/Civi/Api4/Import/Create.php
index 7481dabf61dac6f24218c6cafd451e7e5c4faf16..af9a4f12537ab5e2db065b3d0e79d60f81bd4439 100644
--- a/civicrm/templates/CRM/Custom/Import/Form/Summary.tpl
+++ b/civicrm/ext/civiimport/Civi/Api4/Import/Create.php
@@ -1,4 +1,6 @@
-{*
+<?php
+
+/*
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC. All rights reserved.                        |
  |                                                                    |
@@ -6,5 +8,14 @@
  | permitted exceptions and without any warranty. For full license    |
  | and copyright information, see https://civicrm.org/licensing       |
  +--------------------------------------------------------------------+
-*}
-{include file="CRM/Contact/Import/Form/Summary.tpl"}
+ */
+
+namespace Civi\Api4\Import;
+
+use Civi\Api4\Generic\DAOCreateAction;
+
+class Create extends DAOCreateAction {
+
+  use ImportSaveTrait;
+
+}
diff --git a/civicrm/ext/civiimport/Civi/Api4/Import/Import.php b/civicrm/ext/civiimport/Civi/Api4/Import/Import.php
new file mode 100644
index 0000000000000000000000000000000000000000..60099303bd8076cb5535d307a437feb0b711cf74
--- /dev/null
+++ b/civicrm/ext/civiimport/Civi/Api4/Import/Import.php
@@ -0,0 +1,42 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Import;
+
+use Civi\Api4\Generic\DAOGetAction;
+use Civi\Api4\Generic\Result;
+
+class Import extends DAOGetAction {
+
+  use ImportProcessTrait;
+
+  /**
+   * @throws \CRM_Core_Exception
+   */
+  public function _run(Result $result): void {
+    $userJobID = (int) str_replace('Import_', '', $this->_entityName);
+    $where = $this->where;
+    $this->addWhere('_status', 'IN', ['new', 'valid']);
+    $this->getImportRows($result);
+    $parser = $this->getParser($userJobID);
+    foreach ($result as $row) {
+      $parser->import(array_values($row));
+    }
+    $parser->doPostImportActions();
+
+    // Re-fetch the validated result with updated messages.
+    $this->where = $where;
+    $this->addSelect('*');
+    parent::_run($result);
+  }
+
+}
diff --git a/civicrm/ext/civiimport/Civi/Api4/Import/ImportProcessTrait.php b/civicrm/ext/civiimport/Civi/Api4/Import/ImportProcessTrait.php
new file mode 100644
index 0000000000000000000000000000000000000000..c60a4d5b4e2125f54f028facc919d09a7f22fd5b
--- /dev/null
+++ b/civicrm/ext/civiimport/Civi/Api4/Import/ImportProcessTrait.php
@@ -0,0 +1,84 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Import;
+
+use Civi\Api4\Generic\Result;
+use Civi\Api4\Import;
+use Civi\Api4\UserJob;
+
+/**
+ * Code shared by Import Save/Update actions.
+ *
+ * @method getCheckPermissions()
+ */
+trait ImportProcessTrait {
+
+  /**
+   * Get the parser for the import
+   *
+   * @return \CRM_Import_Parser|\CRM_Contribute_Import_Parser_Contribution
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getParser(int $userJobID) {
+    $userJob = UserJob::get($this->getCheckPermissions())
+      ->addWhere('id', '=', $userJobID)
+      ->addSelect('job_type')
+      ->execute()
+      ->first();
+    $parserClass = NULL;
+    foreach (\CRM_Core_BAO_UserJob::getTypes() as $userJobType) {
+      if ($userJob['job_type'] === $userJobType['id']) {
+        $parserClass = $userJobType['class'];
+      }
+    }
+    /** @var \CRM_Import_Parser|\CRM_Contribute_Import_Parser_Contribution $parser */
+    $parser = new $parserClass();
+    $parser->setUserJobID($userJobID);
+    $parser->init();
+    return $parser;
+  }
+
+  /**
+   * Get the selected import rows.
+   *
+   * @param \Civi\Api4\Generic\Result $result
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getImportRows(Result $result): void {
+    $userJobID = (int) str_replace('Import_', '', $this->_entityName);
+    $this->addSelect('*');
+    $importFields = array_keys((array) Import::getFields($userJobID, $this->getCheckPermissions())
+      ->addSelect('name')
+      ->addWhere('name', 'NOT LIKE', '_%')
+      ->execute()
+      ->indexBy('name'));
+    $importFields[] = '_id';
+    $importFields[] = '_entity_id';
+    $this->setSelect($importFields);
+    parent::_run($result);
+    foreach ($result as &$row) {
+      if ($row['_entity_id']) {
+        // todo - how should we handle this? Skip, exception. At this case
+        // it is non ui accessible so this is good for now.
+        throw new \CRM_Core_Exception('Row already imported');
+      }
+      // Push ID to the end as the get has moved it to the front & order matters here.
+      $rowID = $row['_id'];
+      unset($row['_id'], $row['_entity_id']);
+      $row['_id'] = $rowID;
+    }
+  }
+
+}
diff --git a/civicrm/CRM/Contribute/Import/Form/Summary.php b/civicrm/ext/civiimport/Civi/Api4/Import/ImportSaveTrait.php
similarity index 59%
rename from civicrm/CRM/Contribute/Import/Form/Summary.php
rename to civicrm/ext/civiimport/Civi/Api4/Import/ImportSaveTrait.php
index 3d01d46709ff87ce1d4c76db1fdeb17aab1c8dbb..1a9227e6305afeca09f7cd8581fb262ed0e5fe92 100644
--- a/civicrm/CRM/Contribute/Import/Form/Summary.php
+++ b/civicrm/ext/civiimport/Civi/Api4/Import/ImportSaveTrait.php
@@ -1,4 +1,5 @@
 <?php
+
 /*
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC. All rights reserved.                        |
@@ -9,15 +10,22 @@
  +--------------------------------------------------------------------+
  */
 
-/**
- *
- * @package CRM
- * @copyright CiviCRM LLC https://civicrm.org/licensing
- */
+namespace Civi\Api4\Import;
 
 /**
- * This class summarizes the import results.
+ * Code shared by Import Save/Update actions.
  */
-class CRM_Contribute_Import_Form_Summary extends CRM_Import_Form_Summary {
+trait ImportSaveTrait {
+
+  /**
+   * @inheritDoc
+   */
+  protected function write(array $items) {
+    $userJobID = str_replace('Import_', '', $this->_entityName);
+    foreach ($items as &$item) {
+      $item['_user_job_id'] = (int) $userJobID;
+    }
+    return parent::write($items);
+  }
 
 }
diff --git a/civicrm/CRM/Custom/Import/Field.php b/civicrm/ext/civiimport/Civi/Api4/Import/Save.php
similarity index 80%
rename from civicrm/CRM/Custom/Import/Field.php
rename to civicrm/ext/civiimport/Civi/Api4/Import/Save.php
index 6b005d3e642cdf07492afcc3e070933ab6934370..292dfeb52500456ea3ee1c7774180520d45e5fc0 100644
--- a/civicrm/CRM/Custom/Import/Field.php
+++ b/civicrm/ext/civiimport/Civi/Api4/Import/Save.php
@@ -1,4 +1,5 @@
 <?php
+
 /*
  +--------------------------------------------------------------------+
  | Copyright CiviCRM LLC. All rights reserved.                        |
@@ -9,8 +10,12 @@
  +--------------------------------------------------------------------+
  */
 
-/**
- * Class CRM_Custom_Import_Field
- */
-class CRM_Custom_Import_Field extends CRM_Contact_Import_Field {
+namespace Civi\Api4\Import;
+
+use Civi\Api4\Generic\DAOSaveAction;
+
+class Save extends DAOSaveAction {
+
+  use ImportSaveTrait;
+
 }
diff --git a/civicrm/ext/civiimport/Civi/Api4/Import/Update.php b/civicrm/ext/civiimport/Civi/Api4/Import/Update.php
new file mode 100644
index 0000000000000000000000000000000000000000..1902d09c1edfbeb7b830e25764316566aa0d3356
--- /dev/null
+++ b/civicrm/ext/civiimport/Civi/Api4/Import/Update.php
@@ -0,0 +1,10 @@
+<?php
+namespace Civi\Api4\Import;
+
+use Civi\Api4\Generic\DAOUpdateAction;
+
+class Update extends DAOUpdateAction {
+
+  use ImportSaveTrait;
+
+}
diff --git a/civicrm/ext/civiimport/Civi/Api4/Import/Validate.php b/civicrm/ext/civiimport/Civi/Api4/Import/Validate.php
new file mode 100644
index 0000000000000000000000000000000000000000..00db93c33554f9d629f207dd358c628a80816b11
--- /dev/null
+++ b/civicrm/ext/civiimport/Civi/Api4/Import/Validate.php
@@ -0,0 +1,39 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Import;
+
+use Civi\Api4\Generic\DAOGetAction;
+use Civi\Api4\Generic\Result;
+
+class Validate extends DAOGetAction {
+
+  use ImportProcessTrait;
+
+  /**
+   * @throws \CRM_Core_Exception
+   */
+  public function _run(Result $result): void {
+    $userJobID = (int) str_replace('Import_', '', $this->_entityName);
+
+    $this->getImportRows($result);
+    $parser = $this->getParser($userJobID);
+    foreach ($result as $row) {
+      $parser->validateRow($row);
+    }
+
+    // Re-fetch the validated result with updated messages.
+    $this->addSelect('*');
+    parent::_run($result);
+  }
+
+}
diff --git a/civicrm/ext/civiimport/Civi/Api4/Service/Spec/Provider/ImportSpecProvider.php b/civicrm/ext/civiimport/Civi/Api4/Service/Spec/Provider/ImportSpecProvider.php
new file mode 100644
index 0000000000000000000000000000000000000000..c6288d4719ddc0f0732b0d492162b9e3ea7283c9
--- /dev/null
+++ b/civicrm/ext/civiimport/Civi/Api4/Service/Spec/Provider/ImportSpecProvider.php
@@ -0,0 +1,69 @@
+<?php
+
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Api4\Service\Spec\Provider;
+
+use Civi\Api4\Service\Spec\FieldSpec;
+use Civi\Api4\Service\Spec\RequestSpec;
+use Civi\Api4\UserJob;
+use Civi\BAO\Import;
+use CRM_Core_BAO_UserJob;
+
+class ImportSpecProvider implements Generic\SpecProviderInterface {
+
+  /**
+   * @inheritDoc
+   * @throws \CRM_Core_Exception
+   */
+  public function modifySpec(RequestSpec $spec): void {
+    $tableName = $spec->getEntityTableName();
+    $columns = Import::getFieldsForTable($tableName);
+    $action = $spec->getAction();
+    // CheckPermissions does not reach us here - so we will have to rely on earlier permission filters.
+    $userJobID = substr($spec->getEntity(), (strpos($spec->getEntity(), '_') + 1));
+    $userJob = UserJob::get(FALSE)->addWhere('id', '=', $userJobID)->addSelect('metadata', 'job_type', 'created_id')->execute()->first();
+
+    foreach ($columns as $column) {
+      $isInternalField = strpos($column['name'], '_') === 0;
+      $exists = $isInternalField && $spec->getFieldByName($column['name']);
+      if ($exists) {
+        continue;
+      }
+      $field = new FieldSpec($column['name'], $spec->getEntity(), 'String');
+      $field->setTitle(ts('Import field') . ':' . $column['label']);
+      $field->setLabel($column['label']);
+      $field->setType('Field');
+      $field->setReadonly($isInternalField);
+      $field->setDescription(ts('Data being imported into the field.'));
+      $field->setColumnName($column['name']);
+      if ($column['name'] === '_entity_id') {
+        $jobTypes = CRM_Core_BAO_UserJob::getTypes();
+        foreach ($jobTypes as $jobType) {
+          if ($userJob['job_type'] === $jobType['id'] && $jobType['entity']) {
+            $field->setFkEntity($jobType['entity']);
+            $field->setInputType('EntityRef');
+          }
+        }
+      }
+      $spec->addFieldSpec($field);
+    }
+
+  }
+
+  /**
+   * @inheritDoc
+   */
+  public function applies($entity, $action): bool {
+    return strpos($entity, 'Import_') === 0;
+  }
+
+}
diff --git a/civicrm/ext/civiimport/Civi/BAO/Import.php b/civicrm/ext/civiimport/Civi/BAO/Import.php
new file mode 100644
index 0000000000000000000000000000000000000000..bc807c23c1e51d86a3c82a77cc94ecbce601c749
--- /dev/null
+++ b/civicrm/ext/civiimport/Civi/BAO/Import.php
@@ -0,0 +1,254 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\BAO;
+
+use Civi\Api4\UserJob;
+use CRM_Civiimport_ExtensionUtil as E;
+use CRM_Core_BAO_CustomValueTable;
+use CRM_Core_DAO;
+use CRM_Core_Exception;
+use CRM_Utils_Hook;
+use CRM_Utils_Rule;
+use CRM_Utils_Type;
+
+/**
+ *
+ * @package CRM
+ * @copyright CiviCRM LLC https://civicrm.org/licensing
+ */
+class Import extends CRM_Core_DAO {
+
+  /**
+   * This is the id field - it has an underscore due to the import table naming convention.
+   *
+   * @var int
+   */
+  protected $_id;
+
+  /**
+   * Primary key field.
+   *
+   * @var string[]
+   */
+  public static $_primaryKey = ['_id'];
+
+  /**
+   * @return array
+   */
+  public static function getImportTables(): array {
+    // This calls a function on the extension file as it is called from `entityTypes`
+    // which can be called very early, before this class is available to that hook.
+    return _civiimport_civicrm_get_import_tables();
+  }
+
+  /**
+   * @return string[]
+   */
+  protected function getPrimaryKey(): array {
+    return self::$_primaryKey;
+  }
+
+  /**
+   * Returns fields generic to all imports, indexed by name.
+   *
+   * This function could arguably go, leaving it to the `ImportSpecProvider`
+   * which adds all the other fields. But it does have the nice side effect of
+   * putting these three fields first in a natural sort.
+   *
+   * @param bool $checkPermissions
+   *   Filter by field permissions.
+   * @return array
+   */
+  public static function getSupportedFields($checkPermissions = FALSE): array {
+    return [
+      '_id' => [
+        'type' => 'Field',
+        'required' => FALSE,
+        'nullable' => FALSE,
+        'readonly' => TRUE,
+        'name' => '_id',
+        'title' => E::ts('Import row ID'),
+        'data_type' => 'Integer',
+        'input_type' => 'Number',
+        'column_name' => '_id',
+      ],
+      '_status' => [
+        'type' => 'Field',
+        'required' => TRUE,
+        // We should add a requeue action or just define an option group but for now..
+        'readonly' => TRUE,
+        'nullable' => FALSE,
+        'name' => '_status',
+        'title' => E::ts('Row status'),
+        'data_type' => 'String',
+        'column_name' => '_status_message',
+      ],
+      '_status_message' => [
+        'type' => 'Field',
+        'nullable' => TRUE,
+        'readonly' => TRUE,
+        'name' => '_status_message',
+        'title' => E::ts('Row import message'),
+        'description' => '',
+        'data_type' => 'String',
+        'column_name' => '_status_message',
+      ],
+    ];
+  }
+
+  /**
+   * Over-ride the parent to prevent a NULL return.
+   *
+   * Metadata otherwise handled in `table()`, `writeRecord` and `ImportSpecProvider`
+   *
+   * @return array
+   */
+  public static function &fields(): array {
+    $result = [];
+    return $result;
+  }
+
+  /**
+   * Override variant of metadata function used in DAO->insert().
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  public function table(): array {
+    $table = [];
+    foreach (self::getFieldsForTable($this->tableName()) as $value) {
+      $table[$value['name']] = $value['type'] ?? CRM_Utils_Type::T_STRING;
+      if (!empty($value['required'])) {
+        $table[$value['name']] += self::DB_DAO_NOTNULL;
+      }
+    }
+    return $table;
+  }
+
+  /**
+   * Create or update a record from supplied params.
+   *
+   * This overrides the parent in order to tinker with the available fields.
+   *
+   * If '_id' is supplied, an existing record will be updated
+   * Otherwise a new record will be created.
+   *
+   * @param array $record
+   *
+   * @return static
+   * @throws \CRM_Core_Exception
+   */
+  public static function writeRecord(array $record): CRM_Core_DAO {
+    $op = empty($record['_id']) ? 'create' : 'edit';
+    $userJobID = $record['_user_job_id'];
+    $entityName = 'Import_' . $userJobID;
+    $userJob = UserJob::get($record['check_permissions'])->addWhere('id', '=', $userJobID)->addSelect('metadata', 'job_type', 'created_id')->execute()->first();
+
+    $tableName = $userJob['metadata']['DataSource']['table_name'];
+    CRM_Utils_Hook::pre($op, $entityName, $record['_id'] ?? NULL, $record);
+    $fields = self::getAllFields($tableName);
+    $instance = new self();
+    $instance->__table = $tableName;
+    // Ensure fields exist before attempting to write to them
+    $values = array_intersect_key($record, $fields);
+    foreach ($values as $field => $value) {
+      $instance->$field = ($value === '') ? 'null' : $value;
+    }
+    $instance->save();
+
+    if (!empty($record['custom']) && is_array($record['custom'])) {
+      CRM_Core_BAO_CustomValueTable::store($record['custom'], $tableName, $instance->_id, $op);
+    }
+
+    CRM_Utils_Hook::post($op, $entityName, $instance->_id, $instance);
+
+    return $instance;
+  }
+
+  /**
+   * Get all the fields available for the import table.
+   *
+   * This gets the fields based on a `SHOW COLUMNS` result.
+   *
+   * @param string $tableName
+   *
+   * @return array
+   * @throws \CRM_Core_Exception
+   */
+  public static function getFieldsForTable(string $tableName): array {
+    if (!CRM_Utils_Rule::alphanumeric($tableName)) {
+      // This is purely precautionary so does not need to be a translated string.
+      throw new CRM_Core_Exception('Invalid import table');
+    }
+    $columns = [];
+    $headers = UserJob::get(FALSE)
+      ->addWhere('metadata', 'LIKE', '%' . $tableName . '%')
+      ->addSelect('metadata')->execute()->first()['metadata']['DataSource']['column_headers'] ?? [];
+    $result = CRM_Core_DAO::executeQuery("SHOW COLUMNS FROM $tableName");
+    $userFieldIndex = 0;
+    while ($result->fetch()) {
+      $columns[$result->Field] = ['name' => $result->Field, 'table_name' => $tableName];
+      if (substr($result->Field, 1) !== '_') {
+        $columns[$result->Field]['label'] = $headers[$userFieldIndex] ?? $result->Field;
+        $userFieldIndex++;
+      }
+    }
+    return $columns;
+  }
+
+  /**
+   * Get all the fields available for the import table.
+   *
+   * This gets the fields based on a `SHOW COLUMNS` result.
+   *
+   * @param int $userJobID
+   * @param bool $checkPermissions
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  public static function getFieldsForUserJobID(int $userJobID, bool $checkPermissions = TRUE): array {
+    $userJob = UserJob::get($checkPermissions)
+      ->addWhere('id', '=', $userJobID)
+      ->addSelect('created_id.display_name', 'created_id', 'metadata')
+      ->execute()->first();
+    $tableName = $userJob['metadata']['DataSource']['table_name'];
+    return self::getAllFields($tableName);
+  }
+
+  /**
+   * Checks if this DAO's table ought to exist to prevent import fails.
+   *
+   * Since these tables are dropped during import & the API will
+   * not see them as entities if they don't exist this should be safe.
+   *
+   * @return bool
+   */
+  public static function tableHasBeenAdded(): bool {
+    return TRUE;
+  }
+
+  /**
+   * Get all fields for the import instance.
+   *
+   * @param string $tableName
+   *
+   * @return array[]
+   * @throws \CRM_Core_Exception
+   */
+  private static function getAllFields(string $tableName): array {
+    return array_merge(self::getFieldsForTable($tableName), self::getSupportedFields());
+  }
+
+}
diff --git a/civicrm/ext/civiimport/LICENSE.txt b/civicrm/ext/civiimport/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a5c912c5f4349bf8dc84151ea499bc44bdd40049
--- /dev/null
+++ b/civicrm/ext/civiimport/LICENSE.txt
@@ -0,0 +1,667 @@
+Package: civiimport
+Copyright (C) 2022, FIXME <FIXME>
+Licensed under the GNU Affero Public License 3.0 (below).
+
+-------------------------------------------------------------------------------
+
+                    GNU AFFERO GENERAL PUBLIC LICENSE
+                       Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+  A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate.  Many developers of free software are heartened and
+encouraged by the resulting cooperation.  However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+  The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community.  It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server.  Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+  An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals.  This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU Affero General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Remote Network Interaction; Use with the GNU General Public License.
+
+  Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software.  This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time.  Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program 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.
+
+    This program 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/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source.  For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code.  There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/civicrm/ext/civiimport/Managed/ImportSearches.mgd.php b/civicrm/ext/civiimport/Managed/ImportSearches.mgd.php
new file mode 100644
index 0000000000000000000000000000000000000000..862aea8e93c054454082067c8e016040a34b22fc
--- /dev/null
+++ b/civicrm/ext/civiimport/Managed/ImportSearches.mgd.php
@@ -0,0 +1,182 @@
+<?php
+
+use Civi\Api4\Entity;
+use Civi\BAO\Import;
+use CRM_Civiimport_ExtensionUtil as E;
+
+// Check if SearchKit is enabled before adding SavedSearches.
+try {
+  if (!Entity::get(FALSE)
+    ->addWhere('name', '=', 'SearchDisplay')
+    ->selectRowCount()
+    ->execute()->count()) {
+    return [];
+  }
+}
+catch (CRM_Core_Exception $e) {
+  return [];
+}
+
+$managedEntities = [];
+$importEntities = Import::getImportTables();
+foreach ($importEntities as $importEntity) {
+  try {
+    $fields = array_merge(['_id' => TRUE, '_status' => TRUE, '_status_message' => TRUE], Import::getFieldsForUserJobID($importEntity['user_job_id'], FALSE));
+  }
+  catch (CRM_Core_Exception $e) {
+    continue;
+  }
+  $createdBy = empty($importEntity['created_by']) ? '' : ' (' . E::ts('Created by %1', [$importEntity['created_by'], 'String']) . ')';
+  $managedEntities[] = [
+    'name' => 'SavedSearch_Import' . $importEntity['user_job_id'],
+    'entity' => 'SavedSearch',
+    'cleanup' => 'always',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Import' . '_' . $importEntity['user_job_id'],
+        'label' => $importEntity['title'] . ' ' . $importEntity['description'],
+        'api_entity' => 'Import' . '_' . $importEntity['user_job_id'],
+        'api_params' => [
+          'version' => 4,
+          'select' => array_keys($fields),
+          'orderBy' => [],
+          'where' => [],
+          'groupBy' => [],
+          'join' => [],
+          'having' => [],
+        ],
+        'expires_date' => $importEntity['expires_date'],
+        'created_date' => $importEntity['created_date'],
+        'created_id' => $importEntity['created_id'],
+        'description' => ts('Temporary import data'),
+        'mapping_id' => NULL,
+      ],
+    ],
+  ];
+  $managedEntities[] = [
+    'name' => 'SavedSearch_Import_Summary' . $importEntity['user_job_id'],
+    'entity' => 'SavedSearch',
+    'cleanup' => 'always',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Import_Summary' . '_' . $importEntity['user_job_id'],
+        'label' => E::ts('Import Summary') . ' ' . $importEntity['description'],
+        'api_entity' => 'Import' . '_' . $importEntity['user_job_id'],
+        'api_params' => [
+          'version' => 4,
+          'select' => ['_status', 'COUNT(_id) AS COUNT__id'],
+          'orderBy' => [],
+          'where' => [],
+          'groupBy' => ['_status'],
+          'join' => [],
+          'having' => [],
+        ],
+        'expires_date' => $importEntity['expires_date'],
+        'created_date' => $importEntity['created_date'],
+        'created_id' => $importEntity['created_id'],
+        'description' => ts('Temporary import data'),
+        'mapping_id' => NULL,
+      ],
+    ],
+  ];
+  $columns = [];
+  foreach ($fields as $field) {
+    $columns[] = [
+      'type' => 'field',
+      'key' => $field['name'],
+      'dataType' => $field['data_type'] ?? 'String',
+      'label' => $field['title'] ?? $field['label'],
+      'sortable' => TRUE,
+      'editable' => strpos($field['name'], '_') !== 0,
+    ];
+  }
+  $managedEntities[] = [
+    'name' => 'SavedSearchDisplay_Import' . $importEntity['user_job_id'],
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'always',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Import' . '_' . $importEntity['user_job_id'],
+        'label' => E::ts('Import') . ' ' . $importEntity['user_job_id'] . $createdBy,
+        'saved_search_id.name' => 'Import' . '_' . $importEntity['user_job_id'],
+        'type' => 'table',
+        'settings' => [
+          'actions' => TRUE,
+          'limit' => 25,
+          'classes' => [
+            'table',
+            'table-striped',
+          ],
+          'pager' => [
+            'show_count' => TRUE,
+            'expose_limit' => TRUE,
+          ],
+          'sort' => [],
+          'columns' => $columns,
+        ],
+        'acl_bypass' => FALSE,
+      ],
+    ],
+  ];
+
+  $managedEntities[] = [
+    'name' => 'SavedSearchDisplay_Import_Summary' . $importEntity['user_job_id'],
+    'entity' => 'SearchDisplay',
+    'cleanup' => 'always',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'name' => 'Import_Summary' . '_' . $importEntity['user_job_id'],
+        'label' => E::ts('Import Summary') . ' ' . $importEntity['user_job_id'] . $createdBy,
+        'saved_search_id.name' => 'Import_Summary' . '_' . $importEntity['user_job_id'],
+        'type' => 'table',
+        'settings' => [
+          'actions' => FALSE,
+          'limit' => 40,
+          'classes' => [
+            'table',
+            'table-striped',
+          ],
+          'pager' => [
+            'show_count' => TRUE,
+            'expose_limit' => TRUE,
+          ],
+          'sort' => [],
+          'columns' => [
+            [
+              'type' => 'field',
+              'key' => '_status',
+              'dataType' => 'String',
+              'label' => 'Row status',
+              'sortable' => TRUE,
+              'link' => [
+                'path' => 'civicrm/search#/display/Import_' . $importEntity['user_job_id'] . '/Import_' . $importEntity['user_job_id'] . '?_status=[_status]',
+                'entity' => '',
+                'action' => '',
+                'join' => '',
+                'target' => '',
+              ],
+              'rewrite' => '[_status]',
+            ],
+            [
+              'type' => 'field',
+              'key' => 'COUNT__id',
+              'dataType' => 'Integer',
+              'label' => '',
+              'sortable' => TRUE,
+            ],
+          ],
+        ],
+        'acl_bypass' => FALSE,
+      ],
+    ],
+  ];
+}
+return $managedEntities;
diff --git a/civicrm/ext/civiimport/README.md b/civicrm/ext/civiimport/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..3a6a0965170685aa76855962539e6c4b14897a76
--- /dev/null
+++ b/civicrm/ext/civiimport/README.md
@@ -0,0 +1,44 @@
+# civiimport
+
+![Screenshot](/images/screenshot.png)
+
+(*FIXME: In one or two paragraphs, describe what the extension does and why one would download it. *)
+
+The extension is licensed under [AGPL-3.0](LICENSE.txt).
+
+## Requirements
+
+* PHP v7.2+
+* CiviCRM (*FIXME: Version number*)
+
+## Installation (Web UI)
+
+Learn more about installing CiviCRM extensions in the [CiviCRM Sysadmin Guide](https://docs.civicrm.org/sysadmin/en/latest/customize/extensions/).
+
+## Installation (CLI, Zip)
+
+Sysadmins and developers may download the `.zip` file for this extension and
+install it with the command-line tool [cv](https://github.com/civicrm/cv).
+
+```bash
+cd <extension-dir>
+cv dl civiimport@https://github.com/FIXME/civiimport/archive/master.zip
+```
+
+## Installation (CLI, Git)
+
+Sysadmins and developers may clone the [Git](https://en.wikipedia.org/wiki/Git) repo for this extension and
+install it with the command-line tool [cv](https://github.com/civicrm/cv).
+
+```bash
+git clone https://github.com/FIXME/civiimport.git
+cv en civiimport
+```
+
+## Getting Started
+
+(* FIXME: Where would a new user navigate to get started? What changes would they see? *)
+
+## Known Issues
+
+(* FIXME *)
diff --git a/civicrm/ext/civiimport/ang/crmCiviimport.ang.php b/civicrm/ext/civiimport/ang/crmCiviimport.ang.php
new file mode 100644
index 0000000000000000000000000000000000000000..267a8394e3dc33f07e28967c267455cbb3b4fd7f
--- /dev/null
+++ b/civicrm/ext/civiimport/ang/crmCiviimport.ang.php
@@ -0,0 +1,24 @@
+<?php
+// This file declares an Angular module which can be autoloaded
+// in CiviCRM. See also:
+// \https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_angularModules/n
+return [
+  'js' => [
+    'ang/crmCiviimport.js',
+    'ang/crmCiviimport/*.js',
+    'ang/crmCiviimport/*/*.js',
+  ],
+  'css' => [
+    'ang/crmCiviimport.css',
+  ],
+  'partials' => [
+    'ang/crmCiviimport',
+  ],
+  'requires' => [
+    'crmUi',
+    'crmUtil',
+    'ngRoute',
+    'api4',
+  ],
+  'settings' => [],
+];
diff --git a/civicrm/ext/civiimport/ang/crmCiviimport.css b/civicrm/ext/civiimport/ang/crmCiviimport.css
new file mode 100644
index 0000000000000000000000000000000000000000..b4b42467a1ed594512a6fc99e5fa26340fddc771
--- /dev/null
+++ b/civicrm/ext/civiimport/ang/crmCiviimport.css
@@ -0,0 +1 @@
+/* Add any CSS rules for Angular module "crmCiviimport" */
diff --git a/civicrm/ext/civiimport/ang/crmCiviimport.js b/civicrm/ext/civiimport/ang/crmCiviimport.js
new file mode 100644
index 0000000000000000000000000000000000000000..5927a2ab98205378db969013f6345a78ff940555
--- /dev/null
+++ b/civicrm/ext/civiimport/ang/crmCiviimport.js
@@ -0,0 +1,310 @@
+(function(angular, $, _) {
+  // Declare a list of dependencies.
+  angular.module('crmCiviimport', CRM.angRequires('crmCiviimport'));
+
+  // The controller uses *injection*. This default injects a few things:
+  //   $scope -- This is the set of variables shared between JS and HTML.
+  //   crmApi, crmStatus, crmUiHelp -- These are services provided by civicrm-core.
+  //   myContact -- The current contact, defined above in config().
+  angular.module('crmCiviimport').component('crmImportUi', {
+      templateUrl: '~/crmCiviimport/Import.html',
+      controller: function($scope, crmApi4, crmStatus, crmUiHelp) {
+
+        // The ts() and hs() functions help load strings for this module.
+        var ts = $scope.ts = CRM.ts('civiimport');
+        var hs = $scope.hs = crmUiHelp({file: 'CRM/crmCiviimport/crmImportUi'});
+        // Local variable for this controller (needed when inside a callback fn where `this` is not available).
+        var ctrl = this;
+
+        $scope.load = (function () {
+          // The components of crmImportUi that we use are assigned individually for clarity - but
+          // don't seem to work without the first assignment....
+          $scope.data = CRM.vars.crmImportUi;
+          $scope.data.rows = CRM.vars.crmImportUi.rows;
+          $scope.data.entityMetadata = CRM.vars.crmImportUi.entityMetadata;
+          // The defaults here are derived in the php layer from the saved mapping or the column
+          // headers. The latter involves some regex.
+          $scope.data.defaults = CRM.vars.crmImportUi.defaults;
+          $scope.userJob = CRM.vars.crmImportUi.userJob;
+          $scope.data.showColumnNames = $scope.userJob.metadata.submitted_values.skipColumnHeader;
+          $scope.data.savedMapping = CRM.vars.crmImportUi.savedMapping;
+          $scope.mappingSaving = {updateFieldMapping: 0, newFieldMapping: 0};
+          // Used for dedupe rules select options, also for filtering available fields.
+          $scope.data.dedupeRules = CRM.vars.crmImportUi.dedupeRules;
+          // Used for select contact type select-options.
+          $scope.data.contactTypes = CRM.vars.crmImportUi.contactTypes;
+
+          $scope.data.entities = {};
+          // Available entities is entityMetadata mapped to a form-friendly format
+          $scope.entitySelection = [];
+          var entityConfiguration = $scope.userJob.metadata.entity_configuration;
+          _.each($scope.data.entityMetadata, function (entityMetadata) {
+            var selected = Boolean(entityConfiguration) ? entityConfiguration[entityMetadata.entity_name] : entityMetadata.selected;
+            // If our selected action is not available then fall back to the entity default.
+            // This would happen if we went back to the DataSource screen & made a change, as the
+            // php layer filters on that configuration options
+            var isActionValid = entityMetadata.actions.filter((function (action) {
+              if (action.id === selected.action) {
+                return true;
+              }
+            }));
+            if (isActionValid.length === 0) {
+              // Selected action not available, go back to the default.
+              selected.action = entityMetadata.selected.action;
+            }
+
+            entityMetadata.dedupe_rules = [];
+            if (Boolean(entityMetadata.selected) && Boolean(selected.contact_type)) {
+              entityMetadata.dedupe_rules = $scope.getDedupeRules(selected.contact_type);
+            }
+
+            $scope.entitySelection.push({
+              id: entityMetadata.entity_name,
+              text: entityMetadata.entity_title,
+              actions: entityMetadata.actions,
+              is_contact: Boolean(entityMetadata.is_contact),
+              entity_data: entityMetadata.entity_data,
+              dedupe_rules: entityMetadata.dedupe_rules,
+            });
+            $scope.addEntity(entityMetadata.entity_name, selected);
+          });
+
+          function buildImportMappings() {
+            $scope.data.importMappings = [];
+            var importMappings = $scope.userJob.metadata.import_mappings;
+            _.each($scope.userJob.metadata.DataSource.column_headers, function (header, index) {
+              var fieldName = $scope.data.defaults['mapper[' + index + ']'][0];
+              if (Boolean(fieldName)) {
+                fieldName = fieldName.replace('__', '.');
+              }
+              var fieldDefault = null;
+
+              if (Boolean(importMappings)) {
+                // If this form has already been used for the job, load from what it saved.
+                fieldName = importMappings[index].name;
+                fieldDefault = importMappings[index].default_value;
+              }
+              $scope.data.importMappings.push({
+                header: header,
+                selectedField: fieldName,
+                defaultValue: fieldDefault
+              });
+            });
+          }
+
+          buildImportMappings();
+
+        });
+
+        /**
+         * Get fields available to map to.
+         *
+         * @type {function(): {results: $scope.data.entityMetadata}}
+         */
+        $scope.getFields = (function () {
+          var fields = [];
+          // The $scope.data.entityMetadata entity array has all available fields.
+          // - for field filtering we have to start with the full array or it just gets smaller & smaller.
+          _.each($scope.data.entityMetadata, function (entity) {
+            // The $scope.data.entities has the selected data (but the fields are already filtered)
+            var selected = $scope.data.entities[entity.entity_name].selected;
+            if (selected.action !== 'ignore') {
+              availableEntity = _.clone(entity);
+              availableEntity.children = $scope.filterEntityFields(entity.is_contact, entity.children, selected, entity.entity_field_prefix);
+              fields.push(availableEntity);
+            }
+          });
+          return {results: fields};
+        });
+
+        /**
+         * Filter the fields available for the entity based on form selections.
+         *
+         * Currently we only filter contact fields here, based on contact type, dedupe rule,
+         * and action.
+         *
+         * @type {(function(*=, *=, *=, *=): (*))|*}
+         */
+        $scope.filterEntityFields = (function (isContact, fields, selection, entityFieldPrefix) {
+          if (isContact) {
+            return $scope.filterContactFields(fields, selection, entityFieldPrefix);
+          }
+          return fields;
+        });
+
+        /**
+         * Filter contact fields, removing fields not appropriate for the entity or action.
+         *
+         * @type {function(*=, *): *}
+         */
+        $scope.filterContactFields = (function (fields, selection, entityFieldPrefix) {
+          var contactType = selection.contact_type;
+          var action = selection.action;
+          var rules = $scope.data.dedupeRules;
+          var dedupeRule = rules[selection.dedupe_rule];
+          fields = fields.filter((function (field) {
+            // Using replace here is safe ... for now... cos only soft credits have a prefix
+            // but if we add a prefix to contact this will need updating.
+            var fieldName = field.id.replace(entityFieldPrefix, '');
+            if (action === 'select' && !Boolean(field.match_rule) &&
+              (!Boolean(dedupeRule) || !Boolean(dedupeRule.fields[fieldName]))
+            ) {
+              // In select mode only fields used to look up the contact are returned.
+              return false;
+            }
+            if (Boolean(contactType)) {
+              var supportedTypes = field.contact_type;
+              return supportedTypes[contactType];
+            }
+            // No contact type specified, do not filter on it.
+            return true;
+
+          }));
+          return fields;
+        });
+
+        /**
+         * Add the entity to the selected scope.
+         */
+        $scope.addEntity = function (selectedEntity, selected) {
+          if ($scope.data.entities[selectedEntity] === undefined) {
+            var entityData = $scope.getEntityMetadata(selectedEntity);
+            entityData.selected = selected;
+            if (entityData.id !== undefined) {
+              $scope.data.entities[selectedEntity] = entityData;
+            }
+          }
+        };
+
+        /**
+         * Get metadata for the given entity.
+         *
+         * @param selectedEntity
+         * @returns {*[]}
+         */
+        $scope.getEntityMetadata = function (selectedEntity) {
+          var entityData = {};
+          _.each($scope.entitySelection, function (entityDetails) {
+            if (entityDetails.id === selectedEntity) {
+
+              entityData = entityDetails;
+              return false;
+            }
+          });
+          return entityData;
+        };
+
+        /**
+         * Get a list of dedupe rules for the entity type.
+         *
+         * @param selectedEntity
+         * @returns {{}}
+         *   e.g {{name: 'IndividualSupervised', 'text' : 'Name and email', 'is_default' : true}}
+         */
+        $scope.getDedupeRules = function (selectedEntity) {
+          var dedupeRules = [];
+          _.each($scope.data.dedupeRules, function (rule) {
+            if (rule.contact_type === selectedEntity) {
+              dedupeRules.push({'id': rule.name, 'text': rule.title, 'is_default': rule.used === 'Unsupervised'});
+            }
+          });
+          return dedupeRules;
+        };
+
+        /**
+         * Get the entity for the given field.
+         *
+         * @type {$scope.getEntityForField}
+         */
+        $scope.getEntityForField = (function (fieldName) {
+          var entityName = '';
+          _.each($scope.data.entityMetadata, function (fields) {
+            _.each(fields.children, function (field) {
+              if (field.id === fieldName) {
+                entityName = fields.entity_name;
+                return false;
+              }
+            });
+          });
+          return entityName;
+        });
+
+        $scope.toggleMappingFields = (function (fieldName, extra) {
+          if (fieldName === 'updateFieldMapping' && $scope.mappingSaving.updateFieldMapping === 0) {
+            $scope.mappingSaving.newFieldMapping = 0;
+          }
+          if (fieldName === 'newFieldMapping' && $scope.mappingSaving.newFieldMapping === 0) {
+            $scope.mappingSaving.updateFieldMapping = 0;
+          }
+        });
+
+        /**
+         * Save the user job configuration on save.
+         *
+         * We add two arrays to the 'metadata' key. This is in the format returned from `Parser->getFieldMappings()`
+         * and is combined with quick form data in that function. In addition to the values permitted by
+         * the quickForm 'default_value' is supported.
+         * - import mappings. e.g
+         *   ['name' => 'financial_type_id', default_value' => 'Cash'],
+         *   ['name' => 'soft_credit.contact.external_identifier', 'default_value' => '', 'entity_data' => ['soft_credit' => ['soft_credit_type_id => 7]],
+         *   ...
+         * - entity_configuration
+         *
+         * @type {$scope.save}
+         */
+        $scope.save = (function ($event) {
+          $scope.userJob.metadata.entity_configuration = {};
+          $scope.userJob.metadata.import_mappings = [];
+          _.each($scope.entitySelection, function (entity) {
+            $scope.userJob.metadata.entity_configuration[entity.id] = entity.selected;
+          });
+          _.each($scope.data.importMappings, function (importRow, index) {
+            selectedEntity = $scope.getEntityForField(importRow.selectedField);
+            var entityConfig = {};
+            if (selectedEntity === 'SoftCreditContact') {
+              // For now we just hard-code this - mapping to soft_credit a bit undefined - but
+              // we are mimicking getMappingFieldFromMapperInput on the php layer.
+              // Could get it from entity_data but .... later.
+              entityConfig = {'soft_credit': $scope.userJob.metadata.entity_configuration[selectedEntity].entity.entity_data};
+            }
+
+            $scope.userJob.metadata.import_mappings.push({
+              name: importRow.selectedField,
+              default_value: importRow.defaultValue,
+              // At this stage column_number is thrown away but we store it here to have it for when we change that.
+              column_number: index,
+              entity_data: entityConfig
+            });
+          });
+          crmApi4('UserJob', 'save', {records: [$scope.userJob]});
+        });
+
+        $scope.load();
+      }
+    }
+  );
+
+  /**
+   * This component is for the specific entity within the entity ng-repeat.
+   */
+  angular.module('crmCiviimport').controller('crmImportUiEntity', function($scope) {
+    /**
+     * Get the available dedupe rules.
+     *
+     * @type {function(*): []|*}
+     */
+    $scope.getDedupeRule = (function() {
+      return {results: $scope.entity.dedupe_rules};
+    });
+
+    /**
+     * Update the metadata module after a change.
+     *
+     * @type {$scope.updateContactType}
+     */
+    $scope.updateContactType = (function(entity) {
+      entity.dedupe_rules = $scope.getDedupeRules(entity.selected.contact_type);
+      entity.selected.dedupe_rule = entity.dedupe_rules[0].id;
+    });
+  });
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/civiimport/ang/crmCiviimport/Import.html b/civicrm/ext/civiimport/ang/crmCiviimport/Import.html
new file mode 100644
index 0000000000000000000000000000000000000000..bd623388b71541a2e45033911a424d7193a7b7cd
--- /dev/null
+++ b/civicrm/ext/civiimport/ang/crmCiviimport/Import.html
@@ -0,0 +1,149 @@
+<div crm-ui-debug="userJob"></div>
+<div crm-ui-debug="data"></div>
+
+
+
+<div class="help">
+  <p>{{:: ts("Review the values shown below from the first 2 rows of your import file and select the matching CiviCRM database fields from the drop-down lists in the right-hand column. Select '- do not import -' for any columns in the import file that you want ignored.") }}</p>
+  <p>{{:: ts("If you think you may be importing additional data from the same data source, check 'Save this field mapping' at the bottom of the page before continuing. The saved mapping can then be easily reused the next time data is imported.") }}</p>
+</div>
+
+<div class="crm-submit-buttons">
+  <button class="crm-form-submit cancel crm-button crm-button-type-back crm-button_qf_MapField_back" value="1" type="submit" name="_qf_MapField_back" ng-click="save" id="_qf_MapField_back-top"><i aria-hidden="true" class="crm-i fa-chevron-left"></i> Previous</button>
+  <button class="crm-form-submit default validate crm-button crm-button-type-next crm-button_qf_MapField_next" value="1" type="submit" name="_qf_MapField_next" ng-click="save($event)" id="_qf_MapField_next-top"><i aria-hidden="true" class="crm-i fa-check"></i> Continue</button>
+  <button class="crm-form-submit cancel crm-button crm-button-type-cancel crm-button_qf_MapField_cancel" value="1" type="submit" name="_qf_MapField_cancel" ng-click="save($event)" id="_qf_MapField_cancel-top"><i aria-hidden="true" class="crm-i fa-times"></i> Cancel</button>
+</div>
+
+<div class="crm-block crm-form-block crm-import-mappings-form-block">
+  <div id="crm-import-entities" class="columnheader"><h3>{{:: ts('Import to') }}</h3>
+
+    <div ng-repeat="(entityName, entity) in data.entities track by entity.id"
+         ng-class-odd="'odd-row'"
+         ng-class-even="'even-row'"
+         class="selector-rows crm-importMappings-row"
+         ng-controller="crmImportUiEntity"
+    >
+       <div class="crm-grid-cell labels">
+        <div>
+          <div>{{ entity.text }}
+            <label>
+              <input class="big" crm-ui-select='{data: entity.actions}' ng-model="entity.selected.action" ng-disabled="entity.actions.length < 2"/>
+            </label>
+          </div>
+        </div>
+      </div>
+      <div class="crm-grid-cell">
+        <div>
+          <div>
+            <label ng-if="entity.is_contact && entity.selected.action !== 'ignore'">
+              {{:: ts('Contact type') }}
+              <input  class="big" ng-change="updateContactType(entity)"
+                crm-ui-select='{data: data.contactTypes, allowClear: false}' ng-model="entity.selected.contact_type" />
+            </label>
+          </div>
+        </div>
+      </div>
+      <div class="crm-grid-cell">
+        <div>
+          <div>
+            <label ng-if="entity.is_contact && entity.selected.action !== 'ignore' && entity.selected.contact_type">
+              {{:: ts('Dedupe rule') }}  <input class="big" crm-ui-select='{data: getDedupeRule}' ng-model="entity.selected.dedupe_rule" />
+            </label>
+          </div>
+        </div>
+      </div>
+      <div class="crm-grid-cell">
+        <div ng-if="entity.entity_data && entity.selected.action !== 'ignore'">
+          <div ng-repeat="(fieldName, entityField) in entity.entity_data">
+            <label>
+              {{ entityField.title }}  <input  class="big" crm-ui-select='{data: entityField.options, required : entityField.is_required}' ng-model="entity.selected.entity.entity_data[fieldName]"/>
+            </label>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+  <hr>
+  <div id="map-field">
+    {{:: ts('Data mapping') }}
+    <table class="selector">
+      <tr ng-if="data.savedMapping.name" class="columnheader-dark"><th colspan="4">
+        {{:: ts('Saved Field Mapping: %1', {1: data.savedMapping.name}) }}</th>
+      </tr>
+      <tr class="columnheader">
+        <td ng-if="data.showColumnNames" class="even-row labels">{{:: ts('Column Names') }}</td>
+        <td ng-repeat="(rowNumber, rowValues) in data.rows" class="odd-row labels">
+          {{:: ts('Import Data (row %1)', {1: $index+1}) }}
+        </td>
+        <td class="even-odd labels">{{:: ts('Matching CiviCRM Field') }}</td>
+        <td class="even-odd labels">{{:: ts('Default value') }}</td>
+      </tr>
+      <tr ng-repeat="(index, row) in data.importMappings">
+        <td ng-if="data.showColumnNames" >{{ row['header'] }}</td>
+        <td ng-repeat="(rowNumber, rowValues) in data.rows" class="odd-row">
+          <span ng-repeat="rowValue in rowValues track by $index"><span ng-if="index == $index">{{ rowValue }}</span></span>
+        </td>
+        <td class="even-row">
+          <div>
+            <div>
+              <label>
+                <input id='mapper[{{index}}][0]' name='mapper[{{index}}][0]' class="big" crm-ui-select='{data: getFields, allowClear: true, placeholder: "do not import"}' ng-model="row['selectedField']" />
+              </label>
+            </div>
+          </div>
+        </td>
+        <td class="even-row">
+          <div>
+            <div>
+              <label>
+                <input class="big" ng-model="row['defaultValue']" />
+              </label>
+            </div>
+          </div>
+        </td>
+      </tr>
+    </table>
+  </div>
+
+</div>
+<div>
+  <span ng-if="data.savedMapping.name"><input
+    id="updateMapping"
+    name="updateMapping"
+    ng-model="mappingSaving.updateFieldMapping"
+    ng-true-value="1"
+    ng-false-value="0"
+    ng-click="toggleMappingFields('updateFieldMapping')"
+    type="checkbox"
+    class="crm-form-checkbox">{{:: ts('Update this field mapping') }}</span>
+  <label>
+
+    <input id="saveMapping" name="saveMapping"
+           ng-click="toggleMappingFields('newFieldMapping')"
+           ng-true-value="1"
+           ng-false-value="0"
+           ng-model="mappingSaving.newFieldMapping" type="checkbox" value="1" class="crm-form-checkbox">{{:: ts('Save this field mapping') }}
+  </label>
+
+
+
+  <div id="saveDetails" class="form-item">
+    <table ng-show="mappingSaving.newFieldMapping" class="form-layout-compressed">
+      <tr class="crm-import-maptable-form-block-saveMappingName">
+        <td class="label">{{:: ts('Name') }}</td>
+        <td><input name="saveMappingName" type="text" value="" id="saveMappingName" class="crm-form-text"></td>
+      </tr>
+      <tr class="crm-import-maptable-form-block-saveMappingName">
+        <td class="label">{{:: ts('Description') }}</td>
+        <td><input name="saveMappingDescription" type="text" value="" id="saveMappingDesc" class="crm-form-text"></td>
+      </tr>
+    </table>
+  </div>
+</div>
+
+<div class="crm-submit-buttons">
+  <button class="crm-form-submit cancel crm-button crm-button-type-back crm-button_qf_MapField_back" value="1" type="submit" name="_qf_MapField_back" id="_qf_MapField_back-bottom"><i aria-hidden="true" class="crm-i fa-chevron-left"></i> Previous</button>
+  <button ng-click="save($event)" class="crm-form-submit default validate crm-button crm-button-type-next crm-button_qf_MapField_next" value="1" type="submit" name="_qf_MapField_next" id="_qf_MapField_next-bottom"><i aria-hidden="true" class="crm-i fa-check"></i> Continue</button>
+  <button class="crm-form-submit cancel crm-button crm-button-type-cancel crm-button_qf_MapField_cancel" value="1" type="submit" name="_qf_MapField_cancel" id="_qf_MapField_cancel-bottom"><i aria-hidden="true" class="crm-i fa-times"></i> Cancel</button>
+</div>
+
diff --git a/civicrm/ext/civiimport/civiimport.civix.php b/civicrm/ext/civiimport/civiimport.civix.php
new file mode 100644
index 0000000000000000000000000000000000000000..4ca2d5282f1be5d42b51c4dcd58e35c00d594764
--- /dev/null
+++ b/civicrm/ext/civiimport/civiimport.civix.php
@@ -0,0 +1,308 @@
+<?php
+
+// AUTO-GENERATED FILE -- Civix may overwrite any changes made to this file
+
+/**
+ * The ExtensionUtil class provides small stubs for accessing resources of this
+ * extension.
+ */
+class CRM_Civiimport_ExtensionUtil {
+  const SHORT_NAME = 'civiimport';
+  const LONG_NAME = 'civiimport';
+  const CLASS_PREFIX = 'CRM_Civiimport';
+
+  /**
+   * Translate a string using the extension's domain.
+   *
+   * If the extension doesn't have a specific translation
+   * for the string, fallback to the default translations.
+   *
+   * @param string $text
+   *   Canonical message text (generally en_US).
+   * @param array $params
+   * @return string
+   *   Translated text.
+   * @see ts
+   */
+  public static function ts($text, $params = []) {
+    if (!array_key_exists('domain', $params)) {
+      $params['domain'] = [self::LONG_NAME, NULL];
+    }
+    return ts($text, $params);
+  }
+
+  /**
+   * Get the URL of a resource file (in this extension).
+   *
+   * @param string|NULL $file
+   *   Ex: NULL.
+   *   Ex: 'css/foo.css'.
+   * @return string
+   *   Ex: 'http://example.org/sites/default/ext/org.example.foo'.
+   *   Ex: 'http://example.org/sites/default/ext/org.example.foo/css/foo.css'.
+   */
+  public static function url($file = NULL) {
+    if ($file === NULL) {
+      return rtrim(CRM_Core_Resources::singleton()->getUrl(self::LONG_NAME), '/');
+    }
+    return CRM_Core_Resources::singleton()->getUrl(self::LONG_NAME, $file);
+  }
+
+  /**
+   * Get the path of a resource file (in this extension).
+   *
+   * @param string|NULL $file
+   *   Ex: NULL.
+   *   Ex: 'css/foo.css'.
+   * @return string
+   *   Ex: '/var/www/example.org/sites/default/ext/org.example.foo'.
+   *   Ex: '/var/www/example.org/sites/default/ext/org.example.foo/css/foo.css'.
+   */
+  public static function path($file = NULL) {
+    // return CRM_Core_Resources::singleton()->getPath(self::LONG_NAME, $file);
+    return __DIR__ . ($file === NULL ? '' : (DIRECTORY_SEPARATOR . $file));
+  }
+
+  /**
+   * Get the name of a class within this extension.
+   *
+   * @param string $suffix
+   *   Ex: 'Page_HelloWorld' or 'Page\\HelloWorld'.
+   * @return string
+   *   Ex: 'CRM_Foo_Page_HelloWorld'.
+   */
+  public static function findClass($suffix) {
+    return self::CLASS_PREFIX . '_' . str_replace('\\', '_', $suffix);
+  }
+
+}
+
+use CRM_Civiimport_ExtensionUtil as E;
+
+function _civiimport_civix_mixin_polyfill() {
+  if (!class_exists('CRM_Extension_MixInfo')) {
+    $polyfill = __DIR__ . '/mixin/polyfill.php';
+    (require $polyfill)(E::LONG_NAME, E::SHORT_NAME, E::path());
+  }
+}
+
+/**
+ * (Delegated) Implements hook_civicrm_config().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config
+ */
+function _civiimport_civix_civicrm_config(&$config = NULL) {
+  static $configured = FALSE;
+  if ($configured) {
+    return;
+  }
+  $configured = TRUE;
+
+  $template = CRM_Core_Smarty::singleton();
+
+  $extRoot = __DIR__ . DIRECTORY_SEPARATOR;
+  $extDir = $extRoot . 'templates';
+
+  if (is_array($template->template_dir)) {
+    array_unshift($template->template_dir, $extDir);
+  }
+  else {
+    $template->template_dir = [$extDir, $template->template_dir];
+  }
+
+  $include_path = $extRoot . PATH_SEPARATOR . get_include_path();
+  set_include_path($include_path);
+  _civiimport_civix_mixin_polyfill();
+}
+
+/**
+ * Implements hook_civicrm_install().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install
+ */
+function _civiimport_civix_civicrm_install() {
+  _civiimport_civix_civicrm_config();
+  if ($upgrader = _civiimport_civix_upgrader()) {
+    $upgrader->onInstall();
+  }
+  _civiimport_civix_mixin_polyfill();
+}
+
+/**
+ * Implements hook_civicrm_postInstall().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_postInstall
+ */
+function _civiimport_civix_civicrm_postInstall() {
+  _civiimport_civix_civicrm_config();
+  if ($upgrader = _civiimport_civix_upgrader()) {
+    if (is_callable([$upgrader, 'onPostInstall'])) {
+      $upgrader->onPostInstall();
+    }
+  }
+}
+
+/**
+ * Implements hook_civicrm_uninstall().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_uninstall
+ */
+function _civiimport_civix_civicrm_uninstall() {
+  _civiimport_civix_civicrm_config();
+  if ($upgrader = _civiimport_civix_upgrader()) {
+    $upgrader->onUninstall();
+  }
+}
+
+/**
+ * (Delegated) Implements hook_civicrm_enable().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable
+ */
+function _civiimport_civix_civicrm_enable() {
+  _civiimport_civix_civicrm_config();
+  if ($upgrader = _civiimport_civix_upgrader()) {
+    if (is_callable([$upgrader, 'onEnable'])) {
+      $upgrader->onEnable();
+    }
+  }
+  _civiimport_civix_mixin_polyfill();
+}
+
+/**
+ * (Delegated) Implements hook_civicrm_disable().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_disable
+ * @return mixed
+ */
+function _civiimport_civix_civicrm_disable() {
+  _civiimport_civix_civicrm_config();
+  if ($upgrader = _civiimport_civix_upgrader()) {
+    if (is_callable([$upgrader, 'onDisable'])) {
+      $upgrader->onDisable();
+    }
+  }
+}
+
+/**
+ * (Delegated) Implements hook_civicrm_upgrade().
+ *
+ * @param $op string, the type of operation being performed; 'check' or 'enqueue'
+ * @param $queue CRM_Queue_Queue, (for 'enqueue') the modifiable list of pending up upgrade tasks
+ *
+ * @return mixed
+ *   based on op. for 'check', returns array(boolean) (TRUE if upgrades are pending)
+ *   for 'enqueue', returns void
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_upgrade
+ */
+function _civiimport_civix_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) {
+  if ($upgrader = _civiimport_civix_upgrader()) {
+    return $upgrader->onUpgrade($op, $queue);
+  }
+}
+
+/**
+ * @return CRM_Civiimport_Upgrader
+ */
+function _civiimport_civix_upgrader() {
+  if (!file_exists(__DIR__ . '/CRM/Civiimport/Upgrader.php')) {
+    return NULL;
+  }
+  else {
+    return CRM_Civiimport_Upgrader_Base::instance();
+  }
+}
+
+/**
+ * Inserts a navigation menu item at a given place in the hierarchy.
+ *
+ * @param array $menu - menu hierarchy
+ * @param string $path - path to parent of this item, e.g. 'my_extension/submenu'
+ *    'Mailing', or 'Administer/System Settings'
+ * @param array $item - the item to insert (parent/child attributes will be
+ *    filled for you)
+ *
+ * @return bool
+ */
+function _civiimport_civix_insert_navigation_menu(&$menu, $path, $item) {
+  // If we are done going down the path, insert menu
+  if (empty($path)) {
+    $menu[] = [
+      'attributes' => array_merge([
+        'label'      => CRM_Utils_Array::value('name', $item),
+        'active'     => 1,
+      ], $item),
+    ];
+    return TRUE;
+  }
+  else {
+    // Find an recurse into the next level down
+    $found = FALSE;
+    $path = explode('/', $path);
+    $first = array_shift($path);
+    foreach ($menu as $key => &$entry) {
+      if ($entry['attributes']['name'] == $first) {
+        if (!isset($entry['child'])) {
+          $entry['child'] = [];
+        }
+        $found = _civiimport_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item);
+      }
+    }
+    return $found;
+  }
+}
+
+/**
+ * (Delegated) Implements hook_civicrm_navigationMenu().
+ */
+function _civiimport_civix_navigationMenu(&$nodes) {
+  if (!is_callable(['CRM_Core_BAO_Navigation', 'fixNavigationMenu'])) {
+    _civiimport_civix_fixNavigationMenu($nodes);
+  }
+}
+
+/**
+ * Given a navigation menu, generate navIDs for any items which are
+ * missing them.
+ */
+function _civiimport_civix_fixNavigationMenu(&$nodes) {
+  $maxNavID = 1;
+  array_walk_recursive($nodes, function($item, $key) use (&$maxNavID) {
+    if ($key === 'navID') {
+      $maxNavID = max($maxNavID, $item);
+    }
+  });
+  _civiimport_civix_fixNavigationMenuItems($nodes, $maxNavID, NULL);
+}
+
+function _civiimport_civix_fixNavigationMenuItems(&$nodes, &$maxNavID, $parentID) {
+  $origKeys = array_keys($nodes);
+  foreach ($origKeys as $origKey) {
+    if (!isset($nodes[$origKey]['attributes']['parentID']) && $parentID !== NULL) {
+      $nodes[$origKey]['attributes']['parentID'] = $parentID;
+    }
+    // If no navID, then assign navID and fix key.
+    if (!isset($nodes[$origKey]['attributes']['navID'])) {
+      $newKey = ++$maxNavID;
+      $nodes[$origKey]['attributes']['navID'] = $newKey;
+      $nodes[$newKey] = $nodes[$origKey];
+      unset($nodes[$origKey]);
+      $origKey = $newKey;
+    }
+    if (isset($nodes[$origKey]['child']) && is_array($nodes[$origKey]['child'])) {
+      _civiimport_civix_fixNavigationMenuItems($nodes[$origKey]['child'], $maxNavID, $nodes[$origKey]['attributes']['navID']);
+    }
+  }
+}
+
+/**
+ * (Delegated) Implements hook_civicrm_entityTypes().
+ *
+ * Find any *.entityType.php files, merge their content, and return.
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_entityTypes
+ */
+function _civiimport_civix_civicrm_entityTypes(&$entityTypes) {
+  $entityTypes = array_merge($entityTypes, []);
+}
diff --git a/civicrm/ext/civiimport/civiimport.php b/civicrm/ext/civiimport/civiimport.php
new file mode 100644
index 0000000000000000000000000000000000000000..be706d5b51cfb4b7e7b615807291a0da7643b886
--- /dev/null
+++ b/civicrm/ext/civiimport/civiimport.php
@@ -0,0 +1,195 @@
+<?php
+
+use Civi\Api4\Mapping;
+use Civi\Api4\UserJob;
+use Civi\BAO\Import;
+
+require_once 'civiimport.civix.php';
+// phpcs:disable
+use Civi\Api4\Event\Subscriber\ImportSubscriber;
+use CRM_Civiimport_ExtensionUtil as E;
+// phpcs:enable
+
+/**
+ * Implements hook_civicrm_config().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config/
+ */
+function civiimport_civicrm_config(&$config) {
+  _civiimport_civix_civicrm_config($config);
+}
+
+/**
+ * Implements hook_civicrm_install().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install
+ */
+function civiimport_civicrm_install() {
+  _civiimport_civix_civicrm_install();
+}
+
+/**
+ * Implements hook_civicrm_postInstall().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_postInstall
+ */
+function civiimport_civicrm_postInstall() {
+  _civiimport_civix_civicrm_postInstall();
+}
+
+/**
+ * Implements hook_civicrm_uninstall().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_uninstall
+ */
+function civiimport_civicrm_uninstall() {
+  _civiimport_civix_civicrm_uninstall();
+}
+
+/**
+ * Implements hook_civicrm_enable().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable
+ */
+function civiimport_civicrm_enable() {
+  _civiimport_civix_civicrm_enable();
+}
+
+/**
+ * Implements hook_civicrm_disable().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_disable
+ */
+function civiimport_civicrm_disable() {
+  _civiimport_civix_civicrm_disable();
+}
+
+/**
+ * Implements hook_civicrm_upgrade().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_upgrade
+ */
+function civiimport_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) {
+  return _civiimport_civix_civicrm_upgrade($op, $queue);
+}
+
+/**
+ * Implements hook_civicrm_entityTypes().
+ *
+ * Declare each import table as an entity type. This function
+ * was intended to be in the ImportSubscriber class but kept
+ * getting errors when it was there so it's here, at least for now.
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_entityTypes
+ */
+function civiimport_civicrm_entityTypes(array &$entityTypes): void {
+  $importEntities = _civiimport_civicrm_get_import_tables();
+
+  foreach ($importEntities as $userJobID => $table) {
+    $entityTypes['Import_' . $userJobID] = [
+      'name' => 'Import_' . $userJobID,
+      'class' => Import::class,
+      'table' => $table['table_name'],
+    ];
+  }
+}
+
+/**
+ * Get the available import tables.
+ *
+ * Note this lives here as `entityTypes` hook calls it - which may not fully
+ * have class loading set up by the time it runs.
+ *
+ * @return array
+ */
+function _civiimport_civicrm_get_import_tables(): array {
+  // We need to avoid the api here as it is called early & could cause loops.
+  $tables = CRM_Core_DAO::executeQuery('
+     SELECT `user_job`.`id` AS id, `metadata`, `name`, `job_type`, `user_job`.`created_id`, `created_id`.`display_name`, `user_job`.`created_date`, `user_job`.`expires_date`
+     FROM civicrm_user_job user_job
+     LEFT JOIN civicrm_contact created_id ON created_id.id = created_id
+       -- As of writing expires date is probably not being managed
+       -- it is intended to be used to actually purge the record in
+       -- a cleanup job so it might not be relevant here & perhaps this will
+       -- be removed later
+       WHERE (expires_date IS NULL OR expires_date > NOW())
+       -- this is a short-cut for looking up if they are imports
+       -- it is a new convention, at best, to require anything
+       -- specific in the job_type, but it saves any onerous lookups
+       -- in a function which needs to avoid loops
+       AND job_type LIKE "%import"
+         -- also more of a feature than a specification - but we need a table
+         -- to do this pseudo-api
+       AND metadata LIKE "%table_name%"');
+  $importEntities = [];
+  while ($tables->fetch()) {
+    $tableName = json_decode($tables->metadata, TRUE)['DataSource']['table_name'];
+    if (!CRM_Utils_Rule::alphanumeric($tableName) || !CRM_Core_DAO::singleValueQuery('SHOW TABLES LIKE %1', [1 => [$tableName, 'String']])) {
+      continue;
+    }
+    $createdBy = $tables->display_name ? '' : ' (' . E::ts('Created by %1', [$tables->display_name, 'String']) . ')';
+    $importEntities[$tables->id] = [
+      'table_name' => $tableName,
+      'created_by' => $tables->display_name,
+      'created_id' => $tables->created_id ? (int) $tables->created_id : NULL,
+      'job_type' => $tables->job_type,
+      'user_job_id' => (int) $tables->id,
+      'created_date' => $tables->created_date,
+      'expires_date' => $tables->expires_date,
+      'title' => ts('Import Job') . (int) $tables->id,
+      'description' => $tables->created_date . $createdBy,
+    ];
+  }
+  return $importEntities;
+}
+
+/**
+ * Alter the template for the contribution import mapping to use angular form.
+ *
+ * @param string $formName
+ * @param \CRM_Core_Form $form
+ * @param string $type
+ * @param string $templateFile
+ *
+ * @noinspection PhpUnusedParameterInspection
+ */
+function civiimport_civicrm_alterTemplateFile($formName, $form, $type, &$templateFile) {
+  if ($formName === 'CRM_Contribute_Import_Form_MapField') {
+    $templateFile = 'CRM/Import/MapField.tpl';
+  }
+}
+
+/**
+ * Load the angular app for our form.
+ *
+ * @param string $formName
+ * @param \CRM_Core_Form|CRM_Contribute_Import_Form_MapField $form
+ *
+ * @throws \CRM_Core_Exception
+ */
+function civiimport_civicrm_buildForm(string $formName, $form) {
+  if ($formName === 'CRM_Contribute_Import_Form_MapField') {
+    // Add import-ui app
+    Civi::service('angularjs.loader')->addModules('crmCiviimport');
+    $form->assignCiviimportVariables();
+    $savedMappingID = (int) $form->getSubmittedValue('savedMapping');
+    $savedMapping = [];
+    if ($savedMappingID) {
+      $savedMapping = Mapping::get()->addWhere('id', '=', $savedMappingID)->addSelect('id', 'name', 'description')->execute()->first();
+    }
+    Civi::resources()->addVars('crmImportUi', ['savedMapping' => $savedMapping]);
+  }
+
+  if ($formName === 'CRM_Contribute_Import_Form_DataSource') {
+    // If we have already configured contact type on the import screen
+    // we remove it from the DataSource screen.
+    $userJobID = $form->get('user_job_id');
+    if ($userJobID) {
+      $metadata = UserJob::get()->addWhere('id', '=', $userJobID)->addSelect('metadata')->execute()->first()['metadata'];
+      $contactType = $metadata['entity_configuration']['Contact']['contact_type'] ?? NULL;
+      if ($contactType) {
+        $form->removeElement('contactType');
+      }
+    }
+  }
+}
diff --git a/civicrm/ext/oauth-client/images/screenshot.png b/civicrm/ext/civiimport/images/screenshot.png
similarity index 100%
rename from civicrm/ext/oauth-client/images/screenshot.png
rename to civicrm/ext/civiimport/images/screenshot.png
diff --git a/civicrm/ext/civiimport/info.xml b/civicrm/ext/civiimport/info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0d656fb874e518a0c9d2666a0117b8160c5aac5d
--- /dev/null
+++ b/civicrm/ext/civiimport/info.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<extension key="civiimport" type="module">
+  <file>civiimport</file>
+  <name>CiviImport</name>
+  <description>CiviCRM core import code</description>
+  <license>AGPL-3.0</license>
+  <maintainer>
+    <author>CiviCRM</author>
+    <email>info@civicrm.org</email>
+  </maintainer>
+  <urls>
+    <url desc="Main Extension Page">http://civicrm.org</url>
+    <url desc="Documentation">http://civicrm.org</url>
+    <url desc="Support">http://civicrm.org</url>
+    <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
+  </urls>
+  <releaseDate>2022-08-11</releaseDate>
+  <version>5.54.0</version>
+  <develStage>alpha</develStage>
+  <compatibility>
+    <ver>5.54</ver>
+  </compatibility>
+  <comments>Core extension for us to start moving import logic into, has more functionality</comments>
+  <requires>
+    <ext>org.civicrm.afform</ext>
+    <ext>org.civicrm.search_kit</ext>
+  </requires>
+  <classloader>
+    <psr4 prefix="Civi\" path="Civi"/>
+  </classloader>
+  <civix>
+    <namespace>CRM/Civiimport</namespace>
+    <format>22.05.2</format>
+    <angularModule>crmCiviimport</angularModule>
+  </civix>
+  <mixins>
+    <mixin>mgd-php@1.0.0</mixin>
+    <mixin>setting-php@1.0.0</mixin>
+    <mixin>ang-php@1.0.0</mixin>
+  </mixins>
+</extension>
diff --git a/civicrm/ext/civiimport/phpunit.xml.dist b/civicrm/ext/civiimport/phpunit.xml.dist
new file mode 100644
index 0000000000000000000000000000000000000000..ea391745fa9f582494ad0d5c02a786788a191636
--- /dev/null
+++ b/civicrm/ext/civiimport/phpunit.xml.dist
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" cacheResult="false" bootstrap="tests/phpunit/bootstrap.php">
+  <testsuites>
+    <testsuite name="My Test Suite">
+      <directory>./tests/phpunit</directory>
+    </testsuite>
+  </testsuites>
+  <filter>
+    <whitelist>
+      <directory suffix=".php">./</directory>
+    </whitelist>
+  </filter>
+  <listeners>
+    <listener class="Civi\Test\CiviTestListener">
+      <arguments/>
+    </listener>
+  </listeners>
+</phpunit>
diff --git a/civicrm/templates/CRM/Member/Import/Form/Summary.tpl b/civicrm/ext/civiimport/templates/CRM/Import/MapField.tpl
similarity index 53%
rename from civicrm/templates/CRM/Member/Import/Form/Summary.tpl
rename to civicrm/ext/civiimport/templates/CRM/Import/MapField.tpl
index 8bdd72de1d106fd348263f59598b8bff85e28f6d..e2d5ad0ac7b69d78d3baa03a6ddf219bafbc4f31 100644
--- a/civicrm/templates/CRM/Member/Import/Form/Summary.tpl
+++ b/civicrm/ext/civiimport/templates/CRM/Import/MapField.tpl
@@ -7,6 +7,12 @@
  | and copyright information, see https://civicrm.org/licensing       |
  +--------------------------------------------------------------------+
 *}
-{* Membership Import Wizard - no longer used - needs to be removed form the
-{* controller & this can be deleted *}
-{* @var $form Contains the array for the form elements and other form associated information assigned to the template by the controller *}
+{* Import Wizard - Step 2 (map incoming data fields) *}
+<div class="crm-block crm-form-block crm-import-form-block" id="upload-file">
+  {* WizardHeader.tpl provides visual display of steps thru the wizard as well as title for current step *}
+  {include file="CRM/common/WizardHeader.tpl"}
+
+  <crm-angular-js modules="crmCiviimport">
+    <crm-import-ui class="crm-import-field-selector-outer"></crm-import-ui>
+  </crm-angular-js>
+</div>
diff --git a/civicrm/ext/civiimport/templates/CRM/crmCiviimport/ImportUiCtrl.hlp b/civicrm/ext/civiimport/templates/CRM/crmCiviimport/ImportUiCtrl.hlp
new file mode 100644
index 0000000000000000000000000000000000000000..8b137891791fe96927ad78e64b0aad7bded08bdc
--- /dev/null
+++ b/civicrm/ext/civiimport/templates/CRM/crmCiviimport/ImportUiCtrl.hlp
@@ -0,0 +1 @@
+
diff --git a/civicrm/ext/civiimport/tests/phpunit/CiviApiImportTest.php b/civicrm/ext/civiimport/tests/phpunit/CiviApiImportTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..eb5b158a394633ce5bcade3c3685094f84d43d17
--- /dev/null
+++ b/civicrm/ext/civiimport/tests/phpunit/CiviApiImportTest.php
@@ -0,0 +1,160 @@
+<?php
+
+use Civi\Api4\Import;
+use Civi\Api4\UserJob;
+use Civi\Test\HeadlessInterface;
+use Civi\Test\HookInterface;
+use Civi\Test\CiviEnvBuilder;
+use PHPUnit\Framework\TestCase;
+
+/**
+ * FIXME - Add test description.
+ *
+ * Tips:
+ *  - With HookInterface, you may implement CiviCRM hooks directly in the test class.
+ *    Simply create corresponding functions (e.g. "hook_civicrm_post(...)" or similar).
+ *  - With TransactionalInterface, any data changes made by setUp() or test****() functions will
+ *    rollback automatically -- as long as you don't manipulate schema or truncate tables.
+ *    If this test needs to manipulate schema or truncate tables, then either:
+ *       a. Do all that using setupHeadless() and Civi\Test.
+ *       b. Disable TransactionalInterface, and handle all setup/teardown yourself.
+ *
+ * @group headless
+ */
+class CiviApiImportTest extends TestCase implements HeadlessInterface, HookInterface {
+
+  /**
+   * Setup used when HeadlessInterface is implemented.
+   *
+   * Civi\Test has many helpers, like install(), uninstall(), sql(), and sqlFile().
+   *
+   * @link https://github.com/civicrm/org.civicrm.testapalooza/blob/master/civi-test.md
+   *
+   * @return \Civi\Test\CiviEnvBuilder
+   *
+   * @throws \CRM_Extension_Exception_ParseException
+   */
+  public function setUpHeadless(): CiviEnvBuilder {
+    return \Civi\Test::headless()
+      ->installMe(__DIR__)
+      ->apply();
+  }
+
+  public function tearDown():void {
+    CRM_Core_DAO::executeQuery('DROP TABLE IF EXISTS abc');
+    parent::tearDown();
+  }
+
+  /**
+   * Test the CRUD api actions work for the Import classes.
+   *
+   * @throws \CRM_Core_Exception
+   */
+  public function testApiActions():void {
+    $this->createUserJobTable();
+    $userJobID = UserJob::create()->setValues([
+      'metadata' => [
+        'DataSource' => ['table_name' => 'abc', 'column_headers' => ['External Identifier', 'Amount Given', 'Date Received', 'Financial Type', 'In honor']],
+        'submitted_values' => [
+          'contactType' => 'Individual',
+          'contactSubType' => '',
+          'dataSource' => 'CRM_Import_DataSource_SQL',
+          'onDuplicate' => CRM_Import_Parser::DUPLICATE_SKIP,
+          'dedupe_rule_id' => NULL,
+          'dateFormats' => CRM_Core_Form_Date::DATE_yyyy_mm_dd,
+        ],
+        'import_mappings' => [
+          ['name' => 'external_identifier'],
+          ['name' => 'total_amount'],
+          ['name' => 'receive_date'],
+          ['name' => 'financial_type_id'],
+          [],
+        ],
+      ],
+      'status_id:name' => 'draft',
+      'job_type' => 'contribution_import',
+    ])->execute()->first()['id'];
+    $importFields = Import::getFields($userJobID)->execute();
+    $this->assertEquals('abc', $importFields[0]['table_name']);
+    $this->assertEquals('_id', $importFields[0]['column_name']);
+    $this->assertEquals('amount_given', $importFields[4]['column_name']);
+    $this->assertEquals('abc', $importFields[4]['table_name']);
+
+    Import::create($userJobID)->setValues([
+      'external_identifier' => 678,
+      'amount_given' => 80,
+      'receive_date' => NULL,
+      '_status' => 'NEW',
+      'soft_credit_to' => '',
+    ])->execute();
+
+    $import = Import::get($userJobID)->setSelect(['external_identifier', 'amount_given', '_status'])->execute()->first();
+    $rowID = $import['_id'];
+    $this->assertEquals('80', $import['amount_given']);
+
+    Import::update($userJobID)->setValues([
+      'amount_given' => NULL,
+      '_id' => $rowID,
+      '_status' => 'IMPORTED',
+    ])->execute();
+
+    $import = Import::get($userJobID)->setSelect(['external_identifier', 'amount_given', '_status'])->execute()->first();
+    $this->assertEquals(NULL, $import['amount_given']);
+
+    Import::save($userJobID)->setRecords([
+      [
+        'external_identifier' => 999,
+        'amount_given' => 9,
+        '_status' => 'ERROR',
+        '_id' => $rowID,
+      ],
+    ])->execute();
+
+    $import = Import::get($userJobID)->setSelect(['external_identifier', 'amount_given', '_status'])->addWhere('_id', '=', $rowID)->execute()->first();
+    $this->assertEquals(9, $import['amount_given']);
+
+    Import::save($userJobID)->setRecords([
+      [
+        'external_identifier' => 777,
+        '_id' => $rowID,
+        '_status' => 'ERROR',
+      ],
+    ])->execute();
+
+    $import = Import::get($userJobID)->setSelect(['external_identifier', 'amount_given', '_status'])->addWhere('_id', '=', $rowID)->execute()->first();
+    $this->assertEquals(777, $import['external_identifier']);
+
+    $validate = Import::validate($userJobID)->addWhere('_id', '=', $rowID)->setLimit(1)->execute()->first();
+    $this->assertEquals('Missing required fields: Contribution ID OR Invoice Reference OR Transaction ID OR Financial Type ID', $validate['_status_message']);
+    $this->assertEquals('ERROR', $validate['_status']);
+
+    Import::update($userJobID)->setValues(['financial_type' => 'Donation'])->addWhere('_id', '=', $rowID)->execute();
+    $validate = Import::validate($userJobID)->addWhere('_id', '=', $rowID)->setLimit(1)->execute()->first();
+    $this->assertEquals('', $validate['_status_message']);
+    $this->assertEquals('VALID', $validate['_status']);
+    $imported = Import::import($userJobID)->addWhere('_id', '=', $rowID)->setLimit(1)->execute()->first();
+    $this->assertEquals('ERROR', $imported['_status']);
+    $this->assertEquals('No matching Contact found', $imported['_status_message']);
+  }
+
+  /**
+   * Create a table for our Import api.
+   */
+  private function createUserJobTable(): void {
+    CRM_Core_DAO::executeQuery("CREATE TABLE IF NOT EXISTS `abc` (
+      `external_identifier` text DEFAULT NULL,
+      `amount_given` text DEFAULT NULL,
+      `receive_date` text DEFAULT NULL,
+      `financial_type` text DEFAULT NULL,
+      `soft_credit_to` text DEFAULT NULL,
+      `_entity_id` int(11) DEFAULT NULL,
+      `_status` varchar(32) NOT NULL DEFAULT 'NEW',
+      `_status_message` longtext DEFAULT NULL,
+      `_id` int(11) NOT NULL AUTO_INCREMENT,
+      PRIMARY KEY (`_id`),
+      KEY `_id` (`_id`),
+      KEY `_status` (`_status`)
+    ) ENGINE=InnoDB");
+  }
+
+}
diff --git a/civicrm/ext/civiimport/tests/phpunit/bootstrap.php b/civicrm/ext/civiimport/tests/phpunit/bootstrap.php
new file mode 100644
index 0000000000000000000000000000000000000000..eaa8379442aaf86398def1c7ed2dc251c8d2755a
--- /dev/null
+++ b/civicrm/ext/civiimport/tests/phpunit/bootstrap.php
@@ -0,0 +1,65 @@
+<?php
+
+ini_set('memory_limit', '2G');
+
+// phpcs:disable
+eval(cv('php:boot --level=classloader', 'phpcode'));
+// phpcs:enable
+// Allow autoloading of PHPUnit helper classes in this extension.
+$loader = new \Composer\Autoload\ClassLoader();
+$loader->add('CRM_', [__DIR__ . '/../..', __DIR__]);
+$loader->addPsr4('Civi\\', [__DIR__ . '/../../Civi', __DIR__ . '/Civi']);
+$loader->add('api_', [__DIR__ . '/../..', __DIR__]);
+$loader->addPsr4('api\\', [__DIR__ . '/../../api', __DIR__ . '/api']);
+
+$loader->register();
+
+/**
+ * Call the "cv" command.
+ *
+ * @param string $cmd
+ *   The rest of the command to send.
+ * @param string $decode
+ *   Ex: 'json' or 'phpcode'.
+ * @return mixed
+ *   Response output (if the command executed normally).
+ *   For 'raw' or 'phpcode', this will be a string. For 'json', it could be any JSON value.
+ * @throws \RuntimeException
+ *   If the command terminates abnormally.
+ */
+function cv(string $cmd, string $decode = 'json') {
+  $cmd = 'cv ' . $cmd;
+  $descriptorSpec = [0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => STDERR];
+  $oldOutput = getenv('CV_OUTPUT');
+  putenv('CV_OUTPUT=json');
+
+  // Execute `cv` in the original folder. This is a work-around for
+  // phpunit/codeception, which seem to manipulate PWD.
+  $cmd = sprintf('cd %s; %s', escapeshellarg(getenv('PWD')), $cmd);
+
+  $process = proc_open($cmd, $descriptorSpec, $pipes, __DIR__);
+  putenv("CV_OUTPUT=$oldOutput");
+  fclose($pipes[0]);
+  $result = stream_get_contents($pipes[1]);
+  fclose($pipes[1]);
+  if (proc_close($process) !== 0) {
+    throw new RuntimeException("Command failed ($cmd):\n$result");
+  }
+  switch ($decode) {
+    case 'raw':
+      return $result;
+
+    case 'phpcode':
+      // If the last output is /*PHPCODE*/, then we managed to complete execution.
+      if (substr(trim($result), 0, 12) !== '/*BEGINPHP*/' || substr(trim($result), -10) !== '/*ENDPHP*/') {
+        throw new \RuntimeException("Command failed ($cmd):\n$result");
+      }
+      return $result;
+
+    case 'json':
+      return json_decode($result, 1);
+
+    default:
+      throw new RuntimeException("Bad decoder format ($decode)");
+  }
+}
diff --git a/civicrm/ext/ckeditor4/info.xml b/civicrm/ext/ckeditor4/info.xml
index 8e2f8de0c80c7254db4c6fe21157fa9f434f3989..774f422b976fcd1b4d99afeb6293cfdac9fd186a 100644
--- a/civicrm/ext/ckeditor4/info.xml
+++ b/civicrm/ext/ckeditor4/info.xml
@@ -15,10 +15,10 @@
     <url desc="Licensing">https://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-05-23</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <comments>This is the version of CKEditor that originally shipped with CiviCRM core</comments>
   <classloader>
diff --git a/civicrm/ext/contributioncancelactions/contributioncancelactions.php b/civicrm/ext/contributioncancelactions/contributioncancelactions.php
index 26fea163413380231987cd1cf8c4600a328025e1..76e61d1756cea65ba79b9bd988cd202d0bd33397 100644
--- a/civicrm/ext/contributioncancelactions/contributioncancelactions.php
+++ b/civicrm/ext/contributioncancelactions/contributioncancelactions.php
@@ -1,9 +1,7 @@
 <?php
 
 require_once 'contributioncancelactions.civix.php';
-// phpcs:disable
-use CRM_Contributioncancelactions_ExtensionUtil as E;
-// phpcs:enable
+
 use Civi\Api4\LineItem;
 use Civi\Api4\Participant;
 
@@ -23,13 +21,11 @@ use Civi\Api4\Participant;
  * @throws \API_Exception
  */
 function contributioncancelactions_civicrm_post($op, $objectName, $objectId, $objectRef) {
-  if ($op === 'edit' && $objectName === 'Contribution') {
-    if (in_array(CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $objectRef->contribution_status_id),
-      ['Cancelled', 'Failed']
-    )) {
-      contributioncancelactions_cancel_related_pending_memberships((int) $objectId);
-      contributioncancelactions_cancel_related_pending_participant_records((int) $objectId);
-    }
+  if ($op === 'edit' && $objectName === 'Contribution'
+    && in_array(CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $objectRef->contribution_status_id), ['Cancelled', 'Failed'], TRUE)
+  ) {
+    contributioncancelactions_cancel_related_pending_memberships((int) $objectId);
+    contributioncancelactions_cancel_related_pending_participant_records((int) $objectId);
   }
 }
 
@@ -37,9 +33,10 @@ function contributioncancelactions_civicrm_post($op, $objectName, $objectId, $ob
  * Find and cancel any pending participant records.
  *
  * @param int $contributionID
+ *
  * @throws CiviCRM_API3_Exception
  */
-function contributioncancelactions_cancel_related_pending_participant_records($contributionID): void {
+function contributioncancelactions_cancel_related_pending_participant_records(int $contributionID): void {
   $pendingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Pending'");
   $waitingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Waiting'");
   $cancellableParticipantRecords = civicrm_api3('ParticipantPayment', 'get', [
@@ -59,10 +56,11 @@ function contributioncancelactions_cancel_related_pending_participant_records($c
  * Find and cancel any pending memberships.
  *
  * @param int $contributionID
+ *
  * @throws API_Exception
  * @throws CiviCRM_API3_Exception
  */
-function contributioncancelactions_cancel_related_pending_memberships($contributionID): void {
+function contributioncancelactions_cancel_related_pending_memberships(int $contributionID): void {
   $connectedMemberships = (array) LineItem::get(FALSE)->setWhere([
     ['contribution_id', '=', $contributionID],
     ['entity_table', '=', 'civicrm_membership'],
diff --git a/civicrm/ext/contributioncancelactions/info.xml b/civicrm/ext/contributioncancelactions/info.xml
index 77fe93edad11f0ce534c4f34c7cb1cfcd7839ea3..13502e3c6d1eb1f255a02c6fc1598e6041202852 100644
--- a/civicrm/ext/contributioncancelactions/info.xml
+++ b/civicrm/ext/contributioncancelactions/info.xml
@@ -15,10 +15,10 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-10-12</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <comments>This code has been moved from core to a separate extension in 5.32. Note that if you disable it failed or cancelled contributions will not cause related memberships and participant records to be updated</comments>
   <classloader>
diff --git a/civicrm/ext/contributioncancelactions/tests/phpunit/CancelTest.php b/civicrm/ext/contributioncancelactions/tests/phpunit/CancelTest.php
index 30ed165d18b3ceb9635e2529f5a8363f5ee41343..af6f4a7245d8b53b7c9e41f1fb189cf3e7cba8e6 100644
--- a/civicrm/ext/contributioncancelactions/tests/phpunit/CancelTest.php
+++ b/civicrm/ext/contributioncancelactions/tests/phpunit/CancelTest.php
@@ -156,7 +156,6 @@ class CancelTest extends TestCase implements HeadlessInterface, HookInterface, T
    * Create the general membership type.
    *
    * @throws \API_Exception
-   * @throws \Civi\API\Exception\UnauthorizedException
    */
   protected function createMembershipType(): void {
     MembershipType::create()->setValues([
@@ -241,16 +240,24 @@ class CancelTest extends TestCase implements HeadlessInterface, HookInterface, T
   }
 
   /**
-   * Test cancel order api
+   * Test fail order api.
+   *
    * @throws API_Exception
    */
-  public function testCancelOrderWithParticipant(): void {
-    $this->createContact();
-    $orderID = $this->createEventOrder();
-    $this->callAPISuccess('Order', 'cancel', ['contribution_id' => $orderID]);
-    $this->callAPISuccess('Order', 'get', ['contribution_id' => $orderID]);
-    $this->callAPISuccessGetSingle('Contribution', ['contribution_status_id' => 'Cancelled']);
-    $this->callAPISuccessGetCount('Participant', ['status_id' => 'Cancelled'], 1);
+  public function testCancelOrderWithParticipantFailed(): void {
+    $status = 'Failed';
+    $this->createAndUpdateContribution($status);
+  }
+
+  /**
+   * Test cancel order api.
+   *
+   * @throws API_Exception
+   */
+  public function testCancelOrderWithParticipantCancelled(): void {
+    $this->markTestIncomplete('For unknown reasons this failed if run after the cancelled variation of this test');
+    $status = 'Cancelled';
+    $this->createAndUpdateContribution($status);
   }
 
   /**
@@ -285,6 +292,14 @@ class CancelTest extends TestCase implements HeadlessInterface, HookInterface, T
     $this->assertEquals('Cancelled', $contribution['contribution_status_id:name']);
     $membership = $this->callAPISuccessGetSingle('Membership', []);
     $this->assertEquals('Cancelled', CRM_Core_PseudoConstant::getName('CRM_Member_BAO_Membership', 'status_id', $membership['status_id']));
+    $this->assertEquals(TRUE, $membership['is_override']);
+    $membershipSignupActivity = Activity::get()
+      ->addSelect('subject', 'source_record_id', 'status_id')
+      ->addWhere('activity_type_id:name', '=', 'Membership Signup')
+      ->execute();
+    $this->assertCount(1, $membershipSignupActivity);
+    $this->assertEquals($membership['id'], $membershipSignupActivity->first()['source_record_id']);
+    $this->assertEquals('General - Payment - Status: Pending', $membershipSignupActivity->first()['subject']);
     $activity = Activity::get()
       ->addSelect('subject', 'source_record_id', 'status_id')
       ->addWhere('activity_type_id:name', '=', 'Change Membership Status')
@@ -293,6 +308,15 @@ class CancelTest extends TestCase implements HeadlessInterface, HookInterface, T
     $this->assertEquals('Status changed from Pending to Cancelled', $activity->first()['subject']);
   }
 
+  /**
+   * Get the event ID.
+   *
+   * @return int
+   */
+  protected function getEventID(): int {
+    return $this->ids['event'][0];
+  }
+
   /**
    * Create an event and an order for a participant in that event.
    *
@@ -335,4 +359,47 @@ class CancelTest extends TestCase implements HeadlessInterface, HookInterface, T
     $this->ids['contact'][0] = Civi\Api4\Contact::create()->setValues(['first_name' => 'Brer', 'last_name' => 'Rabbit'])->execute()->first()['id'];
   }
 
+  /**
+   * @param string $status
+   *
+   * @throws \API_Exception
+   * @throws \CiviCRM_API3_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  protected function createAndUpdateContribution(string $status): void {
+    $this->createContact();
+    $orderID = $this->createEventOrder();
+    $participantID = Participant::get()
+      ->addSelect('id')
+      ->execute()
+      ->first()['id'];
+    $additionalParticipantID = Participant::create()->setValues([
+      'event_id' => $this->getEventID(),
+      'contact_id' => $this->individualCreate(),
+      'registered_by_id' => $participantID,
+      'status_id:name' => 'Pending from incomplete transaction',
+    ])->execute()->first()['id'];
+    if ($status === 'Cancelled') {
+      $this->callAPISuccess('Order', 'cancel', ['contribution_id' => $orderID]);
+    }
+    else {
+      Contribution::update()
+        ->setValues(['contribution_status_id:name' => $status])
+        ->addWhere('id', '=', $orderID)
+        ->execute();
+    }
+    $this->callAPISuccess('Order', 'get', ['contribution_id' => $orderID]);
+    $this->callAPISuccessGetSingle('Contribution', ['contribution_status_id' => $status]);
+    $this->callAPISuccessGetCount('Participant', ['status_id' => 'Cancelled'], 2);
+
+    $cancelledActivatesCount = civicrm_api3('Activity', 'get', [
+      'sequential' => 1,
+      'activity_type_id' => 'Event Registration',
+      'subject' => ['LIKE' => '%Cancelled%'],
+      'source_record_id' => ['IN' => [$participantID, $additionalParticipantID]],
+    ]);
+
+    $this->assertEquals(2, $cancelledActivatesCount['count']);
+  }
+
 }
diff --git a/civicrm/ext/elavon/CRM/Core/Payment/Elavon.mgd.php b/civicrm/ext/elavon/CRM/Core/Payment/Elavon.mgd.php
new file mode 100644
index 0000000000000000000000000000000000000000..9fc83d5cc661e15325d99c103f69d456b4af8db4
--- /dev/null
+++ b/civicrm/ext/elavon/CRM/Core/Payment/Elavon.mgd.php
@@ -0,0 +1,28 @@
+<?php
+use CRM_Elavon_ExtensionUtil as E;
+
+// This file declares a managed database record of type "ReportTemplate".
+// The record will be automatically inserted, updated, or deleted from the
+// database as appropriate. For more details, see "hook_civicrm_managed" at:
+// http://wiki.civicrm.org/confluence/display/CRMDOC42/Hook+Reference
+return [
+  0 => [
+    'name' => 'PaymentProcessorType_Elavon',
+    'entity' => 'PaymentProcessorType',
+    'params' => [
+      'version' => 3,
+      'name' => 'Elavon',
+      'title' => E::ts('Elavon Payment Processor'),
+      'description' => E::ts('Elavon / Nova Virtual Merchant'),
+      'user_name_label' => E::ts('SSL Merchant ID'),
+      'password_label' => E::ts('SSL User ID'),
+      'signature_label' => E::ts('SSL PIN'),
+      'class_name' => 'Payment_Elavon',
+      'billing_mode' => 1,
+      'url_site_default' => 'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',
+      'payment_type' => 1,
+      'is_recur' => 0,
+      'url_site_test_default' => 'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',
+    ],
+  ],
+];
diff --git a/civicrm/CRM/Core/Payment/Elavon.php b/civicrm/ext/elavon/CRM/Core/Payment/Elavon.php
similarity index 100%
rename from civicrm/CRM/Core/Payment/Elavon.php
rename to civicrm/ext/elavon/CRM/Core/Payment/Elavon.php
diff --git a/civicrm/ext/elavon/LICENSE.txt b/civicrm/ext/elavon/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..80b2fb45d927562fc00577495a98394d964758ad
--- /dev/null
+++ b/civicrm/ext/elavon/LICENSE.txt
@@ -0,0 +1,667 @@
+Package: elavon
+Copyright (C) 2022, Seamus Lee <seamuslee001@gmail.com>
+Licensed under the GNU Affero Public License 3.0 (below).
+
+-------------------------------------------------------------------------------
+
+                    GNU AFFERO GENERAL PUBLIC LICENSE
+                       Version 3, 19 November 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+our General Public Licenses are intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+  A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate.  Many developers of free software are heartened and
+encouraged by the resulting cooperation.  However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+  The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community.  It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server.  Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+  An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals.  This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU Affero General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Remote Network Interaction; Use with the GNU General Public License.
+
+  Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software.  This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero General Public License from time to time.  Such new versions
+will be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU Affero General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU Affero General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU Affero General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program 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.
+
+    This program 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/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source.  For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code.  There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU AGPL, see
+<http://www.gnu.org/licenses/>.
diff --git a/civicrm/ext/elavon/README.md b/civicrm/ext/elavon/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..3e22826714bd73844f44d3522b2d4edf8e662fd2
--- /dev/null
+++ b/civicrm/ext/elavon/README.md
@@ -0,0 +1,22 @@
+# elavon
+
+This extension is to install the Elavon Payment Processor that used to be within the Core code base now as a core extension.
+
+The extension is licensed under [AGPL-3.0](LICENSE.txt).
+
+## Requirements
+
+* PHP v7.2+
+* CiviCRM (*FIXME: Version number*)
+
+## Installation (Web UI)
+
+Learn more about installing CiviCRM extensions in the [CiviCRM Sysadmin Guide](https://docs.civicrm.org/sysadmin/en/latest/customize/extensions/).
+
+## Installation (CLI
+
+Sysadmins and developers may install this core extension with the command-line tool [cv](https://github.com/civicrm/cv).
+
+```bash
+cv en elavon
+```
diff --git a/civicrm/ext/elavon/elavon.civix.php b/civicrm/ext/elavon/elavon.civix.php
new file mode 100644
index 0000000000000000000000000000000000000000..d9bf7ce880c44f330e0009fb8a3888444087dace
--- /dev/null
+++ b/civicrm/ext/elavon/elavon.civix.php
@@ -0,0 +1,308 @@
+<?php
+
+// AUTO-GENERATED FILE -- Civix may overwrite any changes made to this file
+
+/**
+ * The ExtensionUtil class provides small stubs for accessing resources of this
+ * extension.
+ */
+class CRM_Elavon_ExtensionUtil {
+  const SHORT_NAME = 'elavon';
+  const LONG_NAME = 'elavon';
+  const CLASS_PREFIX = 'CRM_Elavon';
+
+  /**
+   * Translate a string using the extension's domain.
+   *
+   * If the extension doesn't have a specific translation
+   * for the string, fallback to the default translations.
+   *
+   * @param string $text
+   *   Canonical message text (generally en_US).
+   * @param array $params
+   * @return string
+   *   Translated text.
+   * @see ts
+   */
+  public static function ts($text, $params = []) {
+    if (!array_key_exists('domain', $params)) {
+      $params['domain'] = [self::LONG_NAME, NULL];
+    }
+    return ts($text, $params);
+  }
+
+  /**
+   * Get the URL of a resource file (in this extension).
+   *
+   * @param string|NULL $file
+   *   Ex: NULL.
+   *   Ex: 'css/foo.css'.
+   * @return string
+   *   Ex: 'http://example.org/sites/default/ext/org.example.foo'.
+   *   Ex: 'http://example.org/sites/default/ext/org.example.foo/css/foo.css'.
+   */
+  public static function url($file = NULL) {
+    if ($file === NULL) {
+      return rtrim(CRM_Core_Resources::singleton()->getUrl(self::LONG_NAME), '/');
+    }
+    return CRM_Core_Resources::singleton()->getUrl(self::LONG_NAME, $file);
+  }
+
+  /**
+   * Get the path of a resource file (in this extension).
+   *
+   * @param string|NULL $file
+   *   Ex: NULL.
+   *   Ex: 'css/foo.css'.
+   * @return string
+   *   Ex: '/var/www/example.org/sites/default/ext/org.example.foo'.
+   *   Ex: '/var/www/example.org/sites/default/ext/org.example.foo/css/foo.css'.
+   */
+  public static function path($file = NULL) {
+    // return CRM_Core_Resources::singleton()->getPath(self::LONG_NAME, $file);
+    return __DIR__ . ($file === NULL ? '' : (DIRECTORY_SEPARATOR . $file));
+  }
+
+  /**
+   * Get the name of a class within this extension.
+   *
+   * @param string $suffix
+   *   Ex: 'Page_HelloWorld' or 'Page\\HelloWorld'.
+   * @return string
+   *   Ex: 'CRM_Foo_Page_HelloWorld'.
+   */
+  public static function findClass($suffix) {
+    return self::CLASS_PREFIX . '_' . str_replace('\\', '_', $suffix);
+  }
+
+}
+
+use CRM_Elavon_ExtensionUtil as E;
+
+function _elavon_civix_mixin_polyfill() {
+  if (!class_exists('CRM_Extension_MixInfo')) {
+    $polyfill = __DIR__ . '/mixin/polyfill.php';
+    (require $polyfill)(E::LONG_NAME, E::SHORT_NAME, E::path());
+  }
+}
+
+/**
+ * (Delegated) Implements hook_civicrm_config().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config
+ */
+function _elavon_civix_civicrm_config(&$config = NULL) {
+  static $configured = FALSE;
+  if ($configured) {
+    return;
+  }
+  $configured = TRUE;
+
+  $template = CRM_Core_Smarty::singleton();
+
+  $extRoot = __DIR__ . DIRECTORY_SEPARATOR;
+  $extDir = $extRoot . 'templates';
+
+  if (is_array($template->template_dir)) {
+    array_unshift($template->template_dir, $extDir);
+  }
+  else {
+    $template->template_dir = [$extDir, $template->template_dir];
+  }
+
+  $include_path = $extRoot . PATH_SEPARATOR . get_include_path();
+  set_include_path($include_path);
+  _elavon_civix_mixin_polyfill();
+}
+
+/**
+ * Implements hook_civicrm_install().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install
+ */
+function _elavon_civix_civicrm_install() {
+  _elavon_civix_civicrm_config();
+  if ($upgrader = _elavon_civix_upgrader()) {
+    $upgrader->onInstall();
+  }
+  _elavon_civix_mixin_polyfill();
+}
+
+/**
+ * Implements hook_civicrm_postInstall().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_postInstall
+ */
+function _elavon_civix_civicrm_postInstall() {
+  _elavon_civix_civicrm_config();
+  if ($upgrader = _elavon_civix_upgrader()) {
+    if (is_callable([$upgrader, 'onPostInstall'])) {
+      $upgrader->onPostInstall();
+    }
+  }
+}
+
+/**
+ * Implements hook_civicrm_uninstall().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_uninstall
+ */
+function _elavon_civix_civicrm_uninstall() {
+  _elavon_civix_civicrm_config();
+  if ($upgrader = _elavon_civix_upgrader()) {
+    $upgrader->onUninstall();
+  }
+}
+
+/**
+ * (Delegated) Implements hook_civicrm_enable().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable
+ */
+function _elavon_civix_civicrm_enable() {
+  _elavon_civix_civicrm_config();
+  if ($upgrader = _elavon_civix_upgrader()) {
+    if (is_callable([$upgrader, 'onEnable'])) {
+      $upgrader->onEnable();
+    }
+  }
+  _elavon_civix_mixin_polyfill();
+}
+
+/**
+ * (Delegated) Implements hook_civicrm_disable().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_disable
+ * @return mixed
+ */
+function _elavon_civix_civicrm_disable() {
+  _elavon_civix_civicrm_config();
+  if ($upgrader = _elavon_civix_upgrader()) {
+    if (is_callable([$upgrader, 'onDisable'])) {
+      $upgrader->onDisable();
+    }
+  }
+}
+
+/**
+ * (Delegated) Implements hook_civicrm_upgrade().
+ *
+ * @param $op string, the type of operation being performed; 'check' or 'enqueue'
+ * @param $queue CRM_Queue_Queue, (for 'enqueue') the modifiable list of pending up upgrade tasks
+ *
+ * @return mixed
+ *   based on op. for 'check', returns array(boolean) (TRUE if upgrades are pending)
+ *   for 'enqueue', returns void
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_upgrade
+ */
+function _elavon_civix_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) {
+  if ($upgrader = _elavon_civix_upgrader()) {
+    return $upgrader->onUpgrade($op, $queue);
+  }
+}
+
+/**
+ * @return CRM_Elavon_Upgrader
+ */
+function _elavon_civix_upgrader() {
+  if (!file_exists(__DIR__ . '/CRM/Elavon/Upgrader.php')) {
+    return NULL;
+  }
+  else {
+    return CRM_Elavon_Upgrader_Base::instance();
+  }
+}
+
+/**
+ * Inserts a navigation menu item at a given place in the hierarchy.
+ *
+ * @param array $menu - menu hierarchy
+ * @param string $path - path to parent of this item, e.g. 'my_extension/submenu'
+ *    'Mailing', or 'Administer/System Settings'
+ * @param array $item - the item to insert (parent/child attributes will be
+ *    filled for you)
+ *
+ * @return bool
+ */
+function _elavon_civix_insert_navigation_menu(&$menu, $path, $item) {
+  // If we are done going down the path, insert menu
+  if (empty($path)) {
+    $menu[] = [
+      'attributes' => array_merge([
+        'label'      => CRM_Utils_Array::value('name', $item),
+        'active'     => 1,
+      ], $item),
+    ];
+    return TRUE;
+  }
+  else {
+    // Find an recurse into the next level down
+    $found = FALSE;
+    $path = explode('/', $path);
+    $first = array_shift($path);
+    foreach ($menu as $key => &$entry) {
+      if ($entry['attributes']['name'] == $first) {
+        if (!isset($entry['child'])) {
+          $entry['child'] = [];
+        }
+        $found = _elavon_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item);
+      }
+    }
+    return $found;
+  }
+}
+
+/**
+ * (Delegated) Implements hook_civicrm_navigationMenu().
+ */
+function _elavon_civix_navigationMenu(&$nodes) {
+  if (!is_callable(['CRM_Core_BAO_Navigation', 'fixNavigationMenu'])) {
+    _elavon_civix_fixNavigationMenu($nodes);
+  }
+}
+
+/**
+ * Given a navigation menu, generate navIDs for any items which are
+ * missing them.
+ */
+function _elavon_civix_fixNavigationMenu(&$nodes) {
+  $maxNavID = 1;
+  array_walk_recursive($nodes, function($item, $key) use (&$maxNavID) {
+    if ($key === 'navID') {
+      $maxNavID = max($maxNavID, $item);
+    }
+  });
+  _elavon_civix_fixNavigationMenuItems($nodes, $maxNavID, NULL);
+}
+
+function _elavon_civix_fixNavigationMenuItems(&$nodes, &$maxNavID, $parentID) {
+  $origKeys = array_keys($nodes);
+  foreach ($origKeys as $origKey) {
+    if (!isset($nodes[$origKey]['attributes']['parentID']) && $parentID !== NULL) {
+      $nodes[$origKey]['attributes']['parentID'] = $parentID;
+    }
+    // If no navID, then assign navID and fix key.
+    if (!isset($nodes[$origKey]['attributes']['navID'])) {
+      $newKey = ++$maxNavID;
+      $nodes[$origKey]['attributes']['navID'] = $newKey;
+      $nodes[$newKey] = $nodes[$origKey];
+      unset($nodes[$origKey]);
+      $origKey = $newKey;
+    }
+    if (isset($nodes[$origKey]['child']) && is_array($nodes[$origKey]['child'])) {
+      _elavon_civix_fixNavigationMenuItems($nodes[$origKey]['child'], $maxNavID, $nodes[$origKey]['attributes']['navID']);
+    }
+  }
+}
+
+/**
+ * (Delegated) Implements hook_civicrm_entityTypes().
+ *
+ * Find any *.entityType.php files, merge their content, and return.
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_entityTypes
+ */
+function _elavon_civix_civicrm_entityTypes(&$entityTypes) {
+  $entityTypes = array_merge($entityTypes, []);
+}
diff --git a/civicrm/ext/elavon/elavon.php b/civicrm/ext/elavon/elavon.php
new file mode 100644
index 0000000000000000000000000000000000000000..382861606a0561ce3d4dec7deeb500ca1e9cf2fa
--- /dev/null
+++ b/civicrm/ext/elavon/elavon.php
@@ -0,0 +1,108 @@
+<?php
+
+require_once 'elavon.civix.php';
+// phpcs:disable
+use CRM_Elavon_ExtensionUtil as E;
+// phpcs:enable
+
+/**
+ * Implements hook_civicrm_config().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config/
+ */
+function elavon_civicrm_config(&$config) {
+  _elavon_civix_civicrm_config($config);
+}
+
+/**
+ * Implements hook_civicrm_install().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install
+ */
+function elavon_civicrm_install() {
+  _elavon_civix_civicrm_install();
+}
+
+/**
+ * Implements hook_civicrm_postInstall().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_postInstall
+ */
+function elavon_civicrm_postInstall() {
+  _elavon_civix_civicrm_postInstall();
+}
+
+/**
+ * Implements hook_civicrm_uninstall().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_uninstall
+ */
+function elavon_civicrm_uninstall() {
+  _elavon_civix_civicrm_uninstall();
+}
+
+/**
+ * Implements hook_civicrm_enable().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable
+ */
+function elavon_civicrm_enable() {
+  _elavon_civix_civicrm_enable();
+}
+
+/**
+ * Implements hook_civicrm_disable().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_disable
+ */
+function elavon_civicrm_disable() {
+  _elavon_civix_civicrm_disable();
+}
+
+/**
+ * Implements hook_civicrm_upgrade().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_upgrade
+ */
+function elavon_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL) {
+  return _elavon_civix_civicrm_upgrade($op, $queue);
+}
+
+/**
+ * Implements hook_civicrm_entityTypes().
+ *
+ * Declare entity types provided by this module.
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_entityTypes
+ */
+function elavon_civicrm_entityTypes(&$entityTypes) {
+  _elavon_civix_civicrm_entityTypes($entityTypes);
+}
+
+// --- Functions below this ship commented out. Uncomment as required. ---
+
+/**
+ * Implements hook_civicrm_preProcess().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_preProcess
+ */
+//function elavon_civicrm_preProcess($formName, &$form) {
+//
+//}
+
+/**
+ * Implements hook_civicrm_navigationMenu().
+ *
+ * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_navigationMenu
+ */
+//function elavon_civicrm_navigationMenu(&$menu) {
+//  _elavon_civix_insert_navigation_menu($menu, 'Mailings', [
+//    'label' => E::ts('New subliminal message'),
+//    'name' => 'mailing_subliminal_message',
+//    'url' => 'civicrm/mailing/subliminal',
+//    'permission' => 'access CiviMail',
+//    'operator' => 'OR',
+//    'separator' => 0,
+//  ]);
+//  _elavon_civix_navigationMenu($menu);
+//}
diff --git a/civicrm/ext/elavon/info.xml b/civicrm/ext/elavon/info.xml
new file mode 100644
index 0000000000000000000000000000000000000000..0b199c25953e78451d9db711ce1aec36bca9d6ac
--- /dev/null
+++ b/civicrm/ext/elavon/info.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<extension key="elavon" type="module">
+  <file>elavon</file>
+  <name>Elavon Payment Processor</name>
+  <description>Elavon Payment Processor that used to ship within core</description>
+  <license>AGPL-3.0</license>
+  <maintainer>
+    <author>Seamus Lee</author>
+    <email>seamuslee001@gmail.com</email>
+  </maintainer>
+  <urls>
+    <url desc="Main Extension Page">https://github.com/civicrm/civicrm-core</url>
+    <url desc="Documentation">https://docs.civicrm.org/sysadmin/en/latest/setup/payment-processors/</url>
+    <url desc="Support">https://lab.civicrm.org</url>
+    <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
+  </urls>
+  <releaseDate>2022-08-05</releaseDate>
+  <version>5.54.0</version>
+  <develStage>stable</develStage>
+  <compatibility>
+    <ver>5.54</ver>
+  </compatibility>
+  <comments/>
+  <classloader>
+    <psr4 prefix="Civi\" path="Civi"/>
+  </classloader>
+  <civix>
+    <namespace>CRM/Elavon</namespace>
+    <format>22.05.2</format>
+    <angularModule>crmElavon</angularModule>
+  </civix>
+  <mixins>
+    <mixin>mgd-php@1.0.0</mixin>
+    <mixin>setting-php@1.0.0</mixin>
+  </mixins>
+</extension>
diff --git a/civicrm/ext/elavon/phpunit.xml.dist b/civicrm/ext/elavon/phpunit.xml.dist
new file mode 100644
index 0000000000000000000000000000000000000000..ea391745fa9f582494ad0d5c02a786788a191636
--- /dev/null
+++ b/civicrm/ext/elavon/phpunit.xml.dist
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" cacheResult="false" bootstrap="tests/phpunit/bootstrap.php">
+  <testsuites>
+    <testsuite name="My Test Suite">
+      <directory>./tests/phpunit</directory>
+    </testsuite>
+  </testsuites>
+  <filter>
+    <whitelist>
+      <directory suffix=".php">./</directory>
+    </whitelist>
+  </filter>
+  <listeners>
+    <listener class="Civi\Test\CiviTestListener">
+      <arguments/>
+    </listener>
+  </listeners>
+</phpunit>
diff --git a/civicrm/ext/elavon/tests/phpunit/CRM/Core/Payment/ElavonTest.php b/civicrm/ext/elavon/tests/phpunit/CRM/Core/Payment/ElavonTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..81fc623ea55689d394a35278a123ec5952280066
--- /dev/null
+++ b/civicrm/ext/elavon/tests/phpunit/CRM/Core/Payment/ElavonTest.php
@@ -0,0 +1,176 @@
+<?php
+
+use CRM_Elavon_ExtensionUtil as E;
+use Civi\Test\HeadlessInterface;
+use Civi\Test\HookInterface;
+use Civi\Test\TransactionalInterface;
+use Civi\Test\CiviEnvBuilder;
+
+/**
+ * FIXME - Add test description.
+ *
+ * Tips:
+ *  - With HookInterface, you may implement CiviCRM hooks directly in the test class.
+ *    Simply create corresponding functions (e.g. "hook_civicrm_post(...)" or similar).
+ *  - With TransactionalInterface, any data changes made by setUp() or test****() functions will
+ *    rollback automatically -- as long as you don't manipulate schema or truncate tables.
+ *    If this test needs to manipulate schema or truncate tables, then either:
+ *       a. Do all that using setupHeadless() and Civi\Test.
+ *       b. Disable TransactionalInterface, and handle all setup/teardown yourself.
+ *
+ * @group headless
+ */
+class CRM_Core_Payment_ElavonTest extends \PHPUnit\Framework\TestCase implements HeadlessInterface, HookInterface, TransactionalInterface {
+
+  use \Civi\Test\GuzzleTestTrait;
+  use \Civi\Test\Api3TestTrait;
+
+  /**
+   * Setup used when HeadlessInterface is implemented.
+   *
+   * Civi\Test has many helpers, like install(), uninstall(), sql(), and sqlFile().
+   *
+   * @link https://github.com/civicrm/org.civicrm.testapalooza/blob/master/civi-test.md
+   *
+   * @return \Civi\Test\CiviEnvBuilder
+   *
+   * @throws \CRM_Extension_Exception_ParseException
+   */
+  public function setUpHeadless(): CiviEnvBuilder {
+    return \Civi\Test::headless()
+      ->installMe(__DIR__)
+      ->apply();
+  }
+
+  public function setUp(): void {
+    $this->setUpElavonProcessor();
+    $this->processor = \Civi\Payment\System::singleton()->getById($this->ids['PaymentProcessor']['Elavon']);
+    parent::setUp();
+  }
+
+  public function tearDown(): void {
+    $this->callAPISuccess('PaymentProcessor', 'delete', ['id' => $this->ids['PaymentProcessor']['Elavon']]);
+    parent::tearDown();
+  }
+
+  /**
+   * Test making a once off payment
+   */
+  public function testSinglePayment(): void {
+    $this->setupMockHandler();
+    $params = $this->getBillingParams();
+    $params['amount'] = 2.00;
+    $params['currency'] = 'AUD';
+    $params['description'] = 'Test Contribution';
+    $params['invoiceID'] = 'xyz';
+    $params['email'] = 'unittesteway@civicrm.org';
+    $params['ip_address'] = '127.0.0.1';
+    foreach ($params as $key => $value) {
+      // Paypal is super special and requires this. Leaving out of the more generic
+      // get billing params for now to make it more obvious.
+      // When/if PropertyBag supports all the params paypal needs we can convert & simplify this.
+      $params[str_replace('-5', '', str_replace('billing_', '', $key))] = $value;
+    }
+    $params['state_province'] = 'NSW';
+    $params['country'] = 'AU';
+    $this->processor->doPayment($params);
+    $this->assertEquals($this->getExpectedSinglePaymentRequests(), $this->getRequestUrls());
+  }
+
+  protected function getBillingParams(): array {
+    return [
+      'billing_first_name' => 'John',
+      'billing_middle_name' => '',
+      'billing_last_name' => "O'Connor",
+      'billing_street_address-5' => '8 Hobbitton Road',
+      'billing_city-5' => 'The Shire',
+      'billing_state_province_id-5' => 1012,
+      'billing_postal_code-5' => 5010,
+      'billing_country_id-5' => 1228,
+      'credit_card_number' => '4444333322221111',
+      'cvv2' => 123,
+      'credit_card_exp_date' => [
+        'M' => 9,
+        'Y' => 2025,
+      ],
+      'credit_card_type' => 'Visa',
+      'year' => 2022,
+      'month' => 10,
+    ];
+  }
+
+  public function setUpElavonProcessor(): void {
+    $params = [
+      'name' => 'demo',
+      'domain_id' => CRM_Core_Config::domainID(),
+      'payment_processor_type_id' => 'Elavon',
+      'is_active' => 1,
+      'is_default' => 0,
+      'is_test' => 0,
+      'user_name' => 'adfg',
+      'password' => 'abc1234',
+      'signature' => '12345',
+      'url_site' => 'https://api.demo.convergepay.com/VirtualMerchantDemo/processxml.do',
+      'class_name' => 'Payment_Elavon',
+      'billing_mode' => 1,
+      'financial_type_id' => 1,
+      'financial_account_id' => 12,
+      // Credit card = 1 so can pass 'by accident'.
+      'payment_instrument_id' => 'Debit Card',
+    ];
+    if (!is_numeric($params['payment_processor_type_id'])) {
+      // really the api should handle this through getoptions but it's not exactly api call so lets just sort it
+      //here
+      $params['payment_processor_type_id'] = $this->callAPISuccess('payment_processor_type', 'getvalue', [
+        'name' => $params['payment_processor_type_id'],
+        'return' => 'id',
+      ], 'integer');
+    }
+    $result = $this->callAPISuccess('payment_processor', 'create', $params);
+    $processorID = $result['id'];
+    $this->setupMockHandler($processorID);
+    $this->ids['PaymentProcessor']['Elavon'] = $processorID;
+  }
+
+  /**
+   * Add a mock handler to the paypal Pro processor for testing.
+   *
+   * @param int|null $id
+   *
+   * @throws \CiviCRM_API3_Exception
+   */
+  protected function setupMockHandler($id = NULL): void {
+    if ($id) {
+      $this->processor = Civi\Payment\System::singleton()->getById($id);
+    }
+    $responses = $this->getExpectedSinglePaymentResponses();
+    // Comment the next line out when trying to capture the response.
+    // see https://github.com/civicrm/civicrm-core/pull/18350
+    $this->createMockHandler($responses);
+    $this->setUpClientWithHistoryContainer();
+    $this->processor->setGuzzleClient($this->getGuzzleClient());
+  }
+
+  /**
+   * Get the expected response from eWAY for a single payment.
+   *
+   * @return array
+   */
+  public function getExpectedSinglePaymentResponses(): array {
+    return [
+      '<ssl_result>0</ssl_result><ssl_result_message>APPROVAL</ssl_result_message><ssl_trxn_id>00000-0000-000-00-00-00000</ssl_trxn_id><ssl_cvv2_response>M</ssl_cvv2_response><ssl_avs_response>G</ssl_avs_response><ssl_approal_code1115</ssl_approal_code><errorCode></errorCode><errorName></errorName><errorMessage></errorMessage>',
+    ];
+  }
+
+  /**
+   *  Get the expected request to Elavon.
+   *
+   * @return array
+   */
+  public function getExpectedSinglePaymentRequests(): array {
+    return [
+      'https://api.demo.convergepay.com/VirtualMerchantDemo/processxml.do?xmldata=%3Ctxn%3E%3Cssl_first_name%3EJohn%3C/ssl_first_name%3E%3Cssl_last_name%3EO%27Connor%3C/ssl_last_name%3E%3Cssl_ship_to_first_name%3EJohn%3C/ssl_ship_to_first_name%3E%3Cssl_ship_to_last_name%3EO%27Connor%3C/ssl_ship_to_last_name%3E%3Cssl_card_number%3E4444333322221111%3C/ssl_card_number%3E%3Cssl_amount%3E2%3C/ssl_amount%3E%3Cssl_exp_date%3E1022%3C/ssl_exp_date%3E%3Cssl_cvv2cvc2%3E123%3C/ssl_cvv2cvc2%3E%3Cssl_cvv2cvc2_indicator%3E1%3C/ssl_cvv2cvc2_indicator%3E%3Cssl_avs_address%3E8%20Hobbitton%20Road%3C/ssl_avs_address%3E%3Cssl_city%3EThe%20Shire%3C/ssl_city%3E%3Cssl_state%3ENSW%3C/ssl_state%3E%3Cssl_avs_zip%3E5010%3C/ssl_avs_zip%3E%3Cssl_country%3EAU%3C/ssl_country%3E%3Cssl_email%3Eunittesteway@civicrm.org%3C/ssl_email%3E%3Cssl_invoice_number%3Exyz%3C/ssl_invoice_number%3E%3Cssl_transaction_type%3ECCSALE%3C/ssl_transaction_type%3E%3Cssl_description%3ETest%20Contribution%3C/ssl_description%3E%3Cssl_customer_number%3E1111%3C/ssl_customer_number%3E%3Cssl_customer_code%3E1111%3C/ssl_customer_code%3E%3Cssl_salestax%3E0%3C/ssl_salestax%3E%3Cssl_merchant_id%3Eadfg%3C/ssl_merchant_id%3E%3Cssl_user_id%3Eabc1234%3C/ssl_user_id%3E%3Cssl_pin%3E12345%3C/ssl_pin%3E%3C/txn%3E',
+    ];
+  }
+
+}
diff --git a/civicrm/ext/elavon/tests/phpunit/bootstrap.php b/civicrm/ext/elavon/tests/phpunit/bootstrap.php
new file mode 100644
index 0000000000000000000000000000000000000000..eaa8379442aaf86398def1c7ed2dc251c8d2755a
--- /dev/null
+++ b/civicrm/ext/elavon/tests/phpunit/bootstrap.php
@@ -0,0 +1,65 @@
+<?php
+
+ini_set('memory_limit', '2G');
+
+// phpcs:disable
+eval(cv('php:boot --level=classloader', 'phpcode'));
+// phpcs:enable
+// Allow autoloading of PHPUnit helper classes in this extension.
+$loader = new \Composer\Autoload\ClassLoader();
+$loader->add('CRM_', [__DIR__ . '/../..', __DIR__]);
+$loader->addPsr4('Civi\\', [__DIR__ . '/../../Civi', __DIR__ . '/Civi']);
+$loader->add('api_', [__DIR__ . '/../..', __DIR__]);
+$loader->addPsr4('api\\', [__DIR__ . '/../../api', __DIR__ . '/api']);
+
+$loader->register();
+
+/**
+ * Call the "cv" command.
+ *
+ * @param string $cmd
+ *   The rest of the command to send.
+ * @param string $decode
+ *   Ex: 'json' or 'phpcode'.
+ * @return mixed
+ *   Response output (if the command executed normally).
+ *   For 'raw' or 'phpcode', this will be a string. For 'json', it could be any JSON value.
+ * @throws \RuntimeException
+ *   If the command terminates abnormally.
+ */
+function cv(string $cmd, string $decode = 'json') {
+  $cmd = 'cv ' . $cmd;
+  $descriptorSpec = [0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => STDERR];
+  $oldOutput = getenv('CV_OUTPUT');
+  putenv('CV_OUTPUT=json');
+
+  // Execute `cv` in the original folder. This is a work-around for
+  // phpunit/codeception, which seem to manipulate PWD.
+  $cmd = sprintf('cd %s; %s', escapeshellarg(getenv('PWD')), $cmd);
+
+  $process = proc_open($cmd, $descriptorSpec, $pipes, __DIR__);
+  putenv("CV_OUTPUT=$oldOutput");
+  fclose($pipes[0]);
+  $result = stream_get_contents($pipes[1]);
+  fclose($pipes[1]);
+  if (proc_close($process) !== 0) {
+    throw new RuntimeException("Command failed ($cmd):\n$result");
+  }
+  switch ($decode) {
+    case 'raw':
+      return $result;
+
+    case 'phpcode':
+      // If the last output is /*PHPCODE*/, then we managed to complete execution.
+      if (substr(trim($result), 0, 12) !== '/*BEGINPHP*/' || substr(trim($result), -10) !== '/*ENDPHP*/') {
+        throw new \RuntimeException("Command failed ($cmd):\n$result");
+      }
+      return $result;
+
+    case 'json':
+      return json_decode($result, 1);
+
+    default:
+      throw new RuntimeException("Bad decoder format ($decode)");
+  }
+}
diff --git a/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php
index 6c831f39904197e3cb22b7b3f1f05edb9ac4c585..b61142c29a8a3752d862840403b578819ab0c3eb 100644
--- a/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php
+++ b/civicrm/ext/eventcart/CRM/Event/Cart/Form/Checkout/Payment.php
@@ -341,7 +341,7 @@ class CRM_Event_Cart_Form_Checkout_Payment extends CRM_Event_Cart_Form_Cart {
         'is_pay_later' => $this->is_pay_later,
         'pay_later_receipt' => $this->pay_later_receipt,
       ],
-      'valueName' => 'event_registration_receipt',
+      'workflow' => 'event_registration_receipt',
       'PDFFilename' => ts('confirmation') . '.pdf',
     ];
     $template_params_to_copy = [
diff --git a/civicrm/ext/eventcart/info.xml b/civicrm/ext/eventcart/info.xml
index 9bdb0e0d3b7dcc400b7b6015c8a7ec8fa72cf7d8..446ec3df7eeb3c3b09aa09680d41800eb0575f45 100644
--- a/civicrm/ext/eventcart/info.xml
+++ b/civicrm/ext/eventcart/info.xml
@@ -13,13 +13,13 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-08-03</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <classloader>
     <psr4 prefix="Civi\" path="Civi"/>
diff --git a/civicrm/ext/ewaysingle/info.xml b/civicrm/ext/ewaysingle/info.xml
index 4d75c707306dbbecfe62cc478f42e37d846120e1..43e84f551849e1db7b0b065e938836976a6648a9 100644
--- a/civicrm/ext/ewaysingle/info.xml
+++ b/civicrm/ext/ewaysingle/info.xml
@@ -15,13 +15,13 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-10-07</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <comments>This is an extension to contain the eWAY Single Currency Payment Processor</comments>
   <classloader>
diff --git a/civicrm/ext/ewaysingle/tests/phpunit/CRM/Core/Payment/EwayTest.php b/civicrm/ext/ewaysingle/tests/phpunit/CRM/Core/Payment/EwayTest.php
index de4ef3511c525fc0e21f701e3d42693bbbaf8010..e80de0cdaf6dd3812debb1b52e3ec8891309eb87 100644
--- a/civicrm/ext/ewaysingle/tests/phpunit/CRM/Core/Payment/EwayTest.php
+++ b/civicrm/ext/ewaysingle/tests/phpunit/CRM/Core/Payment/EwayTest.php
@@ -61,7 +61,7 @@ class CRM_Core_Payment_EwayTest extends \PHPUnit\Framework\TestCase implements H
       $params[str_replace('-5', '', str_replace('billing_', '', $key))] = $value;
     }
     $params['state_province'] = 'NSW';
-    $params['country'] = 'AUS';
+    $params['country'] = 'AU';
     $this->processor->doPayment($params);
     $this->assertEquals($this->getExpectedSinglePaymentRequests(), $this->getRequestBodies());
   }
@@ -85,7 +85,7 @@ class CRM_Core_Payment_EwayTest extends \PHPUnit\Framework\TestCase implements H
       $params[str_replace('-5', '', str_replace('billing_', '', $key))] = $value;
     }
     $params['state_province'] = 'NSW';
-    $params['country'] = 'AUS';
+    $params['country'] = 'AU';
     try {
       $this->processor->doPayment($params);
       $this->fail('Test was meant to throw an exception');
@@ -194,7 +194,7 @@ class CRM_Core_Payment_EwayTest extends \PHPUnit\Framework\TestCase implements H
    */
   public function getExpectedSinglePaymentRequests(): array {
     return [
-      '<ewaygateway><ewayCustomerID>87654321</ewayCustomerID><ewayTotalAmount>1000</ewayTotalAmount><ewayCardHoldersName>John O&apos;Connor</ewayCardHoldersName><ewayCardNumber>4444333322221111</ewayCardNumber><ewayCardExpiryMonth>10</ewayCardExpiryMonth><ewayCardExpiryYear>22</ewayCardExpiryYear><ewayTrxnNumber>xyz</ewayTrxnNumber><ewayCustomerInvoiceDescription>Test Contribution</ewayCustomerInvoiceDescription><ewayCustomerFirstName>John</ewayCustomerFirstName><ewayCustomerLastName>O&apos;Connor</ewayCustomerLastName><ewayCustomerEmail>unittesteway@civicrm.org</ewayCustomerEmail><ewayCustomerAddress>8 Hobbitton Road, The Shire, NSW.</ewayCustomerAddress><ewayCustomerPostcode>5010</ewayCustomerPostcode><ewayCustomerInvoiceRef>xyz</ewayCustomerInvoiceRef><ewayCVN>123</ewayCVN><ewayOption1></ewayOption1><ewayOption2></ewayOption2><ewayOption3></ewayOption3><ewayCustomerIPAddress>127.0.0.1</ewayCustomerIPAddress><ewayCustomerBillingCountry>AUS</ewayCustomerBillingCountry></ewaygateway>',
+      '<ewaygateway><ewayCustomerID>87654321</ewayCustomerID><ewayTotalAmount>1000</ewayTotalAmount><ewayCardHoldersName>John O&apos;Connor</ewayCardHoldersName><ewayCardNumber>4444333322221111</ewayCardNumber><ewayCardExpiryMonth>10</ewayCardExpiryMonth><ewayCardExpiryYear>22</ewayCardExpiryYear><ewayTrxnNumber>xyz</ewayTrxnNumber><ewayCustomerInvoiceDescription>Test Contribution</ewayCustomerInvoiceDescription><ewayCustomerFirstName>John</ewayCustomerFirstName><ewayCustomerLastName>O&apos;Connor</ewayCustomerLastName><ewayCustomerEmail>unittesteway@civicrm.org</ewayCustomerEmail><ewayCustomerAddress>8 Hobbitton Road, The Shire, NSW.</ewayCustomerAddress><ewayCustomerPostcode>5010</ewayCustomerPostcode><ewayCustomerInvoiceRef>xyz</ewayCustomerInvoiceRef><ewayCVN>123</ewayCVN><ewayOption1></ewayOption1><ewayOption2></ewayOption2><ewayOption3></ewayOption3><ewayCustomerIPAddress>127.0.0.1</ewayCustomerIPAddress><ewayCustomerBillingCountry>AU</ewayCustomerBillingCountry></ewaygateway>',
     ];
   }
 
diff --git a/civicrm/ext/financialacls/info.xml b/civicrm/ext/financialacls/info.xml
index b128bfd91a35a5707ec3e8860aa18d6c2584115c..14412d38266d61011a608c75ed4017eab0315d70 100644
--- a/civicrm/ext/financialacls/info.xml
+++ b/civicrm/ext/financialacls/info.xml
@@ -15,10 +15,10 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-08-27</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <tags>
     <tag>mgmt:hidden</tag>
diff --git a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/BaseTestClass.php b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/BaseTestClass.php
index caa72e9bba50a8de3d5bcd69121311dbd21fabca..2d923004adfef81be42ab454c814f13c8206f1b9 100644
--- a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/BaseTestClass.php
+++ b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/BaseTestClass.php
@@ -2,19 +2,23 @@
 
 namespace Civi\Financialacls;
 
+use Civi\Api4\Contribution;
+use Civi\Api4\FinancialType;
 use Civi\Api4\PriceField;
 use Civi\Api4\PriceFieldValue;
 use Civi\Api4\PriceSet;
+use Civi\Test;
+use Civi\Test\CiviEnvBuilder;
 use Civi\Test\HeadlessInterface;
 use Civi\Test\HookInterface;
-use Civi\Test\TransactionalInterface;
 use Civi\Test\ContactTestTrait;
 use Civi\Test\Api3TestTrait;
+use PHPUnit\Framework\TestCase;
 
 /**
  * @group headless
  */
-class BaseTestClass extends \PHPUnit\Framework\TestCase implements HeadlessInterface, HookInterface, TransactionalInterface {
+class BaseTestClass extends TestCase implements HeadlessInterface, HookInterface {
 
   use ContactTestTrait;
   use Api3TestTrait;
@@ -30,21 +34,31 @@ class BaseTestClass extends \PHPUnit\Framework\TestCase implements HeadlessInter
    * @return \Civi\Test\CiviEnvBuilder
    * @throws \CRM_Extension_Exception_ParseException
    */
-  public function setUpHeadless() {
+  public function setUpHeadless(): CiviEnvBuilder {
     // Civi\Test has many helpers, like install(), uninstall(), sql(), and sqlFile().
     // See: https://docs.civicrm.org/dev/en/latest/testing/phpunit/#civitest
-    return \Civi\Test::headless()
+    return Test::headless()
       ->installMe(__DIR__)
       ->apply();
   }
 
+  /**
+   * @throws \API_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  public function tearDown(): void {
+    Contribution::delete(FALSE)->addWhere('id', '>', 0)->execute();
+    FinancialType::delete(FALSE)->addWhere('name', 'LIKE', '%test%')->execute();
+    $this->cleanupPriceSets();
+  }
+
   /**
    * Set ACL permissions, overwriting any existing ones.
    *
    * @param array $permissions
    *   Array of permissions e.g ['access CiviCRM','access CiviContribute'],
    */
-  protected function setPermissions(array $permissions) {
+  protected function setPermissions(array $permissions): void {
     \CRM_Core_Config::singleton()->userPermissionClass->permissions = $permissions;
     if (isset(\Civi::$statics['CRM_Financial_BAO_FinancialType'])) {
       unset(\Civi::$statics['CRM_Financial_BAO_FinancialType']);
@@ -63,6 +77,7 @@ class BaseTestClass extends \PHPUnit\Framework\TestCase implements HeadlessInter
       'delete contributions of type Donation',
       'add contributions of type Donation',
       'edit contributions of type Donation',
+      'view all contacts',
     ]);
     \Civi::settings()->set('acl_financial_type', TRUE);
     $this->createLoggedInUser();
@@ -103,4 +118,27 @@ class BaseTestClass extends \PHPUnit\Framework\TestCase implements HeadlessInter
       ->execute()->indexBy('id'));
   }
 
+  /**
+   * Delete extraneous price sets.
+   *
+   * @throws \API_Exception
+   */
+  protected function cleanupPriceSets(): void {
+    $addedPriceSets = array_keys((array) PriceSet::get(FALSE)
+      ->addWhere('name', 'NOT IN', [
+        'default_contribution_amount',
+        'default_membership_type_amount',
+      ])->execute()->indexBy('id'));
+    if (empty($addedPriceSets)) {
+      return;
+    }
+    PriceFieldValue::delete(FALSE)
+      ->addWhere('price_field_id.price_set_id', 'IN', $addedPriceSets)
+      ->execute();
+    PriceField::delete(FALSE)
+      ->addWhere('price_set_id', 'IN', $addedPriceSets)
+      ->execute();
+    PriceSet::delete(FALSE)->addWhere('id', 'IN', $addedPriceSets)->execute();
+  }
+
 }
diff --git a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/ContributionSoftTest.php b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/ContributionSoftTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..03af360df3e3bbfd1517edc95de5ac1f64f63988
--- /dev/null
+++ b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/ContributionSoftTest.php
@@ -0,0 +1,177 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+namespace Civi\Financialacls;
+
+// I fought the Autoloader and the autoloader won.
+use API_Exception;
+use Civi\Api4\Contribution;
+use Civi\Api4\ContributionSoft;
+use CRM_Contribute_BAO_ContributionSoft;
+use CRM_Core_DAO;
+use CRM_Utils_System;
+
+require_once 'BaseTestClass.php';
+
+/**
+ * Class CRM_Contribute_BAO_ContributionTest
+ * @group headless
+ */
+class ContributionSoftTest extends BaseTestClass {
+
+  /**
+   * Test getSoftContributionList method.
+   *
+   * @throws \API_Exception
+   * @throws \CRM_Core_Exception
+   */
+  public function testGetSoftContributionList(): void {
+    $this->createTwoSoftCredits();
+    $expectedCredits = [
+      1 => [
+        'amount' => '$100.00',
+        'currency' => 'USD',
+        'contributor_id' => $this->ids['Contact'][0],
+        'contribution_id' => $this->ids['Contribution']['permitted'],
+        'contributor_name' => CRM_Utils_System::href(
+          'Mr. Anthony Anderson II',
+          'civicrm/contact/view',
+          'reset=1&cid=' . $this->ids['Contact'][0]
+        ),
+        'financial_type' => 'Donation',
+        'pcp_id' => NULL,
+        'pcp_title' => 'n/a',
+        'pcp_display_in_roll' => FALSE,
+        'pcp_roll_nickname' => NULL,
+        'pcp_personal_note' => NULL,
+        'contribution_status' => 'Completed',
+        'sct_label' => NULL,
+      ],
+      2 => [
+        'amount' => '$200.00',
+        'currency' => 'USD',
+        'contributor_id' => $this->ids['Contact'][1],
+        'contribution_id' => $this->ids['Contribution'][1],
+        'contributor_name' => CRM_Utils_System::href(
+          'Mr. Anthony Anderson II',
+          'civicrm/contact/view',
+          'reset=1&cid=' . $this->ids['Contact'][1]
+        ),
+        'financial_type' => 'Campaign Contribution',
+        'pcp_id' => NULL,
+        'pcp_title' => 'n/a',
+        'pcp_display_in_roll' => FALSE,
+        'pcp_roll_nickname' => NULL,
+        'pcp_personal_note' => NULL,
+        'contribution_status' => 'Completed',
+        'sct_label' => NULL,
+      ],
+    ];
+    $list = CRM_Contribute_BAO_ContributionSoft::getSoftContributionList($this->ids['Contact']['credited']);
+    foreach ($expectedCredits[1] as $key => $value) {
+      $this->assertEquals($value, $list[1][$key], $key);
+    }
+    foreach ($expectedCredits[2] as $key => $value) {
+      $this->assertEquals($value, $list[2][$key], $key);
+    }
+    $this->assertEquals($this->ids['Contribution']['permitted'], $list[1]['contribution_id']);
+
+    // And with ACL restrictions.
+    $this->setupLoggedInUserWithLimitedFinancialTypeAccess();
+    $list = CRM_Contribute_BAO_ContributionSoft::getSoftContributionList($this->ids['Contact']['credited']);
+    $this->assertArrayNotHasKey(2, $list);
+    CRM_Core_DAO::executeQuery('DROP TABLE IF EXISTS  ac');
+    CRM_Core_DAO::executeQuery('CREATE TABLE ac SELECT id FROM civicrm_relationship');
+    foreach ($expectedCredits[1] as $key => $value) {
+      $this->assertEquals($value, $list[1][$key], $key);
+    }
+  }
+
+  /**
+   * Test getSoftContributionTotals method.
+   *
+   */
+  public function testGetSoftContributionTotals(): void {
+    $this->createTwoSoftCredits();
+    $totals = CRM_Contribute_BAO_ContributionSoft::getSoftContributionTotals($this->ids['Contact']['credited']);
+    $this->assertEquals('$ 300.00', $totals[2], 'test total of completed soft credits');
+    $this->assertEquals('$ 150.00', $totals[3], 'test average of completed soft credits');
+    $this->assertEquals('', $totals[4], 'test count of cancelled soft credits');
+
+    // And again, with ACLs enabled.
+    $this->setupLoggedInUserWithLimitedFinancialTypeAccess();
+
+    $totals = CRM_Contribute_BAO_ContributionSoft::getSoftContributionTotals($this->ids['Contact']['credited']);
+    $this->assertEquals('$ 100.00', $totals[2], 'test total of completed soft credits');
+    $this->assertEquals('$ 100.00', $totals[3], 'test average of completed soft credits');
+    $this->assertEquals('', $totals[4], 'test count of cancelled soft credits');
+  }
+
+  /**
+   * Creates two donor contacts and one soft credited contact.
+   *
+   * Creates a contribution for each donor contact, soft crediting the credited.
+   * The contributions have different financial types ("Donation" and "Campaign Contribution")
+   * to facilitate testing ACLs.
+   *
+   * @return array
+   */
+  protected function createTwoSoftCredits(): array {
+    try {
+      $this->ids['Contact'][0] = $this->individualCreate();
+      $this->ids['Contact'][1] = $this->individualCreate();
+      $this->ids['Contact']['credited'] = $this->individualCreate();
+      $this->ids['Contribution']['permitted'] = $this->contributionCreate([
+        'financial_type_id:name' => 'Donation',
+        'contact_id' => $this->ids['Contact'][0],
+      ]);
+      $this->ids['Contribution'][1] = $this->contributionCreate([
+        'financial_type_id:name' => 'Campaign Contribution',
+        'contact_id' => $this->ids['Contact'][1],
+        'total_amount' => 100,
+      ]);
+
+      $params = [
+        'contribution_id' => $this->ids['Contribution']['permitted'],
+        'amount' => 100,
+        'contact_id' => $this->ids['Contact']['credited'],
+      ];
+      ContributionSoft::create(FALSE)->setValues($params)->execute();
+      $params2 = [
+        'contribution_id' => $this->ids['Contribution'][1],
+        'amount' => 200,
+        'contact_id' => $this->ids['Contact']['credited'],
+      ];
+      ContributionSoft::create(FALSE)->setValues($params2)->execute();
+    }
+    catch (API_Exception $e) {
+      $this->fail($e->getMessage());
+    }
+    return [];
+  }
+
+  /**
+   * Create a contribution with some useful defaults.
+   *
+   * @param array $params
+   *
+   * @return int
+   * @throws \API_Exception
+   */
+  private function contributionCreate(array $params): int {
+    return Contribution::create(FALSE)->setValues(array_merge([
+      'receive_date' => 'now',
+      'total_amount' => 150.00,
+      'payment_instrument_id' => 1,
+      'contribution_status_id' => 1,
+    ], $params))->execute()->first()['id'];
+  }
+
+}
diff --git a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/LineItemTest.php b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/LineItemTest.php
index 60692e2a29ab1dd2ced32af7a439ee50a3fbb9ae..75d57c8a493c7493cefc0b20773aa9f1b251c3ec 100644
--- a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/LineItemTest.php
+++ b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/LineItemTest.php
@@ -3,6 +3,8 @@
 namespace Civi\Financialacls;
 
 // I fought the Autoloader and the autoloader won.
+use Civi\Api4\LineItem;
+
 require_once 'BaseTestClass.php';
 
 /**
@@ -29,6 +31,8 @@ class LineItemTest extends BaseTestClass {
    */
   public function testLineItemApiPermissions($version): void {
     $contact1 = $this->individualCreate();
+    $lineItems = $this->callAPISuccess('LineItem', 'get', ['sequential' => TRUE])['values'];
+    $this->assertCount(0, $lineItems);
     $this->createPriceSet();
     $order = $this->callAPISuccess('Order', 'create', [
       'financial_type_id' => 'Donation',
@@ -72,7 +76,7 @@ class LineItemTest extends BaseTestClass {
       'price_field_id' => $this->ids['PriceField'][0],
       'qty' => 1,
       'financial_type_id' => 'Donation',
-      'check_permissions' => ($version == 3),
+      'check_permissions' => ($version === 3),
     ];
     $line = $this->callAPISuccess('LineItem', 'Create', $lineParams);
     $lineParams['financial_type_id'] = 'Event Fee';
@@ -80,7 +84,8 @@ class LineItemTest extends BaseTestClass {
     $this->callAPIFailure('LineItem', 'Create', $lineParams);
 
     $this->callAPIFailure('LineItem', 'Create', ['id' => $line['id'], 'check_permissions' => TRUE, 'financial_type_id' => 'Event Fee']);
-    $this->callAPISuccess('LineItem', 'Create', ['id' => $line['id'], 'check_permissions' => ($version == 3), 'financial_type_id' => 'Donation']);
+    $invalidLineItem = $this->callAPISuccess('LineItem', 'Create', ['id' => $line['id'], 'check_permissions' => ($version == 3), 'financial_type_id' => 'Donation']);
+    LineItem::delete(FALSE)->addWhere('id', '=', $invalidLineItem['id'])->execute();
   }
 
 }
diff --git a/civicrm/ext/flexmailer/info.xml b/civicrm/ext/flexmailer/info.xml
index 0b19f5ad9358c0fcac06ead1124303044b63fba1..26d270ebf56a095a27c8a9482b5eb60185cde1ba 100644
--- a/civicrm/ext/flexmailer/info.xml
+++ b/civicrm/ext/flexmailer/info.xml
@@ -15,7 +15,7 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-08-05</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>stable</develStage>
   <comments>
     FlexMailer is an email delivery engine which replaces the internal guts
@@ -23,7 +23,7 @@
     to provide richer email features.
   </comments>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <classloader>
     <psr4 prefix="Civi\FlexMailer\" path="src"/>
diff --git a/civicrm/ext/greenwich/info.xml b/civicrm/ext/greenwich/info.xml
index f3c16bc0594790451c05670c7ad69d981a77d169..978476f87a54c05d93622f98b2ff059ee0662401 100644
--- a/civicrm/ext/greenwich/info.xml
+++ b/civicrm/ext/greenwich/info.xml
@@ -15,13 +15,13 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-07-21</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <classloader>
     <psr4 prefix="Civi\" path="Civi"/>
diff --git a/civicrm/ext/legacycustomsearches/info.xml b/civicrm/ext/legacycustomsearches/info.xml
index 147b800973372056ddba91880549d79528cca9cb..bd7ccd1aee9991c37b72dfef9b33f1f662d6b73f 100644
--- a/civicrm/ext/legacycustomsearches/info.xml
+++ b/civicrm/ext/legacycustomsearches/info.xml
@@ -15,13 +15,13 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-07-25</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>stable</develStage>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <comments>This is hidden on install to give extensions that require it time to add it to their requires and to allow us to get it out of GroupContact load</comments>
   <classloader>
@@ -30,8 +30,10 @@
   </classloader>
   <mixins>
     <mixin>menu-xml@1.0.0</mixin>
+    <mixin>mgd-php@1.0.0</mixin>
   </mixins>
   <civix>
     <namespace>CRM/Legacycustomsearches</namespace>
+    <format>22.05.2</format>
   </civix>
 </extension>
diff --git a/civicrm/ext/legacycustomsearches/legacycustomsearches.php b/civicrm/ext/legacycustomsearches/legacycustomsearches.php
index 2213da60d38bdf0a04adbc7a4c07458ea6b4c1af..92c9aa328adf275f0a9b409b2d7f23a2f12498d5 100644
--- a/civicrm/ext/legacycustomsearches/legacycustomsearches.php
+++ b/civicrm/ext/legacycustomsearches/legacycustomsearches.php
@@ -78,31 +78,3 @@ function legacycustomsearches_civicrm_upgrade($op, CRM_Queue_Queue $queue = NULL
 function legacycustomsearches_civicrm_entityTypes(&$entityTypes) {
   _legacycustomsearches_civix_civicrm_entityTypes($entityTypes);
 }
-
-// --- Functions below this ship commented out. Uncomment as required. ---
-
-/**
- * Implements hook_civicrm_preProcess().
- *
- * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_preProcess
- */
-//function legacycustomsearches_civicrm_preProcess($formName, &$form) {
-//
-//}
-
-/**
- * Implements hook_civicrm_navigationMenu().
- *
- * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_navigationMenu
- */
-//function legacycustomsearches_civicrm_navigationMenu(&$menu) {
-//  _legacycustomsearches_civix_insert_navigation_menu($menu, 'Mailings', array(
-//    'label' => E::ts('New subliminal message'),
-//    'name' => 'mailing_subliminal_message',
-//    'url' => 'civicrm/mailing/subliminal',
-//    'permission' => 'access CiviMail',
-//    'operator' => 'OR',
-//    'separator' => 0,
-//  ));
-//  _legacycustomsearches_civix_navigationMenu($menu);
-//}
diff --git a/civicrm/ext/legacycustomsearches/managed/Navigation.mgd.php b/civicrm/ext/legacycustomsearches/managed/Navigation.mgd.php
new file mode 100644
index 0000000000000000000000000000000000000000..4175908fb76549d5ea3a41b0770550401b027b5e
--- /dev/null
+++ b/civicrm/ext/legacycustomsearches/managed/Navigation.mgd.php
@@ -0,0 +1,55 @@
+<?php
+
+use Civi\Api4\Domain;
+use CRM_Legacycustomsearches_ExtensionUtil as E;
+
+$menuItems = [];
+$domains = Domain::get(FALSE)
+  ->addSelect('id')
+  ->execute();
+foreach ($domains as $domain) {
+  $menuItems[] = [
+    'name' => 'Custom Searches' . $domain['id'],
+    'entity' => 'Navigation',
+    'cleanup' => 'always',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'label' => E::ts('Custom Searches'),
+        'name' => 'Custom Searches',
+        'url' => 'civicrm/contact/search/custom/list?reset=1',
+        'permission' => NULL,
+        'permission_operator' => 'OR',
+        'parent_id.name' => 'Search',
+        'is_active' => TRUE,
+        'has_separator' => 2,
+        'weight' => 15,
+        'domain_id' => $domain['id'],
+      ],
+      'match' => ['domain_id', 'name'],
+    ],
+  ];
+  $menuItems[] = [
+    'name' => 'Manage Custom Searches' . $domain['id'],
+    'entity' => 'Navigation',
+    'cleanup' => 'always',
+    'update' => 'unmodified',
+    'params' => [
+      'version' => 4,
+      'values' => [
+        'label' => E::ts('Manage Custom Searches'),
+        'name' => 'Manage Custom Searches',
+        'url' => 'civicrm/admin/options/custom_search?reset=1',
+        'permission' => 'administer CiviCRM',
+        'permission_operator' => 'OR',
+        'parent_id.name' => 'Customize Data and Screens',
+        'is_active' => TRUE,
+        'weight' => 15,
+        'domain_id' => $domain['id'],
+      ],
+      'match' => ['domain_id', 'name'],
+    ],
+  ];
+}
+return $menuItems;
diff --git a/civicrm/ext/legacycustomsearches/xml/Menu/Search.xml b/civicrm/ext/legacycustomsearches/xml/Menu/Search.xml
index f46c9f40f4caf1b36be681c0bd1b3b7b6cad0663..747357a2bd24fd63f186cc508efeb3a1abc137e9 100644
--- a/civicrm/ext/legacycustomsearches/xml/Menu/Search.xml
+++ b/civicrm/ext/legacycustomsearches/xml/Menu/Search.xml
@@ -9,4 +9,11 @@
     <weight>10</weight>
     <page_type>1</page_type>
   </item>
+  <item>
+    <path>civicrm/contact/search/custom/list</path>
+    <title>Custom Searches</title>
+    <page_callback>CRM_Contact_Page_CustomSearch</page_callback>
+    <page_type>1</page_type>
+    <weight>16</weight>
+  </item>
 </menu>
diff --git a/civicrm/ext/message_admin/CRM/MessageAdmin/Settings.php b/civicrm/ext/message_admin/CRM/MessageAdmin/Settings.php
index 68b5780e497d74bf0a85a003af725fdc2a283d52..a855f3f2e52b31ea9d52b6d334684ddc275c399d 100644
--- a/civicrm/ext/message_admin/CRM/MessageAdmin/Settings.php
+++ b/civicrm/ext/message_admin/CRM/MessageAdmin/Settings.php
@@ -9,8 +9,15 @@ class CRM_MessageAdmin_Settings {
       ->addSelect('name', 'label')
       ->addOrderBy('label')
       ->execute();
+    $allLangsIdx = array_combine($allLangs->column('name'), $allLangs->column('label'));
+
+    $usableLangs = \Civi\Api4\MessageTemplate::getActions(0)
+      ->addWhere("name", "=", "get")
+      ->execute()
+      ->single()['params']['language']['options'];
+
     return [
-      'allLanguages' => array_combine($allLangs->column('name'), $allLangs->column('label')),
+      'allLanguages' => CRM_Utils_Array::subset($allLangsIdx, $usableLangs),
       'uiLanguages' => CRM_Core_I18n::uiLanguages(),
     ];
   }
diff --git a/civicrm/ext/message_admin/ang/crmMsgadm/Edit.js b/civicrm/ext/message_admin/ang/crmMsgadm/Edit.js
index 6e01a76a7a4dbbda4b338035bd55521134712da7..ccba2dfcac75a6da81c79d990726b2ddb8ba876b 100644
--- a/civicrm/ext/message_admin/ang/crmMsgadm/Edit.js
+++ b/civicrm/ext/message_admin/ang/crmMsgadm/Edit.js
@@ -271,6 +271,7 @@
       crmApi4({
         examples: ['ExampleData', 'get', {
           // FIXME: workflow name
+          language: $ctrl.lang,
           where: [["tags", "CONTAINS", "preview"], ["name", "LIKE", "workflow/" + $ctrl.records.main.workflow_name + "/%"]],
           select: ['name', 'title', 'data']
         }],
@@ -279,7 +280,6 @@
           format: 'example'
         }]
       }).then(function(resp) {
-        console.log('resp',resp);
         if ((!resp.examples || resp.examples.length === 0) && resp.adhoc) {
           // In the future, if Preview dialog allows editing adhoc examples, then we can show the dialog. But for now, it won't work without explicit examples.
           crmUiAlert({
diff --git a/civicrm/ext/message_admin/ang/crmMsgadm/Preview.js b/civicrm/ext/message_admin/ang/crmMsgadm/Preview.js
index 82b994c27d1e1fbe63eeec576c85cd64b52686da..5c39039c5c7d736ca9f9ce069b263327e2228832 100644
--- a/civicrm/ext/message_admin/ang/crmMsgadm/Preview.js
+++ b/civicrm/ext/message_admin/ang/crmMsgadm/Preview.js
@@ -1,10 +1,14 @@
 (function(angular, $, _) {
 
-  angular.module('crmMsgadm').controller('MsgtpluiPreviewCtrl', function($scope, crmUiHelp, crmStatus, crmApi4, crmUiAlert, $timeout, $q, dialogService) {
+  angular.module('crmMsgadm').controller('MsgtpluiPreviewCtrl', function($scope, crmUiHelp, crmStatus, crmApi4, crmUiAlert, $timeout, $q, dialogService, $location) {
     var ts = $scope.ts = CRM.ts('crmMsgadm');
     var hs = $scope.hs = crmUiHelp({file: 'CRM/MessageAdmin/crmMsgadm'}); // See: templates/CRM/MessageAdmin/crmMsgadm.hlp
 
     var $ctrl = this, model = $scope.model;
+    var args = $location.search();
+    if (args.lang) {
+      $ctrl.lang = args.lang;
+    }
 
     $ctrl.exampleId = parseInt(_.findKey(model.examples, {name: model.exampleName}));
     $ctrl.revisionId = parseInt(_.findKey(model.revisions, {name: model.revisionName}));
@@ -35,6 +39,7 @@
       dlgModel.refresh = function(){
         return crmApi4('ExampleData', 'get', {
           where: [["name", "=", model.examples[$ctrl.exampleId].name]],
+          language: $ctrl.lang,
           select: ['name', 'file', 'title', 'data']
         }).then(function(response){
           dlgModel.title = ts('Example: %1', {1: response[0].title || response[0].name});
@@ -64,6 +69,7 @@
     function requestStoredExample() {
       return crmApi4('ExampleData', 'get', {
         where: [["name", "=", model.examples[$ctrl.exampleId].name]],
+        language: $ctrl.lang,
         select: ['data']
       }).then(function(response) {
         return response[0].data;
@@ -82,6 +88,7 @@
       rendering.then(function(exampleData) {
         var filteredData = model.filterData ? model.filterData(exampleData) : exampleData;
         return crmApi4('WorkflowMessage', 'render', {
+          language: $ctrl.lang,
           workflow: filteredData.workflow,
           values: filteredData.modelProps,
           messageTemplate: model.revisions[$ctrl.revisionId].rec
diff --git a/civicrm/ext/message_admin/ang/crmMsgadm/Workflow.js b/civicrm/ext/message_admin/ang/crmMsgadm/Workflow.js
index 833b544227bf6e3afbc79aee76140e705565d4d1..5b4bb42b552be7e8643651770ae95018977db756 100644
--- a/civicrm/ext/message_admin/ang/crmMsgadm/Workflow.js
+++ b/civicrm/ext/message_admin/ang/crmMsgadm/Workflow.js
@@ -7,14 +7,8 @@
         controller: 'MsgtpluiListCtrl',
         controllerAs: '$ctrl',
         templateUrl: function() {
-          // The original drafts had a mode where the "Translate" button was conditioned on some kind of language-opt-in.
-          // However, uiLanguages isn't giving that signal anymore, and that opt-in isn't strictly needed since htis
-          // is currently packaged as an opt-in extension. Maybe we should just remove `~/crmMsgadm/Workflow.html` in a few months.
-          // But for the moment, keep it around it in case we have to pivot.
-
-          // var supportsTranslation = CRM.crmMsgadm.uiLanguages && _.size(CRM.crmMsgadm.uiLanguages) > 1;
-          // return supportsTranslation ? '~/crmMsgadm/WorkflowTranslated.html' : '~/crmMsgadm/Workflow.html';
-          return '~/crmMsgadm/WorkflowTranslated.html';
+          var supportsTranslation = CRM.crmMsgadm.allLanguages && _.size(CRM.crmMsgadm.allLanguages) > 1;
+          return supportsTranslation ? '~/crmMsgadm/WorkflowTranslated.html' : '~/crmMsgadm/Workflow.html';
         },
         resolve: {
           prefetch: function(crmApi4, crmStatus) {
diff --git a/civicrm/ext/message_admin/info.xml b/civicrm/ext/message_admin/info.xml
index d2b26519a12c45577050871a80c8e6eee4e1117b..5e62d911388356a7c0b6ac1c809c0534b277f4cb 100644
--- a/civicrm/ext/message_admin/info.xml
+++ b/civicrm/ext/message_admin/info.xml
@@ -15,13 +15,10 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-06-12</releaseDate>
-  <version>5.53.0</version>
-  <tags>
-    <tag>mgmt:hidden</tag>
-  </tags>
+  <version>5.54.0</version>
   <develStage>alpha</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <requires>
     <ext>org.civicrm.afform</ext>
diff --git a/civicrm/ext/oauth-client/CRM/OAuth/BAO/OAuthClient.php b/civicrm/ext/oauth-client/CRM/OAuth/BAO/OAuthClient.php
index e7a0f537fc9390f832544f6a7b895480ed0c9445..6590fe5bf412915665d0b9e1140fb96eadc02269 100644
--- a/civicrm/ext/oauth-client/CRM/OAuth/BAO/OAuthClient.php
+++ b/civicrm/ext/oauth-client/CRM/OAuth/BAO/OAuthClient.php
@@ -67,7 +67,7 @@ class CRM_OAuth_BAO_OAuthClient extends CRM_OAuth_DAO_OAuthClient {
    */
   public static function getRedirectUri() {
     return \Civi::settings()->get('oauthClientRedirectUrl') ?:
-      \CRM_Utils_System::url('civicrm/oauth-client/return', NULL, TRUE, NULL, FALSE);
+      \CRM_Utils_System::url('civicrm/oauth-client/return', NULL, TRUE, NULL, FALSE, FALSE, TRUE);
   }
 
 }
diff --git a/civicrm/ext/oauth-client/CRM/OAuth/MailSetup.php b/civicrm/ext/oauth-client/CRM/OAuth/MailSetup.php
index 2ed9c0175128177d9b0b654fa49451f369f2a309..99450579d893081c07cbc63cc313bc7e2c3557ab 100644
--- a/civicrm/ext/oauth-client/CRM/OAuth/MailSetup.php
+++ b/civicrm/ext/oauth-client/CRM/OAuth/MailSetup.php
@@ -8,8 +8,8 @@ class CRM_OAuth_MailSetup {
    * @see CRM_Utils_Hook::mailSetupActions()
    */
   public static function buildSetupLinks() {
-    $clients = Civi\Api4\OAuthClient::get(0)->addWhere('is_active', '=', 1)->execute();
-    $providers = Civi\Api4\OAuthProvider::get(0)->execute()->indexBy('name');
+    $clients = Civi\Api4\OAuthClient::get(FALSE)->addWhere('is_active', '=', 1)->execute();
+    $providers = Civi\Api4\OAuthProvider::get(FALSE)->execute()->indexBy('name');
 
     $setupActions = [];
     foreach ($clients as $client) {
@@ -68,15 +68,15 @@ class CRM_OAuth_MailSetup {
       return;
     }
 
-    $client = \Civi\Api4\OAuthClient::get(0)->addWhere('id', '=', $token['client_id'])->execute()->single();
-    $provider = \Civi\Api4\OAuthProvider::get(0)->addWhere('name', '=', $client['provider'])->execute()->single();
+    $client = \Civi\Api4\OAuthClient::get(FALSE)->addWhere('id', '=', $token['client_id'])->execute()->single();
+    $provider = \Civi\Api4\OAuthProvider::get(FALSE)->addWhere('name', '=', $client['provider'])->execute()->single();
 
     $vars = ['token' => $token, 'client' => $client, 'provider' => $provider];
     $mailSettings = civicrm_api4('MailSettings', 'create', [
       'values' => self::evalArrayTemplate($provider['mailSettingsTemplate'], $vars),
     ])->single();
 
-    \Civi\Api4\OAuthSysToken::update(0)
+    \Civi\Api4\OAuthSysToken::update(FALSE)
       ->addWhere('id', '=', $token['id'])
       ->setValues(['tag' => 'MailSettings:' . $mailSettings['id']])
       ->execute();
@@ -158,8 +158,8 @@ class CRM_OAuth_MailSetup {
       return;
     }
     // Not certain if 'refresh' will complain about staleness. Doesn't hurt to double-check.
-    if (empty($token['access_token']) || $token['expires'] < CRM_Utils_Time::getTimeRaw()) {
-      throw new \OAuthException("Found invalid token for mail store #" . $mailSettings['id']);
+    if (empty($token['access_token']) || $token['expires'] < CRM_Utils_Time::time()) {
+      throw new \Civi\OAuth\OAuthException("Found invalid token for mail store #" . $mailSettings['id']);
     }
 
     $mailSettings['auth'] = 'XOAuth2';
diff --git a/civicrm/ext/oauth-client/CRM/OAuth/Page/Return.php b/civicrm/ext/oauth-client/CRM/OAuth/Page/Return.php
index b3df41301ae31df6c07df518c76a64a82999ead9..38b1aaa14eb9fe01c0afa018ba418d4c8d6c50dc 100644
--- a/civicrm/ext/oauth-client/CRM/OAuth/Page/Return.php
+++ b/civicrm/ext/oauth-client/CRM/OAuth/Page/Return.php
@@ -35,7 +35,7 @@ class CRM_OAuth_Page_Return extends CRM_Core_Page {
       $this->assign('error', $error ?? NULL);
     }
     elseif ($authCode = CRM_Utils_Request::retrieve('code', 'String')) {
-      $client = \Civi\Api4\OAuthClient::get(0)->addWhere('id', '=', $state['clientId'])->execute()->single();
+      $client = \Civi\Api4\OAuthClient::get(FALSE)->addWhere('id', '=', $state['clientId'])->execute()->single();
       $tokenRecord = Civi::service('oauth2.token')->init([
         'client' => $client,
         'scope' => $state['scopes'],
diff --git a/civicrm/ext/oauth-client/Civi/Api4/Action/OAuthSysToken/Refresh.php b/civicrm/ext/oauth-client/Civi/Api4/Action/OAuthSysToken/Refresh.php
index 5a1e4c523f3ce2ff24421ac1dfe23880ad45f4b1..3c75a945564bc47f0a58a47d3c822a62e62e93b3 100644
--- a/civicrm/ext/oauth-client/Civi/Api4/Action/OAuthSysToken/Refresh.php
+++ b/civicrm/ext/oauth-client/Civi/Api4/Action/OAuthSysToken/Refresh.php
@@ -50,7 +50,7 @@ class Refresh extends BasicBatchAction {
   }
 
   protected function doTask($row) {
-    if ($this->threshold >= 0 && \CRM_Utils_Time::getTimeRaw() < $row['expires'] - $this->threshold) {
+    if ($this->threshold >= 0 && \CRM_Utils_Time::time() < $row['expires'] - $this->threshold) {
       return $this->filterReturn($row);
     }
 
@@ -79,7 +79,7 @@ class Refresh extends BasicBatchAction {
 
   protected function getProvider($clientId) {
     if (!isset($this->providers[$clientId])) {
-      $client = \Civi\Api4\OAuthClient::get(0)->addWhere('id', '=', $clientId)->execute()->single();
+      $client = \Civi\Api4\OAuthClient::get(FALSE)->addWhere('id', '=', $clientId)->execute()->single();
       $this->providers[$clientId] = \Civi::service('oauth2.league')->createProvider($client);
     }
     return $this->providers[$clientId];
diff --git a/civicrm/ext/oauth-client/Civi/OAuth/OAuthLeagueFacade.php b/civicrm/ext/oauth-client/Civi/OAuth/OAuthLeagueFacade.php
index 49f50b970751124605ffc8030c2f134cadfedb66..01fd7d406480fbb3c514b98b4930ea5ae760125d 100644
--- a/civicrm/ext/oauth-client/Civi/OAuth/OAuthLeagueFacade.php
+++ b/civicrm/ext/oauth-client/Civi/OAuth/OAuthLeagueFacade.php
@@ -25,7 +25,7 @@ class OAuthLeagueFacade {
    */
   public function createProviderOptions($clientDef) {
     $clientDef = $this->resolveSingleRef('OAuthClient', $clientDef, ['id', 'provider'], ['secret', 'guid']);
-    $providerDef = \Civi\Api4\OAuthProvider::get(0)
+    $providerDef = \Civi\Api4\OAuthProvider::get(FALSE)
       ->addWhere('name', '=', $clientDef['provider'])
       ->execute()
       ->single();
diff --git a/civicrm/ext/oauth-client/README.md b/civicrm/ext/oauth-client/README.md
index de759354d0aaf4e1e5215134e01524f544d425ae..aec5e90501fe097d6fbadd006656772ea757c8ee 100644
--- a/civicrm/ext/oauth-client/README.md
+++ b/civicrm/ext/oauth-client/README.md
@@ -1,44 +1,7 @@
 # oauth-client
 
-![Screenshot](/images/screenshot.png)
-
-(*FIXME: In one or two paragraphs, describe what the extension does and why one would download it. *)
-
 The extension is licensed under [AGPL-3.0](LICENSE.txt).
 
-## Requirements
-
-* PHP v7.0+
-* CiviCRM (*FIXME: Version number*)
-
-## Installation (Web UI)
-
-This extension has not yet been published for installation via the web UI.
-
-## Installation (CLI, Zip)
-
-Sysadmins and developers may download the `.zip` file for this extension and
-install it with the command-line tool [cv](https://github.com/civicrm/cv).
-
-```bash
-cd <extension-dir>
-cv dl oauth-client@https://github.com/FIXME/oauth-client/archive/master.zip
-```
-
-## Installation (CLI, Git)
-
-Sysadmins and developers may clone the [Git](https://en.wikipedia.org/wiki/Git) repo for this extension and
-install it with the command-line tool [cv](https://github.com/civicrm/cv).
-
-```bash
-git clone https://github.com/FIXME/oauth-client.git
-cv en oauth_client
-```
-
-## Usage
-
-(* FIXME: Where would a new user navigate to get started? What changes would they see? *)
-
-## Known Issues
+## Installation
 
-(* FIXME *)
+This extension is shipped with CiviCRM core and will appear in the list of extensions.
diff --git a/civicrm/ext/oauth-client/info.xml b/civicrm/ext/oauth-client/info.xml
index 56fd43c51e36c01c2731bbe6da5ed72e2e321dec..4394c22ae5c886cfb00f4d2080208f85ec9c1e38 100644
--- a/civicrm/ext/oauth-client/info.xml
+++ b/civicrm/ext/oauth-client/info.xml
@@ -15,10 +15,10 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-10-23</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <requires>
     <ext version="~4.5">org.civicrm.afform</ext>
diff --git a/civicrm/ext/oauth-client/oauth_client.php b/civicrm/ext/oauth-client/oauth_client.php
index a4d6e1592d4f2c1e35e4525485c995021dfdd27d..c1260c0fd6ca4b88a054d2a0cac6ab5508d66ef8 100644
--- a/civicrm/ext/oauth-client/oauth_client.php
+++ b/civicrm/ext/oauth-client/oauth_client.php
@@ -55,34 +55,6 @@ function oauth_client_civicrm_entityTypes(&$entityTypes) {
   _oauth_client_civix_civicrm_entityTypes($entityTypes);
 }
 
-// --- Functions below this ship commented out. Uncomment as required. ---
-
-/**
- * Implements hook_civicrm_preProcess().
- *
- * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_preProcess
- */
-//function oauth_client_civicrm_preProcess($formName, &$form) {
-//
-//}
-
-/**
- * Implements hook_civicrm_navigationMenu().
- *
- * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_navigationMenu
- */
-//function oauth_client_civicrm_navigationMenu(&$menu) {
-//  _oauth_client_civix_insert_navigation_menu($menu, 'Mailings', array(
-//    'label' => E::ts('New subliminal message'),
-//    'name' => 'mailing_subliminal_message',
-//    'url' => 'civicrm/mailing/subliminal',
-//    'permission' => 'access CiviMail',
-//    'operator' => 'OR',
-//    'separator' => 0,
-//  ));
-//  _oauth_client_civix_navigationMenu($menu);
-//}
-
 /**
  * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
  */
diff --git a/civicrm/ext/oauth-client/tests/phpunit/Civi/OAuth/AuthCodeFlowTest.php b/civicrm/ext/oauth-client/tests/phpunit/Civi/OAuth/AuthCodeFlowTest.php
index 5dd61ce826ab488d2ebe80de97f47dc56b815a56..8f30036b6c64da658d9031a79feb0b753b43e2c2 100644
--- a/civicrm/ext/oauth-client/tests/phpunit/Civi/OAuth/AuthCodeFlowTest.php
+++ b/civicrm/ext/oauth-client/tests/phpunit/Civi/OAuth/AuthCodeFlowTest.php
@@ -254,7 +254,7 @@ class AuthCodeFlowTest extends \PHPUnit\Framework\TestCase implements
     $this->assertEquals('example-access-token-value', $tokenRecord['access_token']);
     $this->assertEquals('example-refresh-token-value', $tokenRecord['refresh_token']);
     $this->assertGreaterThan($notLoggedInContactID, $tokenRecord['contact_id']);
-    $contact = \Civi\Api4\Contact::get(0)
+    $contact = \Civi\Api4\Contact::get(FALSE)
       ->addWhere('id', '=', $tokenRecord['contact_id'])
       ->addJoin('Email AS email')
       ->addSelect('email.email')
@@ -351,7 +351,7 @@ class AuthCodeFlowTest extends \PHPUnit\Framework\TestCase implements
     $this->assertEquals('example-access-token-value', $tokenRecord['access_token']);
     $this->assertEquals('example-refresh-token-value', $tokenRecord['refresh_token']);
     $this->assertGreaterThan($loggedInContactID, $tokenRecord['contact_id']);
-    $contact = \Civi\Api4\Contact::get(0)
+    $contact = \Civi\Api4\Contact::get(FALSE)
       ->addWhere('id', '=', $tokenRecord['contact_id'])
       ->addJoin('Email AS email')
       ->addSelect('email.email')
diff --git a/civicrm/ext/oauth-client/tests/phpunit/api/v4/OAuthClientTest.php b/civicrm/ext/oauth-client/tests/phpunit/api/v4/OAuthClientTest.php
index 34ec0a09730e6f8f25468189bce318c2d9435def..cb7e0eb0faa5e6bcb63f410d9cfdfab4906c624b 100644
--- a/civicrm/ext/oauth-client/tests/phpunit/api/v4/OAuthClientTest.php
+++ b/civicrm/ext/oauth-client/tests/phpunit/api/v4/OAuthClientTest.php
@@ -50,15 +50,15 @@ class api_v4_OAuthClientTest extends \PHPUnit\Framework\TestCase implements Head
 
     $usePerms(['manage OAuth client']);
     // If we can tighten perm model: $usePerms(['manage OAuth client', 'manage OAuth client secrets']);
-    $get = Civi\Api4\OAuthClient::get(0)->addWhere('guid', '=', "example-id-$random")->execute();
+    $get = Civi\Api4\OAuthClient::get(FALSE)->addWhere('guid', '=', "example-id-$random")->execute();
     $this->assertEquals(1, $get->count());
     $client = $get->first();
     $this->assertEquals("example-id-$random", $client['guid']);
     $this->assertEquals("example-secret-$random", $client['secret']);
 
     $usePerms(['manage OAuth client']);
-    Civi\Api4\OAuthClient::delete(0)->addWhere('guid', '=', "example-id-$random")->execute();
-    $get = Civi\Api4\OAuthClient::get(0)->addWhere('guid', '=', "example-id-$random")->execute();
+    Civi\Api4\OAuthClient::delete(FALSE)->addWhere('guid', '=', "example-id-$random")->execute();
+    $get = Civi\Api4\OAuthClient::get(FALSE)->addWhere('guid', '=', "example-id-$random")->execute();
     $this->assertEquals(0, $get->count());
   }
 
diff --git a/civicrm/ext/payflowpro/info.xml b/civicrm/ext/payflowpro/info.xml
index afd78673a84c5cb85897ca325e9ffce73651ffb6..43ab8ec2f81fe1cdaf73aeb0e1cfbc181ef3a117 100644
--- a/civicrm/ext/payflowpro/info.xml
+++ b/civicrm/ext/payflowpro/info.xml
@@ -15,10 +15,10 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-04-13</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <comments>This extension is extraction of the original Core Payflow Pro Payment Processor</comments>
   <classloader>
diff --git a/civicrm/ext/payflowpro/tests/phpunit/CRM/Core/Payment/PayflowProTest.php b/civicrm/ext/payflowpro/tests/phpunit/CRM/Core/Payment/PayflowProTest.php
index 93445de4b81fa4d64650631255b52c2f48a1a747..5bff55fa9c0c8f2de937871a4de6cffafde39cd3 100644
--- a/civicrm/ext/payflowpro/tests/phpunit/CRM/Core/Payment/PayflowProTest.php
+++ b/civicrm/ext/payflowpro/tests/phpunit/CRM/Core/Payment/PayflowProTest.php
@@ -61,7 +61,7 @@ class CRM_Core_Payment_PayflowProTest extends \PHPUnit\Framework\TestCase implem
       $params[str_replace('-5', '', str_replace('billing_', '', $key))] = $value;
     }
     $params['state_province'] = 'NSW';
-    $params['country'] = 'AUS';
+    $params['country'] = 'AU';
     $params['contributionType_accounting_code'] = 4200;
     $params['installments'] = 1;
     $this->processor->doPayment($params);
@@ -71,7 +71,7 @@ class CRM_Core_Payment_PayflowProTest extends \PHPUnit\Framework\TestCase implem
   /**
    * Test making a recurring payment
    */
-  public function testRecuringPayment(): void {
+  public function testRecurringPayment(): void {
     $this->setupMockHandler(NULL, FALSE, TRUE);
     $params = $this->getBillingParams();
     $params['amount'] = 20.00;
@@ -87,14 +87,14 @@ class CRM_Core_Payment_PayflowProTest extends \PHPUnit\Framework\TestCase implem
       $params[str_replace('-5', '', str_replace('billing_', '', $key))] = $value;
     }
     $params['state_province'] = 'NSW';
-    $params['country'] = 'AUS';
+    $params['country'] = 'AU';
     $params['contributionType_accounting_code'] = 4200;
     $params['installments'] = 13;
     $params['is_recur'] = 1;
     $params['frequency_unit'] = 'month';
     $params['frequency_interval'] = 1;
     $this->processor->doPayment($params);
-    $this->assertEquals($this->getExpectedRecuringPaymentRequests(), $this->getRequestBodies());
+    $this->assertEquals($this->getExpectedRecurringPaymentRequests(), $this->getRequestBodies());
   }
 
   /**
@@ -116,7 +116,7 @@ class CRM_Core_Payment_PayflowProTest extends \PHPUnit\Framework\TestCase implem
       $params[str_replace('-5', '', str_replace('billing_', '', $key))] = $value;
     }
     $params['state_province'] = 'NSW';
-    $params['country'] = 'AUS';
+    $params['country'] = 'AU';
     $params['contributionType_accounting_code'] = 4200;
     $params['installments'] = 1;
     try {
@@ -244,13 +244,13 @@ class CRM_Core_Payment_PayflowProTest extends \PHPUnit\Framework\TestCase implem
    */
   public function getExpectedSinglePaymentRequests(): array {
     return [
-      'USER[4]=test&VENDOR[4]=test&PARTNER[6]=PayPal&PWD[8]=test1234&TENDER[1]=C&TRXTYPE[1]=S&ACCT[16]=4111111111111111&CVV2[3]=123&EXPDATE[4]=1022&ACCTTYPE[4]=Visa&AMT[7]=1020.00&CURRENCY[3]=AUD&FIRSTNAME[4]=John&LASTNAME[8]=O\'Connor&STREET[16]=8 Hobbitton Road&CITY[9]=The+Shire&STATE[3]=NSW&ZIP[4]=5010&COUNTRY[3]=AUS&EMAIL[24]=unittesteway@civicrm.org&CUSTIP[9]=127.0.0.1&COMMENT1[4]=4200&COMMENT2[4]=live&INVNUM[3]=xyz&ORDERDESC[17]=Test+Contribution&VERBOSITY[6]=MEDIUM&BILLTOCOUNTRY[3]=AUS',
+      'USER[4]=test&VENDOR[4]=test&PARTNER[6]=PayPal&PWD[8]=test1234&TENDER[1]=C&TRXTYPE[1]=S&ACCT[16]=4111111111111111&CVV2[3]=123&EXPDATE[4]=1022&ACCTTYPE[4]=Visa&AMT[7]=1020.00&CURRENCY[3]=AUD&FIRSTNAME[4]=John&LASTNAME[8]=O\'Connor&STREET[16]=8 Hobbitton Road&CITY[9]=The+Shire&STATE[3]=NSW&ZIP[4]=5010&COUNTRY[2]=AU&EMAIL[24]=unittesteway@civicrm.org&CUSTIP[9]=127.0.0.1&COMMENT1[4]=4200&COMMENT2[4]=live&INVNUM[3]=xyz&ORDERDESC[17]=Test+Contribution&VERBOSITY[6]=MEDIUM&BILLTOCOUNTRY[2]=AU',
     ];
   }
 
-  public function getExpectedRecuringPaymentRequests(): array {
+  public function getExpectedRecurringPaymentRequests(): array {
     return [
-      'USER[4]=test&VENDOR[4]=test&PARTNER[6]=PayPal&PWD[8]=test1234&TENDER[1]=C&TRXTYPE[1]=R&ACCT[16]=4111111111111111&CVV2[3]=123&EXPDATE[4]=1022&ACCTTYPE[4]=Visa&AMT[5]=20.00&CURRENCY[3]=AUD&FIRSTNAME[4]=John&LASTNAME[8]=O\'Connor&STREET[16]=8 Hobbitton Road&CITY[9]=The+Shire&STATE[3]=NSW&ZIP[4]=5010&COUNTRY[3]=AUS&EMAIL[24]=unittesteway@civicrm.org&CUSTIP[9]=127.0.0.1&COMMENT1[4]=4200&COMMENT2[4]=live&INVNUM[3]=xyz&ORDERDESC[17]=Test+Contribution&VERBOSITY[6]=MEDIUM&BILLTOCOUNTRY[3]=AUS&OPTIONALTRX[1]=S&OPTIONALTRXAMT[5]=20.00&ACTION[1]=A&PROFILENAME[19]=RegularContribution&TERM[2]=12&START[8]=' . date('mdY', mktime(0, 0, 0, date("m") + 1, date("d"), date("Y"))) . '&PAYPERIOD[4]=MONT',
+      'USER[4]=test&VENDOR[4]=test&PARTNER[6]=PayPal&PWD[8]=test1234&TENDER[1]=C&TRXTYPE[1]=R&ACCT[16]=4111111111111111&CVV2[3]=123&EXPDATE[4]=1022&ACCTTYPE[4]=Visa&AMT[5]=20.00&CURRENCY[3]=AUD&FIRSTNAME[4]=John&LASTNAME[8]=O\'Connor&STREET[16]=8 Hobbitton Road&CITY[9]=The+Shire&STATE[3]=NSW&ZIP[4]=5010&COUNTRY[2]=AU&EMAIL[24]=unittesteway@civicrm.org&CUSTIP[9]=127.0.0.1&COMMENT1[4]=4200&COMMENT2[4]=live&INVNUM[3]=xyz&ORDERDESC[17]=Test+Contribution&VERBOSITY[6]=MEDIUM&BILLTOCOUNTRY[2]=AU&OPTIONALTRX[1]=S&OPTIONALTRXAMT[5]=20.00&ACTION[1]=A&PROFILENAME[19]=RegularContribution&TERM[2]=12&START[8]=' . date('mdY', mktime(0, 0, 0, date("m") + 1, date("d"), date("Y"))) . '&PAYPERIOD[4]=MONT',
     ];
   }
 
diff --git a/civicrm/ext/recaptcha/CRM/Utils/ReCAPTCHA.php b/civicrm/ext/recaptcha/CRM/Utils/ReCAPTCHA.php
index 33c78e174f9c9295332fe77dba7ec7ef8d61557d..cd99e32f737735a1a7097d8d153e77f3ee1731e6 100644
--- a/civicrm/ext/recaptcha/CRM/Utils/ReCAPTCHA.php
+++ b/civicrm/ext/recaptcha/CRM/Utils/ReCAPTCHA.php
@@ -39,7 +39,7 @@ class CRM_Utils_ReCAPTCHA {
   /**
    * Singleton function used to manage this object.
    *
-   * @return object
+   * @return CRM_Utils_ReCAPTCHA
    */
   public static function &singleton() {
     if (self::$_singleton === NULL) {
@@ -202,6 +202,8 @@ class CRM_Utils_ReCAPTCHA {
    * @return mixed
    */
   public static function validate($value, $form) {
+    require_once E::path('lib/recaptcha/recaptchalib.php');
+
     $resp = recaptcha_check_answer(CRM_Core_Config::singleton()->recaptchaPrivateKey,
       $_SERVER['REMOTE_ADDR'],
       $_POST['g-recaptcha-response']
diff --git a/civicrm/ext/recaptcha/info.xml b/civicrm/ext/recaptcha/info.xml
index 74c18b4fb6b1219478256a25784fe10330408f89..e9dd970db77b806ba0152ff69ed1d6d50faf2f8e 100644
--- a/civicrm/ext/recaptcha/info.xml
+++ b/civicrm/ext/recaptcha/info.xml
@@ -13,13 +13,13 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-04-03</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <classloader>
     <psr4 prefix="Civi\" path="Civi"/>
diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php
index 5df9ef6d1ef64c63283eae3a04f6ebf4d9c189a5..b06f67c8192e3a06da992e2b38ca330b69e1308c 100644
--- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php
+++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php
@@ -3,7 +3,6 @@
 namespace Civi\Api4\Action\SearchDisplay;
 
 use Civi\API\Exception\UnauthorizedException;
-use Civi\Api4\Generic\Traits\ArrayQueryActionTrait;
 use Civi\Api4\Query\SqlField;
 use Civi\Api4\SearchDisplay;
 use Civi\Api4\Utils\CoreUtil;
@@ -26,8 +25,8 @@ use Civi\Api4\Utils\FormattingUtil;
  */
 abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction {
 
-  use SavedSearchInspectorTrait;
-  use ArrayQueryActionTrait;
+  use \Civi\Api4\Generic\Traits\SavedSearchInspectorTrait;
+  use \Civi\Api4\Generic\Traits\ArrayQueryActionTrait;
 
   /**
    * Either the name of the display or an array containing the display definition (for preview mode)
@@ -510,18 +509,21 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction {
       if ($prefix) {
         $path = str_replace('[', '[' . $prefix, $path);
       }
-      // Check access for edit/update links
+      // Check access for edit/update/delete links
       // (presumably if a record is shown in SearchKit the user already has view access, and the check is expensive)
       if ($path && isset($data) && !in_array($link['action'], ['view', 'preview'], TRUE)) {
         $id = $data[$prefix . $idKey] ?? NULL;
         $id = is_array($id) ? $id[$index] ?? NULL : $id;
         if ($id) {
+          $values = [$idField => $id];
+          // If not aggregated, add other values to help checkAccess be efficient
+          if (!is_array($data[$prefix . $idKey])) {
+            $values += \CRM_Utils_Array::filterByPrefix($data, $prefix);
+          }
           $access = civicrm_api4($link['entity'], 'checkAccess', [
             // Fudge links with funny action names to check 'update'
             'action' => $link['action'] === 'delete' ? 'delete' : 'update',
-            'values' => [
-              $idField => $id,
-            ],
+            'values' => $values,
           ], 0)['access'];
           if (!$access) {
             return NULL;
@@ -561,7 +563,7 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction {
       $editable['value'] = $data[$editable['value_path']];
       // Ensure field is appropriate to this entity sub-type
       $field = $this->getField($column['key']);
-      $entityValues = FormattingUtil::filterByPrefix($data, $editable['id_path'], $editable['id_key']);
+      $entityValues = FormattingUtil::filterByPath($data, $editable['id_path'], $editable['id_key']);
       if (!$this->fieldBelongsToEntity($editable['entity'], $field['name'], $entityValues)) {
         return NULL;
       }
@@ -828,91 +830,6 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction {
     return $result;
   }
 
-  /**
-   * @param array $fieldNames
-   *   If multiple field names are given they will be combined in an OR clause
-   * @param mixed $value
-   */
-  private function applyFilter(array $fieldNames, $value) {
-    // Global setting determines if % wildcard should be added to both sides (default) or only the end of a search string
-    $prefixWithWildcard = \Civi::settings()->get('includeWildCardInName');
-
-    // Based on the first field, decide which clause to add this condition to
-    $fieldName = $fieldNames[0];
-    $field = $this->getField($fieldName);
-    // If field is not found it must be an aggregated column & belongs in the HAVING clause.
-    if (!$field) {
-      $this->_apiParams += ['having' => []];
-      $clause =& $this->_apiParams['having'];
-    }
-    // If field belongs to an EXCLUDE join, it should be added as a join condition
-    else {
-      $prefix = strpos($fieldName, '.') ? explode('.', $fieldName)[0] : NULL;
-      foreach ($this->_apiParams['join'] ?? [] as $idx => $join) {
-        if (($join[1] ?? 'LEFT') === 'EXCLUDE' && (explode(' AS ', $join[0])[1] ?? '') === $prefix) {
-          $clause =& $this->_apiParams['join'][$idx];
-        }
-      }
-    }
-    // Default: add filter to WHERE clause
-    if (!isset($clause)) {
-      $clause =& $this->_apiParams['where'];
-    }
-
-    $filterClauses = [];
-
-    foreach ($fieldNames as $fieldName) {
-      $field = $this->getField($fieldName);
-      $dataType = $field['data_type'] ?? NULL;
-      // Array is either associative `OP => VAL` or sequential `IN (...)`
-      if (is_array($value)) {
-        $value = array_filter($value, [$this, 'hasValue']);
-        // If array does not contain operators as keys, assume array of values
-        if (array_diff_key($value, array_flip(CoreUtil::getOperators()))) {
-          // Use IN for regular fields
-          if (empty($field['serialize'])) {
-            $filterClauses[] = [$fieldName, 'IN', $value];
-          }
-          // Use an OR group of CONTAINS for array fields
-          else {
-            $orGroup = [];
-            foreach ($value as $val) {
-              $orGroup[] = [$fieldName, 'CONTAINS', $val];
-            }
-            $filterClauses[] = ['OR', $orGroup];
-          }
-        }
-        // Operator => Value array
-        else {
-          $andGroup = [];
-          foreach ($value as $operator => $val) {
-            $andGroup[] = [$fieldName, $operator, $val];
-          }
-          $filterClauses[] = ['AND', $andGroup];
-        }
-      }
-      elseif (!empty($field['serialize'])) {
-        $filterClauses[] = [$fieldName, 'CONTAINS', $value];
-      }
-      elseif (!empty($field['options']) || in_array($dataType, ['Integer', 'Boolean', 'Date', 'Timestamp'])) {
-        $filterClauses[] = [$fieldName, '=', $value];
-      }
-      elseif ($prefixWithWildcard) {
-        $filterClauses[] = [$fieldName, 'CONTAINS', $value];
-      }
-      else {
-        $filterClauses[] = [$fieldName, 'LIKE', $value . '%'];
-      }
-    }
-    // Single field
-    if (count($filterClauses) === 1) {
-      $clause[] = $filterClauses[0];
-    }
-    else {
-      $clause[] = ['OR', $filterClauses];
-    }
-  }
-
   /**
    * Transforms the SORT param (which is expected to be an array of arrays)
    * to the ORDER BY clause (which is an associative array of [field => DIR]
@@ -1047,19 +964,6 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction {
     return $result ?: $alias;
   }
 
-  /**
-   * Checks if a filter contains a non-empty value
-   *
-   * "Empty" search values are [], '', and NULL.
-   * Also recursively checks arrays to ensure they contain at least one non-empty value.
-   *
-   * @param $value
-   * @return bool
-   */
-  private function hasValue($value) {
-    return $value !== '' && $value !== NULL && (!is_array($value) || array_filter($value, [$this, 'hasValue']));
-  }
-
   /**
    * Returns a list of afform fields used as search filters
    *
diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetDefault.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetDefault.php
index 56dc8967b97500f699459ed5dcc5cdfaaea383d0..2f387cfce7b07ad010de3b56e45c28d1607f17f6 100644
--- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetDefault.php
+++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetDefault.php
@@ -2,6 +2,7 @@
 
 namespace Civi\Api4\Action\SearchDisplay;
 
+use Civi\Api4\Generic\Traits\SavedSearchInspectorTrait;
 use Civi\Api4\SavedSearch;
 use Civi\Api4\Utils\FormattingUtil;
 use Civi\Search\Display;
diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php
index 97fb5292f37ace6fd33005119cb8548f84a0b705..9db93923b54ce657b395a911d27776c90e5e5cb0 100644
--- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php
+++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php
@@ -140,7 +140,7 @@ class GetSearchTasks extends \Civi\Api4\Generic\AbstractAction {
       // FIXME: tasks() function always checks permissions, should respect `$this->checkPermissions`
       foreach (\CRM_Contribute_Task::tasks() as $id => $task) {
         if (!empty($task['url'])) {
-          $key = \CRM_Core_Key::get(\CRM_Utils_Array::first((array) $task['class']), TRUE);
+          $key = \CRM_Core_Key::get('CRM_Contribute_Controller_Task', TRUE);
           $tasks[$entity['name']]['contribution.' . $id] = [
             'title' => $task['title'],
             'icon' => $task['icon'] ?? 'fa-gear',
diff --git a/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/SearchKitSubscriber.php b/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/SearchKitSubscriber.php
index 62e4815f1cacf158dc243aee4f1243f6966ff2a3..3ac32ea4def56f8c3671fbfbbf1fb0510574443c 100644
--- a/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/SearchKitSubscriber.php
+++ b/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/SearchKitSubscriber.php
@@ -36,7 +36,7 @@ class SearchKitSubscriber implements EventSubscriberInterface {
    *   API authorization event.
    */
   public function onApiAuthorize(\Civi\API\Event\AuthorizeEvent $event) {
-    /* @var \Civi\Api4\Generic\AbstractAction $apiRequest */
+    /** @var \Civi\Api4\Generic\AbstractAction $apiRequest */
     $apiRequest = $event->getApiRequest();
     if ($apiRequest['version'] == 4 && $apiRequest->getEntityName() === 'SavedSearch') {
       if (\CRM_Core_Permission::check('administer search_kit')) {
diff --git a/civicrm/ext/search_kit/Civi/Search/Admin.php b/civicrm/ext/search_kit/Civi/Search/Admin.php
index 8d0d2e2271f8c75da8f2254ecc0b345692e74aa6..a0f8b7c280d0ae6e3b88e225bb33ba779c1d8cc1 100644
--- a/civicrm/ext/search_kit/Civi/Search/Admin.php
+++ b/civicrm/ext/search_kit/Civi/Search/Admin.php
@@ -17,6 +17,7 @@ use Civi\Api4\Query\SqlEquation;
 use Civi\Api4\Query\SqlFunction;
 use Civi\Api4\SearchDisplay;
 use Civi\Api4\Tag;
+use Civi\Api4\Utils\CoreUtil;
 use CRM_Search_ExtensionUtil as E;
 
 /**
@@ -136,6 +137,10 @@ class Admin {
         if ($links) {
           $entity['links'] = array_values($links);
         }
+        $paths = CoreUtil::getInfoItem($entity['name'], 'paths');
+        if (!empty($paths['add'])) {
+          $entity['addPath'] = $paths['add'];
+        }
         $getFields = civicrm_api4($entity['name'], 'getFields', [
           'select' => ['name', 'title', 'label', 'description', 'type', 'options', 'input_type', 'input_attrs', 'data_type', 'serialize', 'entity', 'fk_entity', 'readonly', 'operators', 'suffixes', 'nullable'],
           'where' => [['name', 'NOT IN', ['api_key', 'hash']]],
@@ -248,7 +253,7 @@ class Admin {
       }
       // Non-custom DAO entities
       elseif (!empty($entity['dao'])) {
-        /* @var \CRM_Core_DAO $daoClass */
+        /** @var \CRM_Core_DAO $daoClass */
         $daoClass = $entity['dao'];
         $references = $daoClass::getReferenceColumns();
         $fields = array_column($entity['fields'], NULL, 'name');
diff --git a/civicrm/ext/search_kit/Civi/Search/AfformSearchMetadataInjector.php b/civicrm/ext/search_kit/Civi/Search/AfformSearchMetadataInjector.php
index 98244fe9d74e2b12e62426b76ce71ecf6099c7b6..76c48b77e18bcc523d93aaba79debc3eb3b642e0 100644
--- a/civicrm/ext/search_kit/Civi/Search/AfformSearchMetadataInjector.php
+++ b/civicrm/ext/search_kit/Civi/Search/AfformSearchMetadataInjector.php
@@ -57,8 +57,21 @@ class AfformSearchMetadataInjector {
                 // Add entity names to the fieldset so that afform can populate field metadata
                 $fieldset = pq($component)->parents('[af-fieldset]');
                 if ($fieldset->length) {
-                  $entityList = array_merge([$display['saved_search_id.api_entity']], array_column($display['saved_search_id.api_params']['join'] ?? [], 0));
+                  $entityList = [$display['saved_search_id.api_entity']];
+                  foreach ($display['saved_search_id.api_params']['join'] ?? [] as $join) {
+                    $entityList[] = $join[0];
+                    if (is_string($join[2] ?? NULL)) {
+                      $entityList[] = $join[2] . ' AS ' . (explode(' AS ', $join[0])[1]);
+                    }
+                  }
                   $fieldset->attr('api-entities', htmlspecialchars(\CRM_Utils_JS::encode($entityList)));
+                  // Add field metadata for aggregate fields because they are not in the schema.
+                  // Normal entity fields will be handled by AfformMetadataInjector
+                  foreach (Meta::getCalcFields($display['saved_search_id.api_entity'], $display['saved_search_id.api_params']) as $fieldInfo) {
+                    foreach (pq("af-field[name='{$fieldInfo['name']}']", $doc) as $afField) {
+                      \Civi\Afform\AfformMetadataInjector::setFieldMetadata($afField, $fieldInfo);
+                    }
+                  }
                 }
               }
             }
@@ -66,7 +79,6 @@ class AfformSearchMetadataInjector {
         }
       });
     $e->angular->add($changeSet);
-
   }
 
 }
diff --git a/civicrm/ext/search_kit/Civi/Search/Meta.php b/civicrm/ext/search_kit/Civi/Search/Meta.php
new file mode 100644
index 0000000000000000000000000000000000000000..826fb23489376f821183d0b65e75900277b86929
--- /dev/null
+++ b/civicrm/ext/search_kit/Civi/Search/Meta.php
@@ -0,0 +1,85 @@
+<?php
+/*
+ +--------------------------------------------------------------------+
+ | Copyright CiviCRM LLC. All rights reserved.                        |
+ |                                                                    |
+ | This work is published under the GNU AGPLv3 license with some      |
+ | permitted exceptions and without any warranty. For full license    |
+ | and copyright information, see https://civicrm.org/licensing       |
+ +--------------------------------------------------------------------+
+ */
+
+namespace Civi\Search;
+
+use CRM_Search_ExtensionUtil as E;
+use Civi\Api4\Query\SqlExpression;
+use Civi\Api4\Utils\CoreUtil;
+
+/**
+ * Search Metadata utilities
+ * @package Civi\Search
+ */
+class Meta {
+
+  /**
+   * Get calculated fields used by a saved search
+   *
+   * @param string $apiEntity
+   * @param array $apiParams
+   * @return array
+   */
+  public static function getCalcFields($apiEntity, $apiParams): array {
+    $calcFields = [];
+    $api = \Civi\API\Request::create($apiEntity, 'get', $apiParams);
+    $selectQuery = new \Civi\Api4\Query\Api4SelectQuery($api);
+    $joinMap = $joinCount = [];
+    foreach ($apiParams['join'] ?? [] as $join) {
+      [$entityName, $alias] = explode(' AS ', $join[0]);
+      $num = '';
+      if (!empty($joinCount[$entityName])) {
+        $num = ' ' . (++$joinCount[$entityName]);
+      }
+      else {
+        $joinCount[$entityName] = 1;
+      }
+      $label = CoreUtil::getInfoItem($entityName, 'title');
+      $joinMap[$alias] = $label . $num;
+    }
+
+    $dataTypeToInputType = [
+      'Integer' => 'Number',
+      'Date' => 'Date',
+      'Timestamp' => 'Date',
+      'Boolean' => 'CheckBox',
+    ];
+
+    foreach ($apiParams['select'] ?? [] as $select) {
+      if (strstr($select, ' AS ')) {
+        $expr = SqlExpression::convert($select, TRUE);
+        $label = $expr::getTitle();
+        foreach ($expr->getFields() as $num => $fieldName) {
+          $field = $selectQuery->getField($fieldName);
+          $joinName = explode('.', $fieldName)[0];
+          $label .= ($num ? ', ' : ': ') . (isset($joinMap[$joinName]) ? $joinMap[$joinName] . ' ' : '') . $field['title'];
+        }
+        if ($expr::getDataType()) {
+          $dataType = $expr::getDataType();
+          $inputType = $dataTypeToInputType[$dataType] ?? 'Text';
+        }
+        else {
+          $dataType = $field['data_type'] ?? 'String';
+          $inputType = $field['input_type'] ?? $dataTypeToInputType[$dataType] ?? 'Text';
+        }
+
+        $calcFields[] = [
+          'name' => $expr->getAlias(),
+          'label' => $label,
+          'input_type' => $inputType,
+          'data_type' => $dataType,
+        ];
+      }
+    }
+    return $calcFields;
+  }
+
+}
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js b/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js
index 729be45d6426dfe0a42170ac6ac1dd267b912f1c..1669081dcbd747b9c46f1ede12777bfffb4e9329 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js
@@ -45,7 +45,7 @@
     })
 
     // Controller for tabbed view of SavedSearches
-    .controller('searchList', function($scope, $timeout, searchMeta, formatForSelect2, dialogService) {
+    .controller('searchList', function($scope, $timeout, searchMeta, formatForSelect2) {
       var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'),
         ctrl = $scope.$ctrl = this;
       searchEntity = 'SavedSearch';
@@ -59,6 +59,10 @@
         return {results: formatForSelect2(CRM.crmSearchAdmin.tags, 'id', 'name', ['color', 'description'])};
       };
 
+      this.getPrimaryEntities = function() {
+        this.primaryEntities = _.filter(CRM.crmSearchAdmin.schema, {searchable: 'primary'});
+      };
+
       // Tabs include a rowCount which will be updated by the search controller
       this.tabs = [
         {name: 'custom', title: ts('Custom Searches'), icon: 'fa-search-plus', rowCount: null, filters: {has_base: false}},
@@ -184,8 +188,8 @@
 
         function getKeyword(whitelist) {
           var keyword;
-          _.each(whitelist, function(flag) {
-            if (argString.indexOf(flag) === 0) {
+          _.each(_.filter(whitelist), function(flag) {
+            if (argString.indexOf(flag + ' ') === 0) {
               keyword = flag;
               argString = _.trim(argString.substr(flag.length));
               return false;
@@ -216,16 +220,18 @@
           var exprCount = 0,
             expr, flagBefore;
           argString = _.trim(argString);
-          if (!argString.length || (param.name && !getKeyword(param.name))) {
+          if (!argString.length || (param.name && !_.startsWith(argString, param.name + ' '))) {
             return false;
           }
           if (param.max_expr) {
             while (++exprCount <= param.max_expr && argString.length) {
               flagBefore = getKeyword(_.keys(param.flag_before || {}));
+              var name = getKeyword(param.name ? [param.name] : []);
               expr = getExpr();
               if (expr) {
                 expr.param = param.name || index;
                 expr.flag_before = flagBefore;
+                expr.name = name;
                 info.args.push(expr);
               }
               // Only continue if an expression was found and followed by a comma
@@ -237,6 +243,12 @@
             if (expr && !_.isEmpty(expr.flag_after)) {
               _.last(info.args).flag_after = getKeyword(_.keys(param.flag_after));
             }
+          } else if (param.flag_before && !param.optional) {
+            flagBefore = getKeyword(_.keys(param.flag_before));
+            info.args.push({
+              value: '',
+              flag_before: flagBefore
+            });
           }
         });
         if (!info.data_type && info.args.length) {
@@ -331,6 +343,9 @@
       }
       return {
         getEntity: getEntity,
+        getBaseEntity: function() {
+          return getEntity(searchEntity);
+        },
         getField: function(fieldName, entityName) {
           return getFieldAndJoin(fieldName, entityName || searchEntity).field;
         },
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdmin.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdmin.component.js
index f9806ad712f455b97cae8f44afa579039ee79111..1f93d844741e3f5f5f409786105065e56fa58e95 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdmin.component.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdmin.component.js
@@ -511,7 +511,7 @@
           // Add extra searchable fields from bridge entity
           if (join && join.bridge) {
             formatFields(_.filter(searchMeta.getEntity(join.bridge).fields, function(field) {
-              return (field.name !== 'id' && field.name !== 'entity_id' && field.name !== 'entity_table' && !field.fk_entity);
+              return (field.name !== 'id' && field.name !== 'entity_id' && field.name !== 'entity_table' && field.fk_entity !== entityName);
             }), result, prefix);
           }
 
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js
index 88ce9ce15535656244f2684e88183c63640d7789..9299cd79ab69e0bb1a3ad27c0289756e7369dd4e 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js
@@ -271,6 +271,25 @@
         });
       };
 
+      this.toggleAddButton = function() {
+        if (ctrl.display.settings.addButton && ctrl.display.settings.addButton.path) {
+          delete ctrl.display.settings.addButton;
+        } else {
+          var entity = searchMeta.getBaseEntity();
+          ctrl.display.settings.addButton = {
+            path: entity.addPath || 'civicrm/',
+            text: ts('Add %1', {1: entity.title}),
+            icon: 'fa-plus'
+          };
+        }
+      };
+
+      this.onChangeAddButtonPath = function() {
+        if (!ctrl.display.settings.addButton.path) {
+          delete ctrl.display.settings.addButton;
+        }
+      };
+
       // Helper function to sort active from hidden columns and initialize each column with defaults
       this.initColumns = function(defaults) {
         if (!ctrl.display.settings.columns) {
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.component.js
index 4b7b4b05ee0cd4d2e1093454ab25d64e22bb847b..9bd637ab3c392b54ee9b76e0492dd1376a5c4c3e 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.component.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchClause.component.js
@@ -36,7 +36,8 @@
       // Gets the first arg of type "field"
       function getFirstArgFromExpr(expr) {
         if (!(expr in meta)) {
-          meta[expr] = _.findWhere(searchMeta.parseExpr(expr).args, {type: 'field'});
+          var args = searchMeta.parseExpr(expr).args;
+          meta[expr] = _.findWhere(args, {type: 'field'});
         }
         return meta[expr] || {};
       }
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js
index 251afd3d5074bba1b6609fae48f9ed469feeabe9..86e063834f953d4d48aee3553826ddbcb874901b 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.component.js
@@ -48,7 +48,8 @@
         var param = ctrl.getParam(ctrl.args.length);
         ctrl.args.push({
           type: ctrl.exprTypes[exprType].type,
-          flag_before: _.keys(param.flag_before)[0],
+          flag_before: _.filter(_.keys(param.flag_before))[0],
+          name: param.name,
           value: exprType === 'SqlNumber' ? 0 : ''
         });
       };
@@ -62,7 +63,7 @@
           while (
             (ctrl.args.length - index < param.min_expr) &&
             // TODO: Handle named params like "ORDER BY"
-            !param.name &&
+            !(param.name && param.optional) &&
             (!param.optional || param.must_be.length === 1)
           ) {
             ctrl.addArg(param.must_be[0]);
@@ -71,7 +72,9 @@
       }
 
       this.getParam = function(index) {
-        return ctrl.fn.params[index] || _.last(ctrl.fn.params);
+        if (ctrl.fn) {
+          return ctrl.fn.params[index] || _.last(ctrl.fn.params);
+        }
       };
 
       this.canAddArg = function() {
@@ -80,8 +83,8 @@
         }
         var param = ctrl.getParam(ctrl.args.length),
           index = ctrl.fn.params.indexOf(param);
-        // TODO: Handle named params like "ORDER BY"
-        if (param.name) {
+        // TODO: Handle optional named params like "ORDER BY"
+        if (param.name && param.optional) {
           return false;
         }
         return ctrl.args.length - index < param.max_expr;
@@ -123,20 +126,25 @@
 
       this.selectFunction = function() {
         ctrl.fn = _.find(CRM.crmSearchAdmin.functions, {name: ctrl.fnName});
-        delete ctrl.fieldArg.flag_before;
         ctrl.args = [ctrl.fieldArg];
         if (ctrl.fn) {
           var exprType,
             pos = 0;
           // Add non-field args to the beginning if needed
           while (!_.includes(ctrl.fn.params[pos].must_be, 'SqlField')) {
-            exprType = ctrl.fn.params[pos].must_be[0];
+            exprType = _.first(ctrl.fn.params[pos].must_be);
             ctrl.args.splice(pos, 0, {
-              type: ctrl.exprTypes[exprType].type,
+              type: exprType ? ctrl.exprTypes[exprType].type : null,
+              flag_before: _.filter(_.keys(ctrl.fn.params[pos].flag_before))[0],
+              name: ctrl.fn.params[pos].name,
               value: exprType === 'SqlNumber' ? 0 : ''
             });
             ++pos;
           }
+          // Update fieldArg
+          var fieldParam = ctrl.fn.params[pos];
+          ctrl.fieldArg.flag_before = _.keys(fieldParam.flag_before)[0];
+          ctrl.fieldArg.name = fieldParam.name;
           initFunction();
         }
         ctrl.writeExpr();
@@ -160,8 +168,8 @@
       this.writeExpr = function() {
         if (ctrl.fnName) {
           var args = _.transform(ctrl.args, function(args, arg, index) {
-            if (arg.value) {
-              var prefix = arg.flag_before ? (index ? ' ' : '') + arg.flag_before + ' ' : (index ? ', ' : '');
+            if (arg.value || arg.flag_before) {
+              var prefix = arg.flag_before || arg.name ? (index ? ' ' : '') + (arg.flag_before || arg.name) + (arg.value ? ' ' : '') : (index ? ', ' : '');
               args.push(prefix + (arg.type === 'string' ? JSON.stringify(arg.value) : arg.value));
             }
           });
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html
index 4ffb4f13263c8d9068baab0f7f47a47bc405c3e1..431c2b15d2446fcc68cff1d3d849ce384eadd8fd 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunction.html
@@ -2,20 +2,13 @@
   <input class="form-control fa-crm-formula" style="min-width: 20px" ng-model="$ctrl.fnName" crm-ui-select="{data: $ctrl.getFunctions, placeholder: ' ', width: 'off', dropdownCss: {width: '275px'}}" ng-change="$ctrl.selectFunction()">
 </span>
 <label ng-hide="$ctrl.mode !== 'select' && !$ctrl.fn">{{ $ctrl.fieldArg.field.label }}</label>
-<label ng-repeat="(val, label) in $ctrl.fn.params[0].flag_before">
-  <input type="checkbox" ng-checked="$ctrl.fieldArg.flag_before === val" ng-click="$ctrl.fieldArg.flag_before = ($ctrl.fieldArg.flag_before === val ? null : val); $ctrl.writeExpr();" >
-  {{ label }}
-</label>
-<div class="form-group" ng-repeat="arg in $ctrl.args" ng-if="arg !== $ctrl.fieldArg">
-  <select class="form-control" ng-if="$index && $ctrl.getParam($index).flag_before" ng-model="arg.flag_before" ng-change="$ctrl.writeExpr();">
-    <option ng-repeat="(val, label) in $ctrl.getParam($index).flag_before" value="{{ val }}">
-      {{ label }}
-    </option>
-  </select>
-  <span ng-switch="arg.type">
+
+<div class="form-group" ng-repeat="arg in $ctrl.args">
+  <crm-search-function-flag ng-if="$ctrl.fn" arg="arg" param="$ctrl.getParam($index)" write-expr="$ctrl.writeExpr()"></crm-search-function-flag>
+  <span ng-switch="arg.type" ng-if="arg !== $ctrl.fieldArg">
     <input ng-switch-when="number" class="form-control" type="number" ng-model="arg.value" placeholder="{{ $ctrl.getParam($index).label }}" ng-change="$ctrl.changeArg($index)" ng-model-options="{updateOn: 'blur'}">
     <input ng-switch-when="string" class="form-control" ng-model="arg.value" placeholder="{{ $ctrl.getParam($index).label }}" ng-change="$ctrl.changeArg($index)" ng-trim="false" ng-model-options="{updateOn: 'blur'}">
-    <input ng-switch-default class="form-control" ng-model="arg.value" crm-ui-select="{data: $ctrl.getFields, placeholder: $ctrl.getParam($index).label}" ng-change="$ctrl.changeArg($index)">
+    <input ng-switch-when="field" class="form-control" ng-model="arg.value" crm-ui-select="{data: $ctrl.getFields, placeholder: $ctrl.getParam($index).label}" ng-change="$ctrl.changeArg($index)">
   </span>
 </div>
 <div class="btn-group" ng-if="$ctrl.canAddArg()">
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.component.js
new file mode 100644
index 0000000000000000000000000000000000000000..cf2dc92af3c99182e0233205af02ed6826e7a73c
--- /dev/null
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.component.js
@@ -0,0 +1,27 @@
+(function(angular, $, _) {
+  "use strict";
+
+  angular.module('crmSearchAdmin').component('crmSearchFunctionFlag', {
+    bindings: {
+      arg: '<',
+      param: '<',
+      writeExpr: '&'
+    },
+    templateUrl: '~/crmSearchAdmin/crmSearchFunctionFlag.html',
+    controller: function($scope) {
+      var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'),
+        ctrl = this;
+
+      this.$onInit = function() {
+        if (!ctrl.param || !ctrl.param.flag_before) {
+          this.widget = null;
+        } else if (_.keys(ctrl.param.flag_before).length === 2 && '' in ctrl.param.flag_before) {
+          this.widget = 'checkbox';
+        } else {
+          this.widget = 'select';
+        }
+      };
+    }
+  });
+
+})(angular, CRM.$, CRM._);
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.html
new file mode 100644
index 0000000000000000000000000000000000000000..8d9d19b4b0857be2a060520a82e1594e721402c7
--- /dev/null
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchFunctionFlag.html
@@ -0,0 +1,13 @@
+<span ng-switch="$ctrl.widget">
+  <span ng-switch-when="checkbox">
+    <label ng-repeat="(val, label) in $ctrl.param.flag_before" ng-if="val">
+      <input type="checkbox" ng-checked="$ctrl.arg.flag_before === val" ng-click="$ctrl.arg.flag_before = ($ctrl.arg.flag_before === val ? null : val); $ctrl.writeExpr();" >
+      {{ label }}
+    </label>
+  </span>
+  <select ng-switch-when="select" class="form-control" ng-model="$ctrl.arg.flag_before" ng-change="$ctrl.writeExpr();">
+    <option ng-repeat="(val, label) in $ctrl.param.flag_before" value="{{ val }}">
+      {{ label }}
+    </option>
+  </select>
+</span>
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchButtonConfig.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchButtonConfig.html
index 790c3cdaafbc5bf99374cbd28777e09a811e4d00..1424ee30dd64867be5250c225baaeb2de35bfb81 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchButtonConfig.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/common/searchButtonConfig.html
@@ -11,3 +11,12 @@
   </div>
   <input type="text" ng-show="$ctrl.display.settings.button" ng-model="$ctrl.display.settings.button" ng-model-options="{updateOn: 'blur'}" class="form-control" title="{{:: ts('Search button text') }}" placeholder="{{:: ts('Search button text') }}">
 </div>
+<div class="input-group">
+  <div class="checkbox-inline form-control" title="{{:: ts('Display a button for creating a new record') }}">
+    <label>
+      <input type="checkbox" ng-checked="$ctrl.display.settings.addButton.path" ng-click="$ctrl.parent.toggleAddButton()">
+      <span>{{:: ts('"Add New" Button') }}</span>
+    </label>
+  </div>
+</div>
+<input class="form-control" ng-if="$ctrl.display.settings.addButton.path" ng-model="$ctrl.display.settings.addButton.path" ng-change="$ctrl.onChangeAddButtonPath()" ng-model-options="{updateOn: 'blur'}" title="{{:: ts('Path') }}" placeholder="{{:: ts('Path') }}">
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/searchList.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/searchList.html
index 629efe7648f8ca222dc57c48e776a679958c49de..75ce4ad457abac2ca5eb4fa7dfafbb3d13a81481 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/searchList.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/searchList.html
@@ -17,14 +17,46 @@
         </a>
       </li>
     </ul>
-    <a class="btn btn-primary" href="#/create/Contact/" ng-if="$ctrl.tab !== 'segment'">
-      <i class="crm-i fa-plus"></i>
-      {{:: ts('New Search') }}
-    </a>
-    <a class="btn btn-primary" href ng-if="$ctrl.tab === 'segment'" title="{{:: ts('New Data Segment') }}" crm-dialog-popup="searchSegmentDialog" popup-tpl="~/crmSearchAdmin/searchSegment/editDialog.html">
-      <i class="crm-i fa-plus"></i>
-      {{:: ts('New Segment') }}
-    </a>
+    <div class="btn-group" ng-if="$ctrl.tab !== 'segment'">
+      <a class="btn btn-primary" href="#/create/Contact" >
+        <i class="crm-i fa-plus"></i>
+        {{:: ts('New Search') }}
+      </a>
+      <button type="button" ng-click="$ctrl.getPrimaryEntities()" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+        <span class="caret"></span>
+      </button>
+      <ul class="dropdown-menu dropdown-menu-right">
+        <li ng-repeat="entity in $ctrl.primaryEntities">
+          <a ng-href="#/create/{{ entity.name }}">
+            <i class="crm-i {{:: entity.icon }}"></i>
+            {{:: entity.title_plural }}
+          </a>
+        </li>
+        <li title="{{:: ts('Choose other entities on the search screen') }}">
+          <a href="#/create/Contact">{{:: ts('More...') }}</a>
+        </li>
+      </ul>
+    </div>
+    <div class="btn-group" ng-if="$ctrl.tab === 'segment'">
+      <a class="btn btn-primary" href title="{{:: ts('New Data Segment') }}" crm-dialog-popup="searchSegmentDialog" popup-tpl="~/crmSearchAdmin/searchSegment/editDialog.html">
+        <i class="crm-i fa-plus"></i>
+        {{:: ts('New Data Segment') }}
+      </a>
+      <button type="button" ng-click="$ctrl.getPrimaryEntities()" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+        <span class="caret"></span>
+      </button>
+      <ul class="dropdown-menu dropdown-menu-right">
+        <li ng-repeat="entity in $ctrl.primaryEntities">
+          <a href title="{{:: ts('New Data Segment') }}" crm-dialog-popup="searchSegmentDialog" popup-tpl="~/crmSearchAdmin/searchSegment/editDialog.html" popup-data="{entity_name: entity.name}">
+            <i class="crm-i {{:: entity.icon }}"></i>
+            {{:: entity.title_plural }}
+          </a>
+        </li>
+        <li title="{{:: ts('Choose other entities on the search screen') }}">
+          <a href title="{{:: ts('New Data Segment') }}" crm-dialog-popup="searchSegmentDialog" popup-tpl="~/crmSearchAdmin/searchSegment/editDialog.html">{{:: ts('More...') }}</a>
+        </li>
+      </ul>
+    </div>
   </div>
 
   <div ng-repeat="tab in $ctrl.tabs" ng-show="$ctrl.tab === tab.name">
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegment/crmSearchAdminSegment.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegment/crmSearchAdminSegment.component.js
index e059acddd883254063a3dc349df247c38564c997..f79b766dce047262b35aef162fa0d8c2b3a798c8 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegment/crmSearchAdminSegment.component.js
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegment/crmSearchAdminSegment.component.js
@@ -3,7 +3,7 @@
 
   angular.module('crmSearchAdmin').component('crmSearchAdminSegment', {
     bindings: {
-      segmentId: '<',
+      segment: '<',
     },
     templateUrl: '~/crmSearchAdmin/searchSegment/crmSearchAdminSegment.html',
     controller: function ($scope, searchMeta, dialogService, crmApi4, crmStatus) {
@@ -15,7 +15,6 @@
       this.entitySelect = searchMeta.getPrimaryAndSecondaryEntitySelect();
 
       ctrl.saving = false;
-      ctrl.segment = {items: []};
 
       // Drag-n-drop settings for reordering items
       this.sortableOptions = {
@@ -33,10 +32,10 @@
       };
 
       this.$onInit = function() {
-        if (ctrl.segmentId) {
+        if (ctrl.segment.id) {
           $('.ui-dialog:visible').block();
           crmApi4('SearchSegment', 'get', {
-            where: [['id', '=', ctrl.segmentId]]
+            where: [['id', '=', ctrl.segment.id]]
           }, 0).then(function(segment) {
             ctrl.segment = segment;
             originalEntity = segment.entity_name;
@@ -44,6 +43,9 @@
             searchMeta.loadFieldOptions([segment.entity_name]);
             $('.ui-dialog:visible').unblock();
           });
+        } else {
+          ctrl.segment.items = [];
+          ctrl.onChangeEntity();
         }
       };
 
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegment/crmSearchAdminSegment.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegment/crmSearchAdminSegment.html
index 4ab34a597b2f8d73dfb34d19530601fcec1e4afb..ae20d3b22189eb3784c99f141c2fd506642340f9 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegment/crmSearchAdminSegment.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegment/crmSearchAdminSegment.html
@@ -9,7 +9,7 @@
     <br>
     <div class="form-inline">
       <label for="search-segment-entity_name">{{:: ts('For') }} <span class="crm-marker">*</span></label>
-      <input id="search-segment-entity_name" class="form-control collapsible-optgroups" required ng-model="$ctrl.segment.entity_name" ng-change="$ctrl.onChangeEntity()" crm-ui-select="{allowClear: false, data: $ctrl.entitySelect, placeholder: ts('Entity')}">
+      <input id="search-segment-entity_name" class="form-control huge collapsible-optgroups" required ng-model="$ctrl.segment.entity_name" ng-change="$ctrl.onChangeEntity()" crm-ui-select="{allowClear: false, data: $ctrl.entitySelect, placeholder: ts('Entity')}">
     </div>
     <br>
     <fieldset>
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegment/editDialog.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegment/editDialog.html
index 4042add700118061f5d63705f16e349ca1d9520c..c6969214e9c33cbb8892f951c673176f5f3f7589 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegment/editDialog.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegment/editDialog.html
@@ -1,3 +1,3 @@
 <div crm-dialog="searchSegmentDialog">
-  <crm-search-admin-segment segment-id="model.data.id"></crm-search-admin-segment>
+  <crm-search-admin-segment segment="model"></crm-search-admin-segment>
 </div>
diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegmentListing/buttons.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegmentListing/buttons.html
index 64b87c6f1ea76c61d6c9209dec549ccc5aee4392..ac2cec6f188dfa345269c6a21244cf45f2cd55c5 100644
--- a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegmentListing/buttons.html
+++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegmentListing/buttons.html
@@ -1,6 +1,6 @@
 <div class="text-right">
   <div class="btn-group btn-group-xs">
-    <a class="btn btn-primary" href crm-dialog-popup="searchSegmentDialog" popup-tpl="~/crmSearchAdmin/searchSegment/editDialog.html" popup-data="row" title="{{:: ts('Edit Data Segment') }}">
+    <a class="btn btn-primary" href crm-dialog-popup="searchSegmentDialog" popup-tpl="~/crmSearchAdmin/searchSegment/editDialog.html" popup-data="row.data" title="{{:: ts('Edit Data Segment') }}">
       <i class="crm-i fa-pencil"></i>
       {{:: ts('Edit') }}
     </a>
diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplay/AddButton.html b/civicrm/ext/search_kit/ang/crmSearchDisplay/AddButton.html
new file mode 100644
index 0000000000000000000000000000000000000000..29c6b72536667620965cf92d3ba29b56ebda523e
--- /dev/null
+++ b/civicrm/ext/search_kit/ang/crmSearchDisplay/AddButton.html
@@ -0,0 +1,4 @@
+<a href="{{ $ctrl.settings.addButton.url }}" class="btn btn-primary" target="crm-popup">
+  <i ng-if="$ctrl.settings.addButton.icon" class="crm-i {{:: $ctrl.settings.addButton.icon }}"></i>
+  {{:: $ctrl.settings.addButton.text }}
+</a>
diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js b/civicrm/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js
index 9f4a63c33ab40b5bc01f7140eeb2e59bf5299581..5bfdafcecb48974667aa0d396f98fb199927452a 100644
--- a/civicrm/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js
+++ b/civicrm/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js
@@ -27,6 +27,10 @@
           this.placeholders.push({});
         }
 
+        if (this.settings.addButton && this.settings.addButton.path) {
+          this.settings.addButton.url = CRM.url(this.settings.addButton.path);
+        }
+
         this.getResults = _.debounce(function() {
           $scope.$apply(function() {
             ctrl.runSearch();
@@ -96,7 +100,7 @@
 
       getAfformFilters: function() {
         return _.pick(this.afFieldset ? this.afFieldset.getFieldData() : {}, function(val) {
-          return val !== null && (_.includes(['boolean', 'number'], typeof val) || val.length);
+          return val !== null && (_.includes(['boolean', 'number', 'object'], typeof val) || val.length);
         });
       },
 
diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.html b/civicrm/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.html
index 46c09304ed634b513b85fda8a44b102518c27fec..710f0dfa693af18861b1bccdcc67c77e45e032d0 100644
--- a/civicrm/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.html
+++ b/civicrm/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.html
@@ -1,5 +1,8 @@
 <div class="crm-search-display crm-search-display-grid">
-  <div ng-include="'~/crmSearchDisplay/SearchButton.html'" ng-if="$ctrl.settings.button"></div>
+  <div class="form-inline">
+    <div class="btn-group" ng-include="'~/crmSearchDisplay/SearchButton.html'" ng-if="$ctrl.settings.button"></div>
+    <div class="btn-group pull-right" ng-include="'~/crmSearchDisplay/AddButton.html'" ng-if="$ctrl.settings.addButton.url"></div>
+  </div>
   <div
     class="crm-search-display-grid-container crm-search-display-grid-layout-{{$ctrl.settings.colno}}"
     ng-include="'~/crmSearchDisplayGrid/crmSearchDisplayGrid' + ($ctrl.loading ? 'Loading' : 'Items') + '.html'"
diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplayList/crmSearchDisplayList.html b/civicrm/ext/search_kit/ang/crmSearchDisplayList/crmSearchDisplayList.html
index 1b20b52b6d18c37d3a50093ba6db7415e1a23ed4..f719b31c0ef6ecad80d609a2ee0baa98fe875627 100644
--- a/civicrm/ext/search_kit/ang/crmSearchDisplayList/crmSearchDisplayList.html
+++ b/civicrm/ext/search_kit/ang/crmSearchDisplayList/crmSearchDisplayList.html
@@ -1,5 +1,8 @@
 <div class="crm-search-display crm-search-display-list">
-  <div ng-include="'~/crmSearchDisplay/SearchButton.html'" ng-if="$ctrl.settings.button"></div>
+  <div class="form-inline">
+    <div class="btn-group" ng-include="'~/crmSearchDisplay/SearchButton.html'" ng-if="$ctrl.settings.button"></div>
+    <div class="btn-group pull-right" ng-include="'~/crmSearchDisplay/AddButton.html'" ng-if="$ctrl.settings.addButton.url"></div>
+  </div>
   <ol ng-if=":: $ctrl.settings.style === 'ol'" ng-include="'~/crmSearchDisplayList/crmSearchDisplayList' + ($ctrl.loading ? 'Loading' : 'Items') + '.html'" ng-style="{'list-style': $ctrl.settings.symbol}"></ol>
   <ul ng-if=":: $ctrl.settings.style !== 'ol'" ng-include="'~/crmSearchDisplayList/crmSearchDisplayList' + ($ctrl.loading ? 'Loading' : 'Items') + '.html'" ng-style="{'list-style': $ctrl.settings.symbol}"></ul>
   <div ng-include="'~/crmSearchDisplay/Pager.html'"></div>
diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html b/civicrm/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html
index 82e9e03cc4c0e803d62ebed085915ad57061c6fe..3d57aedf18d5b8ba06fa7c552e2572330816d235 100644
--- a/civicrm/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html
+++ b/civicrm/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html
@@ -2,6 +2,7 @@
   <div class="form-inline">
     <div class="btn-group" ng-include="'~/crmSearchDisplay/SearchButton.html'" ng-if="$ctrl.settings.button"></div>
     <crm-search-tasks ng-if="$ctrl.settings.actions" entity="$ctrl.apiEntity" ids="$ctrl.selectedRows" search="$ctrl.search" display="$ctrl.display" display-controller="$ctrl" refresh="$ctrl.refreshAfterTask()"></crm-search-tasks>
+    <div class="btn-group pull-right" ng-include="'~/crmSearchDisplay/AddButton.html'" ng-if="$ctrl.settings.addButton.url"></div>
   </div>
   <table class="{{:: $ctrl.settings.classes.join(' ') }}">
     <thead>
diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchBatchRunner.component.js b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchBatchRunner.component.js
index 88c90f7f4b325275a75c29d5f407e17670cd5912..6ccffdacaf9b790d37da397423c775b9760b7d06 100644
--- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchBatchRunner.component.js
+++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchBatchRunner.component.js
@@ -48,7 +48,7 @@
         if (ctrl.action === 'save') {
           // For the save action, take each record from params and copy it with each supplied id
           params.records = _.transform(ctrl.ids.slice(ctrl.first, ctrl.last), function(records, id) {
-            _.each(_.cloneDeep(ctrl.params.records), function(record) {
+            _.each(_.cloneDeep(ctrl.params.records || [{}]), function(record) {
               record[ctrl.idField || 'id'] = id;
               records.push(record);
             });
diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskMailing.ctrl.js b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskMailing.ctrl.js
index a5f14bb303735a8ddbe5a3c0c2bdf189e766a216..280bd70c86c28a8bdd8d2a42bfa5e25269a1d9f7 100644
--- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskMailing.ctrl.js
+++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskMailing.ctrl.js
@@ -5,6 +5,7 @@
     var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'),
       // Combine this controller with model properties (ids, entity, entityInfo) and searchTaskBaseTrait
       ctrl = angular.extend(this, $scope.model, searchTaskBaseTrait),
+      mailingId,
       templateTypes;
 
     this.entityTitle = this.getEntityTitle();
@@ -27,9 +28,6 @@
     });
 
     this.submit = function() {
-      var contacts = _.transform(ctrl.ids, function(records, cid) {
-        records.push({contact_id: cid});
-      });
       ctrl.start({
         values: {
           title: 'Hidden Group ' + Date.now(),
@@ -37,10 +35,6 @@
           'group_type:name': ['Mailing List'],
         },
         chain: {
-          contacts: ['GroupContact', 'save', {
-            defaults: {group_id: '$id'},
-            records: contacts
-          }],
           mailing: ['Mailing', 'create', {
             values: {
               name: ctrl.name,
@@ -59,9 +53,17 @@
       });
     };
 
+    // After running first api call to create group & mailing,
+    // This runs a batch of api calls to add contacts to the mailing group
+    this.afterGroupCreate = function(result) {
+      mailingId = result[0].mailing.id;
+      ctrl.addContacts = {
+        defaults: {group_id: result[0].id}
+      };
+    };
 
     this.onSuccess = function(result) {
-      window.location = CRM.url('civicrm/a#/mailing/' + result[0].mailing.id);
+      window.location = CRM.url('civicrm/a#/mailing/' + mailingId);
     };
 
     this.onError = function() {
diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskMailing.html b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskMailing.html
index f03ae5d909659a1480cbeb4e681d4a02b8130341..f9fd705449b0c57951ce096b126faa526ae896a1 100644
--- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskMailing.html
+++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTaskMailing.html
@@ -24,9 +24,13 @@
         {{:: ts('All of the selected contacts have active email addresses.') }}
       </div>
     </div>
-    <div ng-if="$ctrl.run" class="crm-search-task-progress">
+    <div ng-if="$ctrl.run && !$ctrl.addContacts" class="crm-search-task-progress">
       <h5>{{:: ts('Creating mailing...') }}</h5>
-      <crm-search-batch-runner entity="'Group'" action="create" params="$ctrl.run" success="$ctrl.onSuccess(result)" error="$ctrl.onError()" ></crm-search-batch-runner>
+      <crm-search-batch-runner entity="'Group'" action="create" params="$ctrl.run" success="$ctrl.afterGroupCreate(result)" error="$ctrl.onError()" ></crm-search-batch-runner>
+    </div>
+    <div ng-if="$ctrl.addContacts" class="crm-search-task-progress">
+      <h5>{{:: ts('Adding contacts...') }}</h5>
+      <crm-search-batch-runner entity="'GroupContact'" action="save" params="$ctrl.addContacts" ids="$ctrl.ids" id-field="contact_id" success="$ctrl.onSuccess(result)" error="$ctrl.onError()" ></crm-search-batch-runner>
     </div>
     <crm-dialog-button text="ts('Cancel')" icons="{primary: 'fa-times'}" on-click="$ctrl.cancel()" disabled="$ctrl.run" />
     <crm-dialog-button text="ts('Create Mailing')" icons="{primary: 'fa-paper-plane'}" on-click="$ctrl.submit()" disabled="!$ctrl.recipientCount || $ctrl.run || !crmSearchTaskMailingForm.$valid" />
diff --git a/civicrm/ext/search_kit/css/crmSearchAdmin.css b/civicrm/ext/search_kit/css/crmSearchAdmin.css
index 6b9553c5d2067261ea96cec1b28776dc6a8d410d..d5417be04fa4b3f25b5eeab744553a4eb315392e 100644
--- a/civicrm/ext/search_kit/css/crmSearchAdmin.css
+++ b/civicrm/ext/search_kit/css/crmSearchAdmin.css
@@ -5,7 +5,7 @@
 #bootstrap-theme .crm-search-nav-tabs {
   position: relative;
 }
-#bootstrap-theme .crm-search-nav-tabs > a.btn {
+#bootstrap-theme .crm-search-nav-tabs > div.btn-group {
   position: absolute;
   right: 0;
   top: 0;
diff --git a/civicrm/ext/search_kit/info.xml b/civicrm/ext/search_kit/info.xml
index 0b34a2eec1db299c6043e356ee3cd1843a78ff4c..8e2063ddf4a72be7627db81d87674508926831c9 100644
--- a/civicrm/ext/search_kit/info.xml
+++ b/civicrm/ext/search_kit/info.xml
@@ -15,10 +15,10 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2021-01-06</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <comments>This extension is still in beta. Click on the chat link above to discuss development, report problems or ask questions.</comments>
   <classloader>
diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchAfformTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchAfformTest.php
index 15d5425f39c713741453183cf1438fc986ea31be..377cb8d7b99327829b2f98a32d28fa90921100e0 100644
--- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchAfformTest.php
+++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/SearchAfformTest.php
@@ -45,6 +45,7 @@ class SearchAfformTest extends \PHPUnit\Framework\TestCase implements HeadlessIn
             'id',
             'display_name',
             'GROUP_CONCAT(DISTINCT Contact_Email_contact_id_01.email) AS GROUP_CONCAT_Contact_Email_contact_id_01_email',
+            'YEAR(birth_date) AS YEAR_birth_date',
           ],
           'orderBy' => [],
           'where' => [],
@@ -89,6 +90,12 @@ class SearchAfformTest extends \PHPUnit\Framework\TestCase implements HeadlessIn
               'dataType' => 'String',
               'type' => 'field',
             ],
+            [
+              'key' => 'YEAR_birth_date',
+              'label' => 'Contact ID',
+              'dataType' => 'Integer',
+              'type' => 'field',
+            ],
           ],
         ],
         'acl_bypass' => FALSE,
@@ -101,6 +108,7 @@ class SearchAfformTest extends \PHPUnit\Framework\TestCase implements HeadlessIn
       ->addValue('first_name', 'tester')
       ->addValue('last_name', 'AfformTest')
       ->addValue('source', 'afform_test')
+      ->addValue('birth_date', '2020-01-01')
       ->addChain('emails', Email::save()
         ->addDefault('contact_id', '$id')
         ->addRecord(['email' => $email, 'location_type_id:name' => 'Home'])
@@ -112,6 +120,7 @@ class SearchAfformTest extends \PHPUnit\Framework\TestCase implements HeadlessIn
       ->addValue('first_name', 'tester2')
       ->addValue('last_name', 'AfformTest')
       ->addValue('source', 'afform_test2')
+      ->addValue('birth_date', '2010-01-01')
       ->addChain('emails', Email::save()
         ->addDefault('contact_id', '$id')
         ->addRecord(['email' => 'other@test.com', 'location_type_id:name' => 'Other'])
@@ -162,6 +171,13 @@ class SearchAfformTest extends \PHPUnit\Framework\TestCase implements HeadlessIn
     $params['filters'] = ['Contact_Email_contact_id_01.email' => $email];
     $result = civicrm_api4('SearchDisplay', 'run', $params);
     $this->assertCount(1, $result);
+
+    // Filter by YEAR(birth_date)
+    $params['filters'] = [
+      'YEAR_birth_date' => ['>=' => 2019],
+    ];
+    $result = civicrm_api4('SearchDisplay', 'run', $params);
+    $this->assertCount(1, $result);
   }
 
   public function testRunMultipleSearchForm() {
diff --git a/civicrm/ext/sequentialcreditnotes/info.xml b/civicrm/ext/sequentialcreditnotes/info.xml
index 2a86a956bfe2927a4c1be7d3ca085f3f71b3b0ce..3fd66214b13d74f445ed602d7ffcc9c74585b5b6 100644
--- a/civicrm/ext/sequentialcreditnotes/info.xml
+++ b/civicrm/ext/sequentialcreditnotes/info.xml
@@ -15,13 +15,13 @@
     <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url>
   </urls>
   <releaseDate>2020-01-28</releaseDate>
-  <version>5.53.0</version>
+  <version>5.54.0</version>
   <tags>
     <tag>mgmt:hidden</tag>
   </tags>
   <develStage>stable</develStage>
   <compatibility>
-    <ver>5.53</ver>
+    <ver>5.54</ver>
   </compatibility>
   <mixins>
     <mixin>setting-php@1.0.0</mixin>
diff --git a/civicrm/js/Common.js b/civicrm/js/Common.js
index 07eb96b84ad1b56746ef52260818c29eadaddff7..1c8d621b3f37cd3cc73a129f9d7e5ae1f843de58 100644
--- a/civicrm/js/Common.js
+++ b/civicrm/js/Common.js
@@ -523,6 +523,47 @@ if (!CRM.vars) CRM.vars = {};
     });
   };
 
+  // Autocomplete based on APIv4 and Select2.
+  $.fn.crmAutocomplete = function(entityName, apiParams, select2Options) {
+    select2Options = select2Options || {};
+    return $(this).each(function() {
+      $(this).crmSelect2({
+        ajax: {
+          quietMillis: 250,
+          url: CRM.url('civicrm/ajax/api4/' + entityName + '/autocomplete'),
+          data: function (input, pageNum) {
+            return {params: JSON.stringify(_.assign({
+              input: input,
+              page: pageNum || 1
+            }, apiParams))};
+          },
+          results: function(data) {
+            return {
+              results: data.values,
+              more: data.count > data.countFetched
+            };
+          },
+        },
+        minimumInputLength: 1,
+        formatResult: CRM.utils.formatSelect2Result,
+        formatSelection: formatEntityRefSelection,
+        escapeMarkup: _.identity,
+        initSelection: function($el, callback) {
+          var
+            multiple = !!select2Options.multiple,
+            val = $el.val();
+          if (val === '') {
+            return;
+          }
+          var params = $.extend({}, apiParams || {}, {ids: val.split(',')});
+          CRM.api4(entityName, 'autocomplete', params).then(function(result) {
+            callback(multiple ? result : result[0]);
+          });
+        }
+      });
+    });
+  };
+
   /**
    * @see CRM_Core_Form::addEntityRef for docs
    * @param options object
diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md
index 662c2a8b86ded11aa53d8be9ef696306df39bb3f..03ca339ad97a9e6f825c72e81aca6b3d1a48b2e9 100644
--- a/civicrm/release-notes.md
+++ b/civicrm/release-notes.md
@@ -15,6 +15,17 @@ Other resources for identifying changes are:
     * https://github.com/civicrm/civicrm-joomla
     * https://github.com/civicrm/civicrm-wordpress
 
+## CiviCRM 5.54.0
+
+Released October 5, 2022
+
+- **[Synopsis](release-notes/5.54.0.md#synopsis)**
+- **[Features](release-notes/5.54.0.md#features)**
+- **[Bugs resolved](release-notes/5.54.0.md#bugs)**
+- **[Miscellany](release-notes/5.54.0.md#misc)**
+- **[Credits](release-notes/5.54.0.md#credits)**
+- **[Feedback](release-notes/5.54.0.md#feedback)**
+
 ## CiviCRM 5.53.0
 
 Released September 7, 2022
diff --git a/civicrm/release-notes/5.53.0.md b/civicrm/release-notes/5.53.0.md
index 949f384daca6138155b2fd29d39b75ef0f0291fe..c6ef929af0d31242c9bada8d8c50916dba136b6d 100644
--- a/civicrm/release-notes/5.53.0.md
+++ b/civicrm/release-notes/5.53.0.md
@@ -167,13 +167,6 @@ Released September 7, 2022
   ([dev/core#3712](https://lab.civicrm.org/dev/core/-/issues/3712):
   [23932](https://github.com/civicrm/civicrm-core/pull/23932))**
 
-- **DB Error when Create User Record
-  ([dev/core#3803](https://lab.civicrm.org/dev/core/-/issues/3803):
-  [24363](https://github.com/civicrm/civicrm-core/pull/24363))**
-
-- **Import - remove import button if it will not work
-  ([24346](https://github.com/civicrm/civicrm-core/pull/24346))**
-
 - **Upgrader - Apply extension updates after core updates
   ([dev/core#3490](https://lab.civicrm.org/dev/core/-/issues/3490):
   [24030](https://github.com/civicrm/civicrm-core/pull/24030))**
@@ -305,12 +298,6 @@ Released September 7, 2022
 - **Fix line item 'title' determination
   ([24142](https://github.com/civicrm/civicrm-core/pull/24142))**
 
-- **Import of contributions (update existing) errors
-  ([dev/core#3820](https://lab.civicrm.org/dev/core/-/issues/3820) and
-  [dev/core#3828](https://lab.civicrm.org/dev/core/-/issues/3828):
-  [24366](https://github.com/civicrm/civicrm-core/pull/24366) and
-  [24414](https://github.com/civicrm/civicrm-core/pull/24414))**
-
 - **Fix and followups for invoice receipt message template
   ([24111](https://github.com/civicrm/civicrm-core/pull/24111) and
   [24101](https://github.com/civicrm/civicrm-core/pull/24101))**
@@ -369,9 +356,6 @@ Released September 7, 2022
   ([dev/core#3772](https://lab.civicrm.org/dev/core/-/issues/3772):
   [24124](https://github.com/civicrm/civicrm-core/pull/24124))**
 
-- **Fix error on membership imports
-  ([24349](https://github.com/civicrm/civicrm-core/pull/24349))**
-
 ### Drupal Integration
 
 - **Error: Trying to access array offset on value of type null in
diff --git a/civicrm/release-notes/5.54.0.md b/civicrm/release-notes/5.54.0.md
new file mode 100644
index 0000000000000000000000000000000000000000..68175bdf44ae227604e6610ab0aebdb4ec939c11
--- /dev/null
+++ b/civicrm/release-notes/5.54.0.md
@@ -0,0 +1,1042 @@
+# CiviCRM 5.54.0
+
+Released October 5, 2022
+
+- **[Synopsis](#synopsis)**
+- **[Features](#features)**
+- **[Bugs resolved](#bugs)**
+- **[Miscellany](#misc)**
+- **[Credits](#credits)**
+- **[Feedback](#feedback)**
+
+## <a name="synopsis"></a>Synopsis
+
+| *Does this version...?*                                         |         |
+|:--------------------------------------------------------------- |:-------:|
+| Fix security vulnerabilities?                                   |   no    |
+| **Change the database schema?**                                 | **yes** |
+| **Alter the API?**                                              | **yes** |
+| **Require attention to configuration options?**                 | **yes** |
+| Fix problems installing or upgrading to a previous version?     |   no    |
+| **Introduce features?**                                         | **yes** |
+| **Fix bugs?**                                                   | **yes** |
+
+## <a name="features"></a>Features
+
+### Core CiviCRM
+
+- **Double down or remove use of empoweredBy in invoice template
+  ([dev/core#3681](https://lab.civicrm.org/dev/core/-/issues/3681):
+  [24102](https://github.com/civicrm/civicrm-core/pull/24102))**
+
+  Adds token for CiviCRM empowered by image.
+
+- **Queue API - Expose option for delayed tasks (`$options['release_time']`)
+  ([24395](https://github.com/civicrm/civicrm-core/pull/24395))**
+
+  CRM_Queue_Queue_*::createItem() allows you to create new tasks for
+  separate/parallel execution. This patch adds an option for marking new tasks
+  as delayed (ie they will execute at some specific time in the future).
+
+- **Unhide message_admin extension
+  ([24269](https://github.com/civicrm/civicrm-core/pull/24269))**
+
+  Makes message_admin extension available thru the user interface.
+
+- **APIv4 - Add contact.getDuplicates action
+  ([24384](https://github.com/civicrm/civicrm-core/pull/24384))**
+
+  Adds an APIv4 action for finding duplicate contacts given a set of values to
+  match.
+
+- **APIv4 - Accept `match` param for Export action
+  ([24375](https://github.com/civicrm/civicrm-core/pull/24375))**
+
+  Makes APIv4 Export code generator a little friendlier by inserting the match
+  param for you, if specified.
+
+- **Add `civiimport` core extension with Import api code for viewing import
+  tables ([24230](https://github.com/civicrm/civicrm-core/pull/24230))**
+
+  Adds new pseudo-crud api for interacting with data import tables.
+
+- **Add support for Contact tokens in welcome email using TokenProcessor
+  ([24235](https://github.com/civicrm/civicrm-core/pull/24235))**
+
+  Adds the possibility of using contact tokens in the welcome email
+
+- **Message Templates - Allow rendering & previewing of translated messages
+  ([24174](https://github.com/civicrm/civicrm-core/pull/24174))**
+
+  Allows MessageTemplates to be translated.
+
+- **SearchKit - Use combo button+dropdown for creating new search or segment
+  ([24199](https://github.com/civicrm/civicrm-core/pull/24199))**
+
+  Slightly more convenient buttons for creating a new search or segment.
+
+- **SearchKit - Support form filters for relationships
+  ([24293](https://github.com/civicrm/civicrm-core/pull/24293))**
+
+  Makes it possible to filter related contacts by relationship fields.
+
+- **SearchKit - Better title and description for managed entities
+  ([24201](https://github.com/civicrm/civicrm-core/pull/24201))**
+
+  Improves titles and descriptions for managed entities.
+
+- **SearchKit - Add contacts to mailing group in batches
+  ([24254](https://github.com/civicrm/civicrm-core/pull/24254))**
+
+  Fixes potential problems when creating large CiviMail mailing groups via
+  SearchKit (for the "Email - schedule/send via CiviMail" action).
+
+- **SearchKit - Show other FK fields in the bridge join selector
+  ([24505](https://github.com/civicrm/civicrm-core/pull/24505))**
+
+  Allows Relationship IDs to be selected.
+
+- **Search Kit: More options on field transformations of a Date Field
+  ([dev/core#3700](https://lab.civicrm.org/dev/core/-/issues/3700):
+  [24181](https://github.com/civicrm/civicrm-core/pull/24181))**
+
+  Improves SearchKit so that you can e.g. Group by the month+year of a
+  birth-date.
+
+- **SearchKit - Better support for calculated fields as Afform filters
+  ([24448](https://github.com/civicrm/civicrm-core/pull/24448))**
+
+  More support for calculated fields in the Afform Admin UI, allowing them to
+  be configured more like real fields. This allows e.g. a SUM() aggregate to be
+  made a "search by range" filter.
+
+- **SearchKit - Add activity task
+  ([24391](https://github.com/civicrm/civicrm-core/pull/24391))**
+
+  Adds the "Add activity" task to SearchKit (for contact searches).
+
+- **FormBuilder - setting a field as 'required' does not implement any
+  validation check
+  (Work Towards [dev/core#3137](https://lab.civicrm.org/dev/core/-/issues/3137):
+  [23604](https://github.com/civicrm/civicrm-core/pull/23604))**
+
+  Implements a client-side only implementation of required field validation for
+  Afforms.
+
+- **Afform - add "Existing entity" selector
+  ([24165](https://github.com/civicrm/civicrm-core/pull/24165))**
+
+  Allows selecting an existing entity, optionally filtered by a Saved Search in
+  Afform.
+
+- **Require search kit & form builder for `civiimport`
+  ([24635](https://github.com/civicrm/civicrm-core/pull/24635))**
+
+  Requires search kit & form builder for civiimport.
+
+- **Add angular form to civiimport extension
+  ([24545](https://github.com/civicrm/civicrm-core/pull/24545))**
+
+  Add alternate import angular mapping form for contribution import in the
+  civimport extension.
+
+- **Add Saved searches to view import jobs
+  ([24343](https://github.com/civicrm/civicrm-core/pull/24343))**
+
+  Adds Saved searches to view import jobs.
+
+- **AdminUI - Add SearchKit-based screen for Administer Contact Types
+  ([24512](https://github.com/civicrm/civicrm-core/pull/24512))**
+
+  One more step toward building out the CiviCRM Admin UI extension, this
+  converts the "Administer Contact Types" screen, while adding a new feature to
+  SearchKit: a convenient "Add New..." button at the top of the search display.
+
+- **File::findFiles - Save 200 million nanoseconds
+  ([24490](https://github.com/civicrm/civicrm-core/pull/24490))**
+
+  Performance Improvement.
+
+- **CiviCRM sample data - use a price set for at least one contribution page &
+  event ([dev/core#3685](https://lab.civicrm.org/dev/core/-/issues/3685):
+  [24103](https://github.com/civicrm/civicrm-core/pull/24103))**
+
+  Updates some of our sample data price sets to NOT be quick config.
+
+- **Improve activity demo data - more types
+  ([24314](https://github.com/civicrm/civicrm-core/pull/24314))**
+
+  Extends the types of activities in the sample data
+
+- **Bump dompdf to 2.0.1
+  ([24656](https://github.com/civicrm/civicrm-core/pull/24656))**
+
+  This includes the new version of the dompdf library.
+
+### CiviCase
+
+- **Afform - support opening new case
+  ([24236](https://github.com/civicrm/civicrm-core/pull/24236))**
+
+  Allows the Case entity to be added to Form Builder and configure case client
+  and other fields (including custom). Submitting the form will open a new case
+  for the specified client, which could be the current user, or another contact
+  on the form.
+
+- **Case Dashboard improvements
+  ([dev/core#3822](https://lab.civicrm.org/dev/core/-/issues/3822):
+  [24382](https://github.com/civicrm/civicrm-core/pull/24382))**
+
+  On the case dashboard sorts the recently performed activities by most recent
+  first.
+
+- **APIv4 - Add `case_id` field to Activity entity
+  ([24244](https://github.com/civicrm/civicrm-core/pull/24244)
+  and [24360](https://github.com/civicrm/civicrm-core/pull/24360))**
+
+  Adds a case ID field to APIv4 Activity entity and adds support for updating
+  it.
+
+### CiviContribute
+
+- **Update invoice template to be (mostly) previewable
+  ([24122](https://github.com/civicrm/civicrm-core/pull/24122))**
+
+- **Fix contribution online receipt to be, somewhat, previewable
+  ([24321](https://github.com/civicrm/civicrm-core/pull/24321))**
+
+- **Improve contribution import error handling
+  ([24501](https://github.com/civicrm/civicrm-core/pull/24501))**
+
+  Better error messages for contribution imports.
+
+- **Financial Type ACLs don't work on soft credits (Work Towards
+  [dev/financial#121](https://lab.civicrm.org/dev/financial/-/issues/121):
+  [22504](https://github.com/civicrm/civicrm-core/pull/22504))**
+
+  Supports modifying Soft Credit permissions via hook.
+
+### CiviEvent
+
+- **Add initial Event Message Template previewability
+  ([24323](https://github.com/civicrm/civicrm-core/pull/24323))**
+
+  Adds Event Message Template previewability (with tokens populated).
+
+- **Event participant registered by contact ID
+  (Work Towards [dev/core#3778](https://lab.civicrm.org/dev/core/-/issues/3778):
+  [24304](https://github.com/civicrm/civicrm-core/pull/24304) and
+  [24167](https://github.com/civicrm/civicrm-core/pull/24167))**
+
+  Adds created_id field to civicrm_participant and adds a code hook to set the
+  civicrm_participant.created_id.
+
+### CiviMember
+
+- **Add hint to create membership "You do not have all the permissions needed
+  for this page" message
+  ([24253](https://github.com/civicrm/civicrm-core/pull/24253))**
+
+  Clearer error message when trying to create a membership when no membership
+  types have been configured.
+
+- **Membership should be listed chronologically by join date, the most recent
+  member since first
+  ([dev/core#3141](https://lab.civicrm.org/dev/core/-/issues/3141):
+  [24194](https://github.com/civicrm/civicrm-core/pull/24194))**
+
+  Improves the Membership tab on the contact record by sorting the memberships
+  listed by join date.
+
+### Drupal Integration
+
+- **Epic: Drupal 10 readiness (Work Towards
+  [dev/drupal#176](https://lab.civicrm.org/dev/drupal/-/issues/176):
+  [24133](https://github.com/civicrm/civicrm-core/pull/24133))**
+
+  Makes loadBootstrap work in drupal 10, e.g. to make `cv` work.
+
+## <a name="bugs"></a>Bugs resolved
+
+### Core CiviCRM
+
+- **allow contact reference custom fields to have lengths greater than 255
+  characters ([24468](https://github.com/civicrm/civicrm-core/pull/24468))**
+
+- **Define `setLocale()` for languages which aren't "all there"
+  ([dev/translation#78](https://lab.civicrm.org/dev/translation/-/issues/78):
+  [24403](https://github.com/civicrm/civicrm-core/pull/24403))**
+
+- **Failed payment blocks member from joining again, should be Pending not
+  Cancelled ([dev/core#2517](https://lab.civicrm.org/dev/core/-/issues/2517):
+  [24342](https://github.com/civicrm/civicrm-core/pull/24342))**
+
+  Remove tests from core test suites relating to membership cancellation process
+  and update extension unit tests to cover for gaps in testing.
+
+- **Remove dataColumnGuessing
+  ([dev/core#3664](https://lab.civicrm.org/dev/core/-/issues/3664):
+  [24212](https://github.com/civicrm/civicrm-core/pull/24212))**
+
+- **Fix Import metadata to use apiv4 for contact on contribution imports
+  ([24441](https://github.com/civicrm/civicrm-core/pull/24441))**
+
+- **Importing Data: field "source" is updated instead of filled
+ ([dev/core#3733](https://lab.civicrm.org/dev/core/-/issues/3733):
+ [24001](https://github.com/civicrm/civicrm-core/pull/24001))**
+
+- **Fix import class loading issue in entityTypes hook
+ ([24621](https://github.com/civicrm/civicrm-core/pull/24621))**
+
+- **Fix civiimport crash on unmapped fields, remove overzealous cleanup, add
+  api to help debug & test
+  ([24603](https://github.com/civicrm/civicrm-core/pull/24603))**
+
+- **Stop removing Import tables during cache clearing
+  ([24538](https://github.com/civicrm/civicrm-core/pull/24538))**
+
+- **Fix import classes to call `runAllInteractive()` rather than `runAllViaWeb`
+ (which in practice currently just calls `runAllViaWeb`)
+ ([24396](https://github.com/civicrm/civicrm-core/pull/24396))**
+
+- **Fix import to support entity_configuration
+ ([24520](https://github.com/civicrm/civicrm-core/pull/24520))**
+
+- **Fix some inconsistent key names, as used by civiimport
+ ([24574](https://github.com/civicrm/civicrm-core/pull/24574))**
+
+- **Add 'Entity' to the information import parser classes provide
+ ([24285](https://github.com/civicrm/civicrm-core/pull/24285))**
+
+- **Undefined array key "rows" in Search.tpl.php when entering "Manage Groups"
+  ([dev/core#3771](https://lab.civicrm.org/dev/core/-/issues/3771):
+  [24318](https://github.com/civicrm/civicrm-core/pull/24318))**
+
+- **Custom Groups should not exclude activity types where filter > 0 if in
+  managed entities
+  ([dev/core#3796](https://lab.civicrm.org/dev/core/-/issues/3796):
+  [24222](https://github.com/civicrm/civicrm-core/pull/24222))**
+
+- **Allow other extensions to use Recaptcha extension for validation
+  ([dev/core#3811](https://lab.civicrm.org/dev/core/-/issues/3811):
+  [24303](https://github.com/civicrm/civicrm-core/pull/24303))**
+
+  Fixes for missing recaptcha_check_answer() when validate is called by other
+  extensions.
+
+- **Scheduled Reminders' effective start/end date incorrectly described.
+  ([dev/core#3823](https://lab.civicrm.org/dev/core/-/issues/3823):
+  [24421](https://github.com/civicrm/civicrm-core/pull/24421))**
+
+- **PHP 8.2 Deprecated ${} string interpolation
+  ([dev/core#3831](https://lab.civicrm.org/dev/core/-/issues/3831):
+  [24436](https://github.com/civicrm/civicrm-core/pull/24436))**
+
+- **PHP 8.2 Dynamic Properties are deprecated
+  ([dev/core#3833](https://lab.civicrm.org/dev/core/-/issues/3833):
+  [24438](https://github.com/civicrm/civicrm-core/pull/24438) and
+  [24440](https://github.com/civicrm/civicrm-core/pull/24440))**
+
+- **Middle name is evaluating to literal word null in addressee greeting
+  ([dev/core#3838](https://lab.civicrm.org/dev/core/-/issues/3838):
+  [24513](https://github.com/civicrm/civicrm-core/pull/24513))**
+
+- **Error when creating a message template
+ ([dev/core#3862](https://lab.civicrm.org/dev/core/-/issues/3862):
+ [24615](https://github.com/civicrm/civicrm-core/pull/24615))**
+
+- **Default location type for email seems to have become Billing, even if Home
+  is set as the default.
+  ([dev/core#3863](https://lab.civicrm.org/dev/core/-/issues/3863):
+  [24587](https://github.com/civicrm/civicrm-core/pull/24587))**
+
+- **Move creating of nav & menu items to legacycustomsearches extension
+  ([23862](https://github.com/civicrm/civicrm-core/pull/23862))**
+
+- **Update references to 'workflow' (from old 'valueName' parameter)
+  ([24054](https://github.com/civicrm/civicrm-core/pull/24054))**
+
+- **Update DAO to use declared primary field, do not assume...
+  ([24275](https://github.com/civicrm/civicrm-core/pull/24275))**
+
+- **AllCoreTables - Dismbiguate `init `and `flush`
+  ([24274](https://github.com/civicrm/civicrm-core/pull/24274))**
+
+- **OAuth fixes
+  ([24383](https://github.com/civicrm/civicrm-core/pull/24383))**
+
+- **Fix array-cache-bypass - in FastArrays on `has()`
+  ([24156](https://github.com/civicrm/civicrm-core/pull/24156))**
+
+- **Fix email notices on email edit block
+  ([24332](https://github.com/civicrm/civicrm-core/pull/24332))**
+
+- **Afform - Fix date range filters for search displays
+  ([24451](https://github.com/civicrm/civicrm-core/pull/24451))**
+
+- **Afform - Fix setting default value for date filter fields
+  ([24471](https://github.com/civicrm/civicrm-core/pull/24471))**
+
+- **Afform - Fix "Existing" autocomplete field and add tests
+  ([24551](https://github.com/civicrm/civicrm-core/pull/24551))**
+
+- **SearchKit - Fix arithmetic in WHERE clause
+  ([24514](https://github.com/civicrm/civicrm-core/pull/24514))**
+
+- **Fix warnings on upgrade when non-core message templates exist
+  ([24588](https://github.com/civicrm/civicrm-core/pull/24588))**
+
+- **RecentItems - Fix inconsistent option values between upgrader & installer
+  ([24632](https://github.com/civicrm/civicrm-core/pull/24632) and
+  [24653](https://github.com/civicrm/civicrm-core/pull/24653))**
+
+- **Put back exception during class scanning
+  ([24601](https://github.com/civicrm/civicrm-core/pull/24601))**
+
+- **Undo breakage of multi-primary key entities
+  ([24584](https://github.com/civicrm/civicrm-core/pull/24584))**
+
+- **Class scanner - do not throw runTime Exception if class not loaded
+  ([24580](https://github.com/civicrm/civicrm-core/pull/24580))**
+
+- **Flush old user jobs
+  ([24546](https://github.com/civicrm/civicrm-core/pull/24546))**
+
+- **DebugSubscriber - Fix activation check
+  ([24554](https://github.com/civicrm/civicrm-core/pull/24554))**
+
+- **Pass correct variable type to CRM_Core_OptionValue::getValues
+  ([24543](https://github.com/civicrm/civicrm-core/pull/24543))**
+
+- **Deprecate preferred_mail_format column
+  ([24426](https://github.com/civicrm/civicrm-core/pull/24426))**
+
+- **Smarty notice fix - remove obsolete preferred_mail_format
+  ([24335](https://github.com/civicrm/civicrm-core/pull/24335))**
+
+- **CrmUi - Fix tabSetOptions variable
+  ([24197](https://github.com/civicrm/civicrm-core/pull/24197))**
+
+- **Mark some more fields deprecated or readonly
+  ([24429](https://github.com/civicrm/civicrm-core/pull/24429))**
+
+- **Increase the deprecation on some unused functions
+  ([24442](https://github.com/civicrm/civicrm-core/pull/24442))**
+
+- **Stop PHP warning on installations with no contributions
+  ([24427](https://github.com/civicrm/civicrm-core/pull/24427))**
+
+- **CRM_Queue_Queue - Add 'getStatistic($name)'. Deprecate 'numberOfItems()'
+  ([24452](https://github.com/civicrm/civicrm-core/pull/24452))**
+
+- **Languages - Dropdown lists should reflect supported languages
+  ([24444](https://github.com/civicrm/civicrm-core/pull/24444))**
+
+- **Use preferred `{contact.email_greeting_display}` token over deprecated
+  `{contact.email_greeting}` in ALL templates
+  ([24316](https://github.com/civicrm/civicrm-core/pull/24316))**
+
+- **ManagedEntity - Ensure managed record is consistently deleted
+  ([24435](https://github.com/civicrm/civicrm-core/pull/24435))**
+
+- **When updating userJob status to match queue status skip permission check
+  ([24394](https://github.com/civicrm/civicrm-core/pull/24394))**
+
+- **Warning popup about copy of extension in system path disappears too fast
+  ([24381](https://github.com/civicrm/civicrm-core/pull/24381))**
+
+- **APIv4 - Fix some hard-coded references to 'id' in DAO action classes
+  ([24290](https://github.com/civicrm/civicrm-core/pull/24290))**
+
+- **APIv4 - Promote option `$language` from DAOActionTrait to AbstractAction
+  ([24430](https://github.com/civicrm/civicrm-core/pull/24430))**
+
+- **APIv4 - Add comments and fix data type for contact location joins
+  ([24239](https://github.com/civicrm/civicrm-core/pull/24239))**
+
+- **APIv4 - Fix GroupContact permission to use standard ACLs
+  ([24186](https://github.com/civicrm/civicrm-core/pull/24186))**
+
+- **Fix notice on skipTitle
+  ([24338](https://github.com/civicrm/civicrm-core/pull/24338))**
+
+- **Strict smarty notice fix on contact edit - `isSingleRecordEdit`
+  ([24330](https://github.com/civicrm/civicrm-core/pull/24330))**
+
+- **Fix Advanced search under strict smarty
+  ([24336](https://github.com/civicrm/civicrm-core/pull/24336))**
+
+- **Fix `returnProperties` on contact retrieval in `Contact_Tokens` to fetch
+  less, less often
+  ([24315](https://github.com/civicrm/civicrm-core/pull/24315))**
+
+- **ClassScanner - Fix guard for preboot cache scenario
+  ([24480](https://github.com/civicrm/civicrm-core/pull/24480))**
+
+- **ClassScanner - Throw an exception if a class-file doesn't have the expected
+  class ([24348](https://github.com/civicrm/civicrm-core/pull/24348))**
+
+- **Clean up another cache usage to use metadata
+  ([24298](https://github.com/civicrm/civicrm-core/pull/24298))**
+
+- **Fix another cache usage to use metadata cache
+  ([24297](https://github.com/civicrm/civicrm-core/pull/24297))**
+
+- **Further fix on  `fastArrayCache` `has`
+  ([24292](https://github.com/civicrm/civicrm-core/pull/24292))**
+
+- **Fix use of legacy pseudoConstant methods
+  ([24270](https://github.com/civicrm/civicrm-core/pull/24270))**
+
+- **Case-insensitive match on subtypes when validating subtype by entity for
+  custom groups ([24134](https://github.com/civicrm/civicrm-core/pull/24134))**
+
+- **CiviEventDispatcher - Fix pass-by-reference of hook-style arguments for
+  service-based listeners
+  ([24282](https://github.com/civicrm/civicrm-core/pull/24282))**
+
+- **[php 8 compat] Make sure variables are assigned in civireport
+  ([24326](https://github.com/civicrm/civicrm-core/pull/24326))**
+
+- **Fix PHP notice and hide/show 'including yourself' depending on if
+  contact_id is set
+  ([24301](https://github.com/civicrm/civicrm-core/pull/24301))**
+
+- **AUS is not a valid ISO 3166-1 alpha-2 country code. Do not use it in tests
+  ([24277](https://github.com/civicrm/civicrm-core/pull/24277))**
+
+- **Further caching fix - use metadata cache
+  ([24294](https://github.com/civicrm/civicrm-core/pull/24294))**
+
+- **Mark `contact.created date` read-only in schema
+  ([24417](https://github.com/civicrm/civicrm-core/pull/24417))**
+
+- **CRM_Core_DAO - Be more flexible about the primary key name
+  ([24299](https://github.com/civicrm/civicrm-core/pull/24299))**
+
+- **QueueItem - Convert DATETIME to TIMESTAMP
+  ([24399](https://github.com/civicrm/civicrm-core/pull/24399))**
+
+- **Add unique index to DedupeRuleGroup.name field
+  ([24385](https://github.com/civicrm/civicrm-core/pull/24385))**
+
+- **Resolve existential crisis for customfield.is_active
+  ([24246](https://github.com/civicrm/civicrm-core/pull/24246))**
+
+- **Alternate to #24143 - Update all is_reserved message templates during
+  upgrade and their corresponding is_default's if it hasn't been edited
+  ([24345](https://github.com/civicrm/civicrm-core/pull/24345))**
+
+### CiviCase
+
+- **Migrate case activity revisions to trigger-based logging
+  ([dev/core#1532](https://lab.civicrm.org/dev/core/-/issues/1532):
+  [24266](https://github.com/civicrm/civicrm-core/pull/24266) and
+  [24249](https://github.com/civicrm/civicrm-core/pull/24249))**
+
+  Add upgrade message about civicase activity revisions and related cleanup.
+
+### CiviContribute
+
+- **Import of contributions (update existing) -> error for total_amount = "0"
+  ([dev/core#3828](https://lab.civicrm.org/dev/core/-/issues/3828):
+  [24414](https://github.com/civicrm/civicrm-core/pull/24414))**
+
+- **Searchkit: Contribution tasks like receipt give fatal error
+  ([dev/core#3826](https://lab.civicrm.org/dev/core/-/issues/3826):
+  [24593](https://github.com/civicrm/civicrm-core/pull/24593))**
+
+- **CiviCRM crashes when I select ZMK as default currency
+  ([dev/financial#192](https://lab.civicrm.org/dev/financial/-/issues/192):
+  [24428](https://github.com/civicrm/civicrm-core/pull/24428))**
+
+  Fallback to custom currency object for codes which Brick\Money does not
+  support.
+
+- **Download invoice button on contribution view gives fatal error
+ ([dev/financial#208](https://lab.civicrm.org/dev/financial/-/issues/208):
+ [24434](https://github.com/civicrm/civicrm-core/pull/24434))**
+
+- **Adjust contribution metadata to filter at display not load
+  ([24475](https://github.com/civicrm/civicrm-core/pull/24475))**
+
+- **Mapping field schema inadequate
+  (Work Towards [dev/core#1172](https://lab.civicrm.org/dev/core/-/issues/1172):
+  [24485](https://github.com/civicrm/civicrm-core/pull/24485))**
+
+  Fix Contribution import to handle ContributionSoft in a storable way.
+
+- **Fix imported statuses & contribution id storage on import job
+  ([24344](https://github.com/civicrm/civicrm-core/pull/24344))**
+
+- **Add missing country=>billingCountry to PropertyBag mapping
+  ([24232](https://github.com/civicrm/civicrm-core/pull/24232))**
+
+- **[php8] E_WARNING on Find Contributions
+  ([24195](https://github.com/civicrm/civicrm-core/pull/24195))**
+
+- **Fix some notices on New Contribution page (smarty)
+  ([24409](https://github.com/civicrm/civicrm-core/pull/24409))**
+
+- **Remove attempt to match on soft credit header
+  ([24566](https://github.com/civicrm/civicrm-core/pull/24566))**
+
+- **Enotice fix on payment processor browse
+  ([24308](https://github.com/civicrm/civicrm-core/pull/24308))**
+
+- **Fix broken js on Contribution Import
+  ([24371](https://github.com/civicrm/civicrm-core/pull/24371))**
+
+- **For Contribution pages with a recurring payment option. Change the label
+  from "Regular amount"  to "Regular Amount"
+  ([24310](https://github.com/civicrm/civicrm-core/pull/24310))**
+
+### CiviEvent
+
+- **Adding better wording to Events page for matching dates
+  ([24489](https://github.com/civicrm/civicrm-core/pull/24489))**
+
+- **🎁 CiviEvent, Event Dashboard, iCal links are inside the h3 styling move out
+  and add spacing ([24149](https://github.com/civicrm/civicrm-core/pull/24149))**
+
+- **Fix participant import not to import to deleted contacts
+  ([24377](https://github.com/civicrm/civicrm-core/pull/24377))**
+
+- **Stop PHP notice when accessing invalid event ID
+  ([24406](https://github.com/civicrm/civicrm-core/pull/24406))**
+
+- **Error from CRM_Event_ICalendar->gCalRedirect "Expected one Event, found 0"
+  for past events
+  ([dev/core#3873](https://lab.civicrm.org/dev/core/-/issues/3873):
+  [24647](https://github.com/civicrm/civicrm-core/pull/24647))
+
+### CiviMail
+
+- **Search Kit: CiviMail search action fails for non-administrators
+  ([dev/core#3755](https://lab.civicrm.org/dev/core/-/issues/3755):
+  [24268](https://github.com/civicrm/civicrm-core/pull/24268))**
+
+- **Increase field size for mailing bounce type
+  ([dev/core#3489](https://lab.civicrm.org/dev/core/-/issues/3489):
+  [23658](https://github.com/civicrm/civicrm-core/pull/23658))**
+
+### CiviMember
+
+- **Convert membership Import to use select2
+  ([24356](https://github.com/civicrm/civicrm-core/pull/24356))**
+
+- **Membership import - Simplify contact_id validation & avoid deleted contacts
+  ([24380](https://github.com/civicrm/civicrm-core/pull/24380))**
+
+- **Fix is_override variable in MembershipView
+  ([24617](https://github.com/civicrm/civicrm-core/pull/24617))**
+
+### CiviPledge
+
+- **Pledge status is missing on View Pledge page
+  ([dev/core#3790](https://lab.civicrm.org/dev/core/-/issues/3790):
+  [24492](https://github.com/civicrm/civicrm-core/pull/24492))**
+
+### Drupal Integration
+
+- **Symfony 6 can't find the EventDispatcher when adding hooks that are defined
+  in getSubscribedEvents
+  ([dev/core#3802](https://lab.civicrm.org/dev/core/-/issues/3802):
+  [24250](https://github.com/civicrm/civicrm-core/pull/24250))**
+
+  Compatibility with symfony 6 for drupal 10 for listeners added via
+  getSubscribedEvents.
+
+- **Drupal views group filter is not working
+  ([dev/core#414](https://lab.civicrm.org/dev/core/-/issues/414):
+  [548](https://github.com/civicrm/civicrm-drupal/pull/548))**
+
+  Fixes the contact subtype drupal views group filter.
+
+### Joomla Integration
+
+- **Add temporary file to help Joomla installers (5.54-rc)
+  ([24572](https://github.com/civicrm/civicrm-core/pull/24572))**
+
+## <a name="misc"></a>Miscellany
+
+- **Fix PHPDoc comment for CRM_Financial_BAO_FinancialItem::add
+  ([24439](https://github.com/civicrm/civicrm-core/pull/24439))**
+
+- **Contribution import - test notes, cleanup notes, fix regression found
+  in test writing ([24419](https://github.com/civicrm/civicrm-core/pull/24419))**
+
+- **Add missing PHPDoc types
+  ([24424](https://github.com/civicrm/civicrm-core/pull/24424))**
+
+- **Use shared parent formRule in custom import api
+  ([24389](https://github.com/civicrm/civicrm-core/pull/24389))**
+
+- **Update Contribution import to use new v4 dedupe lookup
+  ([24402](https://github.com/civicrm/civicrm-core/pull/24402))**
+
+- **Switch Contact import to use new v4 dedupe lookup
+  ([24401](https://github.com/civicrm/civicrm-core/pull/24401))**
+
+- **Regenerate sql
+  ([24311](https://github.com/civicrm/civicrm-core/pull/24311))**
+
+- **Finish consolidating DataSource.tpl across non-contact imports
+  ([24267](https://github.com/civicrm/civicrm-core/pull/24267))**
+
+- **Unused function getOptionalSmartyElements
+  ([24327](https://github.com/civicrm/civicrm-core/pull/24327))**
+
+- **API - Standardize group ACL checks
+  ([24337](https://github.com/civicrm/civicrm-core/pull/24337))**
+
+- **Simplify Domain edit form to not call complete
+  `LocationBlock::buildQuickForm`
+  ([24333](https://github.com/civicrm/civicrm-core/pull/24333))**
+
+- **Deprecate two single-use option-value functions `create-a-sock` and
+  `delete-a-sock` ([24306](https://github.com/civicrm/civicrm-core/pull/24306))**
+
+- **Deprecate `BAO_Membership::importableFields`
+  ([24357](https://github.com/civicrm/civicrm-core/pull/24357))**
+
+- **Move `isSkipDuplicates` to shared parent
+  ([24354](https://github.com/civicrm/civicrm-core/pull/24354))**
+
+- **Unused functions in CRM_Upgrade_Form
+  ([24361](https://github.com/civicrm/civicrm-core/pull/24361))**
+
+- **Consolidate error handling on Custom data import tpl
+  ([24216](https://github.com/civicrm/civicrm-core/pull/24216))**
+
+- **Code cleanup on greeting processing
+  ([24129](https://github.com/civicrm/civicrm-core/pull/24129))**
+
+- **Deprecate horrible function + unreleased regression
+  ([24386](https://github.com/civicrm/civicrm-core/pull/24386))**
+
+- **Fix processCaseActivity docblock
+  ([24251](https://github.com/civicrm/civicrm-core/pull/24251))**
+
+- **Deprecate `BAO_Contribution::importableFields`
+  ([24225](https://github.com/civicrm/civicrm-core/pull/24225))**
+
+- **Move non-shared function to private function on using class
+  ([24227](https://github.com/civicrm/civicrm-core/pull/24227))**
+
+- **Tidy up whereClause method of mailing browse
+  ([24404](https://github.com/civicrm/civicrm-core/pull/24404))**
+
+- **APIv4 - Drop support for deprecated join syntax
+  ([24075](https://github.com/civicrm/civicrm-core/pull/24075))**
+
+- **PHPDoc comment fixes
+  ([24405](https://github.com/civicrm/civicrm-core/pull/24405))**
+
+- **Minor code cleanup - the form rule is in the parent function
+  ([24388](https://github.com/civicrm/civicrm-core/pull/24388))**
+
+- **Move unshared code to unshared function
+  ([24218](https://github.com/civicrm/civicrm-core/pull/24218))**
+
+- **Move a little code from legacy function `loadRelatedObjects` to the calling
+  functions ([24190](https://github.com/civicrm/civicrm-core/pull/24190))**
+
+- **Docblock fix - findOrphanedFiles method
+  ([24423](https://github.com/civicrm/civicrm-core/pull/24423))**
+
+- **Re-run regen
+  ([24461](https://github.com/civicrm/civicrm-core/pull/24461))**
+
+- **Follow up code simplification - no need to map 'Individual' to 'Individual'
+  ([24473](https://github.com/civicrm/civicrm-core/pull/24473))**
+
+- **More PHPdoc fixes
+  ([24495](https://github.com/civicrm/civicrm-core/pull/24495))**
+
+- **report cleanup
+  ([24503](https://github.com/civicrm/civicrm-core/pull/24503))**
+
+- **report clean up templates
+  ([24504](https://github.com/civicrm/civicrm-core/pull/24504))**
+
+- **report clean up templates
+  ([24508](https://github.com/civicrm/civicrm-core/pull/24508))**
+
+- **BAO regen
+  ([24507](https://github.com/civicrm/civicrm-core/pull/24507))**
+
+- **(REF) Extract method `Array::single()`
+  ([24287](https://github.com/civicrm/civicrm-core/pull/24287))**
+
+- **(REF) I18nSubscriber - Rename parameter to be more evocative
+  ([24281](https://github.com/civicrm/civicrm-core/pull/24281))**
+
+- **[REF] Activity BAO - Decouple CiviCase logic from create function
+  ([24247](https://github.com/civicrm/civicrm-core/pull/24247))**
+
+- **(REF) Extract compiler passes from CRM_Api4_Services
+  ([24283](https://github.com/civicrm/civicrm-core/pull/24283))**
+
+- **[REF] Decouple CiviGrant from core permission function
+  ([24191](https://github.com/civicrm/civicrm-core/pull/24191))**
+
+- **[Import] [Ref] Extract shared form rule code
+  ([24217](https://github.com/civicrm/civicrm-core/pull/24217))**
+
+- **(REF) Extract LocaleTestTrait. Tighten up multilingual testing.
+  ([24291](https://github.com/civicrm/civicrm-core/pull/24291))**
+
+- **[REF] ManagedEntities - Move deprecated function
+  ([24437](https://github.com/civicrm/civicrm-core/pull/24437))**
+
+- **REF] Standardise validation of mapped fields in imports, fix over-zealous
+  requirements when matching on trxn_id, invoice_id for update
+  ([24433](https://github.com/civicrm/civicrm-core/pull/24433))**
+
+- **REF Code cleanup for event configuration extracted from advancedevents
+  extension ([24418](https://github.com/civicrm/civicrm-core/pull/24418))**
+
+- **(REF) Tests - Misc updates in prepartion for l10n updates
+  ([24400](https://github.com/civicrm/civicrm-core/pull/24400))**
+
+- **[Ref] Import cleanup code that looks up contribution in import
+  ([24374](https://github.com/civicrm/civicrm-core/pull/24374))**
+
+- **[REF] Variable use cleanup
+  ([24390](https://github.com/civicrm/civicrm-core/pull/24390))**
+
+- **[Ref] Extract getContactFields
+  ([24362](https://github.com/civicrm/civicrm-core/pull/24362))**
+
+- **[REF] Simplify error handling in contribution import
+  ([24351](https://github.com/civicrm/civicrm-core/pull/24351))**
+
+- **[REF] Fold only parent class into only child class
+  ([24353](https://github.com/civicrm/civicrm-core/pull/24353))**
+
+- **[REF] Only add in entry to update Greeting if the greeting doesn't match
+  what is already in the database
+  ([24309](https://github.com/civicrm/civicrm-core/pull/24309))**
+
+- **[REF] Convert Elavon Payment Processor to be a core Extension
+  ([24183](https://github.com/civicrm/civicrm-core/pull/24183))**
+
+- **[REF] Update Zetacomponents/mail to be 1.9.4
+  ([24517](https://github.com/civicrm/civicrm-core/pull/24517))**
+
+- **[REF] Fix syntax of var docblocks
+  ([24498](https://github.com/civicrm/civicrm-core/pull/24498))**
+
+- **(REF) SettingsMetadata - Small cleanup to prevent duplicate slashes
+  ([24493](https://github.com/civicrm/civicrm-core/pull/24493))**
+
+- **[REF] Cleanup code to getAvailableFields on Contribution MapField
+  ([24484](https://github.com/civicrm/civicrm-core/pull/24484))**
+
+- **[REF] Extract rule-loading function
+  ([24474](https://github.com/civicrm/civicrm-core/pull/24474))**
+
+- **[Ref] [Import] Simplify form event MapField (Contact)
+  ([24464](https://github.com/civicrm/civicrm-core/pull/24464))**
+
+- **[Ref] [Import] Simplify form event MapField to use shared rule (Participant)
+  ([24463](https://github.com/civicrm/civicrm-core/pull/24463))**
+
+- **[REF] Remove calls to settings from angularjs to php layer to assist with
+  less permissioned users using civimail
+  ([24462](https://github.com/civicrm/civicrm-core/pull/24462))**
+
+- **[REF] Clarify what is being used from getElements, remove unused
+  ([24317](https://github.com/civicrm/civicrm-core/pull/24317))**
+
+- **[REF] [Upgrade] Remove the entry point that called the unused entry point
+  ([24286](https://github.com/civicrm/civicrm-core/pull/24286))**
+
+- **[REF] Remove unused message template upgrade code
+  ([24231](https://github.com/civicrm/civicrm-core/pull/24231))**
+
+- **Importer - Remove unused functions (`isErrorInCustomData`, `getSubtypes`,
+  `validateCustomField`)
+  ([24280](https://github.com/civicrm/civicrm-core/pull/24280))**
+
+- **[Import-code-cleanup] Fold call to deprecated function back into calling
+  function ([24188](https://github.com/civicrm/civicrm-core/pull/24188))**
+
+- **[Import-code-cleanup] Remove unused function
+  ([24210](https://github.com/civicrm/civicrm-core/pull/24210))**
+
+- **[Import-code-cleanup] Remove now-unused tpl
+  ([24214](https://github.com/civicrm/civicrm-core/pull/24214))**
+
+- **[Import-code-cleanup] Remove now-unused summary forms
+  ([24205](https://github.com/civicrm/civicrm-core/pull/24205))**
+
+- **[Import-code-cleanup] Mark a few functions deprecated for clarity & mark
+  parser class internal
+  ([24185](https://github.com/civicrm/civicrm-core/pull/24185))**
+
+- **[Import-code-cleanup] Fold call to weird deprecated function back into
+  calling code ([24189](https://github.com/civicrm/civicrm-core/pull/24189))**
+
+- **[Import-code-cleanup] Remove another now-unused class
+  `CRM_Contact_Import_ImportJob`
+  ([24211](https://github.com/civicrm/civicrm-core/pull/24211))**
+
+- **Minor readability cleanup - remove code comments about removed item,
+  comments ([24397](https://github.com/civicrm/civicrm-core/pull/24397))**
+
+- **Remove last usage of `_fields` from `Import_Parser`
+  ([24273](https://github.com/civicrm/civicrm-core/pull/24273))**
+
+- **Remove another three no-longer-used functions
+  ([24272](https://github.com/civicrm/civicrm-core/pull/24272))**
+
+- **Remove no-longer-used function
+  ([24271](https://github.com/civicrm/civicrm-core/pull/24271))**
+
+- **Remove unused impossible function in upgrade page
+  ([24252](https://github.com/civicrm/civicrm-core/pull/24252))**
+
+- **Remove now-unused addField from Participant import
+  ([24279](https://github.com/civicrm/civicrm-core/pull/24279))**
+
+- **Remove now-unused addField from Membership import
+  ([24288](https://github.com/civicrm/civicrm-core/pull/24288))**
+
+- **Remove references to old temp table names
+  ([24532](https://github.com/civicrm/civicrm-core/pull/24532))**
+
+- **Remove silly constants for Contact Types (import)
+  ([24465](https://github.com/civicrm/civicrm-core/pull/24465))**
+
+- **Remove function after two years of noisy deprecation
+  ([24443](https://github.com/civicrm/civicrm-core/pull/24443))**
+
+- **Remove method getActionAttribute
+  ([24425](https://github.com/civicrm/civicrm-core/pull/24425))**
+
+- **Remove method updateDisplayNames
+  ([24422](https://github.com/civicrm/civicrm-core/pull/24422))**
+
+- **Remove unreachable legacy code
+  ([24226](https://github.com/civicrm/civicrm-core/pull/24226))**
+
+- **Remove always-true if
+  ([24410](https://github.com/civicrm/civicrm-core/pull/24410))**
+
+- **Remove obsolete param from duplicated function
+  ([24412](https://github.com/civicrm/civicrm-core/pull/24412))**
+
+- **Remove unreachable code
+  ([24411](https://github.com/civicrm/civicrm-core/pull/24411))**
+
+- **Remove misleading comment.
+  ([24407](https://github.com/civicrm/civicrm-core/pull/24407))**
+
+- **Remove obsolete addField from activity import
+  ([24376](https://github.com/civicrm/civicrm-core/pull/24376))**
+
+- **Remove do-nothing code, add test to prove
+  ([24350](https://github.com/civicrm/civicrm-core/pull/24350))**
+
+- **Remove extraneous `if` (`supportedFields` always returns an array)
+  ([24339](https://github.com/civicrm/civicrm-core/pull/24339))**
+
+- **Remove now-unused addField from Contribution Import
+  ([24278](https://github.com/civicrm/civicrm-core/pull/24278))**
+
+- **Remove now-unused addField from Custom import
+  ([24289](https://github.com/civicrm/civicrm-core/pull/24289))**
+
+- **Finally remove apiv2 DeprecatedUtils
+  ([24208](https://github.com/civicrm/civicrm-core/pull/24208))**
+
+- **Finally remove hated `loadRelatedObjects` call from Invoice task
+  ([24319](https://github.com/civicrm/civicrm-core/pull/24319))**
+
+- **Finally full remove the awful addField from import
+  ([24379](https://github.com/civicrm/civicrm-core/pull/24379))**
+
+- **Add unit test & handling  for processing from UserJob configuration rather
+  than form submitted values
+  ([24510](https://github.com/civicrm/civicrm-core/pull/24510))**
+
+- **MailingSystemTest - Fix invalid PHP
+  ([24481](https://github.com/civicrm/civicrm-core/pull/24481))**
+
+- **Minor import test cleanup
+  ([24387](https://github.com/civicrm/civicrm-core/pull/24387))**
+
+- **Move participant cancel tests to extension
+  ([24340](https://github.com/civicrm/civicrm-core/pull/24340))**
+
+- **Test only fixes
+  ([24369](https://github.com/civicrm/civicrm-core/pull/24369))**
+
+- **SettingsStyleTest - Stop the madness
+  ([24154](https://github.com/civicrm/civicrm-core/pull/24154))**
+
+- **NFC IDE code format to get rid of array()
+  ([24215](https://github.com/civicrm/civicrm-core/pull/24215))**
+
+- **[NFC] Fix Typo in Dismaker list of core exts
+  ([24570](https://github.com/civicrm/civicrm-core/pull/24570))**
+
+- **[NFC] Add in Unit test to test domain token replacement in Reply process
+  ([24453](https://github.com/civicrm/civicrm-core/pull/24453))**
+
+- **(NFC) Fix sprintf syntax
+  ([24447](https://github.com/civicrm/civicrm-core/pull/24447))**
+
+- **(NFC) Autoformat big clusters of `list()` statements
+  ([24392](https://github.com/civicrm/civicrm-core/pull/24392))**
+
+- **[NFC] Remove no-longer used (protected) function `getAllContactReturnFields()`
+  ([24313](https://github.com/civicrm/civicrm-core/pull/24313))**
+
+- **[NFC] Better unit test of Link Cases form
+  ([24328](https://github.com/civicrm/civicrm-core/pull/24328))**
+
+- **(NFC) FileTest - Mark as ornery
+  ([24307](https://github.com/civicrm/civicrm-core/pull/24307))**
+
+- **[NFC] Add in Further debugging to authx test to try and debug issue
+  ([24258](https://github.com/civicrm/civicrm-core/pull/24258))**
+
+- **(NFC) Mark various tests with `@group locale`
+  ([24284](https://github.com/civicrm/civicrm-core/pull/24284))**
+
+- **[NFC] Add test for editing activity subject to file on case
+  ([24262](https://github.com/civicrm/civicrm-core/pull/24262))**
+
+- **NFC - Make it possible to mark a dao field @deprecated
+  ([24248](https://github.com/civicrm/civicrm-core/pull/24248))**
+
+## <a name="credits"></a>Credits
+
+This release was developed by the following code authors:
+
+AGH Strategies - Andie Hunt, Alice Frumin; Agileware - Justin Freeman;
+BrightMinded Ltd - Bradley Taylor; CiviCoop - Jaap Jansma; CiviCRM - Coleman
+Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy,
+Shane Bill; Dave D; Freeform Solutions - Herb van den Dool; JMA Consulting -
+Seamus Lee; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting -
+Matthew Wire; PERORA SRL - Samuele Masetto; Progressive Technology Project -
+Jamie McClelland; SYSTOPIA Organisationsberatung - Björn Endres; Third Sector
+Design - Kurund Jalmi; Wikimedia Foundation - Eileen McNaughton
+
+Most authors also reviewed code for this release; in addition, the following
+reviewers contributed their comments:
+
+alarmingcod; Andy Burns; Artful Robot - Rich Lott; Australian Greens - John
+Twyman; avall-llovera; Digitalcourage - Detlev Sieber; Francesc Bassas i
+Bullich; Jens Schuppe; Levi.k; Lighthouse Consulting and Design - Brian
+Shaughnessy; Megaphone Technology Consulting - Brienne Kordis; Nicol Wistreich;
+Squiffle Consulting - Aidan Saunders; Third Sector Design - Michael McAndrew
+
+## <a name="feedback"></a>Feedback
+
+These release notes are edited by Alice Frumin and Andie Hunt.  If you'd like
+to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
+and contact `@agh1`.
diff --git a/civicrm/settings/Case.setting.php b/civicrm/settings/Case.setting.php
index 0b19250e61af2f4708bce5d6708c60767402a203..692a00ec7fa166d1d4a8cb450ee6bbbc86b459de 100644
--- a/civicrm/settings/Case.setting.php
+++ b/civicrm/settings/Case.setting.php
@@ -82,21 +82,6 @@ return [
     'description' => ts('How to sort activity-types on the "Manage Case" screen? (Set "Default" to load setting from the legacy "Settings.xml" file.)'),
     'help_text' => '',
   ],
-  'civicaseActivityRevisions' => [
-    'group_name' => 'CiviCRM Preferences',
-    'group' => 'core',
-    'name' => 'civicaseActivityRevisions',
-    'type' => 'Boolean',
-    'quick_form_type' => 'YesNo',
-    'default' => FALSE,
-    'html_type' => 'radio',
-    'add' => '4.7',
-    'title' => ts('Enable deprecated Embedded Activity Revisions'),
-    'is_domain' => 1,
-    'is_contact' => 0,
-    'description' => ts('Enable tracking of activity revisions embedded within the "civicrm_activity" table. This should not be enabled on new installs and will be unsupported in the future. You should enable "Administer => System Settings => Misc => Logging" instead.'),
-    'help_text' => '',
-  ],
   'civicaseShowCaseActivities' => [
     'group_name' => 'CiviCRM Preferences',
     'group' => 'core',
diff --git a/civicrm/settings/Localization.setting.php b/civicrm/settings/Localization.setting.php
index 6a55c01d981d5cd79b84065c4ee346f7fc6f2dd7..19e0be3164c0eb6ca130fd3bde3d2b14c2e61794 100644
--- a/civicrm/settings/Localization.setting.php
+++ b/civicrm/settings/Localization.setting.php
@@ -409,6 +409,20 @@ return [
       'callback' => 'CRM_Core_I18n::languages',
     ],
   ],
+  'partial_locales' => [
+    'group_name' => 'Localization Preferences',
+    'group' => 'localization',
+    'name' => 'partial_locales',
+    'type' => 'Boolean',
+    'quick_form_type' => 'YesNo',
+    'default' => '0',
+    'add' => '5.54',
+    'title' => ts('Partial Locales'),
+    'is_domain' => 1,
+    'is_contact' => 0,
+    'help_text' => NULL,
+    'description' => ts('If Yes, the system will allow processing data in locales which are not fully supported. (Some tokens or resources may unavailable or substituted from other locales.)'),
+  ],
   'format_locale' => [
     'group_name' => 'Localization Preferences',
     'group' => 'localization',
diff --git a/civicrm/settings/Mailing.setting.php b/civicrm/settings/Mailing.setting.php
index bfcc3580741d860005c0c75da8f86c3b91e78f4f..97904cad54eb352d45fe7b538100a22bdcf0330c 100644
--- a/civicrm/settings/Mailing.setting.php
+++ b/civicrm/settings/Mailing.setting.php
@@ -311,6 +311,7 @@ return [
     'is_contact' => 0,
     'description' => ts('The number of emails sendable via simple mail. Make sure you understand the implications for your spam reputation and legal requirements for bulk emails before editing. As there is some risk both to your spam reputation and the products if this is misused it is a hidden setting.'),
     'help_text' => 'CiviCRM forces users sending more than this number of mails to use CiviMails. CiviMails have additional precautions: not sending to contacts who do not want bulk mail, adding domain name and opt out links. You should familiarise yourself with the law relevant to you on bulk mailings if changing this setting. For the US https://en.wikipedia.org/wiki/CAN-SPAM_Act_of_2003 is a good place to start.',
+    'add' => '4.7.25',
   ],
   'auto_recipient_rebuild' => [
     'group_name' => 'Mailing Preferences',
@@ -325,6 +326,7 @@ return [
     'is_contact' => 0,
     'description' => ts('Enable this setting to rebuild recipient list automatically during composing mail. Disable will allow you to rebuild recipient manually.'),
     'help_text' => ts('CiviMail automatically fetches recipient list and count whenever mailing groups are included or excluded while composing bulk mail. This phenomena may degrade performance for large sites, so disable this setting to build and fetch recipients for selected groups, manually.'),
+    'add' => '4.7.30',
   ],
   'allow_mail_from_logged_in_contact' => [
     'group_name' => 'Mailing Preferences',
@@ -338,6 +340,7 @@ return [
     'is_contact' => 0,
     'description' => ts('Allow sending email from the logged in contact\'s email address.'),
     'help_text' => 'CiviCRM allows you to send email from the domain from email addresses and the logged in contact id addresses by default. Disable this if you only want to allow the domain from addresses to be used.',
+    'add' => '4.7.31',
   ],
   'url_tracking_default' => [
     'group_name' => 'Mailing Preferences',
@@ -352,6 +355,7 @@ return [
     'is_contact' => 0,
     'description' => ts('If checked, mailings will have click-through tracking enabled by default.'),
     'help_text' => NULL,
+    'add' => '5.27.0',
   ],
   'open_tracking_default' => [
     'group_name' => 'Mailing Preferences',
@@ -366,6 +370,7 @@ return [
     'is_contact' => 0,
     'description' => ts('If checked, mailings will have open tracking enabled by default.'),
     'help_text' => NULL,
+    'add' => '5.27.0',
   ],
   // dev/cor#1768 Allow mailer sync interval to be configured by the
   // adminstrator.
diff --git a/civicrm/settings/Search.setting.php b/civicrm/settings/Search.setting.php
index 9766a3c9f45628185fa73ea92353377054345e75..5949be97afcb581f66112ad62f9d18fec5dca8f2 100644
--- a/civicrm/settings/Search.setting.php
+++ b/civicrm/settings/Search.setting.php
@@ -213,7 +213,7 @@ return [
     'group_name' => 'Search Preferences',
     'group' => 'Search Preferences',
     'name' => 'quicksearch_options',
-    'type' => 'string',
+    'type' => 'String',
     'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND,
     'html_type' => 'checkboxes',
     'sortable' => TRUE,
diff --git a/civicrm/sql/civicrm.mysql b/civicrm/sql/civicrm.mysql
index 7dd89bd435bb06ee1587d37dc00a2cb4c7a0cdcc..6ab98cedb52510fe764deafa4060fc9db181120a 100644
--- a/civicrm/sql/civicrm.mysql
+++ b/civicrm/sql/civicrm.mysql
@@ -539,7 +539,7 @@ CREATE TABLE `civicrm_contact` (
   `image_URL` text COMMENT 'optional URL for preferred image (photo, logo, etc.) to display for this contact.',
   `preferred_communication_method` varchar(255) COMMENT 'What is the preferred mode of communication.',
   `preferred_language` varchar(5) COMMENT 'Which language is preferred for communication. FK to languages in civicrm_option_value.',
-  `preferred_mail_format` varchar(8) DEFAULT "Both" COMMENT 'What is the preferred mode of sending an email.',
+  `preferred_mail_format` varchar(8) DEFAULT "Both" COMMENT 'Deprecated setting for text vs html mailings',
   `hash` varchar(32) COMMENT 'Key for validating requests related to this contact.',
   `api_key` varchar(32) COMMENT 'API Key for validating requests related to this contact.',
   `source` varchar(255) COMMENT 'where contact come from, e.g. import, donate module insert...',
@@ -802,8 +802,8 @@ ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMA
 -- *******************************************************/
 CREATE TABLE `civicrm_mailing_bounce_type` (
   `id` int unsigned NOT NULL AUTO_INCREMENT,
-  `name` varchar(24) NOT NULL COMMENT 'Type of bounce',
-  `description` varchar(255) COMMENT 'A description of this bounce type',
+  `name` varchar(255) NOT NULL COMMENT 'Type of bounce',
+  `description` varchar(2048) COMMENT 'A description of this bounce type',
   `hold_threshold` int unsigned NOT NULL COMMENT 'Number of bounces of this type required before the email address is put on bounce hold',
   PRIMARY KEY (`id`)
 )
@@ -1154,10 +1154,11 @@ CREATE TABLE `civicrm_dedupe_rule_group` (
   `contact_type` varchar(12) COMMENT 'The type of contacts this group applies to',
   `threshold` int NOT NULL COMMENT 'The weight threshold the sum of the rule weights has to cross to consider two contacts the same',
   `used` varchar(12) NOT NULL COMMENT 'Whether the rule should be used for cases where usage is Unsupervised, Supervised OR General(programatically)',
-  `name` varchar(64) COMMENT 'Name of the rule group',
+  `name` varchar(255) COMMENT 'Unique name of rule group',
   `title` varchar(255) COMMENT 'Label of the rule group',
   `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this a reserved rule - a rule group that has been optimized and cannot be changed by the admin',
-  PRIMARY KEY (`id`)
+  PRIMARY KEY (`id`),
+  UNIQUE INDEX `UI_name`(name)
 )
 ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
 
@@ -1296,8 +1297,8 @@ CREATE TABLE `civicrm_queue_item` (
   `id` int unsigned NOT NULL AUTO_INCREMENT,
   `queue_name` varchar(64) NOT NULL COMMENT 'Name of the queue which includes this item',
   `weight` int NOT NULL,
-  `submit_time` datetime NOT NULL COMMENT 'date on which this item was submitted to the queue',
-  `release_time` datetime COMMENT 'date on which this job becomes available; null if ASAP',
+  `submit_time` timestamp NOT NULL COMMENT 'date on which this item was submitted to the queue',
+  `release_time` timestamp NULL DEFAULT NULL COMMENT 'date on which this job becomes available; null if ASAP',
   `run_count` int NOT NULL DEFAULT 0 COMMENT 'Number of times execution has been attempted.',
   `data` longtext COMMENT 'Serialized queue data',
   PRIMARY KEY (`id`),
@@ -3541,8 +3542,8 @@ CREATE TABLE `civicrm_activity` (
   `medium_id` int unsigned DEFAULT NULL COMMENT 'Activity Medium, Implicit FK to civicrm_option_value where option_group = encounter_medium.',
   `is_auto` tinyint NOT NULL DEFAULT 0,
   `relationship_id` int unsigned DEFAULT NULL COMMENT 'FK to Relationship ID',
-  `is_current_revision` tinyint NOT NULL DEFAULT 1,
-  `original_id` int unsigned COMMENT 'Activity ID of the first activity record in versioning chain.',
+  `is_current_revision` tinyint NOT NULL DEFAULT 1 COMMENT 'Unused deprecated column.',
+  `original_id` int unsigned COMMENT 'Unused deprecated column.',
   `result` varchar(255) COMMENT 'Currently being used to store result id for survey activity, FK to option value.',
   `is_deleted` tinyint NOT NULL DEFAULT 0,
   `campaign_id` int unsigned COMMENT 'The campaign for which this activity has been triggered.',
@@ -4044,6 +4045,7 @@ CREATE TABLE `civicrm_participant` (
   `cart_id` int unsigned COMMENT 'FK to civicrm_event_carts',
   `must_wait` int COMMENT 'On Waiting List',
   `transferred_to_contact_id` int unsigned DEFAULT NULL COMMENT 'FK to Contact ID',
+  `created_id` int unsigned COMMENT 'Contact responsible for registering this participant',
   PRIMARY KEY (`id`),
   INDEX `index_status_id`(status_id),
   INDEX `index_role_id`(role_id),
@@ -4054,7 +4056,8 @@ CREATE TABLE `civicrm_participant` (
   CONSTRAINT FK_civicrm_participant_discount_id FOREIGN KEY (`discount_id`) REFERENCES `civicrm_discount`(`id`) ON DELETE SET NULL,
   CONSTRAINT FK_civicrm_participant_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL,
   CONSTRAINT FK_civicrm_participant_cart_id FOREIGN KEY (`cart_id`) REFERENCES `civicrm_event_carts`(`id`) ON DELETE SET NULL,
-  CONSTRAINT FK_civicrm_participant_transferred_to_contact_id FOREIGN KEY (`transferred_to_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
+  CONSTRAINT FK_civicrm_participant_transferred_to_contact_id FOREIGN KEY (`transferred_to_contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL,
+  CONSTRAINT FK_civicrm_participant_created_id FOREIGN KEY (`created_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL
 )
 ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
 
diff --git a/civicrm/sql/civicrm_data.mysql b/civicrm/sql/civicrm_data.mysql
index 4c8b03f99748a4285445df983a1f064368ea4c1b..f4db702381be148e5cfa2aed60d0a15e0b545db0 100644
--- a/civicrm/sql/civicrm_data.mysql
+++ b/civicrm/sql/civicrm_data.mysql
@@ -5995,7 +5995,6 @@ VALUES
  ('AuthNet',            'Authorize.Net',          NULL,1,0,'API Login','Payment Key','MD5 Hash',NULL,'Payment_AuthorizeNet','https://secure2.authorize.net/gateway/transact.dll',NULL,'https://api2.authorize.net/xml/v1/request.api',NULL,'https://test.authorize.net/gateway/transact.dll',NULL,'https://apitest.authorize.net/xml/v1/request.api',NULL,1,1),
  ('PayJunction',        'PayJunction',            NULL,0,0,'User Name','Password',NULL,NULL,'Payment_PayJunction','https://payjunction.com/quick_link',NULL,NULL,NULL,'https://www.payjunctionlabs.com/quick_link',NULL,NULL,NULL,1,1),
  ('Dummy',              'Dummy Payment Processor',NULL,1,1,'User Name',NULL,NULL,NULL,'Payment_Dummy',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1),
- ('Elavon',             'Elavon Payment Processor','Elavon / Nova Virtual Merchant',0,0,'SSL Merchant ID ','SSL User ID','SSL PIN',NULL,'Payment_Elavon','https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,1,0),
  ('Realex',             'Realex Payment',         NULL,0,0,'Merchant ID', 'Password', NULL, 'Account', 'Payment_Realex', 'https://epage.payandshop.com/epage.cgi', NULL, NULL, NULL, 'https://epage.payandshop.com/epage-remote.cgi', NULL, NULL, NULL, 1, 0),
  ('FirstData',          'FirstData (aka linkpoint)', 'FirstData (aka linkpoint)', 0, 0, 'Store name', 'certificate path', NULL, NULL, 'Payment_FirstData', 'https://secure.linkpt.net', NULL, NULL, NULL, 'https://staging.linkpt.net', NULL, NULL, NULL, 1, 0);
 
@@ -7045,7 +7044,7 @@ INSERT INTO civicrm_msg_template
       
       
       ('Contributions - Receipt (off-line)', '{ts}Contribution Receipt{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {if !empty($formValues.receipt_text)}
 {$formValues.receipt_text}
@@ -7181,7 +7180,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     {if !empty($formValues.receipt_text)}
      <p>{$formValues.receipt_text|htmlize}</p>
     {else}
@@ -7479,7 +7478,7 @@ INSERT INTO civicrm_msg_template
 </html>
 ', 'contribution_offline_receipt', @tpl_ovid_contribution_offline_receipt, 1,          0),
       ('Contributions - Receipt (off-line)', '{ts}Contribution Receipt{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {if !empty($formValues.receipt_text)}
 {$formValues.receipt_text}
@@ -7615,7 +7614,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     {if !empty($formValues.receipt_text)}
      <p>{$formValues.receipt_text|htmlize}</p>
     {else}
@@ -7915,7 +7914,7 @@ INSERT INTO civicrm_msg_template
       
       
       ('Contributions - Receipt (on-line)', '{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 {if !empty($receipt_text)}
 {$receipt_text}
 {/if}
@@ -7926,49 +7925,43 @@ INSERT INTO civicrm_msg_template
 ===========================================================
 {/if}
 
-{if $amount}
+{if \'{contribution.total_amount|raw}\' !== \'0.00\'}
 ===========================================================
 {ts}Contribution Information{/ts}
 
 ===========================================================
 {if $isShowLineItems}
-{foreach from=$lineItem item=value key=priceset}
+
 ---------------------------------------------------------
 {capture assign=ts_item}{ts}Item{/ts}{/capture}
 {capture assign=ts_qty}{ts}Qty{/ts}{/capture}
 {capture assign=ts_each}{ts}Each{/ts}{/capture}
-{if !empty($dataArray)}
+{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}
 {capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
 {capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
 {capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
 {/if}
 {capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if !empty($dataArray)} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
+{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
 ----------------------------------------------------------
-{foreach from=$value item=line}
-{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if !empty($dataArray)}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}
-{/foreach}
+{foreach from=$lineItems item=line}
+{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if !empty($dataArray)}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}
 {/foreach}
 
-{if !empty($dataArray)}
+{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}
 {ts}Amount before Tax{/ts}: {$amount-$totalTaxAmount|crmMoney:$currency}
-
-{foreach from=$dataArray item=value key=priceset}
-{if $priceset || $priceset == 0}
-{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency}
-{else}
-{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}
-{/if}
-{/foreach}
+  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
+  {/foreach}
 {/if}
 
 {if $isShowTax}
 {ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}
 {/if}
 
-{ts}Total Amount{/ts}: {$amount|crmMoney:$currency}
+{ts}Total Amount{/ts}: {contribution.total_amount}
 {else}
-{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}
+{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}
 {/if}
 {/if}
 {if !empty($receive_date)}
@@ -8140,7 +8133,7 @@ INSERT INTO civicrm_msg_template
 {capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
 {capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
-  <table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
+<table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
 
   <!-- BEGIN HEADER -->
   <!-- You can add table row(s) here with logo or other header elements -->
@@ -8150,7 +8143,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-     {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     {if !empty($receipt_text)}
      <p>{$receipt_text|htmlize}</p>
     {/if}
@@ -8161,123 +8154,99 @@ INSERT INTO civicrm_msg_template
 
    </td>
   </tr>
-  </table>
-  <table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
-
-     {if $amount}
-
-
-      <tr>
-       <th {$headerStyle}>
+</table>
+<table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
+  {if \'{contribution.total_amount|raw}\' !== \'0.00\'}
+    <tr>
+      <th {$headerStyle}>
         {ts}Contribution Information{/ts}
-       </th>
-      </tr>
-
-      {if $isShowLineItems}
+      </th>
+    </tr>
 
-       {foreach from=$lineItem item=value key=priceset}
-        <tr>
-         <td colspan="2" {$valueStyle}>
+    {if $isShowLineItems}
+      <tr>
+        <td colspan="2" {$valueStyle}>
           <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Qty{/ts}</th>
-            <th>{ts}Each{/ts}</th>
-            {if !empty($dataArray)}
-             <th>{ts}Subtotal{/ts}</th>
-             <th>{ts}Tax Rate{/ts}</th>
-             <th>{ts}Tax Amount{/ts}</th>
-            {/if}
-            <th>{ts}Total{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
             <tr>
-             <td>
-             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if}
-             </td>
-             <td>
-              {$line.qty}
-             </td>
-             <td>
-              {$line.unit_price|crmMoney:$currency}
-             </td>
-             {if !empty($getTaxDetails)}
-              <td>
-               {$line.unit_price*$line.qty|crmMoney:$currency}
-              </td>
-              {if $line.tax_rate || $line.tax_amount != ""}
-               <td>
-                {$line.tax_rate|string_format:"%.2f"}%
-               </td>
-               <td>
-                {$line.tax_amount|crmMoney:$currency}
-               </td>
-              {else}
-               <td></td>
-               <td></td>
+              <th>{ts}Item{/ts}</th>
+              <th>{ts}Qty{/ts}</th>
+              <th>{ts}Each{/ts}</th>
+              {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}
+                <th>{ts}Subtotal{/ts}</th>
+                <th>{ts}Tax Rate{/ts}</th>
+                <th>{ts}Tax Amount{/ts}</th>
               {/if}
-             {/if}
-             <td>
-              {$line.line_total+$line.tax_amount|crmMoney:$currency}
-             </td>
+              <th>{ts}Total{/ts}</th>
             </tr>
-           {/foreach}
+            {foreach from=$lineItems item=line}
+              <tr>
+                <td>{$line.title}</td>
+                <td>{$line.qty}</td>
+                <td>{$line.unit_price|crmMoney:$currency}</td>
+                {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}
+                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>
+                  {if $line.tax_rate || $line.tax_amount != ""}
+                    <td>{$line.tax_rate|string_format:"%.2f"}%</td>
+                    <td>{$line.tax_amount|crmMoney:$currency}</td>
+                  {else}
+                    <td></td>
+                    <td></td>
+                  {/if}
+                {/if}
+                <td>
+                  {$line.line_total+$line.tax_amount|crmMoney:$currency}
+                </td>
+              </tr>
+            {/foreach}
           </table>
-         </td>
-        </tr>
-       {/foreach}
-       {if !empty($dataArray)}
+        </td>
+      </tr>
+
+      {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}
         <tr>
-         <td {$labelStyle}>
-          {ts} Amount before Tax : {/ts}
-         </td>
-         <td {$valueStyle}>
-          {$amount-$totalTaxAmount|crmMoney:$currency}
-         </td>
+          <td {$labelStyle}>
+            {ts} Amount before Tax : {/ts}
+          </td>
+          <td {$valueStyle}>
+            {$amount-$totalTaxAmount|crmMoney:$currency}
+          </td>
         </tr>
 
-        {foreach from=$dataArray item=value key=priceset}
-         <tr>
-          {if $priceset || $priceset == 0}
-           <td>&nbsp;{$taxTerm} {$priceset|string_format:"%.2f"}%</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-          {else}
-           <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-          {/if}
-         </tr>
+        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+          <tr>
+            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>
+            <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>
+          </tr>
         {/foreach}
 
-       {/if}
-       {if $isShowTax}
+      {/if}
+      {if $isShowTax}
         <tr>
-         <td {$labelStyle}>
-          {ts}Total Tax{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$totalTaxAmount|crmMoney:$currency}
-         </td>
+          <td {$labelStyle}>
+            {ts}Total Tax{/ts}
+          </td>
+          <td {$valueStyle}>
+            {contribution.tax_amount}
+          </td>
         </tr>
-       {/if}
-       <tr>
+      {/if}
+      <tr>
         <td {$labelStyle}>
-         {ts}Total Amount{/ts}
+          {ts}Total Amount{/ts}
         </td>
         <td {$valueStyle}>
-         {$amount|crmMoney:$currency}
+          {contribution.total_amount}
         </td>
-       </tr>
-
-      {else}
-
-      {if !empty($totalTaxAmount)}
-         <tr>
-           <td {$labelStyle}>
-             {ts}Total Tax Amount{/ts}
-           </td>
-           <td {$valueStyle}>
-             {contribution.tax_amount|crmMoney}
-           </td>
+      </tr>
+    {else}
+      {if \'{contribution.tax_amount|raw}\' !== \'0.00\'}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Total Tax Amount{/ts}
+          </td>
+          <td {$valueStyle}>
+            {contribution.tax_amount}
+          </td>
          </tr>
        {/if}
        <tr>
@@ -8285,13 +8254,13 @@ INSERT INTO civicrm_msg_template
          {ts}Amount{/ts}
         </td>
         <td {$valueStyle}>
-         {$amount|crmMoney:$currency} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}
+         {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}
         </td>
        </tr>
 
       {/if}
 
-     {/if}
+  {/if}
 
 
      {if !empty($receive_date)}
@@ -8600,7 +8569,7 @@ INSERT INTO civicrm_msg_template
 </html>
 ', 'contribution_online_receipt', @tpl_ovid_contribution_online_receipt, 1,          0),
       ('Contributions - Receipt (on-line)', '{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 {if !empty($receipt_text)}
 {$receipt_text}
 {/if}
@@ -8611,49 +8580,43 @@ INSERT INTO civicrm_msg_template
 ===========================================================
 {/if}
 
-{if $amount}
+{if \'{contribution.total_amount|raw}\' !== \'0.00\'}
 ===========================================================
 {ts}Contribution Information{/ts}
 
 ===========================================================
 {if $isShowLineItems}
-{foreach from=$lineItem item=value key=priceset}
+
 ---------------------------------------------------------
 {capture assign=ts_item}{ts}Item{/ts}{/capture}
 {capture assign=ts_qty}{ts}Qty{/ts}{/capture}
 {capture assign=ts_each}{ts}Each{/ts}{/capture}
-{if !empty($dataArray)}
+{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}
 {capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
 {capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
 {capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
 {/if}
 {capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if !empty($dataArray)} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
+{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
 ----------------------------------------------------------
-{foreach from=$value item=line}
-{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if !empty($dataArray)}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}
-{/foreach}
+{foreach from=$lineItems item=line}
+{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if !empty($dataArray)}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}
 {/foreach}
 
-{if !empty($dataArray)}
+{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}
 {ts}Amount before Tax{/ts}: {$amount-$totalTaxAmount|crmMoney:$currency}
-
-{foreach from=$dataArray item=value key=priceset}
-{if $priceset || $priceset == 0}
-{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency}
-{else}
-{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}
-{/if}
-{/foreach}
+  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}
+  {/foreach}
 {/if}
 
 {if $isShowTax}
 {ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}
 {/if}
 
-{ts}Total Amount{/ts}: {$amount|crmMoney:$currency}
+{ts}Total Amount{/ts}: {contribution.total_amount}
 {else}
-{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}
+{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}
 {/if}
 {/if}
 {if !empty($receive_date)}
@@ -8825,7 +8788,7 @@ INSERT INTO civicrm_msg_template
 {capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
 {capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
-  <table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
+<table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
 
   <!-- BEGIN HEADER -->
   <!-- You can add table row(s) here with logo or other header elements -->
@@ -8835,7 +8798,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-     {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     {if !empty($receipt_text)}
      <p>{$receipt_text|htmlize}</p>
     {/if}
@@ -8846,123 +8809,99 @@ INSERT INTO civicrm_msg_template
 
    </td>
   </tr>
-  </table>
-  <table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
-
-     {if $amount}
-
-
-      <tr>
-       <th {$headerStyle}>
+</table>
+<table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
+  {if \'{contribution.total_amount|raw}\' !== \'0.00\'}
+    <tr>
+      <th {$headerStyle}>
         {ts}Contribution Information{/ts}
-       </th>
-      </tr>
-
-      {if $isShowLineItems}
+      </th>
+    </tr>
 
-       {foreach from=$lineItem item=value key=priceset}
-        <tr>
-         <td colspan="2" {$valueStyle}>
+    {if $isShowLineItems}
+      <tr>
+        <td colspan="2" {$valueStyle}>
           <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Qty{/ts}</th>
-            <th>{ts}Each{/ts}</th>
-            {if !empty($dataArray)}
-             <th>{ts}Subtotal{/ts}</th>
-             <th>{ts}Tax Rate{/ts}</th>
-             <th>{ts}Tax Amount{/ts}</th>
-            {/if}
-            <th>{ts}Total{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
             <tr>
-             <td>
-             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if}
-             </td>
-             <td>
-              {$line.qty}
-             </td>
-             <td>
-              {$line.unit_price|crmMoney:$currency}
-             </td>
-             {if !empty($getTaxDetails)}
-              <td>
-               {$line.unit_price*$line.qty|crmMoney:$currency}
-              </td>
-              {if $line.tax_rate || $line.tax_amount != ""}
-               <td>
-                {$line.tax_rate|string_format:"%.2f"}%
-               </td>
-               <td>
-                {$line.tax_amount|crmMoney:$currency}
-               </td>
-              {else}
-               <td></td>
-               <td></td>
+              <th>{ts}Item{/ts}</th>
+              <th>{ts}Qty{/ts}</th>
+              <th>{ts}Each{/ts}</th>
+              {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}
+                <th>{ts}Subtotal{/ts}</th>
+                <th>{ts}Tax Rate{/ts}</th>
+                <th>{ts}Tax Amount{/ts}</th>
               {/if}
-             {/if}
-             <td>
-              {$line.line_total+$line.tax_amount|crmMoney:$currency}
-             </td>
+              <th>{ts}Total{/ts}</th>
             </tr>
-           {/foreach}
+            {foreach from=$lineItems item=line}
+              <tr>
+                <td>{$line.title}</td>
+                <td>{$line.qty}</td>
+                <td>{$line.unit_price|crmMoney:$currency}</td>
+                {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}
+                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>
+                  {if $line.tax_rate || $line.tax_amount != ""}
+                    <td>{$line.tax_rate|string_format:"%.2f"}%</td>
+                    <td>{$line.tax_amount|crmMoney:$currency}</td>
+                  {else}
+                    <td></td>
+                    <td></td>
+                  {/if}
+                {/if}
+                <td>
+                  {$line.line_total+$line.tax_amount|crmMoney:$currency}
+                </td>
+              </tr>
+            {/foreach}
           </table>
-         </td>
-        </tr>
-       {/foreach}
-       {if !empty($dataArray)}
+        </td>
+      </tr>
+
+      {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}
         <tr>
-         <td {$labelStyle}>
-          {ts} Amount before Tax : {/ts}
-         </td>
-         <td {$valueStyle}>
-          {$amount-$totalTaxAmount|crmMoney:$currency}
-         </td>
+          <td {$labelStyle}>
+            {ts} Amount before Tax : {/ts}
+          </td>
+          <td {$valueStyle}>
+            {$amount-$totalTaxAmount|crmMoney:$currency}
+          </td>
         </tr>
 
-        {foreach from=$dataArray item=value key=priceset}
-         <tr>
-          {if $priceset || $priceset == 0}
-           <td>&nbsp;{$taxTerm} {$priceset|string_format:"%.2f"}%</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-          {else}
-           <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-          {/if}
-         </tr>
+        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+          <tr>
+            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>
+            <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>
+          </tr>
         {/foreach}
 
-       {/if}
-       {if $isShowTax}
+      {/if}
+      {if $isShowTax}
         <tr>
-         <td {$labelStyle}>
-          {ts}Total Tax{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$totalTaxAmount|crmMoney:$currency}
-         </td>
+          <td {$labelStyle}>
+            {ts}Total Tax{/ts}
+          </td>
+          <td {$valueStyle}>
+            {contribution.tax_amount}
+          </td>
         </tr>
-       {/if}
-       <tr>
+      {/if}
+      <tr>
         <td {$labelStyle}>
-         {ts}Total Amount{/ts}
+          {ts}Total Amount{/ts}
         </td>
         <td {$valueStyle}>
-         {$amount|crmMoney:$currency}
+          {contribution.total_amount}
         </td>
-       </tr>
-
-      {else}
-
-      {if !empty($totalTaxAmount)}
-         <tr>
-           <td {$labelStyle}>
-             {ts}Total Tax Amount{/ts}
-           </td>
-           <td {$valueStyle}>
-             {contribution.tax_amount|crmMoney}
-           </td>
+      </tr>
+    {else}
+      {if \'{contribution.tax_amount|raw}\' !== \'0.00\'}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Total Tax Amount{/ts}
+          </td>
+          <td {$valueStyle}>
+            {contribution.tax_amount}
+          </td>
          </tr>
        {/if}
        <tr>
@@ -8970,13 +8909,13 @@ INSERT INTO civicrm_msg_template
          {ts}Amount{/ts}
         </td>
         <td {$valueStyle}>
-         {$amount|crmMoney:$currency} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}
+         {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}
         </td>
        </tr>
 
       {/if}
 
-     {/if}
+  {/if}
 
 
      {if !empty($receive_date)}
@@ -9310,7 +9249,7 @@ INSERT INTO civicrm_msg_template
     {if $config->empoweredBy}
       <table style="margin-top:5px;padding-bottom:50px;" cellpadding="5" cellspacing="0">
         <tr>
-          <td><img src="{$resourceBase}/i/civi99.png" height="34px" width="99px"></td>
+          <td><img src="{domain.empowered_by_civicrm_image_url}" height="34px" width="99px"></td>
         </tr>
       </table>
     {/if}
@@ -9369,26 +9308,19 @@ INSERT INTO civicrm_msg_template
         <th style="text-align:right;font-weight:bold;white-space: nowrap"><font size="1">{domain.tax_term}</font></th>
         <th style="text-align:right;font-weight:bold;white-space: nowrap"><font size="1">{ts 1=$currency}Amount %1{/ts}</font></th>
       </tr>
-      {foreach from=$lineItem item=value key=priceset name=taxpricevalue}
+      {foreach from=$lineItems item=line}
         <tr>
           <td style="text-align:left;nowrap"><font size="1">
-            {if $value.html_type eq \'Text\'}
-              {$value.label}
+            {$line.title}
+          </font></td>
+          <td style="text-align:right;"><font size="1">{$line.qty}</font></td>
+          <td style="text-align:right;"><font size="1">{$line.unit_price|crmMoney:$currency}</font></td>
+            {if $line.tax_amount != \'\'}
+              <td style="text-align:right;"><font size="1">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>
             {else}
-              {$value.field_title} - {$value.label}
+              <td style="text-align:right;"><font size="1">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>
             {/if}
-            {if $value.description}
-              <div>{$value.description|truncate:30:"..."}</div>
-            {/if}
-          </font></td>
-          <td style="text-align:right;"><font size="1">{$value.qty}</font></td>
-          <td style="text-align:right;"><font size="1">{$value.unit_price|crmMoney:$currency}</font></td>
-          {if $value.tax_amount != \'\'}
-            <td style="text-align:right;"><font size="1">{if $value.tax_rate}{$value.tax_rate}%{/if}</font></td>
-          {else}
-            <td style="text-align:right;"><font size="1">{if $taxTerm}{ts 1=$taxTerm}-{/ts}{/if}</font></td>
-          {/if}
-          <td style="text-align:right;"><font size="1">{$value.subTotal|crmMoney:$currency}</font></td>
+          <td style="text-align:right;"><font size="1">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>
         </tr>
       {/foreach}
       <tr>
@@ -9396,20 +9328,15 @@ INSERT INTO civicrm_msg_template
         <td style="text-align:right;"><font size="1">{ts}Sub Total{/ts}</font></td>
         <td style="text-align:right;"><font size="1">{$subTotal|crmMoney:$currency}</font></td>
       </tr>
-      {if !empty($dataArray)}
-        {foreach from=$dataArray item=value key=priceset}
+      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+        {if $taxRate != 0}
           <tr>
             <td colspan="3"></td>
-            {if $priceset}
-              <td style="text-align:right;white-space: nowrap"><font size="1">{if $taxTerm}{ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}{/if}</font></td>
-              <td style="text-align:right"><font size="1" align="right">{$value|crmMoney:$currency}</font> </td>
-            {elseif $priceset == 0}
-              <td style="text-align:right;white-space: nowrap"><font size="1">{if $taxTerm}{ts 1=$taxTerm}TOTAL %1{/ts}{/if}</font></td>
-              <td style="text-align:right"><font size="1" align="right">{$value|crmMoney:$currency}</font> </td>
-            {/if}
+            <td style="text-align:right;white-space: nowrap"><font size="1">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>
+            <td style="text-align:right"><font size="1" align="right">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>
           </tr>
-        {/foreach}
-      {/if}
+        {/if}
+      {/foreach}
       <tr>
         <td colspan="3"></td>
         <td style="text-align:right;white-space: nowrap"><b><font size="1">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>
@@ -9575,31 +9502,20 @@ INSERT INTO civicrm_msg_template
               <th style="padding-left:28px;text-align:right;font-weight:bold;"><font size="1">{domain.tax_term}</font></th>
               <th style="padding-left:28px;text-align:right;font-weight:bold;"><font size="1">{ts 1=$currency}Amount %1{/ts}</font></th>
             </tr>
-            {foreach from=$lineItem item=value key=priceset name=pricevalue}
-              {if $smarty.foreach.pricevalue.index eq 0}
-                <tr><td colspan="5"><hr size="3" style="color:#000;"></hr></td></tr>
-              {else}
-                <tr><td colspan="5" style="color:#F5F5F5;"><hr></hr></td></tr>
-              {/if}
+            {foreach from=$lineItems item=line key=index}
+              <tr><td colspan="5"><hr {if $index == 0}size="3" style="color:#000;"{else}style="color:#F5F5F5;"{/if}></hr></td></tr>
               <tr>
                 <td style ="text-align:left;"  ><font size="1">
-                  {if $value.html_type eq \'Text\'}
-                    {$value.label}
-                  {else}
-                    {$value.field_title} - {$value.label}
-                  {/if}
-                  {if $value.description}
-                    <div>{$value.description|truncate:30:"..."}</div>
-                  {/if}
+                  {$line.title}
                 </font></td>
-                <td style="padding-left:28px;text-align:right;"><font size="1">{$value.qty}</font></td>
-                <td style="padding-left:28px;text-align:right;"><font size="1">{$value.unit_price|crmMoney:$currency}</font></td>
-                {if $value.tax_amount != \'\'}
-                  <td style="padding-left:28px;text-align:right;"><font size="1">{if $value.tax_rate}{$value.tax_rate}%{/if}</font></td>
+                <td style="padding-left:28px;text-align:right;"><font size="1">{$line.qty}</font></td>
+                <td style="padding-left:28px;text-align:right;"><font size="1">{$line.unit_price|crmMoney:$currency}</font></td>
+                {if $line.tax_amount != \'\'}
+                  <td style="padding-left:28px;text-align:right;"><font size="1">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>
                 {else}
-                  <td style="padding-left:28px;text-align:right"><font size="1">{if $taxTerm}{ts 1=$taxTerm}No %1{/ts}{/if}</font></td>
+                  <td style="padding-left:28px;text-align:right"><font size="1">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>
                 {/if}
-                <td style="padding-left:28px;text-align:right;"><font size="1">{$value.subTotal|crmMoney:$currency}</font></td>
+                <td style="padding-left:28px;text-align:right;"><font size="1">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>
               </tr>
             {/foreach}
             <tr><td colspan="5" style="color:#F5F5F5;"><hr></hr></td></tr>
@@ -9608,20 +9524,15 @@ INSERT INTO civicrm_msg_template
               <td style="padding-left:28px;text-align:right;"><font size="1">{ts}Sub Total{/ts}</font></td>
               <td style="padding-left:28px;text-align:right;"><font size="1">{$subTotal|crmMoney:$currency}</font></td>
             </tr>
-            {if !empty($dataArray)}
-              {foreach from=$dataArray item=value key=priceset}
-                <tr>
-                  <td colspan="3"></td>
-                  {if $priceset}
-                    <td style="padding-left:28px;text-align:right;"><font size="1">{if $taxTerm}{ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}{/if}</font></td>
-                    <td style="padding-left:28px;text-align:right;"><font size="1" align="right">{$value|crmMoney:$currency}</font> </td>
-                  {elseif $priceset == 0}
-                    <td style="padding-left:28px;text-align:right;"><font size="1">{if $taxTerm}{ts 1=$taxTerm}TOTAL NO %1{/ts}{/if}</font></td>
-                    <td style="padding-left:28px;text-align:right;"><font size="1" align="right">{$value|crmMoney:$currency}</font> </td>
-                  {/if}
-                </tr>
+            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+                {if $taxRate != 0}
+                  <tr>
+                    <td colspan="3"></td>
+                    <td style="padding-left:28px;text-align:right;"><font size="1">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>
+                    <td style="padding-left:28px;text-align:right;"><font size="1" align="right">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>
+                  </tr>
+                {/if}
               {/foreach}
-            {/if}
             <tr>
               <td colspan="3"></td>
               <td colspan="2"><hr></hr></td>
@@ -9722,7 +9633,7 @@ INSERT INTO civicrm_msg_template
     {if $config->empoweredBy}
       <table style="margin-top:5px;padding-bottom:50px;" cellpadding="5" cellspacing="0">
         <tr>
-          <td><img src="{$resourceBase}/i/civi99.png" height="34px" width="99px"></td>
+          <td><img src="{domain.empowered_by_civicrm_image_url}" height="34px" width="99px"></td>
         </tr>
       </table>
     {/if}
@@ -9781,26 +9692,19 @@ INSERT INTO civicrm_msg_template
         <th style="text-align:right;font-weight:bold;white-space: nowrap"><font size="1">{domain.tax_term}</font></th>
         <th style="text-align:right;font-weight:bold;white-space: nowrap"><font size="1">{ts 1=$currency}Amount %1{/ts}</font></th>
       </tr>
-      {foreach from=$lineItem item=value key=priceset name=taxpricevalue}
+      {foreach from=$lineItems item=line}
         <tr>
           <td style="text-align:left;nowrap"><font size="1">
-            {if $value.html_type eq \'Text\'}
-              {$value.label}
+            {$line.title}
+          </font></td>
+          <td style="text-align:right;"><font size="1">{$line.qty}</font></td>
+          <td style="text-align:right;"><font size="1">{$line.unit_price|crmMoney:$currency}</font></td>
+            {if $line.tax_amount != \'\'}
+              <td style="text-align:right;"><font size="1">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>
             {else}
-              {$value.field_title} - {$value.label}
-            {/if}
-            {if $value.description}
-              <div>{$value.description|truncate:30:"..."}</div>
+              <td style="text-align:right;"><font size="1">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>
             {/if}
-          </font></td>
-          <td style="text-align:right;"><font size="1">{$value.qty}</font></td>
-          <td style="text-align:right;"><font size="1">{$value.unit_price|crmMoney:$currency}</font></td>
-          {if $value.tax_amount != \'\'}
-            <td style="text-align:right;"><font size="1">{if $value.tax_rate}{$value.tax_rate}%{/if}</font></td>
-          {else}
-            <td style="text-align:right;"><font size="1">{if $taxTerm}{ts 1=$taxTerm}-{/ts}{/if}</font></td>
-          {/if}
-          <td style="text-align:right;"><font size="1">{$value.subTotal|crmMoney:$currency}</font></td>
+          <td style="text-align:right;"><font size="1">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>
         </tr>
       {/foreach}
       <tr>
@@ -9808,20 +9712,15 @@ INSERT INTO civicrm_msg_template
         <td style="text-align:right;"><font size="1">{ts}Sub Total{/ts}</font></td>
         <td style="text-align:right;"><font size="1">{$subTotal|crmMoney:$currency}</font></td>
       </tr>
-      {if !empty($dataArray)}
-        {foreach from=$dataArray item=value key=priceset}
+      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+        {if $taxRate != 0}
           <tr>
             <td colspan="3"></td>
-            {if $priceset}
-              <td style="text-align:right;white-space: nowrap"><font size="1">{if $taxTerm}{ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}{/if}</font></td>
-              <td style="text-align:right"><font size="1" align="right">{$value|crmMoney:$currency}</font> </td>
-            {elseif $priceset == 0}
-              <td style="text-align:right;white-space: nowrap"><font size="1">{if $taxTerm}{ts 1=$taxTerm}TOTAL %1{/ts}{/if}</font></td>
-              <td style="text-align:right"><font size="1" align="right">{$value|crmMoney:$currency}</font> </td>
-            {/if}
+            <td style="text-align:right;white-space: nowrap"><font size="1">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>
+            <td style="text-align:right"><font size="1" align="right">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>
           </tr>
-        {/foreach}
-      {/if}
+        {/if}
+      {/foreach}
       <tr>
         <td colspan="3"></td>
         <td style="text-align:right;white-space: nowrap"><b><font size="1">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>
@@ -9987,31 +9886,20 @@ INSERT INTO civicrm_msg_template
               <th style="padding-left:28px;text-align:right;font-weight:bold;"><font size="1">{domain.tax_term}</font></th>
               <th style="padding-left:28px;text-align:right;font-weight:bold;"><font size="1">{ts 1=$currency}Amount %1{/ts}</font></th>
             </tr>
-            {foreach from=$lineItem item=value key=priceset name=pricevalue}
-              {if $smarty.foreach.pricevalue.index eq 0}
-                <tr><td colspan="5"><hr size="3" style="color:#000;"></hr></td></tr>
-              {else}
-                <tr><td colspan="5" style="color:#F5F5F5;"><hr></hr></td></tr>
-              {/if}
+            {foreach from=$lineItems item=line key=index}
+              <tr><td colspan="5"><hr {if $index == 0}size="3" style="color:#000;"{else}style="color:#F5F5F5;"{/if}></hr></td></tr>
               <tr>
                 <td style ="text-align:left;"  ><font size="1">
-                  {if $value.html_type eq \'Text\'}
-                    {$value.label}
-                  {else}
-                    {$value.field_title} - {$value.label}
-                  {/if}
-                  {if $value.description}
-                    <div>{$value.description|truncate:30:"..."}</div>
-                  {/if}
+                  {$line.title}
                 </font></td>
-                <td style="padding-left:28px;text-align:right;"><font size="1">{$value.qty}</font></td>
-                <td style="padding-left:28px;text-align:right;"><font size="1">{$value.unit_price|crmMoney:$currency}</font></td>
-                {if $value.tax_amount != \'\'}
-                  <td style="padding-left:28px;text-align:right;"><font size="1">{if $value.tax_rate}{$value.tax_rate}%{/if}</font></td>
+                <td style="padding-left:28px;text-align:right;"><font size="1">{$line.qty}</font></td>
+                <td style="padding-left:28px;text-align:right;"><font size="1">{$line.unit_price|crmMoney:$currency}</font></td>
+                {if $line.tax_amount != \'\'}
+                  <td style="padding-left:28px;text-align:right;"><font size="1">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>
                 {else}
-                  <td style="padding-left:28px;text-align:right"><font size="1">{if $taxTerm}{ts 1=$taxTerm}No %1{/ts}{/if}</font></td>
+                  <td style="padding-left:28px;text-align:right"><font size="1">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>
                 {/if}
-                <td style="padding-left:28px;text-align:right;"><font size="1">{$value.subTotal|crmMoney:$currency}</font></td>
+                <td style="padding-left:28px;text-align:right;"><font size="1">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>
               </tr>
             {/foreach}
             <tr><td colspan="5" style="color:#F5F5F5;"><hr></hr></td></tr>
@@ -10020,20 +9908,15 @@ INSERT INTO civicrm_msg_template
               <td style="padding-left:28px;text-align:right;"><font size="1">{ts}Sub Total{/ts}</font></td>
               <td style="padding-left:28px;text-align:right;"><font size="1">{$subTotal|crmMoney:$currency}</font></td>
             </tr>
-            {if !empty($dataArray)}
-              {foreach from=$dataArray item=value key=priceset}
-                <tr>
-                  <td colspan="3"></td>
-                  {if $priceset}
-                    <td style="padding-left:28px;text-align:right;"><font size="1">{if $taxTerm}{ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}{/if}</font></td>
-                    <td style="padding-left:28px;text-align:right;"><font size="1" align="right">{$value|crmMoney:$currency}</font> </td>
-                  {elseif $priceset == 0}
-                    <td style="padding-left:28px;text-align:right;"><font size="1">{if $taxTerm}{ts 1=$taxTerm}TOTAL NO %1{/ts}{/if}</font></td>
-                    <td style="padding-left:28px;text-align:right;"><font size="1" align="right">{$value|crmMoney:$currency}</font> </td>
-                  {/if}
-                </tr>
+            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+                {if $taxRate != 0}
+                  <tr>
+                    <td colspan="3"></td>
+                    <td style="padding-left:28px;text-align:right;"><font size="1">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>
+                    <td style="padding-left:28px;text-align:right;"><font size="1" align="right">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>
+                  </tr>
+                {/if}
               {/foreach}
-            {/if}
             <tr>
               <td colspan="3"></td>
               <td colspan="2"><hr></hr></td>
@@ -10113,7 +9996,7 @@ INSERT INTO civicrm_msg_template
       
       
       ('Contributions - Recurring Start and End Notification', '{ts}Recurring Contribution Notification{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {if $recur_txnType eq \'START\'}
 {if $auto_renew_membership}
@@ -10199,7 +10082,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
    </td>
   </tr>
 
@@ -10312,7 +10195,7 @@ INSERT INTO civicrm_msg_template
 </html>
 ', 'contribution_recurring_notify', @tpl_ovid_contribution_recurring_notify, 1,          0),
       ('Contributions - Recurring Start and End Notification', '{ts}Recurring Contribution Notification{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {if $recur_txnType eq \'START\'}
 {if $auto_renew_membership}
@@ -10398,7 +10281,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
    </td>
   </tr>
 
@@ -10513,7 +10396,7 @@ INSERT INTO civicrm_msg_template
       
       
       ('Contributions - Recurring Cancellation Notification', '{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}
 ', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -10538,7 +10421,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>
    </td>
   </tr>
@@ -10549,7 +10432,7 @@ INSERT INTO civicrm_msg_template
 </html>
 ', 'contribution_recurring_cancelled', @tpl_ovid_contribution_recurring_cancelled, 1,          0),
       ('Contributions - Recurring Cancellation Notification', '{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}
 ', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -10574,7 +10457,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>
    </td>
   </tr>
@@ -10587,7 +10470,7 @@ INSERT INTO civicrm_msg_template
       
       
       ('Contributions - Recurring Billing Updates', '{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}
 
@@ -10632,7 +10515,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}</p>
    </td>
   </tr>
@@ -10675,7 +10558,7 @@ INSERT INTO civicrm_msg_template
 </html>
 ', 'contribution_recurring_billing', @tpl_ovid_contribution_recurring_billing, 1,          0),
       ('Contributions - Recurring Billing Updates', '{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}
 
@@ -10720,7 +10603,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}</p>
    </td>
   </tr>
@@ -10765,7 +10648,7 @@ INSERT INTO civicrm_msg_template
       
       
       ('Contributions - Recurring Updates', '{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts}Your recurring contribution has been updated as requested:{/ts}
 
@@ -10795,7 +10678,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts}Your recurring contribution has been updated as requested:{/ts}
     <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>
 
@@ -10809,7 +10692,7 @@ INSERT INTO civicrm_msg_template
 </html>
 ', 'contribution_recurring_edit', @tpl_ovid_contribution_recurring_edit, 1,          0),
       ('Contributions - Recurring Updates', '{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts}Your recurring contribution has been updated as requested:{/ts}
 
@@ -10839,7 +10722,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts}Your recurring contribution has been updated as requested:{/ts}
     <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>
 
@@ -11295,7 +11178,7 @@ INSERT INTO civicrm_msg_template
       
       
       ('Personal Campaign Pages - Supporter Welcome', '{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1="$contribPageTitle"}Thanks for creating a personal campaign page in support of %1.{/ts}
 
@@ -11375,7 +11258,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1="$contribPageTitle"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>
    </td>
   </tr>
@@ -11452,7 +11335,7 @@ INSERT INTO civicrm_msg_template
 </html>
 ', 'pcp_supporter_notify', @tpl_ovid_pcp_supporter_notify, 1,          0),
       ('Personal Campaign Pages - Supporter Welcome', '{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1="$contribPageTitle"}Thanks for creating a personal campaign page in support of %1.{/ts}
 
@@ -11532,7 +11415,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1="$contribPageTitle"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>
    </td>
   </tr>
@@ -11615,7 +11498,7 @@ INSERT INTO civicrm_msg_template
 {ts}Personal Campaign Page Owner Notification{/ts}
 
 ===========================================================
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts}You have received a donation at your personal page{/ts}: {$page_title}
 >> {$pcpInfoURL}
@@ -11645,7 +11528,7 @@ INSERT INTO civicrm_msg_template
 {capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
 {capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
-  {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+  {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
   <p>{ts}You have received a donation at your personal page{/ts}: <a href="{$pcpInfoURL}">{$page_title}</a></p>
   <p>{ts}Your fundraising total has been updated.{/ts}<br/>
     {ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts} <br/>
@@ -11667,7 +11550,7 @@ INSERT INTO civicrm_msg_template
 {ts}Personal Campaign Page Owner Notification{/ts}
 
 ===========================================================
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts}You have received a donation at your personal page{/ts}: {$page_title}
 >> {$pcpInfoURL}
@@ -11697,7 +11580,7 @@ INSERT INTO civicrm_msg_template
 {capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
 {capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
-  {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+  {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
   <p>{ts}You have received a donation at your personal page{/ts}: <a href="{$pcpInfoURL}">{$page_title}</a></p>
   <p>{ts}Your fundraising total has been updated.{/ts}<br/>
     {ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts} <br/>
@@ -11856,7 +11739,7 @@ INSERT INTO civicrm_msg_template
   <!-- BEGIN CONTENT -->
   <tr>
     <td>
-      {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
       {if $isRefund}
         <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>
       {else}
@@ -12220,7 +12103,7 @@ INSERT INTO civicrm_msg_template
   <!-- BEGIN CONTENT -->
   <tr>
     <td>
-      {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
       {if $isRefund}
         <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>
       {else}
@@ -12446,8 +12329,8 @@ INSERT INTO civicrm_msg_template
 ', 'payment_or_refund_notification', @tpl_ovid_payment_or_refund_notification, 0,          1) ,      
       
       
-      ('Events - Registration Confirmation and Receipt (off-line)', '{ts}Event Confirmation{/ts} - {$event.title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+      ('Events - Registration Confirmation and Receipt (off-line)', '{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
 {$event.confirm_email_text}
 {/if}
@@ -12490,8 +12373,8 @@ INSERT INTO civicrm_msg_template
 
 ==========================================================={if !empty($pricesetFieldsCount) }===================={/if}
 
-{$event.event_title}
-{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+{event.title}
+{event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
 
 {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and empty($defaultRole)}
 {ts}Participant Role{/ts}: {$event.participant_role}
@@ -12762,7 +12645,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
     {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
      <p>{$event.confirm_email_text|htmlize}</p>
@@ -12794,8 +12677,8 @@ INSERT INTO civicrm_msg_template
      </tr>
      <tr>
       <td colspan="2" {$valueStyle}>
-       {$event.event_title}<br />
-       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+       {event.title}<br />
+       {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
       </td>
      </tr>
 
@@ -13258,8 +13141,8 @@ INSERT INTO civicrm_msg_template
 </body>
 </html>
 ', 'event_offline_receipt', @tpl_ovid_event_offline_receipt, 1,          0),
-      ('Events - Registration Confirmation and Receipt (off-line)', '{ts}Event Confirmation{/ts} - {$event.title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+      ('Events - Registration Confirmation and Receipt (off-line)', '{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
 {$event.confirm_email_text}
 {/if}
@@ -13302,8 +13185,8 @@ INSERT INTO civicrm_msg_template
 
 ==========================================================={if !empty($pricesetFieldsCount) }===================={/if}
 
-{$event.event_title}
-{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+{event.title}
+{event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
 
 {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and empty($defaultRole)}
 {ts}Participant Role{/ts}: {$event.participant_role}
@@ -13574,7 +13457,7 @@ INSERT INTO civicrm_msg_template
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
     {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
      <p>{$event.confirm_email_text|htmlize}</p>
@@ -13606,8 +13489,8 @@ INSERT INTO civicrm_msg_template
      </tr>
      <tr>
       <td colspan="2" {$valueStyle}>
-       {$event.event_title}<br />
-       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+       {event.title}<br />
+       {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
       </td>
      </tr>
 
@@ -14072,8 +13955,8 @@ INSERT INTO civicrm_msg_template
 ', 'event_offline_receipt', @tpl_ovid_event_offline_receipt, 0,          1) ,      
       
       
-      ('Events - Registration Confirmation and Receipt (on-line)', '{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {$event.event_title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+      ('Events - Registration Confirmation and Receipt (on-line)', '{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
 {$event.confirm_email_text}
 
@@ -14121,8 +14004,8 @@ INSERT INTO civicrm_msg_template
 
 ==========================================================={if !empty($pricesetFieldsCount)}===================={/if}
 
-{$event.event_title}
-{$event.event_start_date|crmDate:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:"%A"} {$event.event_end_date|crmDate}{/if}{/if}
+{event.title}
+{event.start_date|crmDate:"%A"} {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:"%A"} {$event.event_end_date|crmDate}{/if}{/if}
 {if !empty($conference_sessions)}
 
 
@@ -14388,7 +14271,7 @@ You were registered by: {$payer.name}
 
   <tr>
    <td>
-     {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
     {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
      <p>{$event.confirm_email_text|htmlize}</p>
@@ -14427,8 +14310,8 @@ You were registered by: {$payer.name}
      </tr>
      <tr>
       <td colspan="2" {$valueStyle}>
-       {$event.event_title}<br />
-       {$event.event_start_date|crmDate:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:"%A"} {$event.event_end_date|crmDate}{/if}{/if}
+       {event.title}<br />
+       {event.start_date|crmDate:"%A"} {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:"%A"} {$event.event_end_date|crmDate}{/if}{/if}
       </td>
      </tr>
 
@@ -14860,8 +14743,8 @@ You were registered by: {$payer.name}
 </body>
 </html>
 ', 'event_online_receipt', @tpl_ovid_event_online_receipt, 1,          0),
-      ('Events - Registration Confirmation and Receipt (on-line)', '{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {$event.event_title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+      ('Events - Registration Confirmation and Receipt (on-line)', '{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
 {$event.confirm_email_text}
 
@@ -14909,8 +14792,8 @@ You were registered by: {$payer.name}
 
 ==========================================================={if !empty($pricesetFieldsCount)}===================={/if}
 
-{$event.event_title}
-{$event.event_start_date|crmDate:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:"%A"} {$event.event_end_date|crmDate}{/if}{/if}
+{event.title}
+{event.start_date|crmDate:"%A"} {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:"%A"} {$event.event_end_date|crmDate}{/if}{/if}
 {if !empty($conference_sessions)}
 
 
@@ -15176,7 +15059,7 @@ You were registered by: {$payer.name}
 
   <tr>
    <td>
-     {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
     {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
      <p>{$event.confirm_email_text|htmlize}</p>
@@ -15215,8 +15098,8 @@ You were registered by: {$payer.name}
      </tr>
      <tr>
       <td colspan="2" {$valueStyle}>
-       {$event.event_title}<br />
-       {$event.event_start_date|crmDate:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:"%A"} {$event.event_end_date|crmDate}{/if}{/if}
+       {event.title}<br />
+       {event.start_date|crmDate:"%A"} {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:"%A"} {$event.event_end_date|crmDate}{/if}{/if}
       </td>
      </tr>
 
@@ -15651,7 +15534,7 @@ You were registered by: {$payer.name}
       
       
       ('Events - Receipt only', 'Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {if $is_pay_later}
   This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.
@@ -15743,7 +15626,7 @@ Total: {$total|crmMoney:$currency|string_format:"%10s"}
     {capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
     {capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     {if $is_pay_later}
       <p>
         This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.
@@ -15908,7 +15791,7 @@ Total: {$total|crmMoney:$currency|string_format:"%10s"}
 </html>
 ', 'event_registration_receipt', @tpl_ovid_event_registration_receipt, 1,          0),
       ('Events - Receipt only', 'Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {if $is_pay_later}
   This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.
@@ -16000,7 +15883,7 @@ Total: {$total|crmMoney:$currency|string_format:"%10s"}
     {capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
     {capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     {if $is_pay_later}
       <p>
         This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.
@@ -17443,7 +17326,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
       
       
       ('Events - Registration Transferred Notice', '{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}
 
@@ -17510,7 +17393,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>
    </td>
   </tr>
@@ -17617,7 +17500,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 </html>
 ', 'participant_transferred', @tpl_ovid_participant_transferred, 1,          0),
       ('Events - Registration Transferred Notice', '{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}
 
@@ -17684,7 +17567,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>
    </td>
   </tr>
@@ -17909,7 +17792,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 {elseif $receiptType EQ \'membership renewal\'}
 {ts}Membership Renewal Confirmation and Receipt{/ts}
 {/if} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {if $receipt_text}
 {$receipt_text}
@@ -18042,7 +17925,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 
     <tr>
       <td>
-        {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+        {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
         {if $receipt_text}
           <p>{$receipt_text|htmlize}</p>
           <p>{ts}Thank you for this contribution.{/ts}</p>
@@ -18318,7 +18201,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 {elseif $receiptType EQ \'membership renewal\'}
 {ts}Membership Renewal Confirmation and Receipt{/ts}
 {/if} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {if $receipt_text}
 {$receipt_text}
@@ -18451,7 +18334,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 
     <tr>
       <td>
-        {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+        {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
         {if $receipt_text}
           <p>{$receipt_text|htmlize}</p>
           <p>{ts}Thank you for this contribution.{/ts}</p>
@@ -18725,7 +18608,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
       
       
       ('Memberships - Receipt (on-line)', '{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 {if !empty($receipt_text)}
 {$receipt_text}
 {/if}
@@ -18988,7 +18871,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 
   <tr>
    <td>
-     {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     {if !empty($receipt_text)}
      <p>{$receipt_text|htmlize}</p>
     {/if}
@@ -19519,7 +19402,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 </html>
 ', 'membership_online_receipt', @tpl_ovid_membership_online_receipt, 1,          0),
       ('Memberships - Receipt (on-line)', '{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 {if !empty($receipt_text)}
 {$receipt_text}
 {/if}
@@ -19782,7 +19665,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 
   <tr>
    <td>
-     {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     {if !empty($receipt_text)}
      <p>{$receipt_text|htmlize}</p>
     {/if}
@@ -20315,7 +20198,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
       
       
       ('Memberships - Auto-renew Cancellation Notification', '{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}
 
@@ -20351,7 +20234,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>
 
    </td>
@@ -20399,7 +20282,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 </html>
 ', 'membership_autorenew_cancelled', @tpl_ovid_membership_autorenew_cancelled, 1,          0),
       ('Memberships - Auto-renew Cancellation Notification', '{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}
 
@@ -20435,7 +20318,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>
 
    </td>
@@ -20485,7 +20368,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
       
       
       ('Memberships - Auto-renew Billing Updates', '{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}
 
@@ -20530,7 +20413,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}</p>
    </td>
   </tr>
@@ -20574,7 +20457,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 </html>
 ', 'membership_autorenew_billing', @tpl_ovid_membership_autorenew_billing, 1,          0),
       ('Memberships - Auto-renew Billing Updates', '{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}
 
@@ -20619,7 +20502,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p>
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}</p>
    </td>
   </tr>
@@ -21481,20 +21364,20 @@ or need to modify your payment schedule.{/ts}</p>
       
       
       ('Petition - signature added', 'Thank you for signing {$petition.title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 Thank you for signing {$petition.title}.
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
 <p>Thank you for signing {$petition.title}.</p>
 
 {include file="CRM/Campaign/Page/Petition/SocialNetwork.tpl" petition_id=$survey_id noscript=true emailMode=true}
 ', 'petition_sign', @tpl_ovid_petition_sign, 1,          0),
       ('Petition - signature added', 'Thank you for signing {$petition.title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 Thank you for signing {$petition.title}.
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
 <p>Thank you for signing {$petition.title}.</p>
 
@@ -21503,7 +21386,7 @@ Thank you for signing {$petition.title}.
       
       
       ('Petition - need verification', 'Confirmation of signature needed for {$petition.title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 Thank you for signing {$petition.title}.
 
@@ -21513,7 +21396,7 @@ Please do so by visiting the following email confirmation web page:
 {$petition.confirmUrlPlainText}
 
 If you did not sign this petition, please ignore this message.
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
 <p>Thank you for signing {$petition.title}.</p>
 
@@ -21527,7 +21410,7 @@ Email confirmation page: <a href="{$petition.confirmUrl}">{$petition.confirmUrl}
 <p>If you did not sign this petition, please ignore this message.</p>
 ', 'petition_confirmation_needed', @tpl_ovid_petition_confirmation_needed, 1,          0),
       ('Petition - need verification', 'Confirmation of signature needed for {$petition.title} - {contact.display_name}
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 Thank you for signing {$petition.title}.
 
@@ -21537,7 +21420,7 @@ Please do so by visiting the following email confirmation web page:
 {$petition.confirmUrlPlainText}
 
 If you did not sign this petition, please ignore this message.
-', '{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
 <p>Thank you for signing {$petition.title}.</p>
 
@@ -21878,7 +21761,7 @@ INSERT INTO civicrm_msg_template
   																	<!-- /Spacing --><!-- content -->
   																	<tr>
   																		<td style="padding:0 15px;">
-  																		<p style="font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;">{contact.email_greeting},																		</p>
+  																		<p style="font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;">{contact.email_greeting_display},																		</p>
   																		<p style="font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;"><span class="padding-right15" style="font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;">Replace with your text and images, and remember to link the facebook and twitter links in the footer to your pages. Have fun!</span></p>
   																		</td>
   																	</tr>
@@ -23002,18 +22885,18 @@ SELECT @option_group_id_recent := max(id) from civicrm_option_group where name =
 
 INSERT INTO civicrm_option_value (`option_group_id`, label, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, description, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`)
  VALUES
-    (@option_group_id_recent, 'Contacts', 'Contact', 'Contacts', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, 'Relationships', 'Relationship', 'Relationships', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, 'Activities', 'Activity', 'Activities', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, 'Notes', 'Note', 'Notes', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, 'Groups', 'Group', 'Groups', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, 'Cases', 'Case', 'Cases', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, 'Contributions', 'Contribution', 'Contributions', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, 'Participants', 'Participant', 'Participants', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, 'Memberships', 'Membership', 'Memberships', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, 'Pledges', 'Pledge', 'Pledges', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, 'Events', 'Event', 'Events', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, 'Campaigns', 'Campaign', 'Campaigns', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL);
+    (@option_group_id_recent, 'Contacts', 'Contact', 'Contact', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, 'Relationships', 'Relationship', 'Relationship', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, 'Activities', 'Activity', 'Activity', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, 'Notes', 'Note', 'Note', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, 'Groups', 'Group', 'Group', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, 'Cases', 'Case', 'Case', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, 'Contributions', 'Contribution', 'Contribution', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, 'Participants', 'Participant', 'Participant', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, 'Memberships', 'Membership', 'Membership', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, 'Pledges', 'Pledge', 'Pledge', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, 'Events', 'Event', 'Event', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, 'Campaigns', 'Campaign', 'Campaign', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL);
 -- +--------------------------------------------------------------------+
 -- | Copyright CiviCRM LLC. All rights reserved.                        |
 -- |                                                                    |
@@ -23080,11 +22963,6 @@ VALUES
     ( @domainID, 'civicrm/pledge/search?reset=1',                           'Find Pledges',       'Find Pledges', 'access CiviPledge', '',        @searchlastID, '1', NULL, 10 ),
     ( @domainID, 'civicrm/activity/search?reset=1',                         'Find Activities',    'Find Activities', NULL,  '',                   @searchlastID, '1', '1',  11 );
 
-INSERT INTO civicrm_navigation
-    ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight )
-VALUES
-    ( @domainID, 'civicrm/contact/search/custom/list?reset=1',              'Custom Searches', 'Custom Searches', NULL, '',                 @searchlastID, '1', NULL, 12 );
-
 INSERT INTO civicrm_navigation
     ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight, icon )
 VALUES
@@ -23301,8 +23179,7 @@ VALUES
     ( @domainID, 'civicrm/admin/setting/search?reset=1',    'Search Preferences',    'Search Preferences',                'administer CiviCRM', '',   @CustomizelastID, '1', NULL, 10 ),
     ( @domainID, 'civicrm/admin/setting/preferences/date?reset=1', 'Date Preferences', 'Date Preferences', 'administer CiviCRM', '', @CustomizelastID, '1', NULL, 11 ),
     ( @domainID, 'civicrm/admin/menu?reset=1',              'Navigation Menu', 'Navigation Menu',                         'administer CiviCRM', '',   @CustomizelastID, '1', NULL, 12 ),
-    ( @domainID, 'civicrm/admin/options/wordreplacements?reset=1','Word Replacements','Word Replacements',                'administer CiviCRM', '',   @CustomizelastID, '1', NULL, 13 ),
-    ( @domainID, 'civicrm/admin/options/custom_search?reset=1', 'Manage Custom Searches', 'Manage Custom Searches', 'administer CiviCRM', '', @CustomizelastID, '1', NULL, 14 );
+    ( @domainID, 'civicrm/admin/options/wordreplacements?reset=1','Word Replacements','Word Replacements',                'administer CiviCRM', '',   @CustomizelastID, '1', NULL, 13 );
 
 INSERT INTO civicrm_navigation
     ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight )
@@ -23775,4 +23652,4 @@ INSERT INTO `civicrm_report_instance`
     ( `domain_id`, `title`, `report_id`, `description`, `permission`, `form_values`)
 VALUES
     (  @domainID, 'Survey Details', 'survey/detail', 'Detailed report for canvassing, phone-banking, walk lists or other surveys.', 'access CiviReport', 'a:39:{s:6:"fields";a:2:{s:9:"sort_name";s:1:"1";s:6:"result";s:1:"1";}s:22:"assignee_contact_id_op";s:2:"eq";s:25:"assignee_contact_id_value";s:0:"";s:12:"sort_name_op";s:3:"has";s:15:"sort_name_value";s:0:"";s:17:"street_number_min";s:0:"";s:17:"street_number_max";s:0:"";s:16:"street_number_op";s:3:"lte";s:19:"street_number_value";s:0:"";s:14:"street_name_op";s:3:"has";s:17:"street_name_value";s:0:"";s:15:"postal_code_min";s:0:"";s:15:"postal_code_max";s:0:"";s:14:"postal_code_op";s:3:"lte";s:17:"postal_code_value";s:0:"";s:7:"city_op";s:3:"has";s:10:"city_value";s:0:"";s:20:"state_province_id_op";s:2:"in";s:23:"state_province_id_value";a:0:{}s:13:"country_id_op";s:2:"in";s:16:"country_id_value";a:0:{}s:12:"survey_id_op";s:2:"in";s:15:"survey_id_value";a:0:{}s:12:"status_id_op";s:2:"eq";s:15:"status_id_value";s:1:"1";s:11:"custom_1_op";s:2:"in";s:14:"custom_1_value";a:0:{}s:11:"custom_2_op";s:2:"in";s:14:"custom_2_value";a:0:{}s:17:"custom_3_relative";s:1:"0";s:13:"custom_3_from";s:0:"";s:11:"custom_3_to";s:0:"";s:11:"description";s:75:"Detailed report for canvassing, phone-banking, walk lists or other surveys.";s:13:"email_subject";s:0:"";s:8:"email_to";s:0:"";s:8:"email_cc";s:0:"";s:10:"permission";s:17:"access CiviReport";s:6:"groups";s:0:"";s:9:"domain_id";i:1;}');
-UPDATE civicrm_domain SET version = '5.53.0';
+UPDATE civicrm_domain SET version = '5.54.0';
diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql
index 06bb2ada8ec833fc243f0f8c7cba2a7026db15f5..b109708dfd876f85f66638bda91d558510313c96 100644
--- a/civicrm/sql/civicrm_generated.mysql
+++ b/civicrm/sql/civicrm_generated.mysql
@@ -1,15 +1,16 @@
--- MariaDB dump 10.19  Distrib 10.6.7-MariaDB, for debian-linux-gnu (x86_64)
+-- MySQL dump 10.13  Distrib 8.0.30, for Linux (x86_64)
 --
--- Host: 127.0.0.1    Database: dmastercivi_d2lsd
+-- Host: 127.0.0.1    Database: db
 -- ------------------------------------------------------
--- Server version	10.6.7-MariaDB-2ubuntu1
+-- Server version	8.0.30
 
 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8mb4 */;
+/*!50503 SET NAMES utf8mb4 */;
 /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
 /*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
 /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
 /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
 /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
@@ -161,647 +162,647 @@ 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,9,'Subject for Tell a Friend','2021-12-04 01:46:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (2,NULL,10,'Subject for Pledge Acknowledgment','2022-02-27 06:06:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (3,NULL,9,'Subject for Tell a Friend','2022-01-14 07:21:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (4,NULL,10,'Subject for Pledge Acknowledgment','2021-08-15 07:02:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (5,NULL,10,'Subject for Pledge Acknowledgment','2021-10-15 22:23:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (6,NULL,9,'Subject for Tell a Friend','2022-03-25 01:25:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (7,NULL,9,'Subject for Tell a Friend','2022-05-11 10:22:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (8,NULL,10,'Subject for Pledge Acknowledgment','2021-09-13 01:14:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (9,NULL,10,'Subject for Pledge Acknowledgment','2022-04-21 17:08:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (10,NULL,10,'Subject for Pledge Acknowledgment','2021-11-10 04:21:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (11,NULL,10,'Subject for Pledge Acknowledgment','2021-08-31 20:51:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (12,NULL,9,'Subject for Tell a Friend','2021-09-27 08:37:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (13,NULL,9,'Subject for Tell a Friend','2022-03-01 10:56:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (14,NULL,9,'Subject for Tell a Friend','2022-07-25 12:03:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (15,NULL,10,'Subject for Pledge Acknowledgment','2021-09-11 18:36:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (16,NULL,9,'Subject for Tell a Friend','2022-05-08 00:19:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (17,NULL,10,'Subject for Pledge Acknowledgment','2022-04-10 14:22:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (18,NULL,9,'Subject for Tell a Friend','2021-12-06 03:07:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (19,NULL,10,'Subject for Pledge Acknowledgment','2021-11-11 08:44:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (20,NULL,9,'Subject for Tell a Friend','2022-03-12 20:44:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (21,NULL,10,'Subject for Pledge Acknowledgment','2022-01-27 01:28:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (22,NULL,9,'Subject for Tell a Friend','2021-12-04 06:29:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (23,NULL,9,'Subject for Tell a Friend','2022-01-07 01:24:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (24,NULL,9,'Subject for Tell a Friend','2022-04-25 19:47:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (25,NULL,10,'Subject for Pledge Acknowledgment','2022-07-26 15:31:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (26,NULL,10,'Subject for Pledge Acknowledgment','2021-11-18 16:33:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (27,NULL,9,'Subject for Tell a Friend','2022-06-25 00:26:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (28,NULL,10,'Subject for Pledge Acknowledgment','2021-09-26 00:29:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (29,NULL,10,'Subject for Pledge Acknowledgment','2021-12-25 03:54:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (30,NULL,10,'Subject for Pledge Acknowledgment','2022-07-30 19:54:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (31,NULL,10,'Subject for Pledge Acknowledgment','2021-11-11 07:48:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (32,NULL,10,'Subject for Pledge Acknowledgment','2021-09-09 11:02:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (33,NULL,10,'Subject for Pledge Acknowledgment','2021-11-20 06:30:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (34,NULL,10,'Subject for Pledge Acknowledgment','2022-05-11 18:55:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (35,NULL,10,'Subject for Pledge Acknowledgment','2022-01-02 23:15:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (36,NULL,10,'Subject for Pledge Acknowledgment','2022-05-24 18:29:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (37,NULL,10,'Subject for Pledge Acknowledgment','2021-09-17 06:23:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (38,NULL,10,'Subject for Pledge Acknowledgment','2021-09-20 15:54:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (39,NULL,9,'Subject for Tell a Friend','2022-03-25 22:28:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (40,NULL,10,'Subject for Pledge Acknowledgment','2022-02-25 23:00:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (41,NULL,10,'Subject for Pledge Acknowledgment','2021-11-19 19:40:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (42,NULL,10,'Subject for Pledge Acknowledgment','2021-11-08 16:32:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (43,NULL,10,'Subject for Pledge Acknowledgment','2021-11-26 12:50:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (44,NULL,9,'Subject for Tell a Friend','2022-05-22 09:39:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (45,NULL,10,'Subject for Pledge Acknowledgment','2022-04-11 12:11:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (46,NULL,10,'Subject for Pledge Acknowledgment','2022-05-24 09:15:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (47,NULL,10,'Subject for Pledge Acknowledgment','2022-01-22 17:24:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (48,NULL,9,'Subject for Tell a Friend','2022-07-31 01:30:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (49,NULL,10,'Subject for Pledge Acknowledgment','2022-05-28 11:28:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (50,NULL,9,'Subject for Tell a Friend','2022-02-10 21:51:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (51,NULL,9,'Subject for Tell a Friend','2021-12-22 17:26:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (52,NULL,10,'Subject for Pledge Acknowledgment','2022-04-05 09:59:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (53,NULL,9,'Subject for Tell a Friend','2022-07-21 05:31:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (54,NULL,9,'Subject for Tell a Friend','2021-11-07 11:42:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (55,NULL,10,'Subject for Pledge Acknowledgment','2022-05-05 09:21:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (56,NULL,9,'Subject for Tell a Friend','2022-05-24 11:10:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (57,NULL,10,'Subject for Pledge Acknowledgment','2022-05-08 08:27:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (58,NULL,9,'Subject for Tell a Friend','2022-01-06 15:34:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (59,NULL,9,'Subject for Tell a Friend','2021-08-31 21:15:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (60,NULL,9,'Subject for Tell a Friend','2022-03-26 20:59:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (61,NULL,9,'Subject for Tell a Friend','2021-10-30 17:46:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (62,NULL,10,'Subject for Pledge Acknowledgment','2022-04-27 13:52:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (63,NULL,9,'Subject for Tell a Friend','2021-10-03 12:31:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (64,NULL,10,'Subject for Pledge Acknowledgment','2021-08-31 17:45:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (65,NULL,9,'Subject for Tell a Friend','2021-11-29 00:02:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (66,NULL,10,'Subject for Pledge Acknowledgment','2021-10-28 10:24:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (67,NULL,9,'Subject for Tell a Friend','2022-01-31 18:14:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (68,NULL,9,'Subject for Tell a Friend','2022-03-05 22:57:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (69,NULL,9,'Subject for Tell a Friend','2021-08-14 16:59:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (70,NULL,10,'Subject for Pledge Acknowledgment','2021-09-24 18:33:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (71,NULL,10,'Subject for Pledge Acknowledgment','2021-08-16 01:32:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (72,NULL,10,'Subject for Pledge Acknowledgment','2021-12-04 16:31:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (73,NULL,10,'Subject for Pledge Acknowledgment','2022-08-09 07:52:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (74,NULL,10,'Subject for Pledge Acknowledgment','2021-09-11 18:19:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (75,NULL,10,'Subject for Pledge Acknowledgment','2021-10-18 04:06:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (76,NULL,10,'Subject for Pledge Acknowledgment','2022-07-10 18:19:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (77,NULL,9,'Subject for Tell a Friend','2022-04-19 06:04:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (78,NULL,9,'Subject for Tell a Friend','2022-02-10 09:26:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (79,NULL,9,'Subject for Tell a Friend','2021-10-15 00:41:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (80,NULL,10,'Subject for Pledge Acknowledgment','2022-03-20 03:08:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (81,NULL,10,'Subject for Pledge Acknowledgment','2022-02-09 02:32:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (82,NULL,10,'Subject for Pledge Acknowledgment','2021-11-10 10:38:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (83,NULL,10,'Subject for Pledge Acknowledgment','2021-11-16 13:05:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (84,NULL,10,'Subject for Pledge Acknowledgment','2021-12-07 12:38:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (85,NULL,10,'Subject for Pledge Acknowledgment','2021-11-14 18:46:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (86,NULL,10,'Subject for Pledge Acknowledgment','2022-04-25 23:18:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:33','2022-08-09 18:17:33'),
- (87,NULL,10,'Subject for Pledge Acknowledgment','2022-04-26 00:55:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (88,NULL,10,'Subject for Pledge Acknowledgment','2022-06-19 11:31:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (89,NULL,9,'Subject for Tell a Friend','2022-03-20 13:41:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (90,NULL,9,'Subject for Tell a Friend','2022-03-28 12:53:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (91,NULL,9,'Subject for Tell a Friend','2021-08-30 15:20:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (92,NULL,10,'Subject for Pledge Acknowledgment','2021-11-06 20:54:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (93,NULL,10,'Subject for Pledge Acknowledgment','2022-06-02 04:06:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (94,NULL,9,'Subject for Tell a Friend','2021-09-06 07:34:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (95,NULL,10,'Subject for Pledge Acknowledgment','2021-09-04 04:00:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (96,NULL,9,'Subject for Tell a Friend','2022-07-24 00:13:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (97,NULL,10,'Subject for Pledge Acknowledgment','2021-12-28 22:06:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (98,NULL,9,'Subject for Tell a Friend','2022-02-12 19:43:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (99,NULL,10,'Subject for Pledge Acknowledgment','2021-10-24 13:05:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (100,NULL,9,'Subject for Tell a Friend','2022-06-09 14:35:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (101,NULL,10,'Subject for Pledge Acknowledgment','2022-03-15 09:39:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (102,NULL,10,'Subject for Pledge Acknowledgment','2022-07-21 01:41:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (103,NULL,10,'Subject for Pledge Acknowledgment','2022-03-14 04:50:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (104,NULL,10,'Subject for Pledge Acknowledgment','2022-05-17 15:40:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (105,NULL,10,'Subject for Pledge Acknowledgment','2021-09-20 18:08:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (106,NULL,9,'Subject for Tell a Friend','2022-05-28 05:47:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (107,NULL,9,'Subject for Tell a Friend','2021-11-11 08:56:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (108,NULL,10,'Subject for Pledge Acknowledgment','2022-02-20 13:23:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (109,NULL,9,'Subject for Tell a Friend','2022-02-26 11:46:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (110,NULL,9,'Subject for Tell a Friend','2022-07-27 14:55:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (111,NULL,9,'Subject for Tell a Friend','2022-06-25 23:01:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (112,NULL,9,'Subject for Tell a Friend','2022-03-19 06:28:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (113,NULL,9,'Subject for Tell a Friend','2022-01-06 05:04:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (114,NULL,9,'Subject for Tell a Friend','2022-05-16 17:27:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (115,NULL,9,'Subject for Tell a Friend','2021-08-17 09:51:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (116,NULL,10,'Subject for Pledge Acknowledgment','2021-08-11 06:55:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (117,NULL,10,'Subject for Pledge Acknowledgment','2021-08-16 16:54:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (118,NULL,9,'Subject for Tell a Friend','2022-02-09 10:27:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (119,NULL,9,'Subject for Tell a Friend','2021-10-22 01:32:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (120,NULL,9,'Subject for Tell a Friend','2022-02-21 09:38:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (121,NULL,10,'Subject for Pledge Acknowledgment','2022-04-26 17:48:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (122,NULL,9,'Subject for Tell a Friend','2022-01-11 02:47:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (123,NULL,10,'Subject for Pledge Acknowledgment','2022-06-22 13:48:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (124,NULL,9,'Subject for Tell a Friend','2022-07-04 14:21:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (125,NULL,10,'Subject for Pledge Acknowledgment','2022-03-05 21:36:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (126,NULL,9,'Subject for Tell a Friend','2022-08-07 21:45:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (127,NULL,9,'Subject for Tell a Friend','2021-08-10 03:38:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (128,NULL,10,'Subject for Pledge Acknowledgment','2022-02-08 21:17:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (129,NULL,10,'Subject for Pledge Acknowledgment','2021-08-29 22:28:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (130,NULL,9,'Subject for Tell a Friend','2022-05-23 22:57:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (131,NULL,9,'Subject for Tell a Friend','2021-09-14 16:01:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (132,NULL,10,'Subject for Pledge Acknowledgment','2022-02-28 02:35:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (133,NULL,10,'Subject for Pledge Acknowledgment','2022-03-23 14:17:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (134,NULL,9,'Subject for Tell a Friend','2022-03-02 11:30:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (135,NULL,10,'Subject for Pledge Acknowledgment','2022-05-27 03:57:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (136,NULL,9,'Subject for Tell a Friend','2022-04-27 11:50:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (137,NULL,10,'Subject for Pledge Acknowledgment','2021-11-15 03:27:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (138,NULL,10,'Subject for Pledge Acknowledgment','2022-04-28 03:26:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (139,NULL,9,'Subject for Tell a Friend','2021-10-20 22:01:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (140,NULL,9,'Subject for Tell a Friend','2022-04-17 05:55:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (141,NULL,10,'Subject for Pledge Acknowledgment','2022-03-26 01:46:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (142,NULL,9,'Subject for Tell a Friend','2021-10-13 03:50:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (143,NULL,10,'Subject for Pledge Acknowledgment','2021-09-27 02:04:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (144,NULL,10,'Subject for Pledge Acknowledgment','2021-12-10 02:40:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (145,NULL,10,'Subject for Pledge Acknowledgment','2021-11-27 05:20:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (146,NULL,9,'Subject for Tell a Friend','2021-11-06 01:23:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (147,NULL,10,'Subject for Pledge Acknowledgment','2021-12-15 06:58:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (148,NULL,10,'Subject for Pledge Acknowledgment','2022-03-01 14:37:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (149,NULL,10,'Subject for Pledge Acknowledgment','2022-01-02 15:56:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (150,NULL,9,'Subject for Tell a Friend','2021-11-28 22:15:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (151,NULL,9,'Subject for Tell a Friend','2021-11-28 12:51:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (152,NULL,9,'Subject for Tell a Friend','2021-10-24 04:36:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (153,NULL,9,'Subject for Tell a Friend','2022-03-14 01:28:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (154,NULL,9,'Subject for Tell a Friend','2022-01-01 18:41:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (155,NULL,9,'Subject for Tell a Friend','2022-05-17 21:16:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (156,NULL,10,'Subject for Pledge Acknowledgment','2021-12-15 23:11:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (157,NULL,10,'Subject for Pledge Acknowledgment','2021-11-12 02:59:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (158,NULL,9,'Subject for Tell a Friend','2022-04-14 07:46:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (159,NULL,9,'Subject for Tell a Friend','2022-07-08 17:15:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (160,NULL,9,'Subject for Tell a Friend','2022-01-26 21:29:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (161,NULL,10,'Subject for Pledge Acknowledgment','2022-01-20 20:21:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (162,NULL,10,'Subject for Pledge Acknowledgment','2022-03-07 20:26:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (163,NULL,10,'Subject for Pledge Acknowledgment','2022-04-07 04:49:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (164,NULL,10,'Subject for Pledge Acknowledgment','2022-04-06 07:15:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (165,NULL,10,'Subject for Pledge Acknowledgment','2022-08-01 20:18:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (166,NULL,10,'Subject for Pledge Acknowledgment','2022-03-08 19:53:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (167,NULL,9,'Subject for Tell a Friend','2022-03-29 20:23:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (168,NULL,10,'Subject for Pledge Acknowledgment','2022-03-13 21:44:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (169,NULL,9,'Subject for Tell a Friend','2021-11-01 02:06:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (170,NULL,9,'Subject for Tell a Friend','2021-09-10 08:36:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (171,NULL,9,'Subject for Tell a Friend','2022-03-20 15:36:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (172,NULL,10,'Subject for Pledge Acknowledgment','2021-09-21 18:17:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (173,NULL,9,'Subject for Tell a Friend','2021-10-29 03:04:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (174,NULL,10,'Subject for Pledge Acknowledgment','2022-07-01 09:50:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (175,NULL,10,'Subject for Pledge Acknowledgment','2022-03-09 01:47:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (176,NULL,10,'Subject for Pledge Acknowledgment','2021-11-09 21:42:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (177,NULL,9,'Subject for Tell a Friend','2022-05-04 10:28:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (178,NULL,9,'Subject for Tell a Friend','2022-01-06 01:18:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (179,NULL,10,'Subject for Pledge Acknowledgment','2021-10-12 09:21:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (180,NULL,10,'Subject for Pledge Acknowledgment','2021-11-14 18:06:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (181,NULL,10,'Subject for Pledge Acknowledgment','2022-07-20 20:38:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (182,NULL,9,'Subject for Tell a Friend','2022-03-11 12:29:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (183,NULL,10,'Subject for Pledge Acknowledgment','2022-01-25 08:49:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (184,NULL,10,'Subject for Pledge Acknowledgment','2022-07-06 23:11:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (185,NULL,9,'Subject for Tell a Friend','2022-07-18 02:16:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (186,NULL,10,'Subject for Pledge Acknowledgment','2021-08-29 01:56:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (187,NULL,10,'Subject for Pledge Acknowledgment','2022-08-01 19:50:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (188,NULL,9,'Subject for Tell a Friend','2021-09-15 19:07:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (189,NULL,9,'Subject for Tell a Friend','2022-02-23 15:59:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (190,NULL,10,'Subject for Pledge Acknowledgment','2021-12-21 20:12:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (191,NULL,10,'Subject for Pledge Acknowledgment','2022-01-27 07:47:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (192,NULL,10,'Subject for Pledge Acknowledgment','2021-11-29 00:44:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (193,NULL,9,'Subject for Tell a Friend','2022-05-03 06:10:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (194,NULL,9,'Subject for Tell a Friend','2021-12-16 08:59:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (195,NULL,9,'Subject for Tell a Friend','2021-09-07 14:40:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (196,NULL,9,'Subject for Tell a Friend','2022-06-17 10:55:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (197,NULL,10,'Subject for Pledge Acknowledgment','2022-07-07 15:23:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (198,NULL,10,'Subject for Pledge Acknowledgment','2022-07-30 20:30:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (199,NULL,10,'Subject for Pledge Acknowledgment','2022-03-02 14:46:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (200,NULL,9,'Subject for Tell a Friend','2022-07-16 22:27:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (201,NULL,9,'Subject for Tell a Friend','2022-08-08 02:58:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (202,NULL,9,'Subject for Tell a Friend','2022-03-20 07:28:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (203,NULL,10,'Subject for Pledge Acknowledgment','2022-01-10 05:20:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (204,NULL,10,'Subject for Pledge Acknowledgment','2022-01-23 15:23:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (205,NULL,9,'Subject for Tell a Friend','2022-01-21 05:15:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (206,NULL,10,'Subject for Pledge Acknowledgment','2022-07-27 23:08:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (207,NULL,10,'Subject for Pledge Acknowledgment','2022-05-21 20:21:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (208,NULL,10,'Subject for Pledge Acknowledgment','2022-07-02 04:42:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (209,NULL,10,'Subject for Pledge Acknowledgment','2022-05-21 13:01:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (210,NULL,9,'Subject for Tell a Friend','2022-06-16 17:00:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (211,NULL,9,'Subject for Tell a Friend','2022-01-08 00:45:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (212,NULL,10,'Subject for Pledge Acknowledgment','2022-08-06 16:24:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (213,NULL,9,'Subject for Tell a Friend','2021-11-04 08:01:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (214,NULL,10,'Subject for Pledge Acknowledgment','2022-02-15 16:25:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (215,NULL,10,'Subject for Pledge Acknowledgment','2022-07-05 20:39:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (216,NULL,10,'Subject for Pledge Acknowledgment','2022-02-15 16:14:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (217,NULL,10,'Subject for Pledge Acknowledgment','2022-07-24 19:52:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (218,NULL,9,'Subject for Tell a Friend','2021-10-19 12:38:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (219,NULL,9,'Subject for Tell a Friend','2022-06-18 06:54:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (220,NULL,10,'Subject for Pledge Acknowledgment','2021-11-12 07:44:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (221,NULL,10,'Subject for Pledge Acknowledgment','2022-06-28 10:41:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (222,NULL,9,'Subject for Tell a Friend','2022-06-10 01:32:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (223,NULL,9,'Subject for Tell a Friend','2022-04-10 15:52:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (224,NULL,10,'Subject for Pledge Acknowledgment','2022-04-30 06:39:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (225,NULL,9,'Subject for Tell a Friend','2021-12-10 13:59:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (226,NULL,10,'Subject for Pledge Acknowledgment','2021-12-11 00:08:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (227,NULL,9,'Subject for Tell a Friend','2022-03-25 20:35:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (228,NULL,10,'Subject for Pledge Acknowledgment','2021-10-29 16:03:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (229,NULL,10,'Subject for Pledge Acknowledgment','2021-08-16 12:14:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (230,NULL,10,'Subject for Pledge Acknowledgment','2021-09-26 00:33:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:34','2022-08-09 18:17:34'),
- (231,NULL,9,'Subject for Tell a Friend','2021-08-26 16:22:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (232,NULL,10,'Subject for Pledge Acknowledgment','2022-06-30 03:13:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (233,NULL,10,'Subject for Pledge Acknowledgment','2022-07-01 14:46:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (234,NULL,10,'Subject for Pledge Acknowledgment','2022-02-23 20:29:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (235,NULL,10,'Subject for Pledge Acknowledgment','2022-07-05 23:23:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (236,NULL,9,'Subject for Tell a Friend','2022-07-26 00:19:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (237,NULL,9,'Subject for Tell a Friend','2021-11-19 20:35:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (238,NULL,9,'Subject for Tell a Friend','2022-03-17 00:28:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (239,NULL,10,'Subject for Pledge Acknowledgment','2022-06-09 07:55:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (240,NULL,10,'Subject for Pledge Acknowledgment','2022-01-05 23:27:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (241,NULL,9,'Subject for Tell a Friend','2021-11-09 21:26:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (242,NULL,9,'Subject for Tell a Friend','2021-10-16 14:49:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (243,NULL,9,'Subject for Tell a Friend','2021-10-02 00:07:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (244,NULL,10,'Subject for Pledge Acknowledgment','2021-11-24 15:03:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (245,NULL,10,'Subject for Pledge Acknowledgment','2022-01-14 14:01:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (246,NULL,10,'Subject for Pledge Acknowledgment','2022-05-09 15:16:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (247,NULL,10,'Subject for Pledge Acknowledgment','2021-11-23 03:38:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (248,NULL,9,'Subject for Tell a Friend','2022-07-16 06:32:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (249,NULL,9,'Subject for Tell a Friend','2021-08-30 17:47:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (250,NULL,10,'Subject for Pledge Acknowledgment','2022-01-25 09:54:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (251,NULL,9,'Subject for Tell a Friend','2022-06-13 07:37:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (252,NULL,10,'Subject for Pledge Acknowledgment','2022-05-30 19:08:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (253,NULL,10,'Subject for Pledge Acknowledgment','2022-07-19 07:23:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (254,NULL,10,'Subject for Pledge Acknowledgment','2022-05-17 04:32:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (255,NULL,10,'Subject for Pledge Acknowledgment','2021-08-17 18:06:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (256,NULL,10,'Subject for Pledge Acknowledgment','2021-12-23 10:52:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (257,NULL,10,'Subject for Pledge Acknowledgment','2021-12-17 17:20:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (258,NULL,10,'Subject for Pledge Acknowledgment','2022-04-20 20:06:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (259,NULL,10,'Subject for Pledge Acknowledgment','2021-12-29 01:26:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (260,NULL,10,'Subject for Pledge Acknowledgment','2021-12-03 09:09:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (261,NULL,9,'Subject for Tell a Friend','2021-09-23 08:31:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (262,NULL,10,'Subject for Pledge Acknowledgment','2022-07-20 13:53:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (263,NULL,9,'Subject for Tell a Friend','2022-06-17 08:31:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (264,NULL,10,'Subject for Pledge Acknowledgment','2022-08-04 10:11:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (265,NULL,10,'Subject for Pledge Acknowledgment','2021-10-12 01:32:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (266,NULL,10,'Subject for Pledge Acknowledgment','2022-06-08 05:34:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (267,NULL,10,'Subject for Pledge Acknowledgment','2022-07-24 15:10:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (268,NULL,9,'Subject for Tell a Friend','2022-06-21 22:01:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (269,NULL,10,'Subject for Pledge Acknowledgment','2021-08-17 10:19:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (270,NULL,10,'Subject for Pledge Acknowledgment','2022-04-13 01:35:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (271,NULL,10,'Subject for Pledge Acknowledgment','2022-08-05 05:31:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (272,NULL,9,'Subject for Tell a Friend','2021-09-09 16:37:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (273,NULL,10,'Subject for Pledge Acknowledgment','2021-10-05 03:25:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (274,NULL,9,'Subject for Tell a Friend','2021-09-24 05:42:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (275,NULL,10,'Subject for Pledge Acknowledgment','2021-10-02 05:48:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (276,NULL,10,'Subject for Pledge Acknowledgment','2021-12-21 15:39:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (277,NULL,10,'Subject for Pledge Acknowledgment','2022-02-25 10:35:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (278,NULL,10,'Subject for Pledge Acknowledgment','2021-09-29 00:58:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (279,NULL,10,'Subject for Pledge Acknowledgment','2022-03-02 12:48:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (280,NULL,10,'Subject for Pledge Acknowledgment','2021-12-04 10:05:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (281,NULL,9,'Subject for Tell a Friend','2022-05-22 08:27:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (282,NULL,10,'Subject for Pledge Acknowledgment','2021-11-09 23:02:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (283,NULL,9,'Subject for Tell a Friend','2022-01-15 17:09:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (284,NULL,9,'Subject for Tell a Friend','2022-07-12 21:02:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (285,NULL,9,'Subject for Tell a Friend','2021-09-15 11:33:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (286,NULL,10,'Subject for Pledge Acknowledgment','2022-05-12 21:55:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (287,NULL,9,'Subject for Tell a Friend','2022-04-03 05:57:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (288,NULL,10,'Subject for Pledge Acknowledgment','2021-11-03 09:11:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (289,NULL,10,'Subject for Pledge Acknowledgment','2021-11-27 02:33:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (290,NULL,9,'Subject for Tell a Friend','2022-03-07 16:09:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (291,NULL,10,'Subject for Pledge Acknowledgment','2021-11-18 02:13:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (292,NULL,9,'Subject for Tell a Friend','2022-06-26 23:55:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (293,NULL,10,'Subject for Pledge Acknowledgment','2022-07-14 18:57:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (294,NULL,9,'Subject for Tell a Friend','2022-07-19 00:35:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (295,NULL,9,'Subject for Tell a Friend','2022-03-26 04:41:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (296,NULL,10,'Subject for Pledge Acknowledgment','2022-07-04 20:28:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (297,NULL,10,'Subject for Pledge Acknowledgment','2022-06-26 20:57:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (298,NULL,10,'Subject for Pledge Acknowledgment','2022-01-09 05:18:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (299,NULL,10,'Subject for Pledge Acknowledgment','2022-02-11 02:24:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (300,NULL,9,'Subject for Tell a Friend','2022-08-03 11:11:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (301,NULL,10,'Subject for Pledge Acknowledgment','2022-01-04 00:11:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (302,NULL,9,'Subject for Tell a Friend','2022-06-30 09:44:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (303,NULL,10,'Subject for Pledge Acknowledgment','2022-04-18 19:55:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (304,NULL,9,'Subject for Tell a Friend','2021-12-10 13:15:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (305,NULL,9,'Subject for Tell a Friend','2022-05-10 12:26:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (306,NULL,9,'Subject for Tell a Friend','2022-06-24 01:02:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (307,NULL,10,'Subject for Pledge Acknowledgment','2022-08-05 20:01:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (308,NULL,10,'Subject for Pledge Acknowledgment','2022-04-20 07:52:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (309,NULL,10,'Subject for Pledge Acknowledgment','2022-05-21 14:01:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (310,NULL,10,'Subject for Pledge Acknowledgment','2021-11-16 03:20:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (311,NULL,10,'Subject for Pledge Acknowledgment','2022-08-05 18:13:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (312,NULL,10,'Subject for Pledge Acknowledgment','2021-09-26 09:25:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (313,NULL,9,'Subject for Tell a Friend','2022-04-12 15:05:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (314,NULL,9,'Subject for Tell a Friend','2021-11-10 02:16:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (315,NULL,9,'Subject for Tell a Friend','2021-12-05 13:20:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (316,NULL,10,'Subject for Pledge Acknowledgment','2021-10-04 07:50:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (317,NULL,10,'Subject for Pledge Acknowledgment','2022-02-12 05:17:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (318,NULL,9,'Subject for Tell a Friend','2022-06-19 19:54:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (319,NULL,9,'Subject for Tell a Friend','2022-05-15 18:47:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (320,NULL,9,'Subject for Tell a Friend','2021-12-11 22:18:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (321,NULL,9,'Subject for Tell a Friend','2022-02-01 05:28:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (322,NULL,10,'Subject for Pledge Acknowledgment','2021-11-04 23:09:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (323,NULL,10,'Subject for Pledge Acknowledgment','2022-06-01 21:08:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (324,NULL,9,'Subject for Tell a Friend','2022-03-03 06:02:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (325,NULL,10,'Subject for Pledge Acknowledgment','2021-09-25 15:19:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (326,NULL,10,'Subject for Pledge Acknowledgment','2021-10-09 01:28:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (327,NULL,9,'Subject for Tell a Friend','2021-10-25 06:53:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (328,NULL,10,'Subject for Pledge Acknowledgment','2022-05-06 06:00:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (329,NULL,9,'Subject for Tell a Friend','2021-11-20 23:47:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (330,NULL,9,'Subject for Tell a Friend','2021-12-07 19:56:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (331,NULL,9,'Subject for Tell a Friend','2022-02-15 16:29:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (332,NULL,9,'Subject for Tell a Friend','2022-01-04 02:16:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (333,NULL,9,'Subject for Tell a Friend','2022-01-08 02:29:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (334,NULL,10,'Subject for Pledge Acknowledgment','2022-03-05 21:33:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (335,NULL,10,'Subject for Pledge Acknowledgment','2022-01-01 11:01:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (336,NULL,9,'Subject for Tell a Friend','2022-01-16 23:21:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (337,NULL,10,'Subject for Pledge Acknowledgment','2021-09-19 10:53:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (338,NULL,9,'Subject for Tell a Friend','2022-05-26 02:41:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (339,NULL,10,'Subject for Pledge Acknowledgment','2021-08-16 13:39:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (340,NULL,9,'Subject for Tell a Friend','2022-07-20 09:19:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (341,NULL,9,'Subject for Tell a Friend','2021-10-03 04:18:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (342,NULL,10,'Subject for Pledge Acknowledgment','2021-09-27 03:39:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (343,NULL,9,'Subject for Tell a Friend','2022-07-05 11:11:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (344,NULL,10,'Subject for Pledge Acknowledgment','2022-04-17 16:40:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (345,NULL,10,'Subject for Pledge Acknowledgment','2022-05-29 05:49:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (346,NULL,9,'Subject for Tell a Friend','2022-01-30 22:31:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (347,NULL,9,'Subject for Tell a Friend','2021-09-28 17:00:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (348,NULL,9,'Subject for Tell a Friend','2022-03-13 05:52:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (349,NULL,9,'Subject for Tell a Friend','2021-10-26 08:45:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (350,NULL,10,'Subject for Pledge Acknowledgment','2021-08-13 16:50:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (351,NULL,9,'Subject for Tell a Friend','2021-10-04 10:07:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (352,NULL,10,'Subject for Pledge Acknowledgment','2022-01-01 17:18:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (353,NULL,9,'Subject for Tell a Friend','2021-08-26 00:50:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (354,NULL,9,'Subject for Tell a Friend','2021-10-09 12:40:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (355,NULL,9,'Subject for Tell a Friend','2022-04-06 08:18:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (356,NULL,9,'Subject for Tell a Friend','2022-02-27 23:01:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (357,NULL,10,'Subject for Pledge Acknowledgment','2021-11-01 08:02:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (358,NULL,10,'Subject for Pledge Acknowledgment','2021-12-13 16:47:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (359,NULL,9,'Subject for Tell a Friend','2022-03-07 21:10:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (360,NULL,9,'Subject for Tell a Friend','2021-12-01 06:54:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (361,NULL,10,'Subject for Pledge Acknowledgment','2022-02-12 23:43:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (362,NULL,10,'Subject for Pledge Acknowledgment','2021-11-27 02:35:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (363,NULL,10,'Subject for Pledge Acknowledgment','2022-07-26 13:12:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (364,NULL,9,'Subject for Tell a Friend','2021-11-05 10:06:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (365,NULL,9,'Subject for Tell a Friend','2022-04-03 04:04:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (366,NULL,9,'Subject for Tell a Friend','2021-09-21 20:33:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (367,NULL,10,'Subject for Pledge Acknowledgment','2022-01-04 09:15:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (368,NULL,9,'Subject for Tell a Friend','2022-02-02 22:37:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (369,NULL,10,'Subject for Pledge Acknowledgment','2021-08-11 09:55:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:35','2022-08-09 18:17:35'),
- (370,NULL,9,'Subject for Tell a Friend','2022-06-23 21:17:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (371,NULL,9,'Subject for Tell a Friend','2022-07-07 15:50:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (372,NULL,10,'Subject for Pledge Acknowledgment','2022-06-22 05:07:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (373,NULL,9,'Subject for Tell a Friend','2022-02-22 21:52:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (374,NULL,9,'Subject for Tell a Friend','2021-08-18 15:22:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (375,NULL,10,'Subject for Pledge Acknowledgment','2022-05-30 14:29:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (376,NULL,10,'Subject for Pledge Acknowledgment','2022-04-07 20:48:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (377,NULL,10,'Subject for Pledge Acknowledgment','2021-10-13 00:22:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (378,NULL,10,'Subject for Pledge Acknowledgment','2022-07-18 08:51:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (379,NULL,9,'Subject for Tell a Friend','2022-04-29 07:17:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (380,NULL,9,'Subject for Tell a Friend','2022-07-11 15:12:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (381,NULL,9,'Subject for Tell a Friend','2022-02-11 16:47:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (382,NULL,10,'Subject for Pledge Acknowledgment','2022-05-21 10:26:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (383,NULL,9,'Subject for Tell a Friend','2022-04-10 14:46:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (384,NULL,10,'Subject for Pledge Acknowledgment','2022-05-14 17:25:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (385,NULL,10,'Subject for Pledge Acknowledgment','2022-07-03 15:04:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (386,NULL,10,'Subject for Pledge Acknowledgment','2022-02-26 04:45:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (387,NULL,9,'Subject for Tell a Friend','2022-05-27 03:59:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (388,NULL,9,'Subject for Tell a Friend','2022-06-10 08:51:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (389,NULL,10,'Subject for Pledge Acknowledgment','2022-02-23 04:55:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (390,NULL,10,'Subject for Pledge Acknowledgment','2021-11-04 08:17:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (391,NULL,10,'Subject for Pledge Acknowledgment','2022-07-06 14:40:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (392,NULL,10,'Subject for Pledge Acknowledgment','2022-04-10 17:03:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (393,NULL,10,'Subject for Pledge Acknowledgment','2021-12-11 14:57:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (394,NULL,10,'Subject for Pledge Acknowledgment','2022-03-26 23:35:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (395,NULL,9,'Subject for Tell a Friend','2022-07-10 21:37:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (396,NULL,9,'Subject for Tell a Friend','2021-10-21 18:24:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (397,NULL,10,'Subject for Pledge Acknowledgment','2022-03-19 08:32:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (398,NULL,10,'Subject for Pledge Acknowledgment','2021-11-08 04:56:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (399,NULL,10,'Subject for Pledge Acknowledgment','2021-08-31 08:03:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (400,NULL,10,'Subject for Pledge Acknowledgment','2021-10-17 19:22:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (401,NULL,9,'Subject for Tell a Friend','2021-12-11 11:34:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (402,NULL,10,'Subject for Pledge Acknowledgment','2022-01-30 15:57:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (403,NULL,9,'Subject for Tell a Friend','2021-09-13 12:57:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (404,NULL,10,'Subject for Pledge Acknowledgment','2022-03-05 15:52:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (405,NULL,10,'Subject for Pledge Acknowledgment','2022-05-14 14:05:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (406,NULL,10,'Subject for Pledge Acknowledgment','2021-10-12 18:44:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (407,NULL,10,'Subject for Pledge Acknowledgment','2021-10-19 11:05:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (408,NULL,9,'Subject for Tell a Friend','2021-10-14 21:53:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (409,NULL,9,'Subject for Tell a Friend','2022-06-22 13:54:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (410,NULL,10,'Subject for Pledge Acknowledgment','2021-09-06 18:28:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (411,NULL,9,'Subject for Tell a Friend','2022-05-30 00:06:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (412,NULL,10,'Subject for Pledge Acknowledgment','2022-03-03 10:36:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (413,NULL,10,'Subject for Pledge Acknowledgment','2022-07-02 02:45:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (414,NULL,10,'Subject for Pledge Acknowledgment','2022-03-27 12:59:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (415,NULL,10,'Subject for Pledge Acknowledgment','2022-06-10 23:15:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (416,NULL,10,'Subject for Pledge Acknowledgment','2021-11-15 11:30:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (417,NULL,9,'Subject for Tell a Friend','2021-10-28 11:47:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (418,NULL,10,'Subject for Pledge Acknowledgment','2022-06-28 15:41:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (419,NULL,10,'Subject for Pledge Acknowledgment','2022-05-18 20:11:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (420,NULL,10,'Subject for Pledge Acknowledgment','2021-09-01 21:22:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (421,NULL,9,'Subject for Tell a Friend','2022-04-19 14:44:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (422,NULL,9,'Subject for Tell a Friend','2022-06-01 16:08:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (423,NULL,10,'Subject for Pledge Acknowledgment','2022-01-08 13:37:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (424,NULL,10,'Subject for Pledge Acknowledgment','2022-08-02 23:53:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (425,NULL,9,'Subject for Tell a Friend','2021-10-04 21:09:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (426,NULL,10,'Subject for Pledge Acknowledgment','2022-03-02 15:29:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (427,NULL,10,'Subject for Pledge Acknowledgment','2021-09-30 02:21:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (428,NULL,10,'Subject for Pledge Acknowledgment','2021-09-21 23:14:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (429,NULL,9,'Subject for Tell a Friend','2022-01-10 07:03:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (430,NULL,9,'Subject for Tell a Friend','2022-06-12 05:42:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (431,NULL,9,'Subject for Tell a Friend','2022-01-20 18:31:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (432,NULL,10,'Subject for Pledge Acknowledgment','2022-01-24 11:31:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (433,NULL,10,'Subject for Pledge Acknowledgment','2022-06-14 19:21:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (434,NULL,10,'Subject for Pledge Acknowledgment','2022-03-09 17:29:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (435,NULL,10,'Subject for Pledge Acknowledgment','2022-02-05 07:50:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (436,NULL,9,'Subject for Tell a Friend','2022-02-03 20:38:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (437,NULL,10,'Subject for Pledge Acknowledgment','2021-11-16 20:50:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (438,NULL,10,'Subject for Pledge Acknowledgment','2021-09-02 15:57:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (439,NULL,9,'Subject for Tell a Friend','2022-07-18 17:55:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (440,NULL,10,'Subject for Pledge Acknowledgment','2021-10-24 10:07:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (441,NULL,9,'Subject for Tell a Friend','2022-02-16 05:04:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (442,NULL,9,'Subject for Tell a Friend','2021-11-14 07:29:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (443,NULL,10,'Subject for Pledge Acknowledgment','2021-12-09 01:15:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (444,NULL,10,'Subject for Pledge Acknowledgment','2022-06-10 23:51:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (445,NULL,9,'Subject for Tell a Friend','2021-09-20 21:15:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (446,NULL,10,'Subject for Pledge Acknowledgment','2022-06-19 05:24:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (447,NULL,9,'Subject for Tell a Friend','2022-01-30 12:10:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (448,NULL,10,'Subject for Pledge Acknowledgment','2021-11-21 07:40:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (449,NULL,9,'Subject for Tell a Friend','2022-07-14 04:27:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (450,NULL,9,'Subject for Tell a Friend','2022-05-23 01:01:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (451,1,6,'$ 125 April Mailer 1','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (452,2,6,'$ 50 Online: Save the Penguins','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (453,3,6,'£ 25 April Mailer 1','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (454,4,6,'$ 50 Online: Save the Penguins','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (455,5,6,'$ 50 Online: Save the Penguins','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (456,6,6,'$ 500 April Mailer 1','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (457,7,6,'$ 1750 Online: Save the Penguins','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (458,8,6,'$ 50 Online: Save the Penguins','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (459,9,6,'$ 10 Online: Help CiviCRM','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (460,10,6,'$ 250 Online: Help CiviCRM','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (461,11,6,'Â¥ 500 ','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (462,12,6,'$ 50 Online: Save the Penguins','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (463,13,6,'$ 50 ','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (464,14,6,'$ 50 ','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (465,15,6,'$ 25 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (466,16,6,'$ 25 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:36','2022-08-09 18:17:36'),
- (467,17,6,'$ 25 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (468,18,6,'$ 25 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (469,19,6,'$ 25 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (470,20,6,'$ 25 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (471,21,6,'$ 25 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (472,22,6,'$ 25 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (473,23,6,'$ 25 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (474,24,6,'$ 25 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (475,25,6,'$ 25 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (476,26,6,'$ 10 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (477,27,6,'$ 10 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (478,28,6,'$ 10 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (479,29,6,'$ 10 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (480,30,6,'$ 10 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (481,31,6,'€ 5 Recurring contribution','2022-10-09 13:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (482,1,7,'General','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (483,2,7,'Student','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (484,3,7,'General','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (485,4,7,'Student','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (486,5,7,'Student','2021-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (487,6,7,'Student','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (488,7,7,'General','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (489,8,7,'Student','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (490,9,7,'General','2022-08-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (491,10,7,'Student','2021-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (492,11,7,'Lifetime','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (493,12,7,'Student','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (494,13,7,'General','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (495,14,7,'Student','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (496,15,7,'General','2020-04-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (497,16,7,'Student','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (498,17,7,'General','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (499,18,7,'Student','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (500,19,7,'General','2022-07-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (501,20,7,'Student','2021-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (502,21,7,'General','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (503,22,7,'Lifetime','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (504,23,7,'General','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (505,24,7,'Student','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (506,25,7,'Student','2021-07-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (507,26,7,'Student','2022-07-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (508,27,7,'General','2022-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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (509,28,7,'Student','2022-07-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (510,29,7,'General','2022-07-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (511,30,7,'Student','2021-07-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (512,32,6,'$ 100.00 - General Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (513,33,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (514,34,6,'$ 100.00 - General Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (515,35,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (516,36,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (517,37,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (518,38,6,'$ 100.00 - General Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (519,39,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (520,40,6,'$ 100.00 - General Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (521,41,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (523,43,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (524,44,6,'$ 100.00 - General Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (525,45,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (526,46,6,'$ 100.00 - General Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (527,47,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (528,48,6,'$ 100.00 - General Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (529,49,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (530,50,6,'$ 100.00 - General Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (531,51,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (532,52,6,'$ 100.00 - General Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (534,54,6,'$ 100.00 - General Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (535,55,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (536,56,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (537,57,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (538,58,6,'$ 100.00 - General Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (539,59,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (540,60,6,'$ 100.00 - General Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (541,61,6,'$ 50.00 - Student Membership: Offline signup','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (543,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (544,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (545,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (546,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (547,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (548,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (549,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (550,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (551,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (552,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (553,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (554,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (555,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (556,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (557,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (558,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (559,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (560,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (561,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (562,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (563,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (564,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (565,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (566,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (567,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (568,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (569,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (570,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (571,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (572,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (573,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (574,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (575,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (576,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (577,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (578,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (579,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (580,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (581,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (582,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (583,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (584,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (585,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (586,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (587,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (588,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (589,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (590,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (591,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (592,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,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (593,63,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (594,64,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (599,69,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (600,70,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (601,71,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (603,73,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (604,74,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (605,75,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (606,76,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (607,77,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (608,78,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (609,79,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (611,81,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (612,82,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (613,83,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (614,84,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (616,86,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (617,87,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (618,88,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (621,91,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (622,92,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (623,93,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (624,94,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (625,95,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (626,96,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (627,97,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (628,98,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (629,99,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (630,100,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (631,101,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (632,102,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (634,104,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (635,105,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (636,106,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (637,107,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (639,109,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (640,110,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (641,111,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37'),
- (642,112,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-08-09 14:17:37',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-08-09 18:17:37','2022-08-09 18:17:37');
+ (1,NULL,2,'Subject for Phone Call','2022-07-10 13:08:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (2,NULL,2,'Subject for Phone Call','2021-12-21 10:24:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (3,NULL,55,'Subject for Interview','2022-06-04 06:19:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (4,NULL,2,'Subject for Phone Call','2022-05-15 02:31:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (5,NULL,22,'Subject for Print/Merge Document','2022-03-13 11:10:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (6,NULL,2,'Subject for Phone Call','2022-08-22 16:45:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (7,NULL,2,'Subject for Phone Call','2022-05-27 11:04:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (8,NULL,1,'Subject for Meeting','2021-10-15 15:54:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (9,NULL,55,'Subject for Interview','2022-03-20 03:55:00',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (10,NULL,1,'Subject for Meeting','2022-08-18 08:56:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (11,NULL,22,'Subject for Print/Merge Document','2021-12-09 00:00:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (12,NULL,9,'Subject for Tell a Friend','2022-03-16 00:40:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (13,NULL,22,'Subject for Print/Merge Document','2022-02-02 02:50:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (14,NULL,55,'Subject for Interview','2021-11-20 19:11:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (15,NULL,9,'Subject for Tell a Friend','2021-10-12 01:17:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (16,NULL,2,'Subject for Phone Call','2022-03-08 01:40:17',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (17,NULL,55,'Subject for Interview','2022-03-29 01:04:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (18,NULL,2,'Subject for Phone Call','2022-06-07 12:26:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (19,NULL,22,'Subject for Print/Merge Document','2022-06-02 06:29:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (20,NULL,2,'Subject for Phone Call','2022-01-02 20:53:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (21,NULL,55,'Subject for Interview','2022-01-17 17:36:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (22,NULL,55,'Subject for Interview','2021-11-18 17:43:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (23,NULL,55,'Subject for Interview','2021-10-19 23:24:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (24,NULL,2,'Subject for Phone Call','2022-05-31 01:19:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (25,NULL,22,'Subject for Print/Merge Document','2021-11-21 18:52:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (26,NULL,22,'Subject for Print/Merge Document','2022-02-19 19:51:15',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (27,NULL,9,'Subject for Tell a Friend','2022-06-30 14:12:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (28,NULL,2,'Subject for Phone Call','2022-07-17 15:05:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (29,NULL,2,'Subject for Phone Call','2022-05-16 07:22:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (30,NULL,1,'Subject for Meeting','2022-04-21 03:28:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (31,NULL,9,'Subject for Tell a Friend','2021-11-19 03:58:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (32,NULL,9,'Subject for Tell a Friend','2021-11-27 04:13:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (33,NULL,55,'Subject for Interview','2022-09-12 17:12:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (34,NULL,55,'Subject for Interview','2022-04-25 12:38:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (35,NULL,9,'Subject for Tell a Friend','2022-04-08 19:21:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (36,NULL,55,'Subject for Interview','2022-08-19 09:25:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (37,NULL,9,'Subject for Tell a Friend','2022-02-18 10:50:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (38,NULL,1,'Subject for Meeting','2022-06-13 05:43:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (39,NULL,22,'Subject for Print/Merge Document','2022-01-16 22:09:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (40,NULL,9,'Subject for Tell a Friend','2021-11-11 15:00:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (41,NULL,22,'Subject for Print/Merge Document','2021-12-16 01:06:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (42,NULL,1,'Subject for Meeting','2022-02-03 17:23:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (43,NULL,2,'Subject for Phone Call','2022-01-13 18:10:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (44,NULL,2,'Subject for Phone Call','2021-11-23 21:46:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (45,NULL,55,'Subject for Interview','2022-01-07 05:53:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (46,NULL,22,'Subject for Print/Merge Document','2022-06-03 12:31:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (47,NULL,22,'Subject for Print/Merge Document','2022-09-04 22:31:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (48,NULL,9,'Subject for Tell a Friend','2022-02-14 13:12:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (49,NULL,9,'Subject for Tell a Friend','2022-03-07 16:08:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (50,NULL,1,'Subject for Meeting','2022-02-22 20:59:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (51,NULL,9,'Subject for Tell a Friend','2022-08-16 17:28:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (52,NULL,55,'Subject for Interview','2021-12-12 21:17:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (53,NULL,1,'Subject for Meeting','2022-08-29 07:50:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (54,NULL,9,'Subject for Tell a Friend','2021-12-14 12:12:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (55,NULL,2,'Subject for Phone Call','2022-06-14 15:38:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (56,NULL,1,'Subject for Meeting','2021-12-22 16:28:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (57,NULL,9,'Subject for Tell a Friend','2021-12-16 09:46:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (58,NULL,55,'Subject for Interview','2021-12-05 17:42:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (59,NULL,55,'Subject for Interview','2021-10-26 07:04:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (60,NULL,22,'Subject for Print/Merge Document','2022-07-17 09:48:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (61,NULL,9,'Subject for Tell a Friend','2022-03-12 18:50:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (62,NULL,1,'Subject for Meeting','2022-07-07 23:30:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (63,NULL,22,'Subject for Print/Merge Document','2022-05-30 09:46:52',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (64,NULL,55,'Subject for Interview','2022-02-20 14:55:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (65,NULL,9,'Subject for Tell a Friend','2021-12-26 07:11:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (66,NULL,1,'Subject for Meeting','2021-12-25 01:26:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (67,NULL,22,'Subject for Print/Merge Document','2022-09-19 07:43:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (68,NULL,9,'Subject for Tell a Friend','2022-05-24 07:11:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (69,NULL,55,'Subject for Interview','2022-02-20 08:41:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (70,NULL,55,'Subject for Interview','2021-11-24 08:33:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (71,NULL,1,'Subject for Meeting','2022-01-06 02:16:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (72,NULL,2,'Subject for Phone Call','2022-05-01 20:50:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (73,NULL,55,'Subject for Interview','2022-07-03 23:10:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (74,NULL,2,'Subject for Phone Call','2021-12-13 01:04:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (75,NULL,2,'Subject for Phone Call','2022-08-02 08:35:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (76,NULL,1,'Subject for Meeting','2022-03-18 08:30:28',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (77,NULL,22,'Subject for Print/Merge Document','2022-05-23 00:34:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (78,NULL,22,'Subject for Print/Merge Document','2022-02-19 19:53:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (79,NULL,55,'Subject for Interview','2022-04-01 07:21:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (80,NULL,22,'Subject for Print/Merge Document','2021-10-27 13:59:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (81,NULL,22,'Subject for Print/Merge Document','2022-08-13 23:06:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (82,NULL,1,'Subject for Meeting','2022-05-16 09:17:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (83,NULL,55,'Subject for Interview','2022-05-31 04:10:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (84,NULL,1,'Subject for Meeting','2022-02-28 11:47:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (85,NULL,22,'Subject for Print/Merge Document','2022-05-20 13:49:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (86,NULL,9,'Subject for Tell a Friend','2022-04-05 23:07:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (87,NULL,1,'Subject for Meeting','2022-06-11 15:57:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (88,NULL,1,'Subject for Meeting','2022-04-07 14:02:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (89,NULL,2,'Subject for Phone Call','2022-02-25 00:12:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (90,NULL,55,'Subject for Interview','2022-07-22 10:40:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (91,NULL,55,'Subject for Interview','2022-03-26 09:21:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (92,NULL,22,'Subject for Print/Merge Document','2022-06-07 17:50:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (93,NULL,9,'Subject for Tell a Friend','2022-07-31 00:34:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (94,NULL,1,'Subject for Meeting','2022-05-31 01:17:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (95,NULL,2,'Subject for Phone Call','2021-11-30 19:19:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (96,NULL,2,'Subject for Phone Call','2022-01-23 07:02:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (97,NULL,2,'Subject for Phone Call','2022-01-20 04:13:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (98,NULL,9,'Subject for Tell a Friend','2022-04-21 21:35:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (99,NULL,1,'Subject for Meeting','2022-09-29 17:52:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (100,NULL,55,'Subject for Interview','2022-09-27 00:00:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (101,NULL,1,'Subject for Meeting','2021-10-17 02:15:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (102,NULL,22,'Subject for Print/Merge Document','2022-01-24 19:15:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (103,NULL,9,'Subject for Tell a Friend','2021-12-12 11:08:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (104,NULL,9,'Subject for Tell a Friend','2022-01-10 07:53:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (105,NULL,22,'Subject for Print/Merge Document','2021-12-25 16:41:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (106,NULL,9,'Subject for Tell a Friend','2022-02-17 03:02:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (107,NULL,22,'Subject for Print/Merge Document','2022-02-13 14:28:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (108,NULL,55,'Subject for Interview','2022-01-05 00:23:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (109,NULL,2,'Subject for Phone Call','2022-01-18 22:14:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (110,NULL,55,'Subject for Interview','2022-04-28 19:00:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (111,NULL,2,'Subject for Phone Call','2022-01-13 06:48:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (112,NULL,1,'Subject for Meeting','2021-11-24 06:57:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (113,NULL,22,'Subject for Print/Merge Document','2022-08-08 22:22:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (114,NULL,9,'Subject for Tell a Friend','2022-01-08 21:00:37',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (115,NULL,9,'Subject for Tell a Friend','2022-07-08 14:10:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (116,NULL,2,'Subject for Phone Call','2022-03-09 03:06:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (117,NULL,9,'Subject for Tell a Friend','2021-11-20 11:40:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (118,NULL,22,'Subject for Print/Merge Document','2022-04-19 20:39:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (119,NULL,2,'Subject for Phone Call','2021-11-04 11:49:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (120,NULL,1,'Subject for Meeting','2021-12-22 00:40:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (121,NULL,55,'Subject for Interview','2022-02-16 02:23:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (122,NULL,2,'Subject for Phone Call','2021-11-06 17:22:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (123,NULL,9,'Subject for Tell a Friend','2021-10-12 22:54:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (124,NULL,1,'Subject for Meeting','2022-08-30 23:23:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (125,NULL,9,'Subject for Tell a Friend','2021-12-13 21:01:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (126,NULL,55,'Subject for Interview','2022-06-07 22:25:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (127,NULL,55,'Subject for Interview','2022-06-22 21:52:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (128,NULL,9,'Subject for Tell a Friend','2022-09-04 06:14:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (129,NULL,22,'Subject for Print/Merge Document','2021-12-14 13:11:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (130,NULL,55,'Subject for Interview','2022-02-28 22:08:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (131,NULL,55,'Subject for Interview','2022-05-16 06:47:15',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (132,NULL,2,'Subject for Phone Call','2022-08-29 00:58:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (133,NULL,1,'Subject for Meeting','2022-05-22 17:03:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (134,NULL,55,'Subject for Interview','2021-12-19 10:39:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (135,NULL,55,'Subject for Interview','2021-11-19 17:48:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (136,NULL,2,'Subject for Phone Call','2022-04-14 13:27:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (137,NULL,22,'Subject for Print/Merge Document','2022-07-29 04:56:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (138,NULL,55,'Subject for Interview','2022-03-22 17:19:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (139,NULL,9,'Subject for Tell a Friend','2022-07-26 21:51:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (140,NULL,2,'Subject for Phone Call','2021-12-15 22:36:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (141,NULL,22,'Subject for Print/Merge Document','2021-11-01 23:15:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (142,NULL,55,'Subject for Interview','2022-08-30 03:06:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (143,NULL,1,'Subject for Meeting','2021-10-03 14:00:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (144,NULL,9,'Subject for Tell a Friend','2022-06-07 18:03:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (145,NULL,22,'Subject for Print/Merge Document','2022-05-04 23:37:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (146,NULL,22,'Subject for Print/Merge Document','2022-01-16 16:21:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (147,NULL,22,'Subject for Print/Merge Document','2022-01-09 02:51:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (148,NULL,55,'Subject for Interview','2022-06-29 19:32:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (149,NULL,9,'Subject for Tell a Friend','2022-08-31 03:19:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (150,NULL,55,'Subject for Interview','2022-01-26 21:39:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (151,NULL,22,'Subject for Print/Merge Document','2022-03-31 12:16:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (152,NULL,22,'Subject for Print/Merge Document','2022-06-23 08:43:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (153,NULL,2,'Subject for Phone Call','2022-04-24 17:14:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (154,NULL,1,'Subject for Meeting','2022-09-08 09:02:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (155,NULL,2,'Subject for Phone Call','2022-08-22 12:23:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (156,NULL,1,'Subject for Meeting','2022-06-18 08:12:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (157,NULL,1,'Subject for Meeting','2021-11-12 15:03:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (158,NULL,1,'Subject for Meeting','2022-06-05 15:41:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (159,NULL,22,'Subject for Print/Merge Document','2022-01-09 00:19:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (160,NULL,1,'Subject for Meeting','2021-11-10 13:41:20',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (161,NULL,9,'Subject for Tell a Friend','2022-05-10 10:56:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (162,NULL,55,'Subject for Interview','2022-03-25 06:36:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (163,NULL,22,'Subject for Print/Merge Document','2021-12-31 05:11:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (164,NULL,2,'Subject for Phone Call','2021-10-27 09:35:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (165,NULL,9,'Subject for Tell a Friend','2022-01-03 08:01:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (166,NULL,22,'Subject for Print/Merge Document','2022-01-16 19:41:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (167,NULL,9,'Subject for Tell a Friend','2022-09-26 09:28:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (168,NULL,22,'Subject for Print/Merge Document','2021-11-18 15:16:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (169,NULL,55,'Subject for Interview','2021-11-26 18:40:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (170,NULL,1,'Subject for Meeting','2022-04-03 22:31:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (171,NULL,2,'Subject for Phone Call','2022-03-18 01:58:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (172,NULL,55,'Subject for Interview','2022-01-26 22:53:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (173,NULL,1,'Subject for Meeting','2022-07-22 21:15:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (174,NULL,55,'Subject for Interview','2022-03-06 16:28:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (175,NULL,2,'Subject for Phone Call','2021-12-27 14:35:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (176,NULL,55,'Subject for Interview','2022-07-28 06:04:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (177,NULL,55,'Subject for Interview','2022-08-17 06:17:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (178,NULL,1,'Subject for Meeting','2022-05-16 21:50:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (179,NULL,22,'Subject for Print/Merge Document','2021-10-20 12:10:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (180,NULL,1,'Subject for Meeting','2022-01-14 07:12:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (181,NULL,22,'Subject for Print/Merge Document','2022-01-14 20:30:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (182,NULL,9,'Subject for Tell a Friend','2022-05-03 14:33:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (183,NULL,22,'Subject for Print/Merge Document','2022-01-03 01:11:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (184,NULL,9,'Subject for Tell a Friend','2022-03-29 11:43:15',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (185,NULL,22,'Subject for Print/Merge Document','2021-12-18 02:45:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (186,NULL,9,'Subject for Tell a Friend','2021-11-05 18:28:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (187,NULL,1,'Subject for Meeting','2021-11-27 17:38:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (188,NULL,9,'Subject for Tell a Friend','2022-01-03 22:40:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (189,NULL,9,'Subject for Tell a Friend','2021-12-16 00:02:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (190,NULL,1,'Subject for Meeting','2022-06-25 04:12:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (191,NULL,9,'Subject for Tell a Friend','2022-05-04 01:12:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (192,NULL,9,'Subject for Tell a Friend','2022-05-12 09:53:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (193,NULL,9,'Subject for Tell a Friend','2022-02-08 17:04:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (194,NULL,55,'Subject for Interview','2022-09-26 03:33:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (195,NULL,22,'Subject for Print/Merge Document','2022-08-20 12:47:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (196,NULL,2,'Subject for Phone Call','2021-11-26 12:22:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (197,NULL,22,'Subject for Print/Merge Document','2022-02-25 14:58:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (198,NULL,55,'Subject for Interview','2022-06-05 20:03:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (199,NULL,2,'Subject for Phone Call','2022-01-12 18:56:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (200,NULL,22,'Subject for Print/Merge Document','2022-02-06 04:44:49',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (201,NULL,9,'Subject for Tell a Friend','2021-12-31 06:18:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (202,NULL,22,'Subject for Print/Merge Document','2022-03-06 21:16:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (203,NULL,1,'Subject for Meeting','2021-11-01 14:39:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (204,NULL,9,'Subject for Tell a Friend','2022-03-08 23:21:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (205,NULL,2,'Subject for Phone Call','2022-06-10 02:44:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (206,NULL,55,'Subject for Interview','2022-01-29 23:28:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (207,NULL,22,'Subject for Print/Merge Document','2022-09-07 03:23:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (208,NULL,2,'Subject for Phone Call','2022-04-19 10:46:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (209,NULL,22,'Subject for Print/Merge Document','2022-01-31 06:02:41',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (210,NULL,55,'Subject for Interview','2022-08-08 08:01:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (211,NULL,9,'Subject for Tell a Friend','2022-09-30 17:37:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (212,NULL,9,'Subject for Tell a Friend','2021-10-22 18:56:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (213,NULL,1,'Subject for Meeting','2022-06-06 09:14:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (214,NULL,2,'Subject for Phone Call','2021-10-27 17:34:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (215,NULL,9,'Subject for Tell a Friend','2022-08-31 21:10:37',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (216,NULL,2,'Subject for Phone Call','2022-06-28 11:00:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (217,NULL,2,'Subject for Phone Call','2022-03-16 13:50:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (218,NULL,2,'Subject for Phone Call','2022-03-10 07:53:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (219,NULL,22,'Subject for Print/Merge Document','2021-12-20 10:40:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (220,NULL,2,'Subject for Phone Call','2022-06-20 02:06:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (221,NULL,22,'Subject for Print/Merge Document','2022-09-09 11:16:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (222,NULL,9,'Subject for Tell a Friend','2022-01-26 01:57:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (223,NULL,55,'Subject for Interview','2022-02-07 08:11:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (224,NULL,9,'Subject for Tell a Friend','2021-12-18 23:43:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (225,NULL,1,'Subject for Meeting','2022-06-09 04:43:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (226,NULL,2,'Subject for Phone Call','2022-09-09 05:09:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (227,NULL,22,'Subject for Print/Merge Document','2022-03-22 01:59:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (228,NULL,1,'Subject for Meeting','2022-02-18 09:32:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (229,NULL,9,'Subject for Tell a Friend','2022-05-01 20:04:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (230,NULL,2,'Subject for Phone Call','2021-11-26 16:22:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (231,NULL,55,'Subject for Interview','2021-11-05 08:26:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (232,NULL,55,'Subject for Interview','2022-09-17 00:48:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (233,NULL,1,'Subject for Meeting','2022-06-06 20:27:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (234,NULL,1,'Subject for Meeting','2022-02-12 02:52:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (235,NULL,1,'Subject for Meeting','2021-12-12 08:04:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (236,NULL,1,'Subject for Meeting','2021-11-02 18:02:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (237,NULL,1,'Subject for Meeting','2022-09-26 22:50:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (238,NULL,9,'Subject for Tell a Friend','2022-03-06 05:17:41',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (239,NULL,1,'Subject for Meeting','2022-09-02 05:15:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (240,NULL,2,'Subject for Phone Call','2021-10-24 12:13:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (241,NULL,9,'Subject for Tell a Friend','2022-09-10 20:57:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (242,NULL,2,'Subject for Phone Call','2022-09-13 09:16:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (243,NULL,22,'Subject for Print/Merge Document','2021-12-19 14:36:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (244,NULL,22,'Subject for Print/Merge Document','2022-01-19 20:09:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (245,NULL,1,'Subject for Meeting','2021-12-06 18:59:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (246,NULL,9,'Subject for Tell a Friend','2021-11-03 02:04:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (247,NULL,9,'Subject for Tell a Friend','2022-07-16 07:04:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (248,NULL,1,'Subject for Meeting','2022-03-24 18:29:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (249,NULL,22,'Subject for Print/Merge Document','2022-06-01 19:32:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (250,NULL,55,'Subject for Interview','2022-03-08 22:31:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (251,NULL,2,'Subject for Phone Call','2021-12-12 14:16:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (252,NULL,55,'Subject for Interview','2021-12-25 14:04:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (253,NULL,22,'Subject for Print/Merge Document','2022-02-02 08:26:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (254,NULL,55,'Subject for Interview','2022-09-22 05:47:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (255,NULL,9,'Subject for Tell a Friend','2022-05-19 19:46:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (256,NULL,9,'Subject for Tell a Friend','2021-10-13 18:52:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (257,NULL,22,'Subject for Print/Merge Document','2022-02-28 03:42:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (258,NULL,22,'Subject for Print/Merge Document','2022-04-18 12:32:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (259,NULL,55,'Subject for Interview','2022-06-22 14:21:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (260,NULL,9,'Subject for Tell a Friend','2022-02-03 23:04:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (261,NULL,22,'Subject for Print/Merge Document','2021-11-08 02:52:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (262,NULL,2,'Subject for Phone Call','2022-06-10 02:14:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (263,NULL,2,'Subject for Phone Call','2022-05-09 10:36:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (264,NULL,55,'Subject for Interview','2022-08-04 14:09:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (265,NULL,9,'Subject for Tell a Friend','2022-09-21 08:48:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (266,NULL,9,'Subject for Tell a Friend','2022-05-18 02:23:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (267,NULL,9,'Subject for Tell a Friend','2022-03-27 10:32:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (268,NULL,2,'Subject for Phone Call','2022-03-12 02:20:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (269,NULL,55,'Subject for Interview','2022-02-02 11:21:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (270,NULL,9,'Subject for Tell a Friend','2022-03-09 11:52:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (271,NULL,22,'Subject for Print/Merge Document','2021-10-25 07:04:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (272,NULL,55,'Subject for Interview','2021-10-25 23:10:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (273,NULL,22,'Subject for Print/Merge Document','2022-06-20 19:56:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (274,NULL,9,'Subject for Tell a Friend','2022-08-17 04:04:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (275,NULL,9,'Subject for Tell a Friend','2022-09-17 22:57:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (276,NULL,22,'Subject for Print/Merge Document','2022-06-09 01:52:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (277,NULL,55,'Subject for Interview','2022-08-31 02:02:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (278,NULL,22,'Subject for Print/Merge Document','2022-09-25 21:15:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (279,NULL,55,'Subject for Interview','2021-11-28 18:23:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (280,NULL,1,'Subject for Meeting','2021-10-23 10:06:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (281,NULL,55,'Subject for Interview','2022-02-07 11:15:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (282,NULL,9,'Subject for Tell a Friend','2021-11-03 07:42:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (283,NULL,9,'Subject for Tell a Friend','2022-09-20 16:40:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (284,NULL,9,'Subject for Tell a Friend','2022-02-01 23:41:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (285,NULL,55,'Subject for Interview','2021-10-04 20:45:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (286,NULL,1,'Subject for Meeting','2022-09-30 12:14:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (287,NULL,55,'Subject for Interview','2022-03-04 17:31:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (288,NULL,55,'Subject for Interview','2022-07-16 22:28:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (289,NULL,22,'Subject for Print/Merge Document','2022-06-14 23:18:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (290,NULL,22,'Subject for Print/Merge Document','2022-05-07 00:05:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (291,NULL,55,'Subject for Interview','2022-04-29 23:52:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (292,NULL,22,'Subject for Print/Merge Document','2022-05-19 09:01:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (293,NULL,9,'Subject for Tell a Friend','2022-06-09 07:34:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (294,NULL,9,'Subject for Tell a Friend','2021-12-28 18:48:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (295,NULL,1,'Subject for Meeting','2022-06-20 03:14:49',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (296,NULL,55,'Subject for Interview','2022-08-23 01:12:03',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (297,NULL,55,'Subject for Interview','2022-02-24 14:21:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (298,NULL,22,'Subject for Print/Merge Document','2022-08-09 01:09:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (299,NULL,2,'Subject for Phone Call','2022-07-15 03:15:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (300,NULL,55,'Subject for Interview','2022-03-29 08:48:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (301,NULL,55,'Subject for Interview','2022-07-24 23:12:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (302,NULL,22,'Subject for Print/Merge Document','2021-12-07 10:05:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (303,NULL,1,'Subject for Meeting','2022-01-18 04:02:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (304,NULL,22,'Subject for Print/Merge Document','2021-10-28 20:36:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (305,NULL,2,'Subject for Phone Call','2022-07-25 03:03:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (306,NULL,55,'Subject for Interview','2022-07-11 14:49:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (307,NULL,9,'Subject for Tell a Friend','2022-03-05 23:32:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (308,NULL,22,'Subject for Print/Merge Document','2022-04-04 01:50:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (309,NULL,55,'Subject for Interview','2022-08-17 03:00:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (310,NULL,55,'Subject for Interview','2021-11-27 05:16:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (311,NULL,55,'Subject for Interview','2022-07-15 06:34:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (312,NULL,2,'Subject for Phone Call','2022-07-12 05:45:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (313,NULL,55,'Subject for Interview','2021-10-20 01:59:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (314,NULL,22,'Subject for Print/Merge Document','2022-03-12 03:14:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (315,NULL,55,'Subject for Interview','2022-08-30 01:40:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (316,NULL,2,'Subject for Phone Call','2022-05-17 13:48:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (317,NULL,55,'Subject for Interview','2022-07-22 17:54:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (318,NULL,1,'Subject for Meeting','2022-04-07 22:13:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (319,NULL,55,'Subject for Interview','2022-03-08 06:20:51',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (320,NULL,9,'Subject for Tell a Friend','2021-10-16 22:28:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (321,NULL,22,'Subject for Print/Merge Document','2022-07-22 21:02:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (322,NULL,55,'Subject for Interview','2022-09-13 19:36:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (323,NULL,22,'Subject for Print/Merge Document','2022-04-30 13:49:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (324,NULL,1,'Subject for Meeting','2022-09-23 09:34:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (325,NULL,55,'Subject for Interview','2022-04-18 14:52:28',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (326,NULL,22,'Subject for Print/Merge Document','2022-04-08 10:53:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (327,NULL,2,'Subject for Phone Call','2022-08-28 08:10:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (328,NULL,9,'Subject for Tell a Friend','2022-01-07 06:23:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (329,NULL,55,'Subject for Interview','2022-08-31 10:09:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (330,NULL,2,'Subject for Phone Call','2021-10-29 23:03:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (331,NULL,1,'Subject for Meeting','2022-07-04 11:33:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (332,NULL,22,'Subject for Print/Merge Document','2022-06-12 20:42:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (333,NULL,1,'Subject for Meeting','2021-11-28 09:11:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (334,NULL,55,'Subject for Interview','2022-08-09 17:34:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (335,NULL,22,'Subject for Print/Merge Document','2021-12-14 01:31:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (336,NULL,2,'Subject for Phone Call','2022-06-26 06:24:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (337,NULL,55,'Subject for Interview','2022-09-14 23:41:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (338,NULL,22,'Subject for Print/Merge Document','2022-05-27 09:31:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (339,NULL,22,'Subject for Print/Merge Document','2021-10-10 23:53:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (340,NULL,1,'Subject for Meeting','2021-12-11 02:59:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (341,NULL,22,'Subject for Print/Merge Document','2022-01-24 03:53:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (342,NULL,22,'Subject for Print/Merge Document','2021-12-20 20:45:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (343,NULL,1,'Subject for Meeting','2021-11-24 04:29:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (344,NULL,55,'Subject for Interview','2022-02-26 19:58:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (345,NULL,9,'Subject for Tell a Friend','2022-04-12 12:17:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (346,NULL,1,'Subject for Meeting','2022-07-11 08:58:58',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (347,NULL,55,'Subject for Interview','2022-06-18 22:19:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (348,NULL,22,'Subject for Print/Merge Document','2022-04-28 03:57:52',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (349,NULL,55,'Subject for Interview','2022-06-20 21:44:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (350,NULL,55,'Subject for Interview','2022-07-17 08:57:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (351,NULL,2,'Subject for Phone Call','2022-02-28 15:07:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (352,NULL,22,'Subject for Print/Merge Document','2022-07-27 19:22:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (353,NULL,55,'Subject for Interview','2022-07-15 16:04:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (354,NULL,9,'Subject for Tell a Friend','2022-03-12 17:36:51',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (355,NULL,1,'Subject for Meeting','2022-03-20 16:18:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (356,NULL,22,'Subject for Print/Merge Document','2022-03-03 09:34:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (357,NULL,9,'Subject for Tell a Friend','2022-04-13 22:01:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (358,NULL,22,'Subject for Print/Merge Document','2021-10-16 05:30:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (359,NULL,1,'Subject for Meeting','2022-06-09 04:48:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (360,NULL,2,'Subject for Phone Call','2022-06-11 14:29:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (361,NULL,9,'Subject for Tell a Friend','2021-10-10 06:01:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (362,NULL,55,'Subject for Interview','2022-08-27 08:56:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (363,NULL,22,'Subject for Print/Merge Document','2021-11-16 06:33:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (364,NULL,22,'Subject for Print/Merge Document','2022-07-06 03:20:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (365,NULL,2,'Subject for Phone Call','2022-05-01 18:22:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (366,NULL,55,'Subject for Interview','2022-01-26 08:48:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (367,NULL,55,'Subject for Interview','2021-11-20 01:34:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (368,NULL,55,'Subject for Interview','2022-03-10 13:17:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (369,NULL,22,'Subject for Print/Merge Document','2022-01-11 19:16:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (370,NULL,9,'Subject for Tell a Friend','2022-05-03 23:29:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (371,NULL,55,'Subject for Interview','2022-07-22 11:59:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:02','2022-10-01 23:23:02'),
+ (372,NULL,2,'Subject for Phone Call','2021-11-05 03:25:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (373,NULL,1,'Subject for Meeting','2022-05-17 18:46:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (374,NULL,55,'Subject for Interview','2021-11-27 13:04:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (375,NULL,22,'Subject for Print/Merge Document','2022-07-13 08:56:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (376,NULL,22,'Subject for Print/Merge Document','2021-12-11 20:54:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (377,NULL,55,'Subject for Interview','2022-09-07 19:43:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (378,NULL,9,'Subject for Tell a Friend','2021-11-27 07:52:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (379,NULL,2,'Subject for Phone Call','2022-08-28 04:01:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (380,NULL,9,'Subject for Tell a Friend','2022-06-02 18:31:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (381,NULL,1,'Subject for Meeting','2021-11-14 21:51:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (382,NULL,1,'Subject for Meeting','2022-07-09 19:14:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (383,NULL,1,'Subject for Meeting','2021-12-28 02:58:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (384,NULL,2,'Subject for Phone Call','2022-01-21 19:24:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (385,NULL,2,'Subject for Phone Call','2022-03-13 13:46:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (386,NULL,1,'Subject for Meeting','2022-03-26 06:59:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (387,NULL,1,'Subject for Meeting','2022-02-24 00:08:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (388,NULL,55,'Subject for Interview','2022-06-06 09:57:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (389,NULL,22,'Subject for Print/Merge Document','2021-11-10 21:31:37',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (390,NULL,9,'Subject for Tell a Friend','2021-12-19 03:35:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (391,NULL,1,'Subject for Meeting','2021-12-17 14:49:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (392,NULL,9,'Subject for Tell a Friend','2022-09-30 01:17:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (393,NULL,9,'Subject for Tell a Friend','2021-10-12 18:16:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (394,NULL,55,'Subject for Interview','2022-01-18 22:14:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (395,NULL,2,'Subject for Phone Call','2022-09-06 05:58:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (396,NULL,2,'Subject for Phone Call','2022-05-15 06:54:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (397,NULL,2,'Subject for Phone Call','2022-08-18 05:24:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (398,NULL,1,'Subject for Meeting','2022-09-25 21:01:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (399,NULL,55,'Subject for Interview','2022-08-21 00:25:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (400,NULL,55,'Subject for Interview','2022-03-19 03:07:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (401,NULL,2,'Subject for Phone Call','2022-07-14 16:10:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (402,NULL,22,'Subject for Print/Merge Document','2021-10-19 17:07:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (403,NULL,2,'Subject for Phone Call','2021-12-02 06:09:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (404,NULL,2,'Subject for Phone Call','2022-05-27 22:30:00',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (405,NULL,1,'Subject for Meeting','2021-11-25 09:57:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (406,NULL,2,'Subject for Phone Call','2021-11-08 17:39:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (407,NULL,55,'Subject for Interview','2022-03-16 02:13:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (408,NULL,2,'Subject for Phone Call','2022-01-07 06:44:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (409,NULL,2,'Subject for Phone Call','2022-08-19 01:56:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (410,NULL,1,'Subject for Meeting','2022-09-20 20:11:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (411,NULL,2,'Subject for Phone Call','2022-08-01 22:57:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (412,NULL,2,'Subject for Phone Call','2022-09-27 01:26:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (413,NULL,1,'Subject for Meeting','2022-04-12 19:58:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (414,NULL,2,'Subject for Phone Call','2022-03-09 09:11:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (415,NULL,22,'Subject for Print/Merge Document','2022-06-11 16:52:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (416,NULL,9,'Subject for Tell a Friend','2022-07-28 23:22:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (417,NULL,55,'Subject for Interview','2021-11-25 23:43:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (418,NULL,55,'Subject for Interview','2022-04-14 02:40:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (419,NULL,22,'Subject for Print/Merge Document','2022-09-23 17:10:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (420,NULL,1,'Subject for Meeting','2022-03-10 01:59:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (421,NULL,9,'Subject for Tell a Friend','2022-09-12 19:17:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (422,NULL,22,'Subject for Print/Merge Document','2022-02-11 16:49:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (423,NULL,1,'Subject for Meeting','2022-01-01 17:46:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (424,NULL,55,'Subject for Interview','2022-07-01 15:03:51',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (425,NULL,9,'Subject for Tell a Friend','2022-05-02 22:37:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (426,NULL,55,'Subject for Interview','2021-12-26 16:30:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (427,NULL,1,'Subject for Meeting','2022-08-04 13:43:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (428,NULL,55,'Subject for Interview','2022-07-06 16:53:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (429,NULL,2,'Subject for Phone Call','2021-12-27 10:22:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (430,NULL,9,'Subject for Tell a Friend','2022-04-13 15:17:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (431,NULL,9,'Subject for Tell a Friend','2022-09-30 14:57:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (432,NULL,1,'Subject for Meeting','2022-05-10 03:32:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (433,NULL,55,'Subject for Interview','2022-05-14 09:52:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (434,NULL,55,'Subject for Interview','2022-05-07 05:44:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (435,NULL,22,'Subject for Print/Merge Document','2022-06-30 20:01:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (436,NULL,22,'Subject for Print/Merge Document','2022-07-22 16:31:57',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (437,NULL,55,'Subject for Interview','2022-02-25 09:04:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (438,NULL,9,'Subject for Tell a Friend','2022-09-19 10:49:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (439,NULL,1,'Subject for Meeting','2022-04-27 07:08:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (440,NULL,1,'Subject for Meeting','2022-02-27 08:07:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (441,NULL,1,'Subject for Meeting','2021-10-23 19:17:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (442,NULL,22,'Subject for Print/Merge Document','2022-05-24 00:19:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (443,NULL,9,'Subject for Tell a Friend','2022-05-10 15:25:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (444,NULL,2,'Subject for Phone Call','2022-06-24 02:32:17',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (445,NULL,9,'Subject for Tell a Friend','2022-01-22 08:49:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (446,NULL,9,'Subject for Tell a Friend','2022-08-19 14:28:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (447,NULL,1,'Subject for Meeting','2022-06-29 14:31:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (448,NULL,2,'Subject for Phone Call','2021-10-18 01:28:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (449,NULL,2,'Subject for Phone Call','2022-05-10 01:21:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (450,NULL,22,'Subject for Print/Merge Document','2022-01-01 10:05:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (451,1,6,'$ 125 April Mailer 1','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (452,2,6,'$ 50 Online: Save the Penguins','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (453,3,6,'£ 25 April Mailer 1','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (454,4,6,'$ 50 Online: Save the Penguins','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (455,5,6,'$ 50 Online: Save the Penguins','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (456,6,6,'$ 500 April Mailer 1','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (457,7,6,'$ 1750 Online: Save the Penguins','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (458,8,6,'$ 50 Online: Save the Penguins','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (459,9,6,'$ 10 Online: Help CiviCRM','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (460,10,6,'$ 250 Online: Help CiviCRM','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (461,11,6,'Â¥ 500 ','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (462,12,6,'$ 50 Online: Save the Penguins','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (463,13,6,'$ 50 ','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (464,14,6,'$ 50 ','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (465,15,6,'$ 25 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (466,16,6,'$ 25 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (467,17,6,'$ 25 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (468,18,6,'$ 25 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (469,19,6,'$ 25 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (470,20,6,'$ 25 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (471,21,6,'$ 25 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (472,22,6,'$ 25 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (473,23,6,'$ 25 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (474,24,6,'$ 25 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (475,25,6,'$ 25 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (476,26,6,'$ 10 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (477,27,6,'$ 10 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (478,28,6,'$ 10 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (479,29,6,'$ 10 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (480,30,6,'$ 10 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (481,31,6,'€ 5 Recurring contribution','2022-12-01 23:23:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (482,1,7,'General','2022-10-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (483,2,7,'Student','2022-09-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (484,3,7,'General','2022-09-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (485,4,7,'Student','2022-09-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (486,5,7,'Student','2021-09-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (487,6,7,'Student','2022-09-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (488,7,7,'General','2022-09-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (489,8,7,'Student','2022-09-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (490,9,7,'General','2022-09-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (491,10,7,'Student','2021-09-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (492,11,7,'Lifetime','2022-09-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (493,12,7,'Student','2022-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (494,13,7,'General','2022-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (495,14,7,'Student','2022-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (496,15,7,'Student','2021-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (497,16,7,'Student','2022-09-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (498,17,7,'General','2022-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (499,18,7,'Student','2022-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (500,19,7,'General','2022-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (501,20,7,'General','2020-05-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (502,21,7,'General','2022-09-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (503,22,7,'Lifetime','2022-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (504,23,7,'General','2022-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (505,24,7,'Student','2022-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (506,25,7,'Student','2021-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (507,26,7,'Student','2022-09-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (508,27,7,'General','2022-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (509,28,7,'Student','2022-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (510,29,7,'General','2022-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (511,30,7,'Student','2021-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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (512,32,6,'$ 100.00 - General Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (513,33,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (514,34,6,'$ 100.00 - General Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (515,35,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (516,36,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (517,37,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (518,38,6,'$ 100.00 - General Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (519,39,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (520,40,6,'$ 100.00 - General Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (521,41,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (523,43,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (524,44,6,'$ 100.00 - General Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (525,45,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (526,46,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (527,47,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (528,48,6,'$ 100.00 - General Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (529,49,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (530,50,6,'$ 100.00 - General Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (531,51,6,'$ 100.00 - General Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (532,52,6,'$ 100.00 - General Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (534,54,6,'$ 100.00 - General Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (535,55,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (536,56,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (537,57,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (538,58,6,'$ 100.00 - General Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (539,59,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (540,60,6,'$ 100.00 - General Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (541,61,6,'$ 50.00 - Student Membership: Offline signup','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (543,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (544,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (545,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (546,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (547,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (548,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (549,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (550,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (551,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (552,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (553,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (554,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (555,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (556,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (557,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (558,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (559,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (560,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (561,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (562,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (563,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (564,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (565,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (566,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (567,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (568,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (569,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (570,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (571,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (572,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (573,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (574,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (575,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (576,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (577,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (578,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (579,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (580,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (581,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (582,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (583,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (584,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (585,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (586,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (587,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (588,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (589,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (590,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (591,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (592,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,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (593,63,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (594,64,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (602,72,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (605,75,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (608,78,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (614,84,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (616,86,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (617,87,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (623,93,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (626,96,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (627,97,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (628,98,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (629,99,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (630,100,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (631,101,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (632,102,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (634,104,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (635,105,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (636,106,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (637,107,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (639,109,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03'),
+ (642,112,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2022-10-01 23:23:03',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2022-10-01 23:23:03','2022-10-01 23:23:03');
 /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -812,794 +813,1047 @@ 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
- (83,59,2,3),
- (257,177,2,3),
- (350,242,2,3),
- (579,401,2,3),
- (648,451,2,2),
- (789,592,3,2),
- (626,436,4,3),
- (649,452,4,2),
- (652,455,4,2),
- (78,56,5,3),
- (281,194,5,3),
- (771,574,5,2),
- (27,18,6,3),
- (352,243,6,3),
- (650,453,6,2),
- (582,403,7,3),
- (19,13,8,3),
- (651,454,8,2),
- (148,106,9,3),
- (165,115,10,3),
- (21,14,12,3),
- (391,274,12,3),
- (757,560,12,2),
- (283,195,13,3),
- (497,346,13,3),
- (607,422,13,3),
- (404,284,14,3),
- (630,439,14,3),
- (783,586,14,2),
- (54,39,15,3),
- (264,182,15,3),
- (377,263,16,3),
- (653,456,16,2),
- (323,223,17,3),
- (430,302,17,3),
- (521,360,17,3),
- (188,130,18,3),
- (222,153,18,3),
- (224,154,18,3),
- (306,211,18,3),
- (513,355,18,3),
- (611,425,19,3),
- (654,457,19,2),
- (176,122,20,3),
- (290,200,20,3),
- (485,338,20,3),
- (775,578,20,2),
- (126,90,21,3),
- (197,136,21,3),
- (329,227,21,3),
- (409,287,21,3),
- (65,48,22,3),
- (374,261,22,3),
- (571,395,22,3),
- (689,492,22,2),
- (719,522,22,2),
- (194,134,23,3),
- (242,167,23,3),
- (274,189,23,3),
- (321,222,23,3),
- (445,313,23,3),
- (782,585,23,2),
- (5,3,24,3),
- (218,151,24,3),
- (447,314,24,3),
- (561,387,24,3),
- (87,61,25,3),
- (173,120,25,3),
- (455,319,25,3),
- (784,587,25,2),
- (774,577,26,2),
- (526,364,27,3),
- (528,365,27,3),
- (17,12,28,3),
- (190,131,28,3),
- (482,336,28,3),
- (141,100,29,3),
- (245,169,29,3),
- (642,447,29,3),
- (344,238,30,3),
- (93,65,32,3),
- (478,333,32,3),
- (490,341,32,3),
- (660,463,32,2),
- (661,464,32,2),
- (285,196,33,3),
- (35,23,34,3),
- (75,54,34,3),
- (360,249,34,3),
- (588,408,34,3),
- (657,460,34,2),
- (758,561,34,2),
- (100,69,35,3),
- (135,96,36,3),
- (538,371,36,3),
- (741,544,36,2),
- (530,366,37,3),
- (788,591,37,2),
- (298,205,38,3),
- (453,318,38,3),
- (590,409,38,3),
- (81,58,39,3),
- (232,159,40,3),
- (402,283,40,3),
- (780,583,40,2),
- (128,91,41,3),
- (693,496,42,2),
- (723,526,42,2),
- (659,462,43,2),
- (691,494,43,2),
- (721,524,43,2),
- (304,210,44,3),
- (419,294,44,3),
- (427,300,44,3),
- (683,486,44,2),
- (713,516,44,2),
- (348,241,45,3),
- (437,306,45,3),
- (132,94,46,3),
- (315,218,46,3),
- (358,248,46,3),
- (363,251,46,3),
- (399,281,46,3),
- (787,590,46,2),
- (639,445,47,3),
- (109,77,48,3),
- (138,98,50,3),
- (159,112,50,3),
- (226,155,50,3),
- (169,118,52,3),
- (416,292,52,3),
- (493,343,52,3),
- (551,380,52,3),
- (279,193,53,3),
- (605,421,53,3),
- (618,430,53,3),
- (645,449,53,3),
- (745,548,54,2),
- (272,188,55,3),
- (2,1,57,3),
- (536,370,57,3),
- (647,450,57,3),
- (743,546,57,2),
- (662,465,59,2),
- (663,466,59,2),
- (664,467,59,2),
- (665,468,59,2),
- (666,469,59,2),
- (667,470,59,2),
- (668,471,59,2),
- (669,472,59,2),
- (670,473,59,2),
- (671,474,59,2),
- (672,475,59,2),
- (764,567,59,2),
- (161,113,60,3),
- (268,185,60,3),
- (201,139,61,3),
- (533,368,61,3),
- (543,374,61,3),
- (593,411,61,3),
- (9,6,62,3),
- (406,285,62,3),
- (421,295,62,3),
- (435,305,62,3),
- (573,396,62,3),
- (680,483,62,2),
- (710,513,62,2),
- (70,51,63,3),
- (334,231,63,3),
- (553,381,63,3),
- (633,441,63,3),
- (698,501,63,2),
- (728,531,63,2),
- (33,22,64,3),
- (68,50,64,3),
- (155,110,64,3),
- (294,202,64,3),
- (472,330,64,3),
- (124,89,65,3),
- (153,109,65,3),
- (761,564,65,2),
- (85,60,67,3),
- (220,152,67,3),
- (234,160,67,3),
- (463,324,67,3),
- (763,566,67,2),
- (41,27,68,3),
- (488,340,69,3),
- (506,351,69,3),
- (620,431,69,3),
- (157,111,70,3),
- (171,119,70,3),
- (413,290,70,3),
- (635,442,70,3),
- (776,579,70,2),
- (113,79,71,3),
- (383,268,71,3),
- (457,320,71,3),
- (658,461,71,2),
- (708,511,71,2),
- (738,541,71,2),
- (681,484,72,2),
- (711,514,72,2),
- (779,582,72,2),
- (182,126,73,3),
- (433,304,73,3),
- (511,354,73,3),
- (111,78,74,3),
- (163,114,74,3),
- (259,178,74,3),
- (388,272,74,3),
- (459,321,74,3),
- (616,429,74,3),
- (184,127,75,3),
- (342,237,75,3),
- (470,329,75,3),
- (519,359,75,3),
- (509,353,77,3),
- (24,16,78,3),
- (476,332,78,3),
- (563,388,79,3),
- (211,146,80,3),
- (499,347,80,3),
- (249,171,81,3),
- (541,373,82,3),
- (655,458,82,2),
- (11,7,83,3),
- (252,173,83,3),
- (503,349,83,3),
- (700,503,83,2),
- (730,533,83,2),
- (749,552,83,2),
- (707,510,86,2),
- (737,540,86,2),
- (759,562,86,2),
- (600,417,87,3),
- (703,506,87,2),
- (733,536,87,2),
- (467,327,88,3),
- (60,44,90,3),
- (90,63,90,3),
- (98,68,90,3),
- (501,348,90,3),
- (772,575,90,2),
- (73,53,91,3),
- (96,67,91,3),
- (216,150,91,3),
- (230,158,91,3),
- (515,356,91,3),
- (317,219,92,3),
- (656,459,92,2),
- (760,563,92,2),
- (747,550,93,2),
- (688,491,94,2),
- (718,521,94,2),
- (37,24,95,3),
- (179,124,95,3),
- (340,236,95,3),
- (474,331,95,3),
- (150,107,96,3),
- (206,142,96,3),
- (217,151,96,2),
- (219,152,96,2),
- (221,153,96,2),
- (223,154,96,2),
- (225,155,96,2),
- (227,156,96,2),
- (228,157,96,2),
- (229,158,96,2),
- (231,159,96,2),
- (233,160,96,2),
- (235,161,96,2),
- (236,162,96,2),
- (237,163,96,2),
- (238,164,96,2),
- (239,165,96,2),
- (240,166,96,2),
- (241,167,96,2),
- (243,168,96,2),
- (244,169,96,2),
- (246,170,96,2),
- (248,171,96,2),
- (250,172,96,2),
- (251,173,96,2),
- (253,174,96,2),
- (254,175,96,2),
- (255,176,96,2),
- (256,177,96,2),
- (258,178,96,2),
- (260,179,96,2),
- (261,180,96,2),
- (262,181,96,2),
- (263,182,96,2),
- (265,183,96,2),
- (266,184,96,2),
- (267,185,96,2),
- (269,186,96,2),
- (270,187,96,2),
- (271,188,96,2),
- (273,189,96,2),
- (275,190,96,2),
- (276,191,96,2),
- (277,192,96,2),
- (278,193,96,2),
- (280,194,96,2),
- (282,195,96,2),
- (284,196,96,2),
- (286,197,96,2),
- (287,198,96,2),
- (288,199,96,2),
- (289,200,96,2),
- (291,201,96,2),
- (293,202,96,2),
- (295,203,96,2),
- (296,204,96,2),
- (297,205,96,2),
- (299,206,96,2),
- (300,207,96,2),
- (301,208,96,2),
- (302,209,96,2),
- (303,210,96,2),
- (305,211,96,2),
- (307,212,96,2),
- (308,213,96,2),
- (310,214,96,2),
- (311,215,96,2),
- (312,216,96,2),
- (313,217,96,2),
- (314,218,96,2),
- (316,219,96,2),
- (318,220,96,2),
- (319,221,96,2),
- (320,222,96,2),
- (322,223,96,2),
- (324,224,96,2),
- (325,225,96,2),
- (327,226,96,2),
- (328,227,96,2),
- (330,228,96,2),
- (331,229,96,2),
- (332,230,96,2),
- (333,231,96,2),
- (335,232,96,2),
- (336,233,96,2),
- (337,234,96,2),
- (338,235,96,2),
- (339,236,96,2),
- (341,237,96,2),
- (343,238,96,2),
- (345,239,96,2),
- (346,240,96,2),
- (347,241,96,2),
- (349,242,96,2),
- (351,243,96,2),
- (353,244,96,2),
- (354,245,96,2),
- (355,246,96,2),
- (356,247,96,2),
- (357,248,96,2),
- (359,249,96,2),
- (361,250,96,2),
- (362,251,96,2),
- (364,252,96,2),
- (365,253,96,2),
- (366,254,96,2),
- (367,255,96,2),
- (368,256,96,2),
- (369,257,96,2),
- (370,258,96,2),
- (371,259,96,2),
- (372,260,96,2),
- (373,261,96,2),
- (375,262,96,2),
- (376,263,96,2),
- (378,264,96,2),
- (379,265,96,2),
- (380,266,96,2),
- (381,267,96,2),
- (382,268,96,2),
- (384,269,96,2),
- (385,270,96,2),
- (386,271,96,2),
- (387,272,96,2),
- (389,273,96,2),
- (390,274,96,2),
- (392,275,96,2),
- (393,276,96,2),
- (394,277,96,2),
- (395,278,96,2),
- (396,279,96,2),
- (397,280,96,2),
- (398,281,96,2),
- (400,282,96,2),
- (401,283,96,2),
- (403,284,96,2),
- (405,285,96,2),
- (407,286,96,2),
- (408,287,96,2),
- (410,288,96,2),
- (411,289,96,2),
- (412,290,96,2),
- (414,291,96,2),
- (415,292,96,2),
- (417,293,96,2),
- (418,294,96,2),
- (420,295,96,2),
- (422,296,96,2),
- (423,297,96,2),
- (424,298,96,2),
- (425,299,96,2),
- (426,300,96,2),
- (702,505,96,2),
- (732,535,96,2),
- (30,20,97,3),
- (549,379,97,3),
- (699,502,97,2),
- (729,532,97,2),
- (203,140,98,3),
- (247,170,98,3),
- (326,225,99,3),
- (449,315,99,3),
- (556,383,99,3),
- (673,476,99,2),
- (674,477,99,2),
- (675,478,99,2),
- (676,479,99,2),
- (677,480,99,2),
- (773,576,99,2),
- (292,201,101,3),
- (309,213,101,3),
- (766,569,101,2),
- (678,481,103,2),
- (692,495,104,2),
- (722,525,104,2),
- (748,551,104,2),
- (744,547,105,2),
- (1,1,109,2),
- (3,2,109,2),
- (4,3,109,2),
- (6,4,109,2),
- (7,5,109,2),
- (8,6,109,2),
- (10,7,109,2),
- (12,8,109,2),
- (13,9,109,2),
- (14,10,109,2),
- (15,11,109,2),
- (16,12,109,2),
- (18,13,109,2),
- (20,14,109,2),
- (22,15,109,2),
- (23,16,109,2),
- (25,17,109,2),
- (26,18,109,2),
- (28,19,109,2),
- (29,20,109,2),
- (31,21,109,2),
- (32,22,109,2),
- (34,23,109,2),
- (36,24,109,2),
- (38,25,109,2),
- (39,26,109,2),
- (40,27,109,2),
- (42,28,109,2),
- (43,29,109,2),
- (44,30,109,2),
- (45,31,109,2),
- (46,32,109,2),
- (47,33,109,2),
- (48,34,109,2),
- (49,35,109,2),
- (50,36,109,2),
- (51,37,109,2),
- (52,38,109,2),
- (53,39,109,2),
- (55,40,109,2),
- (56,41,109,2),
- (57,42,109,2),
- (58,43,109,2),
- (59,44,109,2),
- (61,45,109,2),
- (62,46,109,2),
- (63,47,109,2),
- (64,48,109,2),
- (66,49,109,2),
- (67,50,109,2),
- (69,51,109,2),
- (71,52,109,2),
- (72,53,109,2),
- (74,54,109,2),
- (76,55,109,2),
- (77,56,109,2),
- (79,57,109,2),
- (80,58,109,2),
- (82,59,109,2),
- (84,60,109,2),
- (86,61,109,2),
- (88,62,109,2),
- (89,63,109,2),
- (91,64,109,2),
- (92,65,109,2),
- (94,66,109,2),
- (95,67,109,2),
- (97,68,109,2),
- (99,69,109,2),
- (101,70,109,2),
- (102,71,109,2),
- (103,72,109,2),
- (104,73,109,2),
- (105,74,109,2),
- (106,75,109,2),
- (107,76,109,2),
- (108,77,109,2),
- (110,78,109,2),
- (112,79,109,2),
- (114,80,109,2),
- (115,81,109,2),
- (116,82,109,2),
- (117,83,109,2),
- (118,84,109,2),
- (119,85,109,2),
- (120,86,109,2),
- (121,87,109,2),
- (122,88,109,2),
- (123,89,109,2),
- (125,90,109,2),
- (127,91,109,2),
- (129,92,109,2),
- (130,93,109,2),
- (131,94,109,2),
- (133,95,109,2),
- (134,96,109,2),
- (136,97,109,2),
- (137,98,109,2),
- (139,99,109,2),
- (140,100,109,2),
- (142,101,109,2),
- (143,102,109,2),
- (144,103,109,2),
- (145,104,109,2),
- (146,105,109,2),
- (147,106,109,2),
- (149,107,109,2),
- (151,108,109,2),
- (152,109,109,2),
- (154,110,109,2),
- (156,111,109,2),
- (158,112,109,2),
- (160,113,109,2),
- (162,114,109,2),
- (164,115,109,2),
- (166,116,109,2),
- (167,117,109,2),
- (168,118,109,2),
- (170,119,109,2),
- (172,120,109,2),
- (174,121,109,2),
- (175,122,109,2),
- (177,123,109,2),
- (178,124,109,2),
- (180,125,109,2),
- (181,126,109,2),
- (183,127,109,2),
- (185,128,109,2),
- (186,129,109,2),
- (187,130,109,2),
- (189,131,109,2),
- (191,132,109,2),
- (192,133,109,2),
- (193,134,109,2),
- (195,135,109,2),
- (196,136,109,2),
- (198,137,109,2),
- (199,138,109,2),
- (200,139,109,2),
- (202,140,109,2),
- (204,141,109,2),
- (205,142,109,2),
- (207,143,109,2),
- (208,144,109,2),
- (209,145,109,2),
- (210,146,109,2),
- (212,147,109,2),
- (213,148,109,2),
- (214,149,109,2),
- (215,150,109,2),
- (679,482,111,2),
- (709,512,111,2),
- (704,507,112,2),
- (734,537,112,2),
- (767,570,114,2),
- (770,573,119,2),
- (428,301,123,2),
- (429,302,123,2),
- (431,303,123,2),
- (432,304,123,2),
- (434,305,123,2),
- (436,306,123,2),
- (438,307,123,2),
- (439,308,123,2),
- (440,309,123,2),
- (441,310,123,2),
- (442,311,123,2),
- (443,312,123,2),
- (444,313,123,2),
- (446,314,123,2),
- (448,315,123,2),
- (450,316,123,2),
- (451,317,123,2),
- (452,318,123,2),
- (454,319,123,2),
- (456,320,123,2),
- (458,321,123,2),
- (460,322,123,2),
- (461,323,123,2),
- (462,324,123,2),
- (464,325,123,2),
- (465,326,123,2),
- (466,327,123,2),
- (468,328,123,2),
- (469,329,123,2),
- (471,330,123,2),
- (473,331,123,2),
- (475,332,123,2),
- (477,333,123,2),
- (479,334,123,2),
- (480,335,123,2),
- (481,336,123,2),
- (483,337,123,2),
- (484,338,123,2),
- (486,339,123,2),
- (487,340,123,2),
- (489,341,123,2),
- (491,342,123,2),
- (492,343,123,2),
- (494,344,123,2),
- (495,345,123,2),
- (496,346,123,2),
- (498,347,123,2),
- (500,348,123,2),
- (502,349,123,2),
- (504,350,123,2),
- (505,351,123,2),
- (507,352,123,2),
- (508,353,123,2),
- (510,354,123,2),
- (512,355,123,2),
- (514,356,123,2),
- (516,357,123,2),
- (517,358,123,2),
- (518,359,123,2),
- (520,360,123,2),
- (522,361,123,2),
- (523,362,123,2),
- (524,363,123,2),
- (525,364,123,2),
- (527,365,123,2),
- (529,366,123,2),
- (531,367,123,2),
- (532,368,123,2),
- (534,369,123,2),
- (535,370,123,2),
- (537,371,123,2),
- (539,372,123,2),
- (540,373,123,2),
- (542,374,123,2),
- (544,375,123,2),
- (545,376,123,2),
- (546,377,123,2),
- (547,378,123,2),
- (548,379,123,2),
- (550,380,123,2),
- (552,381,123,2),
- (554,382,123,2),
- (555,383,123,2),
- (557,384,123,2),
- (558,385,123,2),
- (559,386,123,2),
- (560,387,123,2),
- (562,388,123,2),
- (564,389,123,2),
- (565,390,123,2),
- (566,391,123,2),
- (567,392,123,2),
- (568,393,123,2),
- (569,394,123,2),
- (570,395,123,2),
- (572,396,123,2),
- (574,397,123,2),
- (575,398,123,2),
- (576,399,123,2),
- (577,400,123,2),
- (578,401,123,2),
- (580,402,123,2),
- (581,403,123,2),
- (583,404,123,2),
- (584,405,123,2),
- (585,406,123,2),
- (586,407,123,2),
- (587,408,123,2),
- (589,409,123,2),
- (591,410,123,2),
- (592,411,123,2),
- (594,412,123,2),
- (595,413,123,2),
- (596,414,123,2),
- (597,415,123,2),
- (598,416,123,2),
- (599,417,123,2),
- (601,418,123,2),
- (602,419,123,2),
- (603,420,123,2),
- (604,421,123,2),
- (606,422,123,2),
- (608,423,123,2),
- (609,424,123,2),
- (610,425,123,2),
- (612,426,123,2),
- (613,427,123,2),
- (614,428,123,2),
- (615,429,123,2),
- (617,430,123,2),
- (619,431,123,2),
- (621,432,123,2),
- (622,433,123,2),
- (623,434,123,2),
- (624,435,123,2),
- (625,436,123,2),
- (627,437,123,2),
- (628,438,123,2),
- (629,439,123,2),
- (631,440,123,2),
- (632,441,123,2),
- (634,442,123,2),
- (636,443,123,2),
- (637,444,123,2),
- (638,445,123,2),
- (640,446,123,2),
- (641,447,123,2),
- (643,448,123,2),
- (644,449,123,2),
- (646,450,123,2),
- (687,490,125,2),
- (717,520,125,2),
- (753,556,125,2),
- (768,571,126,2),
- (751,554,127,2),
- (696,499,129,2),
- (726,529,129,2),
- (706,509,130,2),
- (736,539,130,2),
- (754,557,130,2),
- (684,487,137,2),
- (714,517,137,2),
- (695,498,138,2),
- (725,528,138,2),
- (742,545,138,2),
- (756,559,139,2),
- (769,572,141,2),
- (752,555,143,2),
- (765,568,150,2),
- (746,549,151,2),
- (694,497,152,2),
- (724,527,152,2),
- (755,558,152,2),
- (778,581,154,2),
- (705,508,155,2),
- (735,538,155,2),
- (750,553,157,2),
- (682,485,164,2),
- (712,515,164,2),
- (781,584,165,2),
- (690,493,166,2),
- (720,523,166,2),
- (701,504,171,2),
- (731,534,171,2),
- (785,588,174,2),
- (777,580,179,2),
- (740,543,182,2),
- (762,565,183,2),
- (786,589,190,2),
- (686,489,193,2),
- (716,519,193,2),
- (685,488,194,2),
- (715,518,194,2),
- (697,500,198,2),
- (727,530,198,2);
+ (384,192,1,3),
+ (562,281,1,3),
+ (726,363,1,3),
+ (806,403,1,3),
+ (170,85,2,3),
+ (394,197,2,3),
+ (404,202,2,3),
+ (624,312,2,3),
+ (716,358,2,3),
+ (876,438,2,3),
+ (901,451,2,2),
+ (478,239,3,3),
+ (640,320,3,3),
+ (947,497,3,2),
+ (977,527,3,2),
+ (1040,590,3,2),
+ (266,133,4,3),
+ (290,145,4,3),
+ (301,151,4,2),
+ (303,152,4,2),
+ (305,153,4,2),
+ (307,154,4,2),
+ (309,155,4,2),
+ (311,156,4,2),
+ (313,157,4,2),
+ (315,158,4,2),
+ (317,159,4,2),
+ (319,160,4,2),
+ (321,161,4,2),
+ (323,162,4,2),
+ (325,163,4,2),
+ (327,164,4,2),
+ (329,165,4,2),
+ (331,166,4,2),
+ (333,167,4,2),
+ (335,168,4,2),
+ (337,169,4,2),
+ (339,170,4,2),
+ (341,171,4,2),
+ (343,172,4,2),
+ (345,173,4,2),
+ (347,174,4,2),
+ (349,175,4,2),
+ (351,176,4,2),
+ (353,177,4,2),
+ (355,178,4,2),
+ (357,179,4,2),
+ (359,180,4,2),
+ (361,181,4,2),
+ (363,182,4,2),
+ (365,183,4,2),
+ (367,184,4,2),
+ (369,185,4,2),
+ (371,186,4,2),
+ (373,187,4,2),
+ (375,188,4,2),
+ (377,189,4,2),
+ (379,190,4,2),
+ (381,191,4,2),
+ (383,192,4,2),
+ (385,193,4,2),
+ (387,194,4,2),
+ (389,195,4,2),
+ (391,196,4,2),
+ (393,197,4,2),
+ (395,198,4,2),
+ (397,199,4,2),
+ (399,200,4,2),
+ (401,201,4,2),
+ (403,202,4,2),
+ (405,203,4,2),
+ (407,204,4,2),
+ (409,205,4,2),
+ (411,206,4,2),
+ (413,207,4,2),
+ (415,208,4,2),
+ (417,209,4,2),
+ (419,210,4,2),
+ (421,211,4,2),
+ (423,212,4,2),
+ (425,213,4,2),
+ (427,214,4,2),
+ (429,215,4,2),
+ (431,216,4,2),
+ (433,217,4,2),
+ (435,218,4,2),
+ (437,219,4,2),
+ (439,220,4,2),
+ (441,221,4,2),
+ (443,222,4,2),
+ (445,223,4,2),
+ (447,224,4,2),
+ (449,225,4,2),
+ (451,226,4,2),
+ (453,227,4,2),
+ (455,228,4,2),
+ (457,229,4,2),
+ (459,230,4,2),
+ (461,231,4,2),
+ (463,232,4,2),
+ (465,233,4,2),
+ (467,234,4,2),
+ (469,235,4,2),
+ (471,236,4,2),
+ (473,237,4,2),
+ (475,238,4,2),
+ (477,239,4,2),
+ (479,240,4,2),
+ (481,241,4,2),
+ (483,242,4,2),
+ (485,243,4,2),
+ (487,244,4,2),
+ (489,245,4,2),
+ (491,246,4,2),
+ (493,247,4,2),
+ (495,248,4,2),
+ (497,249,4,2),
+ (499,250,4,2),
+ (501,251,4,2),
+ (503,252,4,2),
+ (505,253,4,2),
+ (507,254,4,2),
+ (509,255,4,2),
+ (511,256,4,2),
+ (513,257,4,2),
+ (515,258,4,2),
+ (517,259,4,2),
+ (519,260,4,2),
+ (521,261,4,2),
+ (523,262,4,2),
+ (525,263,4,2),
+ (527,264,4,2),
+ (529,265,4,2),
+ (531,266,4,2),
+ (533,267,4,2),
+ (535,268,4,2),
+ (537,269,4,2),
+ (538,269,4,3),
+ (539,270,4,2),
+ (541,271,4,2),
+ (543,272,4,2),
+ (545,273,4,2),
+ (547,274,4,2),
+ (549,275,4,2),
+ (551,276,4,2),
+ (553,277,4,2),
+ (555,278,4,2),
+ (557,279,4,2),
+ (559,280,4,2),
+ (561,281,4,2),
+ (563,282,4,2),
+ (565,283,4,2),
+ (567,284,4,2),
+ (569,285,4,2),
+ (571,286,4,2),
+ (573,287,4,2),
+ (575,288,4,2),
+ (577,289,4,2),
+ (579,290,4,2),
+ (581,291,4,2),
+ (583,292,4,2),
+ (585,293,4,2),
+ (587,294,4,2),
+ (589,295,4,2),
+ (591,296,4,2),
+ (593,297,4,2),
+ (595,298,4,2),
+ (597,299,4,2),
+ (599,300,4,2),
+ (900,450,4,3),
+ (902,452,4,2),
+ (905,455,4,2),
+ (558,279,5,3),
+ (614,307,5,3),
+ (854,427,5,3),
+ (888,444,5,3),
+ (186,93,6,3),
+ (192,96,6,3),
+ (210,105,6,3),
+ (354,177,6,3),
+ (440,220,6,3),
+ (566,283,6,3),
+ (648,324,6,3),
+ (866,433,6,3),
+ (874,437,6,3),
+ (903,453,6,2),
+ (370,185,7,3),
+ (464,232,7,3),
+ (260,130,8,3),
+ (904,454,8,2),
+ (935,485,8,2),
+ (965,515,8,2),
+ (28,14,9,3),
+ (240,120,9,3),
+ (292,146,9,3),
+ (540,270,9,3),
+ (564,282,9,3),
+ (742,371,9,3),
+ (997,547,9,2),
+ (596,298,10,3),
+ (678,339,10,3),
+ (158,79,11,3),
+ (522,261,11,3),
+ (650,325,11,3),
+ (896,448,11,3),
+ (1000,550,11,2),
+ (10,5,12,3),
+ (156,78,12,3),
+ (218,109,12,3),
+ (580,290,12,3),
+ (848,424,12,3),
+ (880,440,12,3),
+ (1001,551,12,2),
+ (64,32,13,3),
+ (304,152,13,3),
+ (334,167,13,3),
+ (766,383,13,3),
+ (890,445,13,3),
+ (949,499,13,2),
+ (979,529,13,2),
+ (298,149,14,3),
+ (456,228,14,3),
+ (810,405,14,3),
+ (40,20,15,3),
+ (152,76,15,3),
+ (584,292,15,3),
+ (204,102,16,3),
+ (720,360,16,3),
+ (906,456,16,2),
+ (994,544,16,2),
+ (232,116,17,3),
+ (554,277,17,3),
+ (582,291,17,3),
+ (688,344,17,3),
+ (826,413,17,3),
+ (1015,565,17,2),
+ (222,111,18,3),
+ (932,482,18,2),
+ (962,512,18,2),
+ (1003,553,18,2),
+ (140,70,19,3),
+ (376,188,19,3),
+ (386,193,19,3),
+ (490,245,19,3),
+ (708,354,19,3),
+ (907,457,19,2),
+ (258,129,20,3),
+ (406,203,21,3),
+ (999,549,21,2),
+ (284,142,22,3),
+ (286,143,22,3),
+ (314,157,22,3),
+ (1026,576,22,2),
+ (70,35,23,3),
+ (84,42,23,3),
+ (308,154,23,3),
+ (618,309,23,3),
+ (664,332,23,3),
+ (230,115,24,3),
+ (1022,572,24,2),
+ (202,101,25,3),
+ (256,128,25,3),
+ (400,200,25,3),
+ (792,396,25,3),
+ (884,442,25,3),
+ (1002,552,25,2),
+ (188,94,26,3),
+ (418,209,26,3),
+ (802,401,26,3),
+ (850,425,26,3),
+ (956,506,26,2),
+ (986,536,26,2),
+ (520,260,27,3),
+ (546,273,27,3),
+ (756,378,27,3),
+ (934,484,27,2),
+ (964,514,27,2),
+ (136,68,28,3),
+ (194,97,28,3),
+ (362,181,28,3),
+ (1037,587,28,2),
+ (44,22,29,3),
+ (348,174,29,3),
+ (646,323,29,3),
+ (724,362,29,3),
+ (1042,592,29,2),
+ (72,36,30,3),
+ (306,153,30,3),
+ (760,380,30,3),
+ (834,417,30,3),
+ (860,430,30,3),
+ (898,449,30,3),
+ (955,505,30,2),
+ (985,535,30,2),
+ (666,333,31,3),
+ (856,428,31,3),
+ (868,434,31,3),
+ (1029,579,31,2),
+ (14,7,32,3),
+ (270,135,32,3),
+ (294,147,32,3),
+ (758,379,32,3),
+ (913,463,32,2),
+ (914,464,32,2),
+ (196,98,33,3),
+ (486,243,33,3),
+ (700,350,33,3),
+ (770,385,33,3),
+ (46,23,34,3),
+ (98,49,34,3),
+ (224,112,34,3),
+ (672,336,34,3),
+ (910,460,34,2),
+ (26,13,35,3),
+ (50,25,35,3),
+ (396,198,35,3),
+ (578,289,35,3),
+ (704,352,35,3),
+ (252,126,36,3),
+ (374,187,36,3),
+ (402,201,36,3),
+ (438,219,36,3),
+ (570,285,36,3),
+ (680,340,36,3),
+ (706,353,36,3),
+ (774,387,36,3),
+ (214,107,37,3),
+ (262,131,37,3),
+ (736,368,37,3),
+ (816,408,37,3),
+ (442,221,38,3),
+ (1032,582,38,2),
+ (242,121,39,3),
+ (372,186,39,3),
+ (430,215,39,3),
+ (696,348,39,3),
+ (722,361,39,3),
+ (814,407,39,3),
+ (1038,588,39,2),
+ (20,10,40,3),
+ (36,18,40,3),
+ (512,256,40,3),
+ (590,295,40,3),
+ (864,432,40,3),
+ (112,56,41,3),
+ (132,66,41,3),
+ (432,216,41,3),
+ (610,305,41,3),
+ (958,508,41,2),
+ (988,538,41,2),
+ (1013,563,41,2),
+ (6,3,42,3),
+ (268,134,42,3),
+ (392,196,42,3),
+ (601,301,42,2),
+ (603,302,42,2),
+ (605,303,42,2),
+ (607,304,42,2),
+ (609,305,42,2),
+ (611,306,42,2),
+ (613,307,42,2),
+ (615,308,42,2),
+ (617,309,42,2),
+ (619,310,42,2),
+ (621,311,42,2),
+ (623,312,42,2),
+ (625,313,42,2),
+ (627,314,42,2),
+ (629,315,42,2),
+ (631,316,42,2),
+ (633,317,42,2),
+ (635,318,42,2),
+ (637,319,42,2),
+ (639,320,42,2),
+ (641,321,42,2),
+ (643,322,42,2),
+ (645,323,42,2),
+ (647,324,42,2),
+ (649,325,42,2),
+ (651,326,42,2),
+ (653,327,42,2),
+ (654,327,42,3),
+ (655,328,42,2),
+ (657,329,42,2),
+ (659,330,42,2),
+ (661,331,42,2),
+ (663,332,42,2),
+ (665,333,42,2),
+ (667,334,42,2),
+ (669,335,42,2),
+ (671,336,42,2),
+ (673,337,42,2),
+ (675,338,42,2),
+ (677,339,42,2),
+ (679,340,42,2),
+ (681,341,42,2),
+ (683,342,42,2),
+ (685,343,42,2),
+ (687,344,42,2),
+ (689,345,42,2),
+ (691,346,42,2),
+ (693,347,42,2),
+ (695,348,42,2),
+ (697,349,42,2),
+ (699,350,42,2),
+ (701,351,42,2),
+ (703,352,42,2),
+ (705,353,42,2),
+ (707,354,42,2),
+ (709,355,42,2),
+ (711,356,42,2),
+ (713,357,42,2),
+ (715,358,42,2),
+ (717,359,42,2),
+ (719,360,42,2),
+ (721,361,42,2),
+ (723,362,42,2),
+ (725,363,42,2),
+ (727,364,42,2),
+ (729,365,42,2),
+ (731,366,42,2),
+ (733,367,42,2),
+ (735,368,42,2),
+ (737,369,42,2),
+ (739,370,42,2),
+ (741,371,42,2),
+ (743,372,42,2),
+ (745,373,42,2),
+ (747,374,42,2),
+ (749,375,42,2),
+ (751,376,42,2),
+ (753,377,42,2),
+ (755,378,42,2),
+ (757,379,42,2),
+ (759,380,42,2),
+ (761,381,42,2),
+ (763,382,42,2),
+ (765,383,42,2),
+ (767,384,42,2),
+ (769,385,42,2),
+ (771,386,42,2),
+ (773,387,42,2),
+ (775,388,42,2),
+ (777,389,42,2),
+ (779,390,42,2),
+ (781,391,42,2),
+ (783,392,42,2),
+ (785,393,42,2),
+ (787,394,42,2),
+ (789,395,42,2),
+ (791,396,42,2),
+ (793,397,42,2),
+ (795,398,42,2),
+ (796,398,42,3),
+ (797,399,42,2),
+ (799,400,42,2),
+ (801,401,42,2),
+ (803,402,42,2),
+ (805,403,42,2),
+ (807,404,42,2),
+ (809,405,42,2),
+ (811,406,42,2),
+ (813,407,42,2),
+ (815,408,42,2),
+ (817,409,42,2),
+ (819,410,42,2),
+ (821,411,42,2),
+ (823,412,42,2),
+ (824,412,42,3),
+ (825,413,42,2),
+ (827,414,42,2),
+ (829,415,42,2),
+ (831,416,42,2),
+ (833,417,42,2),
+ (835,418,42,2),
+ (837,419,42,2),
+ (839,420,42,2),
+ (841,421,42,2),
+ (843,422,42,2),
+ (845,423,42,2),
+ (847,424,42,2),
+ (849,425,42,2),
+ (851,426,42,2),
+ (853,427,42,2),
+ (855,428,42,2),
+ (857,429,42,2),
+ (859,430,42,2),
+ (861,431,42,2),
+ (863,432,42,2),
+ (865,433,42,2),
+ (867,434,42,2),
+ (869,435,42,2),
+ (871,436,42,2),
+ (873,437,42,2),
+ (875,438,42,2),
+ (877,439,42,2),
+ (879,440,42,2),
+ (881,441,42,2),
+ (883,442,42,2),
+ (885,443,42,2),
+ (887,444,42,2),
+ (889,445,42,2),
+ (891,446,42,2),
+ (893,447,42,2),
+ (895,448,42,2),
+ (897,449,42,2),
+ (899,450,42,2),
+ (104,52,43,3),
+ (190,95,43,3),
+ (448,224,43,3),
+ (626,313,43,3),
+ (698,349,43,3),
+ (714,357,43,3),
+ (728,364,43,3),
+ (912,462,43,2),
+ (248,124,44,3),
+ (822,411,44,3),
+ (832,416,44,3),
+ (4,2,45,3),
+ (358,179,45,3),
+ (468,234,45,3),
+ (776,388,45,3),
+ (302,151,46,3),
+ (350,175,46,3),
+ (494,247,46,3),
+ (556,278,46,3),
+ (12,6,47,3),
+ (22,11,47,3),
+ (66,33,47,3),
+ (216,108,47,3),
+ (228,114,47,3),
+ (318,159,47,3),
+ (380,190,47,3),
+ (312,156,48,3),
+ (428,214,48,3),
+ (690,345,48,3),
+ (1011,561,48,2),
+ (30,15,49,3),
+ (60,30,49,3),
+ (94,47,49,3),
+ (206,103,49,3),
+ (226,113,49,3),
+ (424,212,49,3),
+ (878,439,49,3),
+ (382,191,50,3),
+ (390,195,50,3),
+ (530,265,50,3),
+ (692,346,50,3),
+ (754,377,50,3),
+ (800,400,50,3),
+ (58,29,51,3),
+ (68,34,51,3),
+ (92,46,51,3),
+ (166,83,51,3),
+ (176,88,51,3),
+ (412,206,51,3),
+ (458,229,51,3),
+ (764,382,51,3),
+ (246,123,52,3),
+ (364,182,52,3),
+ (452,226,52,3),
+ (762,381,52,3),
+ (768,384,52,3),
+ (780,390,52,3),
+ (126,63,53,3),
+ (296,148,53,3),
+ (328,164,53,3),
+ (482,241,53,3),
+ (960,510,53,2),
+ (990,540,53,2),
+ (344,172,54,3),
+ (504,252,54,3),
+ (694,347,54,3),
+ (961,511,54,2),
+ (991,541,54,2),
+ (110,55,55,3),
+ (686,343,55,3),
+ (712,356,55,3),
+ (882,441,55,3),
+ (62,31,56,3),
+ (174,87,56,3),
+ (422,211,56,3),
+ (446,223,56,3),
+ (750,375,56,3),
+ (752,376,56,3),
+ (138,69,57,3),
+ (168,84,57,3),
+ (280,140,57,3),
+ (388,194,57,3),
+ (524,262,57,3),
+ (732,366,57,3),
+ (746,373,57,3),
+ (790,395,57,3),
+ (162,81,58,3),
+ (236,118,58,3),
+ (552,276,58,3),
+ (620,310,58,3),
+ (656,328,58,3),
+ (794,397,58,3),
+ (858,429,58,3),
+ (1031,581,58,2),
+ (748,374,59,3),
+ (842,421,59,3),
+ (915,465,59,2),
+ (916,466,59,2),
+ (917,467,59,2),
+ (918,468,59,2),
+ (919,469,59,2),
+ (920,470,59,2),
+ (921,471,59,2),
+ (922,472,59,2),
+ (923,473,59,2),
+ (924,474,59,2),
+ (925,475,59,2),
+ (34,17,60,3),
+ (332,166,60,3),
+ (436,218,60,3),
+ (460,230,60,3),
+ (514,257,60,3),
+ (662,331,60,3),
+ (892,446,60,3),
+ (96,48,61,3),
+ (120,60,61,3),
+ (278,139,61,3),
+ (324,162,61,3),
+ (474,237,61,3),
+ (598,299,61,3),
+ (862,431,61,3),
+ (870,435,61,3),
+ (148,74,62,3),
+ (670,335,62,3),
+ (998,548,62,2),
+ (276,138,63,3),
+ (414,207,63,3),
+ (472,236,63,3),
+ (496,248,63,3),
+ (957,507,63,2),
+ (987,537,63,2),
+ (180,90,64,3),
+ (330,165,64,3),
+ (408,204,64,3),
+ (420,210,64,3),
+ (444,222,64,3),
+ (616,308,64,3),
+ (86,43,65,3),
+ (124,62,65,3),
+ (506,253,65,3),
+ (630,315,65,3),
+ (718,359,65,3),
+ (342,171,66,3),
+ (638,319,66,3),
+ (642,321,66,3),
+ (798,399,66,3),
+ (852,426,66,3),
+ (18,9,67,3),
+ (32,16,67,3),
+ (628,314,67,3),
+ (660,330,67,3),
+ (88,44,68,3),
+ (134,67,68,3),
+ (476,238,68,3),
+ (808,404,68,3),
+ (950,500,68,2),
+ (980,530,68,2),
+ (2,1,69,3),
+ (508,254,69,3),
+ (652,326,69,3),
+ (368,184,70,3),
+ (498,249,70,3),
+ (536,268,70,3),
+ (604,302,70,3),
+ (830,415,70,3),
+ (846,423,70,3),
+ (1030,580,70,2),
+ (16,8,71,3),
+ (38,19,71,3),
+ (244,122,71,3),
+ (434,217,71,3),
+ (612,306,71,3),
+ (911,461,71,2),
+ (316,158,72,3),
+ (450,225,72,3),
+ (198,99,73,3),
+ (200,100,73,3),
+ (48,24,74,3),
+ (282,141,74,3),
+ (1019,569,74,2),
+ (114,57,75,3),
+ (488,244,75,3),
+ (772,386,75,3),
+ (250,125,76,3),
+ (254,127,76,3),
+ (454,227,76,3),
+ (528,264,76,3),
+ (182,91,77,3),
+ (208,104,77,3),
+ (322,161,77,3),
+ (484,242,77,3),
+ (516,258,77,3),
+ (542,271,77,3),
+ (828,414,77,3),
+ (130,65,78,3),
+ (572,286,78,3),
+ (574,287,78,3),
+ (602,301,78,3),
+ (838,419,78,3),
+ (42,21,79,3),
+ (54,27,79,3),
+ (108,54,79,3),
+ (378,189,79,3),
+ (172,86,80,3),
+ (212,106,80,3),
+ (636,318,80,3),
+ (682,341,80,3),
+ (102,51,81,3),
+ (894,447,81,3),
+ (52,26,82,3),
+ (106,53,82,3),
+ (238,119,82,3),
+ (812,406,82,3),
+ (908,458,82,2),
+ (144,72,83,3),
+ (164,82,83,3),
+ (288,144,83,3),
+ (480,240,83,3),
+ (820,410,83,3),
+ (1004,554,83,2),
+ (78,39,84,3),
+ (532,266,84,3),
+ (676,338,84,3),
+ (872,436,84,3),
+ (1028,578,84,2),
+ (352,176,85,3),
+ (360,180,85,3),
+ (658,329,85,3),
+ (734,367,85,3),
+ (466,233,86,3),
+ (568,284,86,3),
+ (586,293,86,3),
+ (738,369,86,3),
+ (56,28,87,3),
+ (264,132,87,3),
+ (310,155,87,3),
+ (502,251,87,3),
+ (608,304,87,3),
+ (622,311,87,3),
+ (154,77,88,3),
+ (338,169,88,3),
+ (346,173,88,3),
+ (784,392,88,3),
+ (146,73,89,3),
+ (510,255,89,3),
+ (788,394,89,3),
+ (840,420,89,3),
+ (1018,568,89,2),
+ (80,40,90,3),
+ (116,58,90,3),
+ (220,110,90,3),
+ (730,365,90,3),
+ (844,422,90,3),
+ (886,443,90,3),
+ (160,80,91,3),
+ (234,117,91,3),
+ (366,183,91,3),
+ (462,231,91,3),
+ (526,263,91,3),
+ (548,274,91,3),
+ (560,280,91,3),
+ (320,160,92,3),
+ (336,168,92,3),
+ (410,205,92,3),
+ (684,342,92,3),
+ (702,351,92,3),
+ (744,372,92,3),
+ (786,393,92,3),
+ (909,459,92,2),
+ (90,45,93,3),
+ (398,199,93,3),
+ (416,208,93,3),
+ (470,235,93,3),
+ (544,272,93,3),
+ (634,317,93,3),
+ (1036,586,93,2),
+ (82,41,94,3),
+ (118,59,94,3),
+ (142,71,94,3),
+ (274,137,94,3),
+ (426,213,94,3),
+ (534,267,94,3),
+ (588,294,94,3),
+ (594,297,94,3),
+ (740,370,94,3),
+ (1012,562,94,2),
+ (122,61,95,3),
+ (178,89,95,3),
+ (836,418,95,3),
+ (1034,584,95,2),
+ (8,4,96,3),
+ (76,38,96,3),
+ (150,75,96,3),
+ (518,259,96,3),
+ (128,64,97,3),
+ (326,163,97,3),
+ (632,316,97,3),
+ (492,246,98,3),
+ (500,250,98,3),
+ (592,296,98,3),
+ (674,337,98,3),
+ (184,92,99,3),
+ (340,170,99,3),
+ (576,288,99,3),
+ (818,409,99,3),
+ (926,476,99,2),
+ (927,477,99,2),
+ (928,478,99,2),
+ (929,479,99,2),
+ (930,480,99,2),
+ (1023,573,99,2),
+ (24,12,100,3),
+ (74,37,100,3),
+ (100,50,100,3),
+ (272,136,100,3),
+ (356,178,100,3),
+ (550,275,100,3),
+ (600,300,100,3),
+ (668,334,100,3),
+ (710,355,100,3),
+ (778,389,100,3),
+ (804,402,100,3),
+ (942,492,100,2),
+ (972,522,100,2),
+ (1009,559,100,2),
+ (300,150,101,3),
+ (606,303,101,3),
+ (644,322,101,3),
+ (782,391,101,3),
+ (946,496,102,2),
+ (976,526,102,2),
+ (931,481,103,2),
+ (941,491,104,2),
+ (971,521,104,2),
+ (933,483,107,2),
+ (963,513,107,2),
+ (1024,574,108,2),
+ (1008,558,109,2),
+ (1039,589,110,2),
+ (996,546,113,2),
+ (936,486,120,2),
+ (966,516,120,2),
+ (940,490,127,2),
+ (970,520,127,2),
+ (1027,577,129,2),
+ (993,543,132,2),
+ (1025,575,133,2),
+ (1,1,134,2),
+ (3,2,134,2),
+ (5,3,134,2),
+ (7,4,134,2),
+ (9,5,134,2),
+ (11,6,134,2),
+ (13,7,134,2),
+ (15,8,134,2),
+ (17,9,134,2),
+ (19,10,134,2),
+ (21,11,134,2),
+ (23,12,134,2),
+ (25,13,134,2),
+ (27,14,134,2),
+ (29,15,134,2),
+ (31,16,134,2),
+ (33,17,134,2),
+ (35,18,134,2),
+ (37,19,134,2),
+ (39,20,134,2),
+ (41,21,134,2),
+ (43,22,134,2),
+ (45,23,134,2),
+ (47,24,134,2),
+ (49,25,134,2),
+ (51,26,134,2),
+ (53,27,134,2),
+ (55,28,134,2),
+ (57,29,134,2),
+ (59,30,134,2),
+ (61,31,134,2),
+ (63,32,134,2),
+ (65,33,134,2),
+ (67,34,134,2),
+ (69,35,134,2),
+ (71,36,134,2),
+ (73,37,134,2),
+ (75,38,134,2),
+ (77,39,134,2),
+ (79,40,134,2),
+ (81,41,134,2),
+ (83,42,134,2),
+ (85,43,134,2),
+ (87,44,134,2),
+ (89,45,134,2),
+ (91,46,134,2),
+ (93,47,134,2),
+ (95,48,134,2),
+ (97,49,134,2),
+ (99,50,134,2),
+ (101,51,134,2),
+ (103,52,134,2),
+ (105,53,134,2),
+ (107,54,134,2),
+ (109,55,134,2),
+ (111,56,134,2),
+ (113,57,134,2),
+ (115,58,134,2),
+ (117,59,134,2),
+ (119,60,134,2),
+ (121,61,134,2),
+ (123,62,134,2),
+ (125,63,134,2),
+ (127,64,134,2),
+ (129,65,134,2),
+ (131,66,134,2),
+ (133,67,134,2),
+ (135,68,134,2),
+ (137,69,134,2),
+ (139,70,134,2),
+ (141,71,134,2),
+ (143,72,134,2),
+ (145,73,134,2),
+ (147,74,134,2),
+ (149,75,134,2),
+ (151,76,134,2),
+ (153,77,134,2),
+ (155,78,134,2),
+ (157,79,134,2),
+ (159,80,134,2),
+ (161,81,134,2),
+ (163,82,134,2),
+ (165,83,134,2),
+ (167,84,134,2),
+ (169,85,134,2),
+ (171,86,134,2),
+ (173,87,134,2),
+ (175,88,134,2),
+ (177,89,134,2),
+ (179,90,134,2),
+ (181,91,134,2),
+ (183,92,134,2),
+ (185,93,134,2),
+ (187,94,134,2),
+ (189,95,134,2),
+ (191,96,134,2),
+ (193,97,134,2),
+ (195,98,134,2),
+ (197,99,134,2),
+ (199,100,134,2),
+ (201,101,134,2),
+ (203,102,134,2),
+ (205,103,134,2),
+ (207,104,134,2),
+ (209,105,134,2),
+ (211,106,134,2),
+ (213,107,134,2),
+ (215,108,134,2),
+ (217,109,134,2),
+ (219,110,134,2),
+ (221,111,134,2),
+ (223,112,134,2),
+ (225,113,134,2),
+ (227,114,134,2),
+ (229,115,134,2),
+ (231,116,134,2),
+ (233,117,134,2),
+ (235,118,134,2),
+ (237,119,134,2),
+ (239,120,134,2),
+ (241,121,134,2),
+ (243,122,134,2),
+ (245,123,134,2),
+ (247,124,134,2),
+ (249,125,134,2),
+ (251,126,134,2),
+ (253,127,134,2),
+ (255,128,134,2),
+ (257,129,134,2),
+ (259,130,134,2),
+ (261,131,134,2),
+ (263,132,134,2),
+ (265,133,134,2),
+ (267,134,134,2),
+ (269,135,134,2),
+ (271,136,134,2),
+ (273,137,134,2),
+ (275,138,134,2),
+ (277,139,134,2),
+ (279,140,134,2),
+ (281,141,134,2),
+ (283,142,134,2),
+ (285,143,134,2),
+ (287,144,134,2),
+ (289,145,134,2),
+ (291,146,134,2),
+ (293,147,134,2),
+ (295,148,134,2),
+ (297,149,134,2),
+ (299,150,134,2),
+ (938,488,134,2),
+ (968,518,134,2),
+ (952,502,141,2),
+ (982,532,141,2),
+ (1006,556,141,2),
+ (1007,557,143,2),
+ (953,503,150,2),
+ (983,533,150,2),
+ (1021,571,150,2),
+ (943,493,154,2),
+ (973,523,154,2),
+ (995,545,154,2),
+ (954,504,155,2),
+ (984,534,155,2),
+ (1041,591,157,2),
+ (1005,555,160,2),
+ (945,495,162,2),
+ (975,525,162,2),
+ (1035,585,166,2),
+ (944,494,168,2),
+ (974,524,168,2),
+ (1020,570,170,2),
+ (1016,566,172,2),
+ (948,498,173,2),
+ (978,528,173,2),
+ (939,489,175,2),
+ (969,519,175,2),
+ (1014,564,177,2),
+ (951,501,180,2),
+ (981,531,180,2),
+ (1010,560,185,2),
+ (959,509,187,2),
+ (989,539,187,2),
+ (1017,567,188,2),
+ (1033,583,192,2),
+ (937,487,198,2),
+ (967,517,198,2);
 /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -1610,191 +1864,189 @@ 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,74,1,1,0,'234Y Northpoint Way NW',234,'Y',NULL,'Northpoint','Way','NW',NULL,NULL,NULL,NULL,'Drayton',1,1039,NULL,'29333',NULL,1228,34.968472,-81.906376,0,NULL,NULL,NULL),
- (2,65,1,1,0,'605I Jackson Way S',605,'I',NULL,'Jackson','Way','S',NULL,NULL,NULL,NULL,'Lewis',1,1014,NULL,'51544',NULL,1228,41.313817,-95.10424,0,NULL,NULL,NULL),
- (3,14,1,1,0,'293N States Ln SE',293,'N',NULL,'States','Ln','SE',NULL,NULL,NULL,NULL,'Fort Lawn',1,1039,NULL,'29714',NULL,1228,34.702249,-80.90157,0,NULL,NULL,NULL),
- (4,68,1,1,0,'298N Van Ness Blvd W',298,'N',NULL,'Van Ness','Blvd','W',NULL,NULL,NULL,NULL,'Auburn',1,1046,NULL,'98001',NULL,1228,47.303722,-122.26608,0,NULL,NULL,NULL),
- (5,165,1,1,0,'314X El Camino Blvd SE',314,'X',NULL,'El Camino','Blvd','SE',NULL,NULL,NULL,NULL,'Bowie',1,1019,NULL,'20715',NULL,1228,38.979413,-76.74382,0,NULL,NULL,NULL),
- (6,52,1,1,0,'8P Bay Dr S',8,'P',NULL,'Bay','Dr','S',NULL,NULL,NULL,NULL,'Wartburg',1,1041,NULL,'37887',NULL,1228,36.091018,-84.56863,0,NULL,NULL,NULL),
- (7,128,1,1,0,'354L Cadell Ln NW',354,'L',NULL,'Cadell','Ln','NW',NULL,NULL,NULL,NULL,'Valleyford',1,1046,NULL,'99036',NULL,1228,47.52507,-117.27054,0,NULL,NULL,NULL),
- (8,93,1,1,0,'800K Dowlen Dr NE',800,'K',NULL,'Dowlen','Dr','NE',NULL,NULL,NULL,NULL,'Herndon',1,1045,NULL,'20192',NULL,1228,38.831813,-77.288755,0,NULL,NULL,NULL),
- (9,163,1,1,0,'425U College Ln S',425,'U',NULL,'College','Ln','S',NULL,NULL,NULL,NULL,'Forestport',1,1031,NULL,'13338',NULL,1228,43.506153,-75.07355,0,NULL,NULL,NULL),
- (10,46,1,1,0,'711I Northpoint Ave SW',711,'I',NULL,'Northpoint','Ave','SW',NULL,NULL,NULL,NULL,'Madison',1,1048,NULL,'53779',NULL,1228,43.098202,-89.324196,0,NULL,NULL,NULL),
- (11,159,1,1,0,'61U Van Ness Blvd N',61,'U',NULL,'Van Ness','Blvd','N',NULL,NULL,NULL,NULL,'Newkirk',1,1030,NULL,'88431',NULL,1228,35.157683,-104.2151,0,NULL,NULL,NULL),
- (12,32,1,1,0,'421P Woodbridge Path SW',421,'P',NULL,'Woodbridge','Path','SW',NULL,NULL,NULL,NULL,'Felton',1,1009,NULL,'30140',NULL,1228,33.88232,-85.234946,0,NULL,NULL,NULL),
- (13,51,1,1,0,'845O Caulder Rd S',845,'O',NULL,'Caulder','Rd','S',NULL,NULL,NULL,NULL,'Milwaukee',1,1048,NULL,'53215',NULL,1228,42.999364,-87.94343,0,NULL,NULL,NULL),
- (14,138,1,1,0,'919O Beech Path W',919,'O',NULL,'Beech','Path','W',NULL,NULL,NULL,NULL,'Chisago City',1,1022,NULL,'55013',NULL,1228,45.365164,-92.88864,0,NULL,NULL,NULL),
- (15,91,1,1,0,'892D Dowlen Ave SE',892,'D',NULL,'Dowlen','Ave','SE',NULL,NULL,NULL,NULL,'Burns',1,1036,NULL,'97720',NULL,1228,43.600795,-118.96382,0,NULL,NULL,NULL),
- (16,108,1,1,0,'515U Maple Blvd NE',515,'U',NULL,'Maple','Blvd','NE',NULL,NULL,NULL,NULL,'Burlington',1,1032,NULL,'27220',NULL,1228,36.046677,-79.389631,0,NULL,NULL,NULL),
- (17,166,1,1,0,'236Q El Camino Pl W',236,'Q',NULL,'El Camino','Pl','W',NULL,NULL,NULL,NULL,'Boise',1,1011,NULL,'83704',NULL,1228,43.63123,-116.28716,0,NULL,NULL,NULL),
- (18,78,1,1,0,'217K Cadell Ln W',217,'K',NULL,'Cadell','Ln','W',NULL,NULL,NULL,NULL,'Hopkins',1,1022,NULL,'55305',NULL,1228,44.953763,-93.43346,0,NULL,NULL,NULL),
- (19,10,1,1,0,'647M Second Dr N',647,'M',NULL,'Second','Dr','N',NULL,NULL,NULL,NULL,'Longview',1,1042,NULL,'75605',NULL,1228,32.557684,-94.74353,0,NULL,NULL,NULL),
- (20,185,1,1,0,'885X Van Ness Dr SW',885,'X',NULL,'Van Ness','Dr','SW',NULL,NULL,NULL,NULL,'Sidney Center',1,1031,NULL,'13839',NULL,1228,42.236762,-75.25901,0,NULL,NULL,NULL),
- (21,24,1,1,0,'662F Jackson St N',662,'F',NULL,'Jackson','St','N',NULL,NULL,NULL,NULL,'Ararat',1,1032,NULL,'27007',NULL,1228,36.390363,-80.58746,0,NULL,NULL,NULL),
- (22,155,1,1,0,'90P Northpoint Way SE',90,'P',NULL,'Northpoint','Way','SE',NULL,NULL,NULL,NULL,'Memphis',1,1041,NULL,'38108',NULL,1228,35.174165,-89.96028,0,NULL,NULL,NULL),
- (23,175,1,1,0,'17U College St S',17,'U',NULL,'College','St','S',NULL,NULL,NULL,NULL,'North Chili',1,1031,NULL,'14514',NULL,1228,43.122386,-77.80347,0,NULL,NULL,NULL),
- (24,145,1,1,0,'640Q Maple Way NW',640,'Q',NULL,'Maple','Way','NW',NULL,NULL,NULL,NULL,'Metamora',1,1012,NULL,'61548',NULL,1228,40.784412,-89.40841,0,NULL,NULL,NULL),
- (25,58,1,1,0,'291X Woodbridge Rd W',291,'X',NULL,'Woodbridge','Rd','W',NULL,NULL,NULL,NULL,'Alexander',1,1003,NULL,'72002',NULL,1228,34.644387,-92.50223,0,NULL,NULL,NULL),
- (26,111,1,1,0,'928O Main Way SE',928,'O',NULL,'Main','Way','SE',NULL,NULL,NULL,NULL,'Courtland',1,1000,NULL,'35618',NULL,1228,34.665033,-87.30978,0,NULL,NULL,NULL),
- (27,2,1,1,0,'804T Jackson Way E',804,'T',NULL,'Jackson','Way','E',NULL,NULL,NULL,NULL,'Detroit',1,1021,NULL,'48254',NULL,1228,42.239933,-83.150823,0,NULL,NULL,NULL),
- (28,170,1,1,0,'865G Van Ness Pl SW',865,'G',NULL,'Van Ness','Pl','SW',NULL,NULL,NULL,NULL,'Hydaburg',1,1001,NULL,'99922',NULL,1228,55.209339,-132.82545,0,NULL,NULL,NULL),
- (29,100,1,1,0,'373F Jackson Ln W',373,'F',NULL,'Jackson','Ln','W',NULL,NULL,NULL,NULL,'Ghent',1,1031,NULL,'12075',NULL,1228,42.305793,-73.6514,0,NULL,NULL,NULL),
- (30,12,1,1,0,'528G Main Ln SE',528,'G',NULL,'Main','Ln','SE',NULL,NULL,NULL,NULL,'Belmont',1,1042,NULL,'78604',NULL,1228,29.447211,-97.494649,0,NULL,NULL,NULL),
- (31,75,1,1,0,'46O Maple Path S',46,'O',NULL,'Maple','Path','S',NULL,NULL,NULL,NULL,'Santa Fe',1,1030,NULL,'87505',NULL,1228,35.616662,-105.97926,0,NULL,NULL,NULL),
- (32,133,1,1,0,'702T States Pl NW',702,'T',NULL,'States','Pl','NW',NULL,NULL,NULL,NULL,'Geyser',1,1025,NULL,'59447',NULL,1228,47.268612,-110.44229,0,NULL,NULL,NULL),
- (33,169,1,1,0,'901T Main Rd W',901,'T',NULL,'Main','Rd','W',NULL,NULL,NULL,NULL,'Scranton',1,1037,NULL,'18501',NULL,1228,41.401881,-75.637626,0,NULL,NULL,NULL),
- (34,57,1,1,0,'111C Pine Path S',111,'C',NULL,'Pine','Path','S',NULL,NULL,NULL,NULL,'Port Washington',1,1031,NULL,'11054',NULL,1228,40.754757,-73.601772,0,NULL,NULL,NULL),
- (35,164,1,1,0,'44H Maple Pl NE',44,'H',NULL,'Maple','Pl','NE',NULL,NULL,NULL,NULL,'Knotts Island',1,1032,NULL,'27950',NULL,1228,36.513626,-75.9518,0,NULL,NULL,NULL),
- (36,150,1,1,0,'645A Second Way W',645,'A',NULL,'Second','Way','W',NULL,NULL,NULL,NULL,'Tampa',1,1008,NULL,'33634',NULL,1228,28.005497,-82.54936,0,NULL,NULL,NULL),
- (37,95,1,1,0,'719P Beech St N',719,'P',NULL,'Beech','St','N',NULL,NULL,NULL,NULL,'Vernon',1,1000,NULL,'35592',NULL,1228,33.752857,-88.0996,0,NULL,NULL,NULL),
- (38,79,1,1,0,'443H Northpoint Pl S',443,'H',NULL,'Northpoint','Pl','S',NULL,NULL,NULL,NULL,'Fayette',1,1031,NULL,'13065',NULL,1228,42.822662,-76.80197,0,NULL,NULL,NULL),
- (39,29,1,1,0,'80C Maple Blvd NW',80,'C',NULL,'Maple','Blvd','NW',NULL,NULL,NULL,NULL,'Saint Louis',1,1024,NULL,'63141',NULL,1228,38.662302,-90.45363,0,NULL,NULL,NULL),
- (40,193,1,1,0,'956K Main Dr NE',956,'K',NULL,'Main','Dr','NE',NULL,NULL,NULL,NULL,'Huntington',1,1047,NULL,'25728',NULL,1228,38.413384,-82.277401,0,NULL,NULL,NULL),
- (41,194,1,1,0,'647A Green St NE',647,'A',NULL,'Green','St','NE',NULL,NULL,NULL,NULL,'Pine Mountain Valley',1,1009,NULL,'31823',NULL,1228,32.801174,-84.82038,0,NULL,NULL,NULL),
- (42,144,1,1,0,'611G Northpoint Rd NE',611,'G',NULL,'Northpoint','Rd','NE',NULL,NULL,NULL,NULL,'Arecibo',1,1056,NULL,'00612',NULL,1228,18.449732,-66.69879,0,NULL,NULL,NULL),
- (43,104,1,1,0,'190J El Camino Ln SE',190,'J',NULL,'El Camino','Ln','SE',NULL,NULL,NULL,NULL,'Carney',1,1035,NULL,'74832',NULL,1228,35.815581,-97.01061,0,NULL,NULL,NULL),
- (44,153,1,1,0,'771O College Blvd N',771,'O',NULL,'College','Blvd','N',NULL,NULL,NULL,NULL,'Rosamond',1,1004,NULL,'93564',NULL,1228,34.900151,-118.246691,0,NULL,NULL,NULL),
- (45,115,1,1,0,'224P Pine Ln NW',224,'P',NULL,'Pine','Ln','NW',NULL,NULL,NULL,NULL,'Newburgh',1,1013,NULL,'47630',NULL,1228,37.958873,-87.37998,0,NULL,NULL,NULL),
- (46,45,1,1,0,'787I El Camino Ln S',787,'I',NULL,'El Camino','Ln','S',NULL,NULL,NULL,NULL,'Washington',1,1050,NULL,'20429',NULL,1228,38.893311,-77.014647,0,NULL,NULL,NULL),
- (47,62,1,1,0,'221E Northpoint Way NE',221,'E',NULL,'Northpoint','Way','NE',NULL,NULL,NULL,NULL,'Rossford',1,1034,NULL,'43460',NULL,1228,41.603797,-83.5619,0,NULL,NULL,NULL),
- (48,182,1,1,0,'329I States Blvd SW',329,'I',NULL,'States','Blvd','SW',NULL,NULL,NULL,NULL,'Monterey',1,1041,NULL,'38574',NULL,1228,36.133983,-85.23805,0,NULL,NULL,NULL),
- (49,178,1,1,0,'837W Northpoint Way E',837,'W',NULL,'Northpoint','Way','E',NULL,NULL,NULL,NULL,'Strykersville',1,1031,NULL,'14145',NULL,1228,42.720756,-78.43429,0,NULL,NULL,NULL),
- (50,63,1,1,0,'212L Caulder Rd SE',212,'L',NULL,'Caulder','Rd','SE',NULL,NULL,NULL,NULL,'Lake Odessa',1,1021,NULL,'48849',NULL,1228,42.788151,-85.13565,0,NULL,NULL,NULL),
- (51,168,1,1,0,'74G Green St NE',74,'G',NULL,'Green','St','NE',NULL,NULL,NULL,NULL,'Wolf Lake',1,1022,NULL,'56593',NULL,1228,46.821648,-95.391968,0,NULL,NULL,NULL),
- (52,109,1,1,0,'439Y Green Rd W',439,'Y',NULL,'Green','Rd','W',NULL,NULL,NULL,NULL,'Altamonte Springs',1,1008,NULL,'32701',NULL,1228,28.666249,-81.36796,0,NULL,NULL,NULL),
- (53,3,1,1,0,'620I Martin Luther King Rd S',620,'I',NULL,'Martin Luther King','Rd','S',NULL,NULL,NULL,NULL,'Fullerton',1,1004,NULL,'92833',NULL,1228,33.874314,-117.9637,0,NULL,NULL,NULL),
- (54,124,1,1,0,'381G Caulder Ave E',381,'G',NULL,'Caulder','Ave','E',NULL,NULL,NULL,NULL,'Scribner',1,1026,NULL,'68057',NULL,1228,41.653831,-96.708,0,NULL,NULL,NULL),
- (55,157,1,1,0,'477V Northpoint Dr E',477,'V',NULL,'Northpoint','Dr','E',NULL,NULL,NULL,NULL,'South New Berlin',1,1031,NULL,'13843',NULL,1228,42.533274,-75.38008,0,NULL,NULL,NULL),
- (56,131,1,1,0,'846N Lincoln Pl SW',846,'N',NULL,'Lincoln','Pl','SW',NULL,NULL,NULL,NULL,'Cabot',1,1044,NULL,'05647',NULL,1228,44.414576,-72.28652,0,NULL,NULL,NULL),
- (57,174,1,1,0,'606C Beech Blvd N',606,'C',NULL,'Beech','Blvd','N',NULL,NULL,NULL,NULL,'Sarah Ann',1,1047,NULL,'25644',NULL,1228,37.688162,-81.98826,0,NULL,NULL,NULL),
- (58,92,1,1,0,'54L Dowlen St S',54,'L',NULL,'Dowlen','St','S',NULL,NULL,NULL,NULL,'La Jose',1,1037,NULL,'15753',NULL,1228,40.801942,-78.66543,0,NULL,NULL,NULL),
- (59,25,1,1,0,'732I Bay Way W',732,'I',NULL,'Bay','Way','W',NULL,NULL,NULL,NULL,'McElhattan',1,1037,NULL,'17748',NULL,1228,41.125166,-77.36332,0,NULL,NULL,NULL),
- (60,17,1,1,0,'995L Woodbridge Path S',995,'L',NULL,'Woodbridge','Path','S',NULL,NULL,NULL,NULL,'Alexandria',1,1045,NULL,'22303',NULL,1228,38.792863,-77.07964,0,NULL,NULL,NULL),
- (61,161,1,1,0,'974D Maple Blvd E',974,'D',NULL,'Maple','Blvd','E',NULL,NULL,NULL,NULL,'Plymouth',1,1048,NULL,'53073',NULL,1228,43.758674,-87.98005,0,NULL,NULL,NULL),
- (62,149,1,1,0,'901N Beech Dr SW',901,'N',NULL,'Beech','Dr','SW',NULL,NULL,NULL,NULL,'Pittsfield',1,1020,NULL,'01203',NULL,1228,42.3929,-73.228483,0,NULL,NULL,NULL),
- (63,73,1,1,0,'575L Jackson Way N',575,'L',NULL,'Jackson','Way','N',NULL,NULL,NULL,NULL,'Cozad',1,1026,NULL,'69130',NULL,1228,40.868727,-99.97697,0,NULL,NULL,NULL),
- (64,139,1,1,0,'888G Van Ness Rd W',888,'G',NULL,'Van Ness','Rd','W',NULL,NULL,NULL,NULL,'Dundee',1,1012,NULL,'60118',NULL,1228,42.101502,-88.28891,0,NULL,NULL,NULL),
- (65,143,1,1,0,'289U Second Rd SW',289,'U',NULL,'Second','Rd','SW',NULL,NULL,NULL,NULL,'Bartlett',1,1015,NULL,'67332',NULL,1228,37.051587,-95.2227,0,NULL,NULL,NULL),
- (66,114,1,1,0,'900G Van Ness Path SE',900,'G',NULL,'Van Ness','Path','SE',NULL,NULL,NULL,NULL,'Raleigh',1,1032,NULL,'27636',NULL,1228,35.797692,-78.625265,0,NULL,NULL,NULL),
- (67,101,1,1,0,'857K Main Blvd SW',857,'K',NULL,'Main','Blvd','SW',NULL,NULL,NULL,NULL,'Ocean City',1,1029,NULL,'08226',NULL,1228,39.265371,-74.59381,0,NULL,NULL,NULL),
- (68,70,1,1,0,'853H Cadell Way NW',853,'H',NULL,'Cadell','Way','NW',NULL,NULL,NULL,NULL,'Shonto',1,1002,NULL,'86054',NULL,1228,36.630103,-110.65072,0,NULL,NULL,NULL),
- (69,98,1,1,0,'343D Pine Pl N',343,'D',NULL,'Pine','Pl','N',NULL,NULL,NULL,NULL,'Holyoke',1,1020,NULL,'01040',NULL,1228,42.201891,-72.6242,0,NULL,NULL,NULL),
- (70,8,1,1,0,'353N Main Ave S',353,'N',NULL,'Main','Ave','S',NULL,NULL,NULL,NULL,'Hamilton',1,1000,NULL,'35570',NULL,1228,34.149717,-88.00384,0,NULL,NULL,NULL),
- (71,48,1,1,0,'188X Jackson Rd SW',188,'X',NULL,'Jackson','Rd','SW',NULL,NULL,NULL,NULL,'Lacota',1,1021,NULL,'49063',NULL,1228,42.393586,-86.209904,0,NULL,NULL,NULL),
- (72,180,1,1,0,'534N Northpoint Blvd W',534,'N',NULL,'Northpoint','Blvd','W',NULL,NULL,NULL,NULL,'Anniston',1,1000,NULL,'36206',NULL,1228,33.719701,-85.83166,0,NULL,NULL,NULL),
- (73,82,3,1,0,'61D Maple Way NW',61,'D',NULL,'Maple','Way','NW',NULL,'Mailstop 101',NULL,NULL,'Fort Lauderdale',1,1008,NULL,'33307',NULL,1228,26.145724,-80.448254,0,NULL,NULL,NULL),
- (74,69,3,1,0,'3M States Way SE',3,'M',NULL,'States','Way','SE',NULL,'Mailstop 101',NULL,NULL,'Rhinehart',1,1017,NULL,'71363',NULL,1228,31.596272,-91.77941,0,NULL,NULL,NULL),
- (75,105,2,1,0,'3M States Way SE',3,'M',NULL,'States','Way','SE',NULL,'Mailstop 101',NULL,NULL,'Rhinehart',1,1017,NULL,'71363',NULL,1228,31.596272,-91.77941,0,NULL,NULL,74),
- (76,148,3,1,0,'808Q Dowlen Way E',808,'Q',NULL,'Dowlen','Way','E',NULL,'Cuffe Parade',NULL,NULL,'Elizabeth City',1,1032,NULL,'27906',NULL,1228,36.285388,-76.213284,0,NULL,NULL,NULL),
- (77,150,2,0,0,'808Q Dowlen Way E',808,'Q',NULL,'Dowlen','Way','E',NULL,'Cuffe Parade',NULL,NULL,'Elizabeth City',1,1032,NULL,'27906',NULL,1228,36.285388,-76.213284,0,NULL,NULL,76),
- (78,117,3,1,0,'68Y Van Ness Rd SE',68,'Y',NULL,'Van Ness','Rd','SE',NULL,'Mailstop 101',NULL,NULL,'Bakerstown',1,1037,NULL,'15007',NULL,1228,40.652311,-79.93303,0,NULL,NULL,NULL),
- (79,7,2,1,0,'68Y Van Ness Rd SE',68,'Y',NULL,'Van Ness','Rd','SE',NULL,'Mailstop 101',NULL,NULL,'Bakerstown',1,1037,NULL,'15007',NULL,1228,40.652311,-79.93303,0,NULL,NULL,78),
- (80,15,3,1,0,'109N Dowlen Way W',109,'N',NULL,'Dowlen','Way','W',NULL,'Receiving',NULL,NULL,'Jacksonville',1,1008,NULL,'32257',NULL,1228,30.192434,-81.60597,0,NULL,NULL,NULL),
- (81,155,2,0,0,'109N Dowlen Way W',109,'N',NULL,'Dowlen','Way','W',NULL,'Receiving',NULL,NULL,'Jacksonville',1,1008,NULL,'32257',NULL,1228,30.192434,-81.60597,0,NULL,NULL,80),
- (82,99,3,1,0,'362Y College Ave S',362,'Y',NULL,'College','Ave','S',NULL,'Disbursements',NULL,NULL,'Diana',1,1047,NULL,'26217',NULL,1228,38.60286,-80.4595,0,NULL,NULL,NULL),
- (83,11,3,1,0,'618O Green Path NE',618,'O',NULL,'Green','Path','NE',NULL,'Cuffe Parade',NULL,NULL,'Marshfield',1,1044,NULL,'05658',NULL,1228,44.353823,-72.34925,0,NULL,NULL,NULL),
- (84,158,3,1,0,'66T Jackson Rd SE',66,'T',NULL,'Jackson','Rd','SE',NULL,'c/o OPDC',NULL,NULL,'Rensselaer',1,1031,NULL,'12144',NULL,1228,42.63738,-73.72587,0,NULL,NULL,NULL),
- (85,40,2,1,0,'66T Jackson Rd SE',66,'T',NULL,'Jackson','Rd','SE',NULL,'c/o OPDC',NULL,NULL,'Rensselaer',1,1031,NULL,'12144',NULL,1228,42.63738,-73.72587,0,NULL,NULL,84),
- (86,41,3,1,0,'330Q Green Pl NW',330,'Q',NULL,'Green','Pl','NW',NULL,'Editorial Dept',NULL,NULL,'Parchman',1,1023,NULL,'38738',NULL,1228,33.922146,-90.54366,0,NULL,NULL,NULL),
- (87,78,2,0,0,'330Q Green Pl NW',330,'Q',NULL,'Green','Pl','NW',NULL,'Editorial Dept',NULL,NULL,'Parchman',1,1023,NULL,'38738',NULL,1228,33.922146,-90.54366,0,NULL,NULL,86),
- (88,122,3,1,0,'384A Cadell Way NW',384,'A',NULL,'Cadell','Way','NW',NULL,'Community Relations',NULL,NULL,'Baltimore',1,1019,NULL,'21213',NULL,1228,39.311474,-76.58283,0,NULL,NULL,NULL),
- (89,5,3,1,0,'726I College Dr NW',726,'I',NULL,'College','Dr','NW',NULL,'Disbursements',NULL,NULL,'Pittsburgh',1,1037,NULL,'15201',NULL,1228,40.471468,-79.95726,0,NULL,NULL,NULL),
- (90,22,2,1,0,'726I College Dr NW',726,'I',NULL,'College','Dr','NW',NULL,'Disbursements',NULL,NULL,'Pittsburgh',1,1037,NULL,'15201',NULL,1228,40.471468,-79.95726,0,NULL,NULL,89),
- (91,55,3,1,0,'439I El Camino Rd E',439,'I',NULL,'El Camino','Rd','E',NULL,'Editorial Dept',NULL,NULL,'Burbank',1,1012,NULL,'60459',NULL,1228,41.744082,-87.77022,0,NULL,NULL,NULL),
- (92,147,3,1,0,'316R Beech Dr N',316,'R',NULL,'Beech','Dr','N',NULL,'Donor Relations',NULL,NULL,'Holland',1,1024,NULL,'63853',NULL,1228,36.058612,-89.87038,0,NULL,NULL,NULL),
- (93,30,2,1,0,'316R Beech Dr N',316,'R',NULL,'Beech','Dr','N',NULL,'Donor Relations',NULL,NULL,'Holland',1,1024,NULL,'63853',NULL,1228,36.058612,-89.87038,0,NULL,NULL,92),
- (94,154,3,1,0,'805J Beech Ln E',805,'J',NULL,'Beech','Ln','E',NULL,'Payables Dept.',NULL,NULL,'Grasston',1,1022,NULL,'55030',NULL,1228,45.842603,-93.11924,0,NULL,NULL,NULL),
- (95,127,3,1,0,'387V Dowlen Path SW',387,'V',NULL,'Dowlen','Path','SW',NULL,'Payables Dept.',NULL,NULL,'Warsaw',1,1013,NULL,'46580',NULL,1228,41.2281,-85.85778,0,NULL,NULL,NULL),
- (96,197,2,1,0,'387V Dowlen Path SW',387,'V',NULL,'Dowlen','Path','SW',NULL,'Payables Dept.',NULL,NULL,'Warsaw',1,1013,NULL,'46580',NULL,1228,41.2281,-85.85778,0,NULL,NULL,95),
- (97,118,3,1,0,'879L El Camino Blvd NE',879,'L',NULL,'El Camino','Blvd','NE',NULL,'Churchgate',NULL,NULL,'Guymon',1,1035,NULL,'73942',NULL,1228,36.739447,-101.48851,0,NULL,NULL,NULL),
- (98,159,2,0,0,'879L El Camino Blvd NE',879,'L',NULL,'El Camino','Blvd','NE',NULL,'Churchgate',NULL,NULL,'Guymon',1,1035,NULL,'73942',NULL,1228,36.739447,-101.48851,0,NULL,NULL,97),
- (99,126,3,1,0,'800Q Cadell Path NW',800,'Q',NULL,'Cadell','Path','NW',NULL,'Disbursements',NULL,NULL,'San Antonio',1,1042,NULL,'78275',NULL,1228,29.437532,-98.461582,0,NULL,NULL,NULL),
- (100,61,3,1,0,'604H Dowlen Rd NW',604,'H',NULL,'Dowlen','Rd','NW',NULL,'Disbursements',NULL,NULL,'Auburn',1,1021,NULL,'48611',NULL,1228,43.617796,-84.07918,0,NULL,NULL,NULL),
- (101,64,3,1,0,'142H Caulder Path N',142,'H',NULL,'Caulder','Path','N',NULL,'Urgent',NULL,NULL,'Upper Tract',1,1047,NULL,'26866',NULL,1228,38.814289,-79.23861,0,NULL,NULL,NULL),
- (102,136,3,1,0,'658N Beech Rd NW',658,'N',NULL,'Beech','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Shipshewana',1,1013,NULL,'46565',NULL,1228,41.696334,-85.58665,0,NULL,NULL,NULL),
- (103,162,1,1,0,'620I Martin Luther King Rd S',620,'I',NULL,'Martin Luther King','Rd','S',NULL,NULL,NULL,NULL,'Fullerton',1,1004,NULL,'92833',NULL,1228,33.874314,-117.9637,0,NULL,NULL,53),
- (104,152,1,1,0,'620I Martin Luther King Rd S',620,'I',NULL,'Martin Luther King','Rd','S',NULL,NULL,NULL,NULL,'Fullerton',1,1004,NULL,'92833',NULL,1228,33.874314,-117.9637,0,NULL,NULL,53),
- (105,44,1,1,0,'620I Martin Luther King Rd S',620,'I',NULL,'Martin Luther King','Rd','S',NULL,NULL,NULL,NULL,'Fullerton',1,1004,NULL,'92833',NULL,1228,33.874314,-117.9637,0,NULL,NULL,53),
- (106,109,1,0,0,'620I Martin Luther King Rd S',620,'I',NULL,'Martin Luther King','Rd','S',NULL,NULL,NULL,NULL,'Fullerton',1,1004,NULL,'92833',NULL,1228,33.874314,-117.9637,0,NULL,NULL,53),
- (107,181,1,1,0,'381G Caulder Ave E',381,'G',NULL,'Caulder','Ave','E',NULL,NULL,NULL,NULL,'Scribner',1,1026,NULL,'68057',NULL,1228,41.653831,-96.708,0,NULL,NULL,54),
- (108,43,1,1,0,'381G Caulder Ave E',381,'G',NULL,'Caulder','Ave','E',NULL,NULL,NULL,NULL,'Scribner',1,1026,NULL,'68057',NULL,1228,41.653831,-96.708,0,NULL,NULL,54),
- (109,183,1,1,0,'381G Caulder Ave E',381,'G',NULL,'Caulder','Ave','E',NULL,NULL,NULL,NULL,'Scribner',1,1026,NULL,'68057',NULL,1228,41.653831,-96.708,0,NULL,NULL,54),
- (110,81,1,1,0,'533A Caulder Blvd S',533,'A',NULL,'Caulder','Blvd','S',NULL,NULL,NULL,NULL,'Rochester',1,1031,NULL,'14694',NULL,1228,43.286024,-77.684264,0,NULL,NULL,NULL),
- (111,200,1,1,0,'477V Northpoint Dr E',477,'V',NULL,'Northpoint','Dr','E',NULL,NULL,NULL,NULL,'South New Berlin',1,1031,NULL,'13843',NULL,1228,42.533274,-75.38008,0,NULL,NULL,55),
- (112,188,1,1,0,'477V Northpoint Dr E',477,'V',NULL,'Northpoint','Dr','E',NULL,NULL,NULL,NULL,'South New Berlin',1,1031,NULL,'13843',NULL,1228,42.533274,-75.38008,0,NULL,NULL,55),
- (113,196,1,1,0,'477V Northpoint Dr E',477,'V',NULL,'Northpoint','Dr','E',NULL,NULL,NULL,NULL,'South New Berlin',1,1031,NULL,'13843',NULL,1228,42.533274,-75.38008,0,NULL,NULL,55),
- (114,137,1,1,0,'477V Northpoint Dr E',477,'V',NULL,'Northpoint','Dr','E',NULL,NULL,NULL,NULL,'South New Berlin',1,1031,NULL,'13843',NULL,1228,42.533274,-75.38008,0,NULL,NULL,55),
- (115,156,1,1,0,'846N Lincoln Pl SW',846,'N',NULL,'Lincoln','Pl','SW',NULL,NULL,NULL,NULL,'Cabot',1,1044,NULL,'05647',NULL,1228,44.414576,-72.28652,0,NULL,NULL,56),
- (116,102,1,1,0,'846N Lincoln Pl SW',846,'N',NULL,'Lincoln','Pl','SW',NULL,NULL,NULL,NULL,'Cabot',1,1044,NULL,'05647',NULL,1228,44.414576,-72.28652,0,NULL,NULL,56),
- (117,89,1,1,0,'846N Lincoln Pl SW',846,'N',NULL,'Lincoln','Pl','SW',NULL,NULL,NULL,NULL,'Cabot',1,1044,NULL,'05647',NULL,1228,44.414576,-72.28652,0,NULL,NULL,56),
- (118,187,1,1,0,'846N Lincoln Pl SW',846,'N',NULL,'Lincoln','Pl','SW',NULL,NULL,NULL,NULL,'Cabot',1,1044,NULL,'05647',NULL,1228,44.414576,-72.28652,0,NULL,NULL,56),
- (119,76,1,1,0,'606C Beech Blvd N',606,'C',NULL,'Beech','Blvd','N',NULL,NULL,NULL,NULL,'Sarah Ann',1,1047,NULL,'25644',NULL,1228,37.688162,-81.98826,0,NULL,NULL,57),
- (120,151,1,1,0,'606C Beech Blvd N',606,'C',NULL,'Beech','Blvd','N',NULL,NULL,NULL,NULL,'Sarah Ann',1,1047,NULL,'25644',NULL,1228,37.688162,-81.98826,0,NULL,NULL,57),
- (121,198,1,1,0,'606C Beech Blvd N',606,'C',NULL,'Beech','Blvd','N',NULL,NULL,NULL,NULL,'Sarah Ann',1,1047,NULL,'25644',NULL,1228,37.688162,-81.98826,0,NULL,NULL,57),
- (122,59,1,1,0,'606C Beech Blvd N',606,'C',NULL,'Beech','Blvd','N',NULL,NULL,NULL,NULL,'Sarah Ann',1,1047,NULL,'25644',NULL,1228,37.688162,-81.98826,0,NULL,NULL,57),
- (123,16,1,1,0,'54L Dowlen St S',54,'L',NULL,'Dowlen','St','S',NULL,NULL,NULL,NULL,'La Jose',1,1037,NULL,'15753',NULL,1228,40.801942,-78.66543,0,NULL,NULL,58),
- (124,113,1,1,0,'54L Dowlen St S',54,'L',NULL,'Dowlen','St','S',NULL,NULL,NULL,NULL,'La Jose',1,1037,NULL,'15753',NULL,1228,40.801942,-78.66543,0,NULL,NULL,58),
- (125,23,1,1,0,'54L Dowlen St S',54,'L',NULL,'Dowlen','St','S',NULL,NULL,NULL,NULL,'La Jose',1,1037,NULL,'15753',NULL,1228,40.801942,-78.66543,0,NULL,NULL,58),
- (126,49,1,1,0,'437C Main Way N',437,'C',NULL,'Main','Way','N',NULL,NULL,NULL,NULL,'Lake Luzerne',1,1031,NULL,'12846',NULL,1228,43.329851,-73.82911,0,NULL,NULL,NULL),
- (127,186,1,1,0,'732I Bay Way W',732,'I',NULL,'Bay','Way','W',NULL,NULL,NULL,NULL,'McElhattan',1,1037,NULL,'17748',NULL,1228,41.125166,-77.36332,0,NULL,NULL,59),
- (128,94,1,1,0,'732I Bay Way W',732,'I',NULL,'Bay','Way','W',NULL,NULL,NULL,NULL,'McElhattan',1,1037,NULL,'17748',NULL,1228,41.125166,-77.36332,0,NULL,NULL,59),
- (129,54,1,1,0,'732I Bay Way W',732,'I',NULL,'Bay','Way','W',NULL,NULL,NULL,NULL,'McElhattan',1,1037,NULL,'17748',NULL,1228,41.125166,-77.36332,0,NULL,NULL,59),
- (130,119,1,1,0,'550X Green Way E',550,'X',NULL,'Green','Way','E',NULL,NULL,NULL,NULL,'Mesa',1,1046,NULL,'99343',NULL,1228,46.581454,-119.12107,0,NULL,NULL,NULL),
- (131,141,1,1,0,'995L Woodbridge Path S',995,'L',NULL,'Woodbridge','Path','S',NULL,NULL,NULL,NULL,'Alexandria',1,1045,NULL,'22303',NULL,1228,38.792863,-77.07964,0,NULL,NULL,60),
- (132,123,1,1,0,'995L Woodbridge Path S',995,'L',NULL,'Woodbridge','Path','S',NULL,NULL,NULL,NULL,'Alexandria',1,1045,NULL,'22303',NULL,1228,38.792863,-77.07964,0,NULL,NULL,60),
- (133,179,1,1,0,'995L Woodbridge Path S',995,'L',NULL,'Woodbridge','Path','S',NULL,NULL,NULL,NULL,'Alexandria',1,1045,NULL,'22303',NULL,1228,38.792863,-77.07964,0,NULL,NULL,60),
- (134,116,1,1,0,'812Z Woodbridge Ln N',812,'Z',NULL,'Woodbridge','Ln','N',NULL,NULL,NULL,NULL,'Elmo',1,1024,NULL,'64445',NULL,1228,40.527275,-95.12039,0,NULL,NULL,NULL),
- (135,66,1,1,0,'974D Maple Blvd E',974,'D',NULL,'Maple','Blvd','E',NULL,NULL,NULL,NULL,'Plymouth',1,1048,NULL,'53073',NULL,1228,43.758674,-87.98005,0,NULL,NULL,61),
- (136,13,1,1,0,'974D Maple Blvd E',974,'D',NULL,'Maple','Blvd','E',NULL,NULL,NULL,NULL,'Plymouth',1,1048,NULL,'53073',NULL,1228,43.758674,-87.98005,0,NULL,NULL,61),
- (137,53,1,1,0,'974D Maple Blvd E',974,'D',NULL,'Maple','Blvd','E',NULL,NULL,NULL,NULL,'Plymouth',1,1048,NULL,'53073',NULL,1228,43.758674,-87.98005,0,NULL,NULL,61),
- (138,129,1,1,0,'331B Bay Blvd SW',331,'B',NULL,'Bay','Blvd','SW',NULL,NULL,NULL,NULL,'Blossvale',1,1031,NULL,'13308',NULL,1228,43.236303,-75.68087,0,NULL,NULL,NULL),
- (139,172,1,1,0,'901N Beech Dr SW',901,'N',NULL,'Beech','Dr','SW',NULL,NULL,NULL,NULL,'Pittsfield',1,1020,NULL,'01203',NULL,1228,42.3929,-73.228483,0,NULL,NULL,62),
- (140,103,1,1,0,'901N Beech Dr SW',901,'N',NULL,'Beech','Dr','SW',NULL,NULL,NULL,NULL,'Pittsfield',1,1020,NULL,'01203',NULL,1228,42.3929,-73.228483,0,NULL,NULL,62),
- (141,191,1,1,0,'901N Beech Dr SW',901,'N',NULL,'Beech','Dr','SW',NULL,NULL,NULL,NULL,'Pittsfield',1,1020,NULL,'01203',NULL,1228,42.3929,-73.228483,0,NULL,NULL,62),
- (142,96,1,1,0,'901N Beech Dr SW',901,'N',NULL,'Beech','Dr','SW',NULL,NULL,NULL,NULL,'Pittsfield',1,1020,NULL,'01203',NULL,1228,42.3929,-73.228483,0,NULL,NULL,62),
- (143,30,1,0,0,'575L Jackson Way N',575,'L',NULL,'Jackson','Way','N',NULL,NULL,NULL,NULL,'Cozad',1,1026,NULL,'69130',NULL,1228,40.868727,-99.97697,0,NULL,NULL,63),
- (144,35,1,1,0,'575L Jackson Way N',575,'L',NULL,'Jackson','Way','N',NULL,NULL,NULL,NULL,'Cozad',1,1026,NULL,'69130',NULL,1228,40.868727,-99.97697,0,NULL,NULL,63),
- (145,135,1,1,0,'575L Jackson Way N',575,'L',NULL,'Jackson','Way','N',NULL,NULL,NULL,NULL,'Cozad',1,1026,NULL,'69130',NULL,1228,40.868727,-99.97697,0,NULL,NULL,63),
- (146,140,1,1,0,'754U Beech Blvd NE',754,'U',NULL,'Beech','Blvd','NE',NULL,NULL,NULL,NULL,'West Salem',1,1012,NULL,'62476',NULL,1228,38.527107,-88.00583,0,NULL,NULL,NULL),
- (147,177,1,1,0,'888G Van Ness Rd W',888,'G',NULL,'Van Ness','Rd','W',NULL,NULL,NULL,NULL,'Dundee',1,1012,NULL,'60118',NULL,1228,42.101502,-88.28891,0,NULL,NULL,64),
- (148,85,1,1,0,'888G Van Ness Rd W',888,'G',NULL,'Van Ness','Rd','W',NULL,NULL,NULL,NULL,'Dundee',1,1012,NULL,'60118',NULL,1228,42.101502,-88.28891,0,NULL,NULL,64),
- (149,160,1,1,0,'888G Van Ness Rd W',888,'G',NULL,'Van Ness','Rd','W',NULL,NULL,NULL,NULL,'Dundee',1,1012,NULL,'60118',NULL,1228,42.101502,-88.28891,0,NULL,NULL,64),
- (150,56,1,1,0,'647S Dowlen Dr E',647,'S',NULL,'Dowlen','Dr','E',NULL,NULL,NULL,NULL,'Mingus',1,1042,NULL,'76463',NULL,1228,32.493233,-98.41805,0,NULL,NULL,NULL),
- (151,167,1,1,0,'289U Second Rd SW',289,'U',NULL,'Second','Rd','SW',NULL,NULL,NULL,NULL,'Bartlett',1,1015,NULL,'67332',NULL,1228,37.051587,-95.2227,0,NULL,NULL,65),
- (152,40,1,0,0,'289U Second Rd SW',289,'U',NULL,'Second','Rd','SW',NULL,NULL,NULL,NULL,'Bartlett',1,1015,NULL,'67332',NULL,1228,37.051587,-95.2227,0,NULL,NULL,65),
- (153,4,1,1,0,'289U Second Rd SW',289,'U',NULL,'Second','Rd','SW',NULL,NULL,NULL,NULL,'Bartlett',1,1015,NULL,'67332',NULL,1228,37.051587,-95.2227,0,NULL,NULL,65),
- (154,199,1,1,0,'201H Bay Dr SW',201,'H',NULL,'Bay','Dr','SW',NULL,NULL,NULL,NULL,'Richmond',1,1045,NULL,'23282',NULL,1228,37.524246,-77.493157,0,NULL,NULL,NULL),
- (155,189,1,1,0,'900G Van Ness Path SE',900,'G',NULL,'Van Ness','Path','SE',NULL,NULL,NULL,NULL,'Raleigh',1,1032,NULL,'27636',NULL,1228,35.797692,-78.625265,0,NULL,NULL,66),
- (156,107,1,1,0,'900G Van Ness Path SE',900,'G',NULL,'Van Ness','Path','SE',NULL,NULL,NULL,NULL,'Raleigh',1,1032,NULL,'27636',NULL,1228,35.797692,-78.625265,0,NULL,NULL,66),
- (157,71,1,1,0,'900G Van Ness Path SE',900,'G',NULL,'Van Ness','Path','SE',NULL,NULL,NULL,NULL,'Raleigh',1,1032,NULL,'27636',NULL,1228,35.797692,-78.625265,0,NULL,NULL,66),
- (158,146,1,1,0,'410R States Ave N',410,'R',NULL,'States','Ave','N',NULL,NULL,NULL,NULL,'Washington',1,1050,NULL,'20503',NULL,1228,38.900711,-77.043068,0,NULL,NULL,NULL),
- (159,21,1,1,0,'857K Main Blvd SW',857,'K',NULL,'Main','Blvd','SW',NULL,NULL,NULL,NULL,'Ocean City',1,1029,NULL,'08226',NULL,1228,39.265371,-74.59381,0,NULL,NULL,67),
- (160,192,1,1,0,'857K Main Blvd SW',857,'K',NULL,'Main','Blvd','SW',NULL,NULL,NULL,NULL,'Ocean City',1,1029,NULL,'08226',NULL,1228,39.265371,-74.59381,0,NULL,NULL,67),
- (161,37,1,1,0,'857K Main Blvd SW',857,'K',NULL,'Main','Blvd','SW',NULL,NULL,NULL,NULL,'Ocean City',1,1029,NULL,'08226',NULL,1228,39.265371,-74.59381,0,NULL,NULL,67),
- (162,39,1,1,0,'857K Main Blvd SW',857,'K',NULL,'Main','Blvd','SW',NULL,NULL,NULL,NULL,'Ocean City',1,1029,NULL,'08226',NULL,1228,39.265371,-74.59381,0,NULL,NULL,67),
- (163,130,1,1,0,'853H Cadell Way NW',853,'H',NULL,'Cadell','Way','NW',NULL,NULL,NULL,NULL,'Shonto',1,1002,NULL,'86054',NULL,1228,36.630103,-110.65072,0,NULL,NULL,68),
- (164,105,1,0,0,'853H Cadell Way NW',853,'H',NULL,'Cadell','Way','NW',NULL,NULL,NULL,NULL,'Shonto',1,1002,NULL,'86054',NULL,1228,36.630103,-110.65072,0,NULL,NULL,68),
- (165,22,1,0,0,'853H Cadell Way NW',853,'H',NULL,'Cadell','Way','NW',NULL,NULL,NULL,NULL,'Shonto',1,1002,NULL,'86054',NULL,1228,36.630103,-110.65072,0,NULL,NULL,68),
- (166,47,1,1,0,'853H Cadell Way NW',853,'H',NULL,'Cadell','Way','NW',NULL,NULL,NULL,NULL,'Shonto',1,1002,NULL,'86054',NULL,1228,36.630103,-110.65072,0,NULL,NULL,68),
- (167,9,1,1,0,'343D Pine Pl N',343,'D',NULL,'Pine','Pl','N',NULL,NULL,NULL,NULL,'Holyoke',1,1020,NULL,'01040',NULL,1228,42.201891,-72.6242,0,NULL,NULL,69),
- (168,6,1,1,0,'343D Pine Pl N',343,'D',NULL,'Pine','Pl','N',NULL,NULL,NULL,NULL,'Holyoke',1,1020,NULL,'01040',NULL,1228,42.201891,-72.6242,0,NULL,NULL,69),
- (169,26,1,1,0,'343D Pine Pl N',343,'D',NULL,'Pine','Pl','N',NULL,NULL,NULL,NULL,'Holyoke',1,1020,NULL,'01040',NULL,1228,42.201891,-72.6242,0,NULL,NULL,69),
- (170,83,1,1,0,'343D Pine Pl N',343,'D',NULL,'Pine','Pl','N',NULL,NULL,NULL,NULL,'Holyoke',1,1020,NULL,'01040',NULL,1228,42.201891,-72.6242,0,NULL,NULL,69),
- (171,28,1,1,0,'353N Main Ave S',353,'N',NULL,'Main','Ave','S',NULL,NULL,NULL,NULL,'Hamilton',1,1000,NULL,'35570',NULL,1228,34.149717,-88.00384,0,NULL,NULL,70),
- (172,77,1,1,0,'353N Main Ave S',353,'N',NULL,'Main','Ave','S',NULL,NULL,NULL,NULL,'Hamilton',1,1000,NULL,'35570',NULL,1228,34.149717,-88.00384,0,NULL,NULL,70),
- (173,88,1,1,0,'353N Main Ave S',353,'N',NULL,'Main','Ave','S',NULL,NULL,NULL,NULL,'Hamilton',1,1000,NULL,'35570',NULL,1228,34.149717,-88.00384,0,NULL,NULL,70),
- (174,125,1,1,0,'462Z Green Ave NE',462,'Z',NULL,'Green','Ave','NE',NULL,NULL,NULL,NULL,'Franklin',1,1045,NULL,'23851',NULL,1228,36.668255,-76.93945,0,NULL,NULL,NULL),
- (175,20,1,1,0,'188X Jackson Rd SW',188,'X',NULL,'Jackson','Rd','SW',NULL,NULL,NULL,NULL,'Lacota',1,1021,NULL,'49063',NULL,1228,42.393586,-86.209904,0,NULL,NULL,71),
- (176,201,1,1,0,'188X Jackson Rd SW',188,'X',NULL,'Jackson','Rd','SW',NULL,NULL,NULL,NULL,'Lacota',1,1021,NULL,'49063',NULL,1228,42.393586,-86.209904,0,NULL,NULL,71),
- (177,176,1,1,0,'188X Jackson Rd SW',188,'X',NULL,'Jackson','Rd','SW',NULL,NULL,NULL,NULL,'Lacota',1,1021,NULL,'49063',NULL,1228,42.393586,-86.209904,0,NULL,NULL,71),
- (178,42,1,1,0,'543U Pine Ave SE',543,'U',NULL,'Pine','Ave','SE',NULL,NULL,NULL,NULL,'Ralph',1,1040,NULL,'57650',NULL,1228,45.849098,-103.01489,0,NULL,NULL,NULL),
- (179,190,1,1,0,'534N Northpoint Blvd W',534,'N',NULL,'Northpoint','Blvd','W',NULL,NULL,NULL,NULL,'Anniston',1,1000,NULL,'36206',NULL,1228,33.719701,-85.83166,0,NULL,NULL,72),
- (180,67,1,1,0,'534N Northpoint Blvd W',534,'N',NULL,'Northpoint','Blvd','W',NULL,NULL,NULL,NULL,'Anniston',1,1000,NULL,'36206',NULL,1228,33.719701,-85.83166,0,NULL,NULL,72),
- (181,31,1,1,0,'534N Northpoint Blvd W',534,'N',NULL,'Northpoint','Blvd','W',NULL,NULL,NULL,NULL,'Anniston',1,1000,NULL,'36206',NULL,1228,33.719701,-85.83166,0,NULL,NULL,72),
- (182,86,1,1,0,'997O Woodbridge Pl SE',997,'O',NULL,'Woodbridge','Pl','SE',NULL,NULL,NULL,NULL,'Crichton',1,1047,NULL,'25961',NULL,1228,37.975595,-80.426874,0,NULL,NULL,NULL),
- (183,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),
- (184,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),
- (185,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);
+ (1,151,1,1,0,'132L Beech Dr W',132,'L',NULL,'Beech','Dr','W',NULL,NULL,NULL,NULL,'Sevier',1,1043,NULL,'84766',NULL,1228,38.568765,-112.35173,0,NULL,NULL,NULL),
+ (2,72,1,1,0,'264V Pine Rd SW',264,'V',NULL,'Pine','Rd','SW',NULL,NULL,NULL,NULL,'Mount Olive',1,1047,NULL,'25185',NULL,1228,38.041293,-81.064784,0,NULL,NULL,NULL),
+ (3,27,1,1,0,'926I Second Path SW',926,'I',NULL,'Second','Path','SW',NULL,NULL,NULL,NULL,'Biggsville',1,1012,NULL,'61418',NULL,1228,40.854865,-90.85925,0,NULL,NULL,NULL),
+ (4,147,1,1,0,'349T Jackson Dr NW',349,'T',NULL,'Jackson','Dr','NW',NULL,NULL,NULL,NULL,'Camden',1,1029,NULL,'08104',NULL,1228,39.918663,-75.10976,0,NULL,NULL,NULL),
+ (5,4,1,1,0,'607V El Camino Dr NE',607,'V',NULL,'El Camino','Dr','NE',NULL,NULL,NULL,NULL,'La Crosse',1,1008,NULL,'32658',NULL,1228,29.845122,-82.39845,0,NULL,NULL,NULL),
+ (6,186,1,1,0,'839S Dowlen Path SE',839,'S',NULL,'Dowlen','Path','SE',NULL,NULL,NULL,NULL,'Matthews',1,1013,NULL,'46957',NULL,1228,40.387885,-85.49905,0,NULL,NULL,NULL),
+ (7,128,1,1,0,'19K Martin Luther King Blvd E',19,'K',NULL,'Martin Luther King','Blvd','E',NULL,NULL,NULL,NULL,'Peru',1,1014,NULL,'50222',NULL,1228,41.223389,-93.94309,0,NULL,NULL,NULL),
+ (8,175,1,1,0,'652L El Camino Way E',652,'L',NULL,'El Camino','Way','E',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10212',NULL,1228,40.780751,-73.977182,0,NULL,NULL,NULL),
+ (9,193,1,1,0,'803X Beech Pl SW',803,'X',NULL,'Beech','Pl','SW',NULL,NULL,NULL,NULL,'Crystal Beach',1,1008,NULL,'34681',NULL,1228,28.088443,-82.77834,0,NULL,NULL,NULL),
+ (10,155,1,1,0,'626V Martin Luther King St S',626,'V',NULL,'Martin Luther King','St','S',NULL,NULL,NULL,NULL,'Hebbronville',1,1042,NULL,'78361',NULL,1228,27.17199,-98.73083,0,NULL,NULL,NULL),
+ (11,55,1,1,0,'954I Martin Luther King Ave S',954,'I',NULL,'Martin Luther King','Ave','S',NULL,NULL,NULL,NULL,'Dublin',1,1037,NULL,'18917',NULL,1228,40.37327,-75.20246,0,NULL,NULL,NULL),
+ (12,196,1,1,0,'597F Maple Path SE',597,'F',NULL,'Maple','Path','SE',NULL,NULL,NULL,NULL,'Gibson',1,1014,NULL,'50104',NULL,1228,41.472819,-92.3841,0,NULL,NULL,NULL),
+ (13,94,1,1,0,'59M Second Ave E',59,'M',NULL,'Second','Ave','E',NULL,NULL,NULL,NULL,'Rockhill Furnace',1,1037,NULL,'17249',NULL,1228,40.242927,-77.90043,0,NULL,NULL,NULL),
+ (14,195,1,1,0,'205Q Bay Ln NE',205,'Q',NULL,'Bay','Ln','NE',NULL,NULL,NULL,NULL,'Tucson',1,1002,NULL,'85731',NULL,1228,32.088034,-110.708174,0,NULL,NULL,NULL),
+ (15,17,1,1,0,'104G States Blvd E',104,'G',NULL,'States','Blvd','E',NULL,NULL,NULL,NULL,'Sanibel',1,1008,NULL,'33957',NULL,1228,26.439608,-82.08045,0,NULL,NULL,NULL),
+ (16,154,1,1,0,'343X Bay Ln SW',343,'X',NULL,'Bay','Ln','SW',NULL,NULL,NULL,NULL,'Wilmington',1,1004,NULL,'90748',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),
+ (17,3,1,1,0,'192N States Path N',192,'N',NULL,'States','Path','N',NULL,NULL,NULL,NULL,'Eureka Springs',1,1003,NULL,'72632',NULL,1228,36.392122,-93.7476,0,NULL,NULL,NULL),
+ (18,199,1,1,0,'701J Woodbridge Rd E',701,'J',NULL,'Woodbridge','Rd','E',NULL,NULL,NULL,NULL,'Scranton',1,1037,NULL,'18540',NULL,1228,41.401881,-75.637626,0,NULL,NULL,NULL),
+ (19,87,1,1,0,'164P Van Ness Dr W',164,'P',NULL,'Van Ness','Dr','W',NULL,NULL,NULL,NULL,'Maiden',1,1032,NULL,'28650',NULL,1228,35.575785,-81.18843,0,NULL,NULL,NULL),
+ (20,12,1,1,0,'716V College St S',716,'V',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Lohrville',1,1014,NULL,'51453',NULL,1228,42.27586,-94.54041,0,NULL,NULL,NULL),
+ (21,168,1,1,0,'341J El Camino Blvd SW',341,'J',NULL,'El Camino','Blvd','SW',NULL,NULL,NULL,NULL,'Buffalo',1,1039,NULL,'29321',NULL,1228,34.715641,-81.71187,0,NULL,NULL,NULL),
+ (22,134,1,1,0,'608S Van Ness St E',608,'S',NULL,'Van Ness','St','E',NULL,NULL,NULL,NULL,'San Francisco',1,1004,NULL,'94153',NULL,1228,37.784827,-122.727802,0,NULL,NULL,NULL),
+ (23,78,1,1,0,'169W Northpoint Pl N',169,'W',NULL,'Northpoint','Pl','N',NULL,NULL,NULL,NULL,'Erie',1,1037,NULL,'16550',NULL,1228,42.182748,-80.064915,0,NULL,NULL,NULL),
+ (24,8,1,1,0,'454B Second Dr W',454,'B',NULL,'Second','Dr','W',NULL,NULL,NULL,NULL,'Washington',1,1050,NULL,'20525',NULL,1228,38.893311,-77.014647,0,NULL,NULL,NULL),
+ (25,192,1,1,0,'392W Second St N',392,'W',NULL,'Second','St','N',NULL,NULL,NULL,NULL,'Rochester',1,1044,NULL,'05767',NULL,1228,43.876046,-72.81212,0,NULL,NULL,NULL),
+ (26,129,1,1,0,'881Y El Camino Path NW',881,'Y',NULL,'El Camino','Path','NW',NULL,NULL,NULL,NULL,'Lacona',1,1031,NULL,'13083',NULL,1228,43.647881,-76.0167,0,NULL,NULL,NULL),
+ (27,141,1,1,0,'380V Second Pl S',380,'V',NULL,'Second','Pl','S',NULL,NULL,NULL,NULL,'Summerland',1,1004,NULL,'93067',NULL,1228,34.421895,-119.60084,0,NULL,NULL,NULL),
+ (28,42,1,1,0,'573O Woodbridge Ln S',573,'O',NULL,'Woodbridge','Ln','S',NULL,NULL,NULL,NULL,'Jersey City',1,1029,NULL,'07304',NULL,1228,40.716452,-74.07253,0,NULL,NULL,NULL),
+ (29,21,1,1,0,'619G Northpoint Path W',619,'G',NULL,'Northpoint','Path','W',NULL,NULL,NULL,NULL,'Nineveh',1,1031,NULL,'13813',NULL,1228,42.163814,-75.55149,0,NULL,NULL,NULL),
+ (30,89,1,1,0,'350D Northpoint Ln NW',350,'D',NULL,'Northpoint','Ln','NW',NULL,NULL,NULL,NULL,'Clyde Park',1,1025,NULL,'59018',NULL,1228,45.894359,-110.61105,0,NULL,NULL,NULL),
+ (31,122,1,1,0,'627R Lincoln St NW',627,'R',NULL,'Lincoln','St','NW',NULL,NULL,NULL,NULL,'South Range',1,1021,NULL,'49963',NULL,1228,47.069257,-88.63936,0,NULL,NULL,NULL),
+ (32,150,1,1,0,'660A Dowlen St W',660,'A',NULL,'Dowlen','St','W',NULL,NULL,NULL,NULL,'Bim',1,1047,NULL,'25021',NULL,1228,37.922612,-81.68729,0,NULL,NULL,NULL),
+ (33,77,1,1,0,'20O Beech Dr W',20,'O',NULL,'Beech','Dr','W',NULL,NULL,NULL,NULL,'Creswell',1,1036,NULL,'97426',NULL,1228,43.911542,-123.03036,0,NULL,NULL,NULL),
+ (34,82,1,1,0,'353F Van Ness St SE',353,'F',NULL,'Van Ness','St','SE',NULL,NULL,NULL,NULL,'Lemont',1,1012,NULL,'60439',NULL,1228,41.676028,-87.98258,0,NULL,NULL,NULL),
+ (35,81,1,1,0,'766H Second Pl NW',766,'H',NULL,'Second','Pl','NW',NULL,NULL,NULL,NULL,'Chandler',1,1022,NULL,'56122',NULL,1228,43.89707,-95.95855,0,NULL,NULL,NULL),
+ (36,130,1,1,0,'848G Martin Luther King Dr W',848,'G',NULL,'Martin Luther King','Dr','W',NULL,NULL,NULL,NULL,'Fort Mitchell',1,1016,NULL,'41000',NULL,1228,39.0358,-84.546445,0,NULL,NULL,NULL),
+ (37,83,1,1,0,'341I El Camino Ave S',341,'I',NULL,'El Camino','Ave','S',NULL,NULL,NULL,NULL,'Robert Lee',1,1042,NULL,'76945',NULL,1228,31.890079,-100.5669,0,NULL,NULL,NULL),
+ (38,137,1,1,0,'348M Cadell Ln NW',348,'M',NULL,'Cadell','Ln','NW',NULL,NULL,NULL,NULL,'Hanover',1,1021,NULL,'49241',NULL,1228,42.107907,-84.60334,0,NULL,NULL,NULL),
+ (39,47,1,1,0,'447Z Dowlen Blvd N',447,'Z',NULL,'Dowlen','Blvd','N',NULL,NULL,NULL,NULL,'Elton',1,1017,NULL,'70832',NULL,1228,30.484853,-92.694679,0,NULL,NULL,NULL),
+ (40,187,1,1,0,'881U Green Ln NW',881,'U',NULL,'Green','Ln','NW',NULL,NULL,NULL,NULL,'Chester',1,1019,NULL,'21619',NULL,1228,38.949536,-76.28063,0,NULL,NULL,NULL),
+ (41,144,1,1,0,'844G Bay Dr E',844,'G',NULL,'Bay','Dr','E',NULL,NULL,NULL,NULL,'Barton',1,1034,NULL,'43905',NULL,1228,40.105279,-80.84292,0,NULL,NULL,NULL),
+ (42,68,1,1,0,'89C Beech Path SE',89,'C',NULL,'Beech','Path','SE',NULL,NULL,NULL,NULL,'Washington',1,1050,NULL,'20254',NULL,1228,38.893311,-77.014647,0,NULL,NULL,NULL),
+ (43,183,1,1,0,'239K El Camino Ave NE',239,'K',NULL,'El Camino','Ave','NE',NULL,NULL,NULL,NULL,'Hohenwald',1,1041,NULL,'38462',NULL,1228,35.535397,-87.54905,0,NULL,NULL,NULL),
+ (44,146,1,1,0,'523Z Beech Ave E',523,'Z',NULL,'Beech','Ave','E',NULL,NULL,NULL,NULL,'Gerlach-Empire',1,1027,NULL,'89912',NULL,1228,40.651432,-119.357959,0,NULL,NULL,NULL),
+ (45,176,1,1,0,'243V Caulder Ave SW',243,'V',NULL,'Caulder','Ave','SW',NULL,NULL,NULL,NULL,'McClelland',1,1014,NULL,'51548',NULL,1228,41.307465,-95.62675,0,NULL,NULL,NULL),
+ (46,40,1,1,0,'492L El Camino Way N',492,'L',NULL,'El Camino','Way','N',NULL,NULL,NULL,NULL,'Cedar City',1,1043,NULL,'84721',NULL,1228,37.656843,-113.3695,0,NULL,NULL,NULL),
+ (47,66,1,1,0,'175F Main Rd W',175,'F',NULL,'Main','Rd','W',NULL,NULL,NULL,NULL,'Port Saint Lucie',1,1008,NULL,'34983',NULL,1228,27.312471,-80.34907,0,NULL,NULL,NULL),
+ (48,178,1,1,0,'995M Bay Ave SW',995,'M',NULL,'Bay','Ave','SW',NULL,NULL,NULL,NULL,'Payson',1,1012,NULL,'62360',NULL,1228,39.813094,-91.25561,0,NULL,NULL,NULL),
+ (49,164,1,1,0,'988P El Camino Path S',988,'P',NULL,'El Camino','Path','S',NULL,NULL,NULL,NULL,'Toledo',1,1034,NULL,'43606',NULL,1228,41.671761,-83.6064,0,NULL,NULL,NULL),
+ (50,157,1,1,0,'48P Green Dr N',48,'P',NULL,'Green','Dr','N',NULL,NULL,NULL,NULL,'Rutland',1,1012,NULL,'61358',NULL,1228,40.986256,-89.04364,0,NULL,NULL,NULL),
+ (51,24,1,1,0,'305M Main Path SW',305,'M',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Terre Haute',1,1013,NULL,'47812',NULL,1228,39.433602,-87.410094,0,NULL,NULL,NULL),
+ (52,45,1,1,0,'785N Caulder Blvd SW',785,'N',NULL,'Caulder','Blvd','SW',NULL,NULL,NULL,NULL,'Brockwell',1,1003,NULL,'72517',NULL,1228,36.126021,-91.96619,0,NULL,NULL,NULL),
+ (53,86,1,1,0,'770J Jackson Dr W',770,'J',NULL,'Jackson','Dr','W',NULL,NULL,NULL,NULL,'Clark',1,1024,NULL,'65243',NULL,1228,39.278949,-92.36456,0,NULL,NULL,NULL),
+ (54,16,1,1,0,'993F Beech Path NE',993,'F',NULL,'Beech','Path','NE',NULL,NULL,NULL,NULL,'La Grange',1,1042,NULL,'78945',NULL,1228,29.909764,-96.8745,0,NULL,NULL,NULL),
+ (55,59,1,1,0,'488H Lincoln St SE',488,'H',NULL,'Lincoln','St','SE',NULL,NULL,NULL,NULL,'Cedar',1,1022,NULL,'55011',NULL,1228,45.335128,-93.27434,0,NULL,NULL,NULL),
+ (56,116,1,1,0,'875W Beech Path S',875,'W',NULL,'Beech','Path','S',NULL,NULL,NULL,NULL,'Dos Palos',1,1004,NULL,'93620',NULL,1228,37.029613,-120.64014,0,NULL,NULL,NULL),
+ (57,33,1,1,0,'512P El Camino Dr N',512,'P',NULL,'El Camino','Dr','N',NULL,NULL,NULL,NULL,'Capron',1,1012,NULL,'61012',NULL,1228,42.401104,-88.74726,0,NULL,NULL,NULL),
+ (58,200,1,1,0,'143Z Maple Path NE',143,'Z',NULL,'Maple','Path','NE',NULL,NULL,NULL,NULL,'Sharon Springs',1,1015,NULL,'67758',NULL,1228,38.865428,-101.73575,0,NULL,NULL,NULL),
+ (59,37,1,1,0,'663O Caulder St NE',663,'O',NULL,'Caulder','St','NE',NULL,NULL,NULL,NULL,'Meriden',1,1014,NULL,'51037',NULL,1228,42.821249,-95.62735,0,NULL,NULL,NULL),
+ (60,119,1,1,0,'657U Woodbridge Rd S',657,'U',NULL,'Woodbridge','Rd','S',NULL,NULL,NULL,NULL,'Baileys Harbor',1,1048,NULL,'54202',NULL,1228,45.059668,-87.13196,0,NULL,NULL,NULL),
+ (61,31,1,1,0,'582S Woodbridge Blvd NE',582,'S',NULL,'Woodbridge','Blvd','NE',NULL,NULL,NULL,NULL,'Hammondsville',1,1034,NULL,'43930',NULL,1228,40.566375,-80.76929,0,NULL,NULL,NULL),
+ (62,185,1,1,0,'832U Bay Pl SE',832,'U',NULL,'Bay','Pl','SE',NULL,NULL,NULL,NULL,'North Attleboro',1,1020,NULL,'02760',NULL,1228,41.975495,-71.33086,0,NULL,NULL,NULL),
+ (63,111,1,1,0,'26A Van Ness Path N',26,'A',NULL,'Van Ness','Path','N',NULL,NULL,NULL,NULL,NULL,1,1004,NULL,'00000',NULL,1228,NULL,NULL,0,NULL,NULL,NULL),
+ (64,5,1,1,0,'227T Second St E',227,'T',NULL,'Second','St','E',NULL,NULL,NULL,NULL,'Pickett',1,1048,NULL,'54964',NULL,1228,43.923141,-88.72654,0,NULL,NULL,NULL),
+ (65,64,1,1,0,'573F Dowlen Path E',573,'F',NULL,'Dowlen','Path','E',NULL,NULL,NULL,NULL,'McNeal',1,1002,NULL,'85617',NULL,1228,31.536321,-109.67608,0,NULL,NULL,NULL),
+ (66,10,1,1,0,'117R Main Ln SW',117,'R',NULL,'Main','Ln','SW',NULL,NULL,NULL,NULL,'Portland',1,1042,NULL,'78374',NULL,1228,27.884565,-97.32054,0,NULL,NULL,NULL),
+ (67,60,1,1,0,'496O Second Ave SE',496,'O',NULL,'Second','Ave','SE',NULL,NULL,NULL,NULL,'Ramsey',1,1012,NULL,'62080',NULL,1228,39.136284,-89.10348,0,NULL,NULL,NULL),
+ (68,132,3,1,0,'850X Martin Luther King Dr SW',850,'X',NULL,'Martin Luther King','Dr','SW',NULL,'Subscriptions Dept',NULL,NULL,'Grand Junction',1,1005,NULL,'81505',NULL,1228,39.112514,-108.60506,0,NULL,NULL,NULL),
+ (69,122,2,0,0,'850X Martin Luther King Dr SW',850,'X',NULL,'Martin Luther King','Dr','SW',NULL,'Subscriptions Dept',NULL,NULL,'Grand Junction',1,1005,NULL,'81505',NULL,1228,39.112514,-108.60506,0,NULL,NULL,68),
+ (70,6,3,1,0,'426Q Caulder Dr NW',426,'Q',NULL,'Caulder','Dr','NW',NULL,'Disbursements',NULL,NULL,'Alexandria',1,1045,NULL,'22308',NULL,1228,38.728464,-77.05701,0,NULL,NULL,NULL),
+ (71,125,2,1,0,'426Q Caulder Dr NW',426,'Q',NULL,'Caulder','Dr','NW',NULL,'Disbursements',NULL,NULL,'Alexandria',1,1045,NULL,'22308',NULL,1228,38.728464,-77.05701,0,NULL,NULL,70),
+ (72,133,3,1,0,'536Q Woodbridge Ln N',536,'Q',NULL,'Woodbridge','Ln','N',NULL,'Receiving',NULL,NULL,'Delaware City',1,1007,NULL,'19766',NULL,1228,39.567092,-75.601491,0,NULL,NULL,NULL),
+ (73,181,2,1,0,'536Q Woodbridge Ln N',536,'Q',NULL,'Woodbridge','Ln','N',NULL,'Receiving',NULL,NULL,'Delaware City',1,1007,NULL,'19766',NULL,1228,39.567092,-75.601491,0,NULL,NULL,72),
+ (74,106,3,1,0,'393P Maple Rd SE',393,'P',NULL,'Maple','Rd','SE',NULL,'Urgent',NULL,NULL,'Glenview',1,1012,NULL,'60025',NULL,1228,42.07672,-87.81922,0,NULL,NULL,NULL),
+ (75,121,2,1,0,'393P Maple Rd SE',393,'P',NULL,'Maple','Rd','SE',NULL,'Urgent',NULL,NULL,'Glenview',1,1012,NULL,'60025',NULL,1228,42.07672,-87.81922,0,NULL,NULL,74),
+ (76,2,3,1,0,'133D El Camino St SE',133,'D',NULL,'El Camino','St','SE',NULL,'Urgent',NULL,NULL,'Glen Cove',1,1031,NULL,'11542',NULL,1228,40.864757,-73.62609,0,NULL,NULL,NULL),
+ (77,124,2,1,0,'133D El Camino St SE',133,'D',NULL,'El Camino','St','SE',NULL,'Urgent',NULL,NULL,'Glen Cove',1,1031,NULL,'11542',NULL,1228,40.864757,-73.62609,0,NULL,NULL,76),
+ (78,97,3,1,0,'14B Maple Ln N',14,'B',NULL,'Maple','Ln','N',NULL,'Subscriptions Dept',NULL,NULL,'Marceline',1,1024,NULL,'64658',NULL,1228,39.668998,-92.92916,0,NULL,NULL,NULL),
+ (79,65,3,1,0,'357C Green Way SW',357,'C',NULL,'Green','Way','SW',NULL,'c/o PO Plus',NULL,NULL,'Woodburn',1,1013,NULL,'46797',NULL,1228,41.129274,-84.86982,0,NULL,NULL,NULL),
+ (80,155,2,0,0,'357C Green Way SW',357,'C',NULL,'Green','Way','SW',NULL,'c/o PO Plus',NULL,NULL,'Woodburn',1,1013,NULL,'46797',NULL,1228,41.129274,-84.86982,0,NULL,NULL,79),
+ (81,79,3,1,0,'311D Woodbridge Way NW',311,'D',NULL,'Woodbridge','Way','NW',NULL,'Subscriptions Dept',NULL,NULL,'Riverside',1,1042,NULL,'77367',NULL,1228,30.848603,-95.39644,0,NULL,NULL,NULL),
+ (82,171,2,1,0,'311D Woodbridge Way NW',311,'D',NULL,'Woodbridge','Way','NW',NULL,'Subscriptions Dept',NULL,NULL,'Riverside',1,1042,NULL,'77367',NULL,1228,30.848603,-95.39644,0,NULL,NULL,81),
+ (83,90,3,1,0,'206R College Path N',206,'R',NULL,'College','Path','N',NULL,'Mailstop 101',NULL,NULL,'Dearborn',1,1021,NULL,'48126',NULL,1228,42.333787,-83.18179,0,NULL,NULL,NULL),
+ (84,21,2,0,0,'206R College Path N',206,'R',NULL,'College','Path','N',NULL,'Mailstop 101',NULL,NULL,'Dearborn',1,1021,NULL,'48126',NULL,1228,42.333787,-83.18179,0,NULL,NULL,83),
+ (85,71,3,1,0,'377E Van Ness Blvd N',377,'E',NULL,'Van Ness','Blvd','N',NULL,'Community Relations',NULL,NULL,'McGraw',1,1031,NULL,'13101',NULL,1228,42.593363,-76.07789,0,NULL,NULL,NULL),
+ (86,152,3,1,0,'311U Green St E',311,'U',NULL,'Green','St','E',NULL,'Urgent',NULL,NULL,'Livermore',1,1014,NULL,'50558',NULL,1228,42.872099,-94.17339,0,NULL,NULL,NULL),
+ (87,57,2,1,0,'311U Green St E',311,'U',NULL,'Green','St','E',NULL,'Urgent',NULL,NULL,'Livermore',1,1014,NULL,'50558',NULL,1228,42.872099,-94.17339,0,NULL,NULL,86),
+ (88,70,3,1,0,'872B Green Blvd SW',872,'B',NULL,'Green','Blvd','SW',NULL,'Churchgate',NULL,NULL,'Paradise',1,1015,NULL,'67658',NULL,1228,39.118835,-98.91517,0,NULL,NULL,NULL),
+ (89,139,3,1,0,'271J Jackson Ave SE',271,'J',NULL,'Jackson','Ave','SE',NULL,'Subscriptions Dept',NULL,NULL,'Sedalia',1,1034,NULL,'43151',NULL,1228,39.732474,-83.47587,0,NULL,NULL,NULL),
+ (90,22,2,1,0,'271J Jackson Ave SE',271,'J',NULL,'Jackson','Ave','SE',NULL,'Subscriptions Dept',NULL,NULL,'Sedalia',1,1034,NULL,'43151',NULL,1228,39.732474,-83.47587,0,NULL,NULL,89),
+ (91,73,3,1,0,'985R Second Blvd NE',985,'R',NULL,'Second','Blvd','NE',NULL,'Attn: Development',NULL,NULL,'Bartlesville',1,1035,NULL,'74006',NULL,1228,36.733398,-95.92404,0,NULL,NULL,NULL),
+ (92,188,2,1,0,'985R Second Blvd NE',985,'R',NULL,'Second','Blvd','NE',NULL,'Attn: Development',NULL,NULL,'Bartlesville',1,1035,NULL,'74006',NULL,1228,36.733398,-95.92404,0,NULL,NULL,91),
+ (93,126,3,1,0,'466F Green Blvd S',466,'F',NULL,'Green','Blvd','S',NULL,'Cuffe Parade',NULL,NULL,'Winterville',1,1032,NULL,'28950',NULL,1228,35.526959,-77.404512,0,NULL,NULL,NULL),
+ (94,84,3,1,0,'955J Pine Rd NE',955,'J',NULL,'Pine','Rd','NE',NULL,'Urgent',NULL,NULL,'Blenheim',1,1039,NULL,'29516',NULL,1228,34.467072,-79.6437,0,NULL,NULL,NULL),
+ (95,96,3,1,0,'304B Van Ness Rd N',304,'B',NULL,'Van Ness','Rd','N',NULL,'Receiving',NULL,NULL,'Dennis Port',1,1020,NULL,'02639',NULL,1228,41.661115,-70.13348,0,NULL,NULL,NULL),
+ (96,201,3,1,0,'799A Van Ness Ln E',799,'A',NULL,'Van Ness','Ln','E',NULL,'Attn: Accounting',NULL,NULL,'Lehighton',1,1037,NULL,'18235',NULL,1228,40.828682,-75.70596,0,NULL,NULL,NULL),
+ (97,112,3,1,0,'601X College Blvd NE',601,'X',NULL,'College','Blvd','NE',NULL,'Churchgate',NULL,NULL,'Clover',1,1039,NULL,'29710',NULL,1228,35.109114,-81.19429,0,NULL,NULL,NULL),
+ (98,36,2,1,0,'601X College Blvd NE',601,'X',NULL,'College','Blvd','NE',NULL,'Churchgate',NULL,NULL,'Clover',1,1039,NULL,'29710',NULL,1228,35.109114,-81.19429,0,NULL,NULL,97),
+ (99,105,3,1,0,'512C Bay Way W',512,'C',NULL,'Bay','Way','W',NULL,'c/o OPDC',NULL,NULL,'Grants Pass',1,1036,NULL,'97526',NULL,1228,42.4631,-123.33162,0,NULL,NULL,NULL),
+ (100,107,2,1,0,'512C Bay Way W',512,'C',NULL,'Bay','Way','W',NULL,'c/o OPDC',NULL,NULL,'Grants Pass',1,1036,NULL,'97526',NULL,1228,42.4631,-123.33162,0,NULL,NULL,99),
+ (101,104,1,1,0,'995M Bay Ave SW',995,'M',NULL,'Bay','Ave','SW',NULL,NULL,NULL,NULL,'Payson',1,1012,NULL,'62360',NULL,1228,39.813094,-91.25561,0,NULL,NULL,48),
+ (102,136,1,1,0,'995M Bay Ave SW',995,'M',NULL,'Bay','Ave','SW',NULL,NULL,NULL,NULL,'Payson',1,1012,NULL,'62360',NULL,1228,39.813094,-91.25561,0,NULL,NULL,48),
+ (103,35,1,1,0,'995M Bay Ave SW',995,'M',NULL,'Bay','Ave','SW',NULL,NULL,NULL,NULL,'Payson',1,1012,NULL,'62360',NULL,1228,39.813094,-91.25561,0,NULL,NULL,48),
+ (104,66,1,0,0,'463Z States Pl W',463,'Z',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Henderson',1,1027,NULL,'89012',NULL,1228,36.017578,-115.05438,0,NULL,NULL,NULL),
+ (105,177,1,1,0,'988P El Camino Path S',988,'P',NULL,'El Camino','Path','S',NULL,NULL,NULL,NULL,'Toledo',1,1034,NULL,'43606',NULL,1228,41.671761,-83.6064,0,NULL,NULL,49),
+ (106,76,1,1,0,'988P El Camino Path S',988,'P',NULL,'El Camino','Path','S',NULL,NULL,NULL,NULL,'Toledo',1,1034,NULL,'43606',NULL,1228,41.671761,-83.6064,0,NULL,NULL,49),
+ (107,158,1,1,0,'988P El Camino Path S',988,'P',NULL,'El Camino','Path','S',NULL,NULL,NULL,NULL,'Toledo',1,1034,NULL,'43606',NULL,1228,41.671761,-83.6064,0,NULL,NULL,49),
+ (108,67,1,1,0,'988P El Camino Path S',988,'P',NULL,'El Camino','Path','S',NULL,NULL,NULL,NULL,'Toledo',1,1034,NULL,'43606',NULL,1228,41.671761,-83.6064,0,NULL,NULL,49),
+ (109,92,1,1,0,'48P Green Dr N',48,'P',NULL,'Green','Dr','N',NULL,NULL,NULL,NULL,'Rutland',1,1012,NULL,'61358',NULL,1228,40.986256,-89.04364,0,NULL,NULL,50),
+ (110,13,1,1,0,'48P Green Dr N',48,'P',NULL,'Green','Dr','N',NULL,NULL,NULL,NULL,'Rutland',1,1012,NULL,'61358',NULL,1228,40.986256,-89.04364,0,NULL,NULL,50),
+ (111,88,1,1,0,'48P Green Dr N',48,'P',NULL,'Green','Dr','N',NULL,NULL,NULL,NULL,'Rutland',1,1012,NULL,'61358',NULL,1228,40.986256,-89.04364,0,NULL,NULL,50),
+ (112,120,1,1,0,'453E States Blvd W',453,'E',NULL,'States','Blvd','W',NULL,NULL,NULL,NULL,'North Brookfield',1,1031,NULL,'13418',NULL,1228,42.852808,-75.39938,0,NULL,NULL,NULL),
+ (113,197,1,1,0,'305M Main Path SW',305,'M',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Terre Haute',1,1013,NULL,'47812',NULL,1228,39.433602,-87.410094,0,NULL,NULL,51),
+ (114,182,1,1,0,'305M Main Path SW',305,'M',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Terre Haute',1,1013,NULL,'47812',NULL,1228,39.433602,-87.410094,0,NULL,NULL,51),
+ (115,63,1,1,0,'305M Main Path SW',305,'M',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Terre Haute',1,1013,NULL,'47812',NULL,1228,39.433602,-87.410094,0,NULL,NULL,51),
+ (116,7,1,1,0,'137B Martin Luther King Way N',137,'B',NULL,'Martin Luther King','Way','N',NULL,NULL,NULL,NULL,'Sarasota',1,1008,NULL,'34277',NULL,1228,27.167521,-82.380967,0,NULL,NULL,NULL),
+ (117,100,1,1,0,'785N Caulder Blvd SW',785,'N',NULL,'Caulder','Blvd','SW',NULL,NULL,NULL,NULL,'Brockwell',1,1003,NULL,'72517',NULL,1228,36.126021,-91.96619,0,NULL,NULL,52),
+ (118,191,1,1,0,'785N Caulder Blvd SW',785,'N',NULL,'Caulder','Blvd','SW',NULL,NULL,NULL,NULL,'Brockwell',1,1003,NULL,'72517',NULL,1228,36.126021,-91.96619,0,NULL,NULL,52),
+ (119,98,1,1,0,'785N Caulder Blvd SW',785,'N',NULL,'Caulder','Blvd','SW',NULL,NULL,NULL,NULL,'Brockwell',1,1003,NULL,'72517',NULL,1228,36.126021,-91.96619,0,NULL,NULL,52),
+ (120,167,1,1,0,'785N Caulder Blvd SW',785,'N',NULL,'Caulder','Blvd','SW',NULL,NULL,NULL,NULL,'Brockwell',1,1003,NULL,'72517',NULL,1228,36.126021,-91.96619,0,NULL,NULL,52),
+ (121,172,1,1,0,'770J Jackson Dr W',770,'J',NULL,'Jackson','Dr','W',NULL,NULL,NULL,NULL,'Clark',1,1024,NULL,'65243',NULL,1228,39.278949,-92.36456,0,NULL,NULL,53),
+ (122,189,1,1,0,'770J Jackson Dr W',770,'J',NULL,'Jackson','Dr','W',NULL,NULL,NULL,NULL,'Clark',1,1024,NULL,'65243',NULL,1228,39.278949,-92.36456,0,NULL,NULL,53),
+ (123,74,1,1,0,'770J Jackson Dr W',770,'J',NULL,'Jackson','Dr','W',NULL,NULL,NULL,NULL,'Clark',1,1024,NULL,'65243',NULL,1228,39.278949,-92.36456,0,NULL,NULL,53),
+ (124,29,1,1,0,'770J Jackson Dr W',770,'J',NULL,'Jackson','Dr','W',NULL,NULL,NULL,NULL,'Clark',1,1024,NULL,'65243',NULL,1228,39.278949,-92.36456,0,NULL,NULL,53),
+ (125,115,1,1,0,'993F Beech Path NE',993,'F',NULL,'Beech','Path','NE',NULL,NULL,NULL,NULL,'La Grange',1,1042,NULL,'78945',NULL,1228,29.909764,-96.8745,0,NULL,NULL,54),
+ (126,80,1,1,0,'993F Beech Path NE',993,'F',NULL,'Beech','Path','NE',NULL,NULL,NULL,NULL,'La Grange',1,1042,NULL,'78945',NULL,1228,29.909764,-96.8745,0,NULL,NULL,54),
+ (127,131,1,1,0,'993F Beech Path NE',993,'F',NULL,'Beech','Path','NE',NULL,NULL,NULL,NULL,'La Grange',1,1042,NULL,'78945',NULL,1228,29.909764,-96.8745,0,NULL,NULL,54),
+ (128,49,1,1,0,'104T Caulder Ln E',104,'T',NULL,'Caulder','Ln','E',NULL,NULL,NULL,NULL,'North Boston',1,1031,NULL,'14110',NULL,1228,42.768413,-78.887094,0,NULL,NULL,NULL),
+ (129,32,1,1,0,'488H Lincoln St SE',488,'H',NULL,'Lincoln','St','SE',NULL,NULL,NULL,NULL,'Cedar',1,1022,NULL,'55011',NULL,1228,45.335128,-93.27434,0,NULL,NULL,55),
+ (130,148,1,1,0,'488H Lincoln St SE',488,'H',NULL,'Lincoln','St','SE',NULL,NULL,NULL,NULL,'Cedar',1,1022,NULL,'55011',NULL,1228,45.335128,-93.27434,0,NULL,NULL,55),
+ (131,181,1,0,0,'488H Lincoln St SE',488,'H',NULL,'Lincoln','St','SE',NULL,NULL,NULL,NULL,'Cedar',1,1022,NULL,'55011',NULL,1228,45.335128,-93.27434,0,NULL,NULL,55),
+ (132,162,1,1,0,'488H Lincoln St SE',488,'H',NULL,'Lincoln','St','SE',NULL,NULL,NULL,NULL,'Cedar',1,1022,NULL,'55011',NULL,1228,45.335128,-93.27434,0,NULL,NULL,55),
+ (133,58,1,1,0,'875W Beech Path S',875,'W',NULL,'Beech','Path','S',NULL,NULL,NULL,NULL,'Dos Palos',1,1004,NULL,'93620',NULL,1228,37.029613,-120.64014,0,NULL,NULL,56),
+ (134,14,1,1,0,'875W Beech Path S',875,'W',NULL,'Beech','Path','S',NULL,NULL,NULL,NULL,'Dos Palos',1,1004,NULL,'93620',NULL,1228,37.029613,-120.64014,0,NULL,NULL,56),
+ (135,123,1,1,0,'875W Beech Path S',875,'W',NULL,'Beech','Path','S',NULL,NULL,NULL,NULL,'Dos Palos',1,1004,NULL,'93620',NULL,1228,37.029613,-120.64014,0,NULL,NULL,56),
+ (136,19,1,1,0,'220E Beech Rd S',220,'E',NULL,'Beech','Rd','S',NULL,NULL,NULL,NULL,'Shiloh',1,1029,NULL,'08353',NULL,1228,39.458114,-75.29761,0,NULL,NULL,NULL),
+ (137,125,1,0,0,'512P El Camino Dr N',512,'P',NULL,'El Camino','Dr','N',NULL,NULL,NULL,NULL,'Capron',1,1012,NULL,'61012',NULL,1228,42.401104,-88.74726,0,NULL,NULL,57),
+ (138,61,1,1,0,'512P El Camino Dr N',512,'P',NULL,'El Camino','Dr','N',NULL,NULL,NULL,NULL,'Capron',1,1012,NULL,'61012',NULL,1228,42.401104,-88.74726,0,NULL,NULL,57),
+ (139,26,1,1,0,'512P El Camino Dr N',512,'P',NULL,'El Camino','Dr','N',NULL,NULL,NULL,NULL,'Capron',1,1012,NULL,'61012',NULL,1228,42.401104,-88.74726,0,NULL,NULL,57),
+ (140,117,1,1,0,'512P El Camino Dr N',512,'P',NULL,'El Camino','Dr','N',NULL,NULL,NULL,NULL,'Capron',1,1012,NULL,'61012',NULL,1228,42.401104,-88.74726,0,NULL,NULL,57),
+ (141,142,1,1,0,'143Z Maple Path NE',143,'Z',NULL,'Maple','Path','NE',NULL,NULL,NULL,NULL,'Sharon Springs',1,1015,NULL,'67758',NULL,1228,38.865428,-101.73575,0,NULL,NULL,58),
+ (142,52,1,1,0,'143Z Maple Path NE',143,'Z',NULL,'Maple','Path','NE',NULL,NULL,NULL,NULL,'Sharon Springs',1,1015,NULL,'67758',NULL,1228,38.865428,-101.73575,0,NULL,NULL,58),
+ (143,171,1,0,0,'143Z Maple Path NE',143,'Z',NULL,'Maple','Path','NE',NULL,NULL,NULL,NULL,'Sharon Springs',1,1015,NULL,'67758',NULL,1228,38.865428,-101.73575,0,NULL,NULL,58),
+ (144,11,1,1,0,'434N Woodbridge Dr NE',434,'N',NULL,'Woodbridge','Dr','NE',NULL,NULL,NULL,NULL,'Birmingham',1,1000,NULL,'35211',NULL,1228,33.479306,-86.85878,0,NULL,NULL,NULL),
+ (145,159,1,1,0,'663O Caulder St NE',663,'O',NULL,'Caulder','St','NE',NULL,NULL,NULL,NULL,'Meriden',1,1014,NULL,'51037',NULL,1228,42.821249,-95.62735,0,NULL,NULL,59),
+ (146,170,1,1,0,'663O Caulder St NE',663,'O',NULL,'Caulder','St','NE',NULL,NULL,NULL,NULL,'Meriden',1,1014,NULL,'51037',NULL,1228,42.821249,-95.62735,0,NULL,NULL,59),
+ (147,180,1,1,0,'663O Caulder St NE',663,'O',NULL,'Caulder','St','NE',NULL,NULL,NULL,NULL,'Meriden',1,1014,NULL,'51037',NULL,1228,42.821249,-95.62735,0,NULL,NULL,59),
+ (148,169,1,1,0,'202U Lincoln Path S',202,'U',NULL,'Lincoln','Path','S',NULL,NULL,NULL,NULL,'Riverton',1,1029,NULL,'08077',NULL,1228,39.997379,-74.99805,0,NULL,NULL,NULL),
+ (149,161,1,1,0,'657U Woodbridge Rd S',657,'U',NULL,'Woodbridge','Rd','S',NULL,NULL,NULL,NULL,'Baileys Harbor',1,1048,NULL,'54202',NULL,1228,45.059668,-87.13196,0,NULL,NULL,60),
+ (150,9,1,1,0,'657U Woodbridge Rd S',657,'U',NULL,'Woodbridge','Rd','S',NULL,NULL,NULL,NULL,'Baileys Harbor',1,1048,NULL,'54202',NULL,1228,45.059668,-87.13196,0,NULL,NULL,60),
+ (151,30,1,1,0,'657U Woodbridge Rd S',657,'U',NULL,'Woodbridge','Rd','S',NULL,NULL,NULL,NULL,'Baileys Harbor',1,1048,NULL,'54202',NULL,1228,45.059668,-87.13196,0,NULL,NULL,60),
+ (152,121,1,0,0,'657U Woodbridge Rd S',657,'U',NULL,'Woodbridge','Rd','S',NULL,NULL,NULL,NULL,'Baileys Harbor',1,1048,NULL,'54202',NULL,1228,45.059668,-87.13196,0,NULL,NULL,60),
+ (153,56,1,1,0,'582S Woodbridge Blvd NE',582,'S',NULL,'Woodbridge','Blvd','NE',NULL,NULL,NULL,NULL,'Hammondsville',1,1034,NULL,'43930',NULL,1228,40.566375,-80.76929,0,NULL,NULL,61),
+ (154,43,1,1,0,'582S Woodbridge Blvd NE',582,'S',NULL,'Woodbridge','Blvd','NE',NULL,NULL,NULL,NULL,'Hammondsville',1,1034,NULL,'43930',NULL,1228,40.566375,-80.76929,0,NULL,NULL,61),
+ (155,23,1,1,0,'582S Woodbridge Blvd NE',582,'S',NULL,'Woodbridge','Blvd','NE',NULL,NULL,NULL,NULL,'Hammondsville',1,1034,NULL,'43930',NULL,1228,40.566375,-80.76929,0,NULL,NULL,61),
+ (156,107,1,0,0,'582S Woodbridge Blvd NE',582,'S',NULL,'Woodbridge','Blvd','NE',NULL,NULL,NULL,NULL,'Hammondsville',1,1034,NULL,'43930',NULL,1228,40.566375,-80.76929,0,NULL,NULL,61),
+ (157,41,1,1,0,'832U Bay Pl SE',832,'U',NULL,'Bay','Pl','SE',NULL,NULL,NULL,NULL,'North Attleboro',1,1020,NULL,'02760',NULL,1228,41.975495,-71.33086,0,NULL,NULL,62),
+ (158,20,1,1,0,'832U Bay Pl SE',832,'U',NULL,'Bay','Pl','SE',NULL,NULL,NULL,NULL,'North Attleboro',1,1020,NULL,'02760',NULL,1228,41.975495,-71.33086,0,NULL,NULL,62),
+ (159,69,1,1,0,'832U Bay Pl SE',832,'U',NULL,'Bay','Pl','SE',NULL,NULL,NULL,NULL,'North Attleboro',1,1020,NULL,'02760',NULL,1228,41.975495,-71.33086,0,NULL,NULL,62),
+ (160,149,1,1,0,'832U Bay Pl SE',832,'U',NULL,'Bay','Pl','SE',NULL,NULL,NULL,NULL,'North Attleboro',1,1020,NULL,'02760',NULL,1228,41.975495,-71.33086,0,NULL,NULL,62),
+ (161,113,1,1,0,'26A Van Ness Path N',26,'A',NULL,'Van Ness','Path','N',NULL,NULL,NULL,NULL,NULL,1,1004,NULL,'00000',NULL,1228,NULL,NULL,0,NULL,NULL,63),
+ (162,114,1,1,0,'26A Van Ness Path N',26,'A',NULL,'Van Ness','Path','N',NULL,NULL,NULL,NULL,NULL,1,1004,NULL,'00000',NULL,1228,NULL,NULL,0,NULL,NULL,63),
+ (163,109,1,1,0,'26A Van Ness Path N',26,'A',NULL,'Van Ness','Path','N',NULL,NULL,NULL,NULL,NULL,1,1004,NULL,'00000',NULL,1228,NULL,NULL,0,NULL,NULL,63),
+ (164,57,1,0,0,'26A Van Ness Path N',26,'A',NULL,'Van Ness','Path','N',NULL,NULL,NULL,NULL,NULL,1,1004,NULL,'00000',NULL,1228,NULL,NULL,0,NULL,NULL,63),
+ (165,163,1,1,0,'227T Second St E',227,'T',NULL,'Second','St','E',NULL,NULL,NULL,NULL,'Pickett',1,1048,NULL,'54964',NULL,1228,43.923141,-88.72654,0,NULL,NULL,64),
+ (166,99,1,1,0,'227T Second St E',227,'T',NULL,'Second','St','E',NULL,NULL,NULL,NULL,'Pickett',1,1048,NULL,'54964',NULL,1228,43.923141,-88.72654,0,NULL,NULL,64),
+ (167,103,1,1,0,'227T Second St E',227,'T',NULL,'Second','St','E',NULL,NULL,NULL,NULL,'Pickett',1,1048,NULL,'54964',NULL,1228,43.923141,-88.72654,0,NULL,NULL,64),
+ (168,145,1,1,0,'227T Second St E',227,'T',NULL,'Second','St','E',NULL,NULL,NULL,NULL,'Pickett',1,1048,NULL,'54964',NULL,1228,43.923141,-88.72654,0,NULL,NULL,64),
+ (169,34,1,1,0,'573F Dowlen Path E',573,'F',NULL,'Dowlen','Path','E',NULL,NULL,NULL,NULL,'McNeal',1,1002,NULL,'85617',NULL,1228,31.536321,-109.67608,0,NULL,NULL,65),
+ (170,54,1,1,0,'573F Dowlen Path E',573,'F',NULL,'Dowlen','Path','E',NULL,NULL,NULL,NULL,'McNeal',1,1002,NULL,'85617',NULL,1228,31.536321,-109.67608,0,NULL,NULL,65),
+ (171,108,1,1,0,'573F Dowlen Path E',573,'F',NULL,'Dowlen','Path','E',NULL,NULL,NULL,NULL,'McNeal',1,1002,NULL,'85617',NULL,1228,31.536321,-109.67608,0,NULL,NULL,65),
+ (172,153,1,1,0,'573F Dowlen Path E',573,'F',NULL,'Dowlen','Path','E',NULL,NULL,NULL,NULL,'McNeal',1,1002,NULL,'85617',NULL,1228,31.536321,-109.67608,0,NULL,NULL,65),
+ (173,93,1,1,0,'117R Main Ln SW',117,'R',NULL,'Main','Ln','SW',NULL,NULL,NULL,NULL,'Portland',1,1042,NULL,'78374',NULL,1228,27.884565,-97.32054,0,NULL,NULL,66),
+ (174,95,1,1,0,'117R Main Ln SW',117,'R',NULL,'Main','Ln','SW',NULL,NULL,NULL,NULL,'Portland',1,1042,NULL,'78374',NULL,1228,27.884565,-97.32054,0,NULL,NULL,66),
+ (175,62,1,1,0,'117R Main Ln SW',117,'R',NULL,'Main','Ln','SW',NULL,NULL,NULL,NULL,'Portland',1,1042,NULL,'78374',NULL,1228,27.884565,-97.32054,0,NULL,NULL,66),
+ (176,173,1,1,0,'505T Van Ness Ave N',505,'T',NULL,'Van Ness','Ave','N',NULL,NULL,NULL,NULL,'Billings',1,1025,NULL,'59105',NULL,1228,45.836121,-108.46819,0,NULL,NULL,NULL),
+ (177,22,1,0,0,'496O Second Ave SE',496,'O',NULL,'Second','Ave','SE',NULL,NULL,NULL,NULL,'Ramsey',1,1012,NULL,'62080',NULL,1228,39.136284,-89.10348,0,NULL,NULL,67),
+ (178,25,1,1,0,'496O Second Ave SE',496,'O',NULL,'Second','Ave','SE',NULL,NULL,NULL,NULL,'Ramsey',1,1012,NULL,'62080',NULL,1228,39.136284,-89.10348,0,NULL,NULL,67),
+ (179,143,1,1,0,'496O Second Ave SE',496,'O',NULL,'Second','Ave','SE',NULL,NULL,NULL,NULL,'Ramsey',1,1012,NULL,'62080',NULL,1228,39.136284,-89.10348,0,NULL,NULL,67),
+ (180,165,1,1,0,'496O Second Ave SE',496,'O',NULL,'Second','Ave','SE',NULL,NULL,NULL,NULL,'Ramsey',1,1012,NULL,'62080',NULL,1228,39.136284,-89.10348,0,NULL,NULL,67),
+ (181,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),
+ (182,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),
+ (183,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;
 
@@ -1904,208 +2156,208 @@ 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,'2022-08-09 18:17:19'),
- (2,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Brigette','Brigette Deforest',NULL,NULL,NULL,'1',NULL,'Both','3260851036',NULL,'Sample Data','Brigette','','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Deforest',NULL,1,'1967-04-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (3,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jones family','Jones family',NULL,NULL,NULL,'3',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,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (4,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Sanford','Sanford Cruz III',NULL,NULL,NULL,NULL,NULL,'Both','3379044483',NULL,'Sample Data','Sanford','I','Cruz',NULL,4,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Cruz III',NULL,NULL,'1997-11-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (5,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'College Health Academy','College Health Academy',NULL,NULL,NULL,'4',NULL,'Both','976837379',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'College Health Academy',NULL,NULL,NULL,0,NULL,NULL,22,'College Health Academy',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (6,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Dimitrov, Brzęczysław','Brzęczysław Dimitrov III',NULL,NULL,NULL,'1',NULL,'Both','1759214817',NULL,'Sample Data','Brzęczysław','L','Dimitrov',NULL,4,NULL,NULL,1,NULL,'Dear Brzęczysław',1,NULL,'Dear Brzęczysław',1,NULL,'Brzęczysław Dimitrov III',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (7,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Elizabeth','Elizabeth Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','2458618009',NULL,'Sample Data','Elizabeth','','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Jacobs',NULL,1,'1990-03-19',0,NULL,NULL,NULL,'Pennsylvania Development Fund',NULL,NULL,117,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (8,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson family','Wilson family',NULL,NULL,NULL,NULL,NULL,'Both','350510798',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson family',5,NULL,'Dear Wilson family',2,NULL,'Wilson family',NULL,NULL,NULL,0,NULL,'Wilson family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (9,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov, Bernadette','Mrs. Bernadette Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','110642953',NULL,'Sample Data','Bernadette','','Dimitrov',1,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Mrs. Bernadette Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (10,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Smith, Errol','Errol Smith',NULL,NULL,NULL,'4',NULL,'Both','2269355028',NULL,'Sample Data','Errol','','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Smith',NULL,2,'1939-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (11,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Vermont Poetry Center','Vermont Poetry Center',NULL,NULL,NULL,NULL,NULL,'Both','541854619',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Vermont Poetry Center',NULL,NULL,NULL,0,NULL,NULL,NULL,'Vermont Poetry Center',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (12,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Bernadette','Bernadette Wattson',NULL,NULL,NULL,'3',NULL,'Both','1191372822',NULL,'Sample Data','Bernadette','','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Wattson',NULL,1,'1985-11-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (13,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Bernadette','Bernadette Yadav',NULL,NULL,NULL,'4',NULL,'Both','311898142',NULL,'Sample Data','Bernadette','','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Yadav',NULL,NULL,'1994-04-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (14,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'sq.olsen88@airmail.com','sq.olsen88@airmail.com',NULL,NULL,NULL,NULL,NULL,'Both','2673446839',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear sq.olsen88@airmail.com',1,NULL,'Dear sq.olsen88@airmail.com',1,NULL,'sq.olsen88@airmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,'Rural Literacy Initiative',NULL,NULL,82,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (15,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Florida Advocacy Academy','Florida Advocacy Academy',NULL,NULL,NULL,'5',NULL,'Both','4195911337',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Florida Advocacy Academy',NULL,NULL,NULL,0,NULL,NULL,155,'Florida Advocacy Academy',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (16,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson-Dimitrov, Ashley','Mrs. Ashley Jameson-Dimitrov',NULL,NULL,NULL,'3',NULL,'Both','233710606',NULL,'Sample Data','Ashley','','Jameson-Dimitrov',1,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Mrs. Ashley Jameson-Dimitrov',NULL,1,'1971-01-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (17,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Patel family','Patel family',NULL,NULL,NULL,NULL,NULL,'Both','1669281794',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Patel family',5,NULL,'Dear Patel family',2,NULL,'Patel family',NULL,NULL,NULL,0,NULL,'Patel family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (18,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, Delana','Delana Reynolds',NULL,NULL,NULL,'5',NULL,'Both','783051716',NULL,'Sample Data','Delana','','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Reynolds',NULL,1,'1993-05-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (19,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Lee, Junko','Mrs. Junko Lee',NULL,NULL,NULL,'3',NULL,'Both','2980940667',NULL,'Sample Data','Junko','S','Lee',1,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Mrs. Junko Lee',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:26'),
- (20,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Roberts, Beula','Dr. Beula Roberts',NULL,NULL,NULL,NULL,NULL,'Both','640050534',NULL,'Sample Data','Beula','','Roberts',4,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Dr. Beula Roberts',NULL,1,'1957-04-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (21,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samson, Laree','Mrs. Laree Samson',NULL,NULL,NULL,NULL,NULL,'Both','2873745913',NULL,'Sample Data','Laree','','Samson',1,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Mrs. Laree Samson',NULL,1,'1949-08-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (22,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Kacey','Mrs. Kacey Wilson',NULL,NULL,NULL,'2',NULL,'Both','397896521',NULL,'Sample Data','Kacey','','Wilson',1,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Mrs. Kacey Wilson',NULL,NULL,NULL,0,NULL,NULL,NULL,'College Health Academy',NULL,NULL,5,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (23,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Dimitrov, Rolando','Dr. Rolando Dimitrov III',NULL,NULL,NULL,'1',NULL,'Both','2226225563',NULL,'Sample Data','Rolando','K','Dimitrov',4,4,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Dimitrov III',NULL,2,'1980-03-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (24,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Reynolds, Shad','Dr. Shad Reynolds',NULL,NULL,NULL,'5',NULL,'Both','3023273825',NULL,'Sample Data','Shad','C','Reynolds',4,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Reynolds',NULL,2,'1936-07-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (25,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Terry-Wattson family','Terry-Wattson family',NULL,NULL,NULL,'5',NULL,'Both','3014311476',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Terry-Wattson family',5,NULL,'Dear Terry-Wattson family',2,NULL,'Terry-Wattson family',NULL,NULL,NULL,0,NULL,'Terry-Wattson family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (26,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Scarlet','Scarlet Dimitrov',NULL,NULL,NULL,'4',NULL,'Both','2143443543',NULL,'Sample Data','Scarlet','','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Dimitrov',NULL,NULL,'1985-04-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (27,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cooper, Allan','Dr. Allan Cooper',NULL,NULL,NULL,NULL,NULL,'Both','350402207',NULL,'Sample Data','Allan','','Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Dr. Allan Cooper',NULL,NULL,'1984-03-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (28,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Iris','Ms. Iris Wilson',NULL,NULL,NULL,'5',NULL,'Both','3052270264',NULL,'Sample Data','Iris','','Wilson',2,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Ms. Iris Wilson',NULL,1,'1964-04-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (29,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'chowski.claudio@testmail.info','chowski.claudio@testmail.info',NULL,NULL,NULL,'4',NULL,'Both','1417655532',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear chowski.claudio@testmail.info',1,NULL,'Dear chowski.claudio@testmail.info',1,NULL,'chowski.claudio@testmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (30,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Ashley','Ashley Bachman',NULL,NULL,NULL,'2',NULL,'Both','2646692852',NULL,'Sample Data','Ashley','V','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Bachman',NULL,1,'1956-07-15',0,NULL,NULL,NULL,'Missouri Development Initiative',NULL,NULL,147,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (31,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Lee-Smith, Allen','Dr. Allen Lee-Smith Jr.',NULL,NULL,NULL,NULL,NULL,'Both','1408992267',NULL,'Sample Data','Allen','','Lee-Smith',4,1,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Lee-Smith Jr.',NULL,2,'1989-08-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (32,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Smith, Ivey','Dr. Ivey Smith',NULL,NULL,NULL,'1',NULL,'Both','4175270008',NULL,'Sample Data','Ivey','U','Smith',4,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Dr. Ivey Smith',NULL,NULL,'1932-12-25',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (33,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Smith, Alida','Alida Smith',NULL,NULL,NULL,NULL,NULL,'Both','1328804767',NULL,'Sample Data','Alida','','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida Smith',NULL,1,'1960-12-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (34,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Barry','Barry Robertson II',NULL,NULL,NULL,NULL,NULL,'Both','3681115611',NULL,'Sample Data','Barry','','Robertson',NULL,3,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Robertson II',NULL,NULL,'1972-10-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (35,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Bachman, Scarlet','Ms. Scarlet Bachman',NULL,NULL,NULL,'3',NULL,'Both','2562721421',NULL,'Sample Data','Scarlet','Y','Bachman',2,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Ms. Scarlet Bachman',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (36,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Ashlie','Ashlie Deforest',NULL,NULL,NULL,NULL,NULL,'Both','1320742181',NULL,'Sample Data','Ashlie','Q','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Deforest',NULL,1,'1968-08-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:26'),
- (37,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samson, Allan','Allan Samson III',NULL,NULL,NULL,'3',NULL,'Both','1152741219',NULL,'Sample Data','Allan','N','Samson',NULL,4,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Samson III',NULL,2,'1976-05-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (38,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Barkley, Erik','Erik Barkley',NULL,NULL,NULL,NULL,NULL,'Both','2448984417',NULL,'Sample Data','Erik','S','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Barkley',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (39,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'samson.toby49@sample.net','samson.toby49@sample.net',NULL,NULL,NULL,'1',NULL,'Both','3489078591',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear samson.toby49@sample.net',1,NULL,'Dear samson.toby49@sample.net',1,NULL,'samson.toby49@sample.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (40,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'cruz.jay@fakemail.co.uk','cruz.jay@fakemail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','2302110017',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear cruz.jay@fakemail.co.uk',1,NULL,'Dear cruz.jay@fakemail.co.uk',1,NULL,'cruz.jay@fakemail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,'Rensselaer Technology Fund',NULL,NULL,158,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (41,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Global Food Fellowship','Global Food Fellowship',NULL,NULL,NULL,NULL,NULL,'Both','2000763259',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Food Fellowship',NULL,NULL,NULL,0,NULL,NULL,78,'Global Food Fellowship',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (42,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Lee, Craig','Mr. Craig Lee Jr.',NULL,NULL,NULL,'3',NULL,'Both','383482942',NULL,'Sample Data','Craig','T','Lee',3,1,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Mr. Craig Lee Jr.',NULL,2,'1973-05-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (43,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'jo.prentice-lee@testing.net','jo.prentice-lee@testing.net',NULL,NULL,NULL,'5',NULL,'Both','2176434967',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear jo.prentice-lee@testing.net',1,NULL,'Dear jo.prentice-lee@testing.net',1,NULL,'jo.prentice-lee@testing.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (44,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Roland','Roland Jones',NULL,NULL,NULL,'3',NULL,'Both','2619785805',NULL,'Sample Data','Roland','','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Jones',NULL,2,'2009-05-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (45,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Brigette','Ms. Brigette Deforest',NULL,NULL,NULL,NULL,NULL,'Both','3260851036',NULL,'Sample Data','Brigette','','Deforest',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette Deforest',NULL,1,'1987-04-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (46,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Wattson, Santina','Dr. Santina Wattson',NULL,NULL,NULL,NULL,NULL,'Both','4231196577',NULL,'Sample Data','Santina','X','Wattson',4,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Dr. Santina Wattson',NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (47,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'wilson.sonny54@sample.co.nz','wilson.sonny54@sample.co.nz',NULL,NULL,NULL,NULL,NULL,'Both','692897521',NULL,'Sample Data',NULL,NULL,NULL,4,4,NULL,NULL,1,NULL,'Dear wilson.sonny54@sample.co.nz',1,NULL,'Dear wilson.sonny54@sample.co.nz',1,NULL,'wilson.sonny54@sample.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (48,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Lee-Roberts family','Lee-Roberts family',NULL,NULL,NULL,NULL,NULL,'Both','3712893307',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Lee-Roberts family',5,NULL,'Dear Lee-Roberts family',2,NULL,'Lee-Roberts family',NULL,NULL,NULL,0,NULL,'Lee-Roberts family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (49,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Dimitrov, Sharyn','Sharyn Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','1888129683',NULL,'Sample Data','Sharyn','','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Dimitrov',NULL,NULL,'1992-08-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (50,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Maxwell','Mr. Maxwell Robertson Sr.',NULL,NULL,NULL,NULL,NULL,'Both','630797245',NULL,'Sample Data','Maxwell','J','Robertson',3,2,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Mr. Maxwell Robertson Sr.',NULL,NULL,'1967-11-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (51,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Blackwell, Ashley','Ashley Blackwell',NULL,NULL,NULL,'3',NULL,'Both','2843113739',NULL,'Sample Data','Ashley','K','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Blackwell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (52,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, Scott','Scott Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','674660419',NULL,'Sample Data','Scott','F','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Reynolds',NULL,2,'1995-02-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (53,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Yadav, Valene','Valene Yadav',NULL,NULL,NULL,'2',NULL,'Both','2309358283',NULL,'Sample Data','Valene','','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Yadav',NULL,1,'1977-02-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (54,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry-Wattson, Bryon','Bryon Terry-Wattson',NULL,NULL,NULL,NULL,NULL,'Both','2546489944',NULL,'Sample Data','Bryon','','Terry-Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Bryon Terry-Wattson',NULL,2,'1977-02-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (55,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'El Camino Music Systems','El Camino Music Systems',NULL,NULL,NULL,NULL,NULL,'Both','2638023851',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'El Camino Music Systems',NULL,NULL,NULL,0,NULL,NULL,NULL,'El Camino Music Systems',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (56,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jameson, Kenny','Kenny Jameson Jr.',NULL,NULL,NULL,'2',NULL,'Both','3782185889',NULL,'Sample Data','Kenny','','Jameson',NULL,1,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Jameson Jr.',NULL,2,'1995-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (57,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Díaz, Damaris','Damaris Díaz',NULL,NULL,NULL,'4',NULL,'Both','2580201912',NULL,'Sample Data','Damaris','C','Díaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Díaz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (58,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Bachman, Alexia','Alexia Bachman',NULL,NULL,NULL,NULL,NULL,'Both','703420300',NULL,'Sample Data','Alexia','Q','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Bachman',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (59,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samson, Toby','Toby Samson Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1447480328',NULL,'Sample Data','Toby','F','Samson',NULL,2,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Samson Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (60,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Jensen, Erik','Mr. Erik Jensen',NULL,NULL,NULL,NULL,NULL,'Both','3788466038',NULL,'Sample Data','Erik','','Jensen',3,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Mr. Erik Jensen',NULL,2,'1990-05-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (61,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Sierra Agriculture Network','Sierra Agriculture Network',NULL,NULL,NULL,'1',NULL,'Both','2936191756',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sierra Agriculture Network',NULL,NULL,NULL,0,NULL,NULL,NULL,'Sierra Agriculture Network',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (62,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'McReynolds, Kenny','Dr. Kenny McReynolds',NULL,NULL,NULL,'2',NULL,'Both','3554599492',NULL,'Sample Data','Kenny','C','McReynolds',4,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Dr. Kenny McReynolds',NULL,2,'1958-09-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (63,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Margaret','Margaret Dimitrov',NULL,NULL,NULL,'1',NULL,'Both','455886954',NULL,'Sample Data','Margaret','','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Dimitrov',NULL,1,'1954-05-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (64,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Caulder Music Initiative','Caulder Music Initiative',NULL,NULL,NULL,NULL,NULL,'Both','4197964936',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Caulder Music Initiative',NULL,NULL,NULL,0,NULL,NULL,138,'Caulder Music Initiative',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (65,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Terry, Jay','Jay Terry Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1881110298',NULL,'Sample Data','Jay','Z','Terry',NULL,2,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay Terry Sr.',NULL,NULL,'1957-11-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (66,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Yadav, Delana','Delana Yadav',NULL,NULL,NULL,NULL,NULL,'Both','844917598',NULL,'Sample Data','Delana','','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Yadav',NULL,1,'1962-03-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (67,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee-Smith, Kacey','Kacey Lee-Smith',NULL,NULL,NULL,NULL,NULL,'Both','1672382093',NULL,'Sample Data','Kacey','','Lee-Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Lee-Smith',NULL,1,'2012-06-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (68,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Daren','Dr. Daren Smith',NULL,NULL,NULL,NULL,NULL,'Both','3966682227',NULL,'Sample Data','Daren','D','Smith',4,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Dr. Daren Smith',NULL,NULL,'1952-10-20',1,'2022-02-28',NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (69,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Rhinehart Peace School','Rhinehart Peace School',NULL,NULL,NULL,'5',NULL,'Both','984419177',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rhinehart Peace School',NULL,NULL,NULL,0,NULL,NULL,105,'Rhinehart Peace School',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (70,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Wilson family','Wilson family',NULL,NULL,NULL,NULL,NULL,'Both','350510798',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson family',5,NULL,'Dear Wilson family',2,NULL,'Wilson family',NULL,NULL,NULL,0,NULL,'Wilson family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (71,'Individual',NULL,1,1,0,0,1,0,NULL,NULL,'Robertson, Megan','Megan Robertson',NULL,NULL,NULL,NULL,NULL,'Both','780859539',NULL,'Sample Data','Megan','M','Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (72,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'reynolds.toby@lol.net','reynolds.toby@lol.net',NULL,NULL,NULL,'5',NULL,'Both','233250085',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear reynolds.toby@lol.net',1,NULL,'Dear reynolds.toby@lol.net',1,NULL,'reynolds.toby@lol.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:26'),
- (73,'Household',NULL,1,1,0,0,1,0,NULL,NULL,'Bachman family','Bachman family',NULL,NULL,NULL,NULL,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,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (74,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cooper, Brzęczysław','Mr. Brzęczysław Cooper Jr.',NULL,NULL,NULL,NULL,NULL,'Both','671824527',NULL,'Sample Data','Brzęczysław','B','Cooper',3,1,NULL,NULL,1,NULL,'Dear Brzęczysław',1,NULL,'Dear Brzęczysław',1,NULL,'Mr. Brzęczysław Cooper Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:26'),
- (75,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Ivanov, Junko','Mrs. Junko Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','299121819',NULL,'Sample Data','Junko','','Ivanov',1,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Mrs. Junko Ivanov',NULL,1,'1985-08-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (76,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Elina','Dr. Elina Samson',NULL,NULL,NULL,NULL,NULL,'Both','2698578454',NULL,'Sample Data','Elina','','Samson',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Samson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (77,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Carlos','Carlos Wilson',NULL,NULL,NULL,NULL,NULL,'Both','61259163',NULL,'Sample Data','Carlos','I','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Wilson',NULL,2,'2014-10-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (78,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samuels, Scarlet','Dr. Scarlet Samuels',NULL,NULL,NULL,'5',NULL,'Both','4160162567',NULL,'Sample Data','Scarlet','','Samuels',4,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Dr. Scarlet Samuels',NULL,1,'1956-12-26',0,NULL,NULL,NULL,'Global Food Fellowship',NULL,NULL,41,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (79,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Robertson, Eleonor','Mrs. Eleonor Robertson',NULL,NULL,NULL,NULL,NULL,'Both','2051195654',NULL,'Sample Data','Eleonor','I','Robertson',1,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Mrs. Eleonor Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (80,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Lashawnda','Ms. Lashawnda Wattson',NULL,NULL,NULL,'3',NULL,'Both','3926771014',NULL,'Sample Data','Lashawnda','E','Wattson',2,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Ms. Lashawnda Wattson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (81,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Kandace','Kandace Prentice',NULL,NULL,NULL,NULL,NULL,'Both','1824755272',NULL,'Sample Data','Kandace','','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Prentice',NULL,1,'1964-04-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (82,'Organization',NULL,1,1,0,0,0,0,NULL,NULL,'Rural Literacy Initiative','Rural Literacy Initiative',NULL,NULL,NULL,'3',NULL,'Both','3172733742',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Literacy Initiative',NULL,NULL,NULL,0,NULL,NULL,14,'Rural Literacy Initiative',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (83,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Dimitrov, Maxwell','Maxwell Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','2461663646',NULL,'Sample Data','Maxwell','','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Dimitrov',NULL,NULL,'1978-11-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (84,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Shad','Dr. Shad McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','4249147082',NULL,'Sample Data','Shad','H','McReynolds',4,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad McReynolds',NULL,NULL,'1948-04-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (85,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jameson, Santina','Santina Jameson',NULL,NULL,NULL,NULL,NULL,'Both','2989109013',NULL,'Sample Data','Santina','','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Jameson',NULL,1,'2002-06-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (86,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'McReynolds-Lee, Omar','Dr. Omar McReynolds-Lee II',NULL,NULL,NULL,'3',NULL,'Both','3462988605',NULL,'Sample Data','Omar','E','McReynolds-Lee',4,3,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Dr. Omar McReynolds-Lee II',NULL,2,'1963-10-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (87,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'bn.gonzlez@mymail.info','bn.gonzlez@mymail.info',NULL,NULL,NULL,NULL,NULL,'Both','879806432',NULL,'Sample Data',NULL,NULL,NULL,3,2,NULL,NULL,1,NULL,'Dear bn.gonzlez@mymail.info',1,NULL,'Dear bn.gonzlez@mymail.info',1,NULL,'bn.gonzlez@mymail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (88,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wilson, Nicole','Ms. Nicole Wilson',NULL,NULL,NULL,NULL,NULL,'Both','3125972405',NULL,'Sample Data','Nicole','','Wilson',2,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Ms. Nicole Wilson',NULL,NULL,'1982-12-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (89,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Scott','Scott Zope',NULL,NULL,NULL,'4',NULL,'Both','3220387929',NULL,'Sample Data','Scott','Q','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (90,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Bachman, Megan','Megan Bachman',NULL,NULL,NULL,'2',NULL,'Both','2246848096',NULL,'Sample Data','Megan','','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Bachman',NULL,1,'1952-08-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (91,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Díaz, Brittney','Ms. Brittney Díaz',NULL,NULL,NULL,NULL,NULL,'Both','2710372052',NULL,'Sample Data','Brittney','G','Díaz',2,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Ms. Brittney Díaz',NULL,1,'1957-03-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (92,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov family','Dimitrov family',NULL,NULL,NULL,'3',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,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (93,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Kandace','Kandace Wattson',NULL,NULL,NULL,NULL,NULL,'Both','1154122107',NULL,'Sample Data','Kandace','','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Wattson',NULL,1,'1994-04-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (94,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'eterry-wattson31@spamalot.biz','eterry-wattson31@spamalot.biz',NULL,NULL,NULL,'5',NULL,'Both','3182707803',NULL,'Sample Data',NULL,NULL,NULL,4,4,NULL,NULL,1,NULL,'Dear eterry-wattson31@spamalot.biz',1,NULL,'Dear eterry-wattson31@spamalot.biz',1,NULL,'eterry-wattson31@spamalot.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (95,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'herminiaterry@lol.co.in','herminiaterry@lol.co.in',NULL,NULL,NULL,'5',NULL,'Both','959371233',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear herminiaterry@lol.co.in',1,NULL,'Dear herminiaterry@lol.co.in',1,NULL,'herminiaterry@lol.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (96,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'alee37@airmail.info','alee37@airmail.info',NULL,NULL,NULL,NULL,NULL,'Both','3654328229',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear alee37@airmail.info',1,NULL,'Dear alee37@airmail.info',1,NULL,'alee37@airmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (97,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Łąchowski, Scarlet','Dr. Scarlet Łąchowski',NULL,NULL,NULL,NULL,NULL,'Both','2169485989',NULL,'Sample Data','Scarlet','Z','Łąchowski',4,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Dr. Scarlet Łąchowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (98,'Household',NULL,0,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,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (99,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Diana Poetry Center','Diana Poetry Center',NULL,NULL,NULL,'1',NULL,'Both','1669674495',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Diana Poetry Center',NULL,NULL,NULL,0,NULL,NULL,NULL,'Diana Poetry Center',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (100,'Individual',NULL,1,1,0,0,1,0,NULL,NULL,'Reynolds, Carlos','Carlos Reynolds II',NULL,NULL,NULL,NULL,NULL,'Both','2492796490',NULL,'Sample Data','Carlos','S','Reynolds',NULL,3,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Reynolds II',NULL,NULL,'1964-12-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (101,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Samson family','Samson family',NULL,NULL,NULL,NULL,NULL,'Both','333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (102,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Craig','Craig Zope',NULL,NULL,NULL,'1',NULL,'Both','1190830057',NULL,'Sample Data','Craig','N','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Zope',NULL,NULL,'1999-08-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (103,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Lee, Heidi','Mrs. Heidi Lee',NULL,NULL,NULL,NULL,NULL,'Both','4039123195',NULL,'Sample Data','Heidi','','Lee',1,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Mrs. Heidi Lee',NULL,1,'1978-09-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (104,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samuels, Scott','Mr. Scott Samuels',NULL,NULL,NULL,NULL,NULL,'Both','3378188824',NULL,'Sample Data','Scott','R','Samuels',3,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Mr. Scott Samuels',NULL,2,'1945-05-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (105,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Ray','Ray Wilson',NULL,NULL,NULL,NULL,NULL,'Both','1585243279',NULL,'Sample Data','Ray','','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Wilson',NULL,2,'1983-05-09',0,NULL,NULL,NULL,'Rhinehart Peace School',NULL,NULL,69,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (106,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Müller, Barry','Barry Müller III',NULL,NULL,NULL,NULL,NULL,'Both','1377313598',NULL,'Sample Data','Barry','','Müller',NULL,4,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Müller III',NULL,2,'1968-09-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (107,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Robertson, Ray','Ray Robertson',NULL,NULL,NULL,'5',NULL,'Both','2006955715',NULL,'Sample Data','Ray','','Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Robertson',NULL,NULL,'1989-08-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (108,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Brigette','Dr. Brigette Jones',NULL,NULL,NULL,'4',NULL,'Both','1777842543',NULL,'Sample Data','Brigette','G','Jones',4,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Dr. Brigette Jones',NULL,1,'1993-02-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (109,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Adams, Felisha','Felisha Adams',NULL,NULL,NULL,'2',NULL,'Both','3474297773',NULL,'Sample Data','Felisha','W','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Adams',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (110,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'olsen.allen38@airmail.net','olsen.allen38@airmail.net',NULL,NULL,NULL,NULL,NULL,'Both','1684234204',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear olsen.allen38@airmail.net',1,NULL,'Dear olsen.allen38@airmail.net',1,NULL,'olsen.allen38@airmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (111,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'González, Kacey','Dr. Kacey González',NULL,NULL,NULL,'5',NULL,'Both','3252374889',NULL,'Sample Data','Kacey','F','González',4,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Dr. Kacey González',NULL,1,'1959-02-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (112,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'McReynolds, Rodrigo','Rodrigo McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','1946017872',NULL,'Sample Data','Rodrigo','C','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Rodrigo McReynolds',NULL,2,'1966-09-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (113,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Errol','Errol Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','3017354314',NULL,'Sample Data','Errol','U','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Dimitrov',NULL,2,'2011-07-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (114,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Robertson family','Robertson family',NULL,NULL,NULL,NULL,NULL,'Both','3444393980',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Robertson family',5,NULL,'Dear Robertson family',2,NULL,'Robertson family',NULL,NULL,NULL,0,NULL,'Robertson family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (115,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell, Claudio','Mr. Claudio Terrell III',NULL,NULL,NULL,NULL,NULL,'Both','941491020',NULL,'Sample Data','Claudio','Q','Terrell',3,4,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Mr. Claudio Terrell III',NULL,2,'1960-04-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (116,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Elbert','Elbert Patel',NULL,NULL,NULL,NULL,NULL,'Both','2164922981',NULL,'Sample Data','Elbert','','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Patel',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (117,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Pennsylvania Development Fund','Pennsylvania Development Fund',NULL,NULL,NULL,NULL,NULL,'Both','3274909421',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pennsylvania Development Fund',NULL,NULL,NULL,0,NULL,NULL,7,'Pennsylvania Development Fund',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (118,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Guymon Food Academy','Guymon Food Academy',NULL,NULL,NULL,'2',NULL,'Both','684768309',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Guymon Food Academy',NULL,NULL,NULL,0,NULL,NULL,159,'Guymon Food Academy',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (119,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Terry, Allen','Mr. Allen Terry III',NULL,NULL,NULL,NULL,NULL,'Both','306325326',NULL,'Sample Data','Allen','E','Terry',3,4,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Mr. Allen Terry III',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (120,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Olsen, Valene','Dr. Valene Olsen',NULL,NULL,NULL,'3',NULL,'Both','2597710713',NULL,'Sample Data','Valene','','Olsen',4,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Dr. Valene Olsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (121,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Angelika','Angelika Jameson',NULL,NULL,NULL,NULL,NULL,'Both','4294957055',NULL,'Sample Data','Angelika','','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Angelika Jameson',NULL,NULL,NULL,1,'2021-08-28',NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (122,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Baltimore Action Fellowship','Baltimore Action Fellowship',NULL,NULL,NULL,NULL,NULL,'Both','4162264241',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Baltimore Action Fellowship',NULL,NULL,NULL,0,NULL,NULL,NULL,'Baltimore Action Fellowship',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (123,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'alexiap@lol.co.in','alexiap@lol.co.in',NULL,NULL,NULL,NULL,NULL,'Both','39083973',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear alexiap@lol.co.in',1,NULL,'Dear alexiap@lol.co.in',1,NULL,'alexiap@lol.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (124,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice-Lee family','Prentice-Lee family',NULL,NULL,NULL,NULL,NULL,'Both','3892164008',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Prentice-Lee family',5,NULL,'Dear Prentice-Lee family',2,NULL,'Prentice-Lee family',NULL,NULL,NULL,0,NULL,'Prentice-Lee family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (125,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Jacob','Jacob Wilson',NULL,NULL,NULL,NULL,NULL,'Both','1516069791',NULL,'Sample Data','Jacob','','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Wilson',NULL,2,'1982-05-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (126,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Friends Music Trust','Friends Music Trust',NULL,NULL,NULL,'4',NULL,'Both','154795398',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Friends Music Trust',NULL,NULL,NULL,0,NULL,NULL,NULL,'Friends Music Trust',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (127,'Organization',NULL,1,0,0,0,1,0,NULL,NULL,'Indiana Technology Services','Indiana Technology Services',NULL,NULL,NULL,'5',NULL,'Both','3323080834',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Indiana Technology Services',NULL,NULL,NULL,0,NULL,NULL,197,'Indiana Technology Services',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (128,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Müller, Troy','Troy Müller Sr.',NULL,NULL,NULL,NULL,NULL,'Both','2080888850',NULL,'Sample Data','Troy','','Müller',NULL,2,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Müller Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (129,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Yadav, Lou','Lou Yadav',NULL,NULL,NULL,'2',NULL,'Both','1442954395',NULL,'Sample Data','Lou','','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Yadav',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (130,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wilson, Carylon','Carylon Wilson',NULL,NULL,NULL,'2',NULL,'Both','2619345674',NULL,'Sample Data','Carylon','Y','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Wilson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (131,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Zope family','Zope family',NULL,NULL,NULL,NULL,NULL,'Both','1649131487',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Zope family',5,NULL,'Dear Zope family',2,NULL,'Zope family',NULL,NULL,NULL,0,NULL,'Zope family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (132,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Grant, Felisha','Felisha Grant',NULL,NULL,NULL,NULL,NULL,'Both','1477172324',NULL,'Sample Data','Felisha','C','Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Grant',NULL,1,'1998-02-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (133,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'González, Nicole','Nicole González',NULL,NULL,NULL,'2',NULL,'Both','2179645787',NULL,'Sample Data','Nicole','X','González',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole González',NULL,NULL,'1961-08-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (134,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Elina','Dr. Elina Patel',NULL,NULL,NULL,'1',NULL,'Both','3497635698',NULL,'Sample Data','Elina','W','Patel',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Patel',NULL,1,'1961-02-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (135,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Bachman, Nicole','Nicole Bachman',NULL,NULL,NULL,NULL,NULL,'Both','1447276636',NULL,'Sample Data','Nicole','M','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Bachman',NULL,1,'1995-05-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (136,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Urban Empowerment Services','Urban Empowerment Services',NULL,NULL,NULL,NULL,NULL,'Both','1125979058',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Empowerment Services',NULL,NULL,NULL,0,NULL,NULL,NULL,'Urban Empowerment Services',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (137,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Jensen, Jackson','Mr. Jackson Jensen',NULL,NULL,NULL,NULL,NULL,'Both','2839026195',NULL,'Sample Data','Jackson','','Jensen',3,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson Jensen',NULL,NULL,'1971-11-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (138,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wagner, Billy','Dr. Billy Wagner III',NULL,NULL,NULL,NULL,NULL,'Both','1288341691',NULL,'Sample Data','Billy','N','Wagner',4,4,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Dr. Billy Wagner III',NULL,2,NULL,0,NULL,NULL,NULL,'Caulder Music Initiative',NULL,NULL,64,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (139,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson family','Jameson family',NULL,NULL,NULL,'4',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,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (140,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Bachman, Justina','Justina Bachman',NULL,NULL,NULL,NULL,NULL,'Both','144726755',NULL,'Sample Data','Justina','G','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Bachman',NULL,1,'1960-07-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (141,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Patel, Eleonor','Mrs. Eleonor Patel',NULL,NULL,NULL,'2',NULL,'Both','818400682',NULL,'Sample Data','Eleonor','Q','Patel',1,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Mrs. Eleonor Patel',NULL,NULL,'1990-05-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (142,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Delana','Mrs. Delana Barkley',NULL,NULL,NULL,NULL,NULL,'Both','1262819409',NULL,'Sample Data','Delana','','Barkley',1,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Mrs. Delana Barkley',NULL,1,'1971-04-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (143,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Cruz family','Cruz family',NULL,NULL,NULL,'4',NULL,'Both','2326538497',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz family',5,NULL,'Dear Cruz family',2,NULL,'Cruz family',NULL,NULL,NULL,0,NULL,'Cruz family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (144,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Ashley','Ashley Jensen',NULL,NULL,NULL,'3',NULL,'Both','3241907591',NULL,'Sample Data','Ashley','O','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Jensen',NULL,2,'1984-01-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (145,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Łąchowski, Esta','Mrs. Esta Łąchowski',NULL,NULL,NULL,NULL,NULL,'Both','195412899',NULL,'Sample Data','Esta','I','Łąchowski',1,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Mrs. Esta Łąchowski',NULL,1,'1970-12-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (146,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Robertson, Lou','Mr. Lou Robertson III',NULL,NULL,NULL,'4',NULL,'Both','4128397596',NULL,'Sample Data','Lou','','Robertson',3,4,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Mr. Lou Robertson III',NULL,2,'1992-03-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (147,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Missouri Development Initiative','Missouri Development Initiative',NULL,NULL,NULL,'2',NULL,'Both','697114744',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Missouri Development Initiative',NULL,NULL,NULL,0,NULL,NULL,30,'Missouri Development Initiative',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (148,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'North Carolina Environmental Academy','North Carolina Environmental Academy',NULL,NULL,NULL,NULL,NULL,'Both','894864181',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'North Carolina Environmental Academy',NULL,NULL,NULL,0,NULL,NULL,150,'North Carolina Environmental Academy',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (149,'Household',NULL,0,0,0,0,0,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,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (150,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Brzęczysław','Brzęczysław Nielsen',NULL,NULL,NULL,'4',NULL,'Both','3387173587',NULL,'Sample Data','Brzęczysław','','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Brzęczysław',1,NULL,'Dear Brzęczysław',1,NULL,'Brzęczysław Nielsen',NULL,NULL,'1944-12-16',0,NULL,NULL,NULL,'North Carolina Environmental Academy',NULL,NULL,148,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (151,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Samson, Ashley','Dr. Ashley Samson',NULL,NULL,NULL,'1',NULL,'Both','2849668612',NULL,'Sample Data','Ashley','D','Samson',4,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Samson',NULL,2,'1977-05-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (152,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jones, Brigette','Brigette Jones',NULL,NULL,NULL,NULL,NULL,'Both','1777842543',NULL,'Sample Data','Brigette','D','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Jones',NULL,NULL,'1997-06-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (153,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'González, Roland','Roland González II',NULL,NULL,NULL,NULL,NULL,'Both','1836226899',NULL,'Sample Data','Roland','K','González',NULL,3,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland González II',NULL,NULL,'1963-10-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (154,'Organization',NULL,0,1,0,0,1,0,NULL,NULL,'Progressive Sports Fellowship','Progressive Sports Fellowship',NULL,NULL,NULL,'2',NULL,'Both','3177881180',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Sports Fellowship',NULL,NULL,NULL,0,NULL,NULL,167,'Progressive Sports Fellowship',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (155,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Billy','Mr. Billy Prentice II',NULL,NULL,NULL,'2',NULL,'Both','3571999002',NULL,'Sample Data','Billy','A','Prentice',3,3,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Mr. Billy Prentice II',NULL,2,NULL,0,NULL,NULL,NULL,'Florida Advocacy Academy',NULL,NULL,15,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (156,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'González-Zope, Damaris','Damaris González-Zope',NULL,NULL,NULL,'3',NULL,'Both','3882862374',NULL,'Sample Data','Damaris','J','González-Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris González-Zope',NULL,NULL,'1960-08-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (157,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen-Łąchowski family','Jensen-Łąchowski family',NULL,NULL,NULL,NULL,NULL,'Both','3349136717',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jensen-Łąchowski family',5,NULL,'Dear Jensen-Łąchowski family',2,NULL,'Jensen-Łąchowski family',NULL,NULL,NULL,0,NULL,'Jensen-Łąchowski family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (158,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Rensselaer Technology Fund','Rensselaer Technology Fund',NULL,NULL,NULL,NULL,NULL,'Both','1830831496',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rensselaer Technology Fund',NULL,NULL,NULL,0,NULL,NULL,40,'Rensselaer Technology Fund',NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (159,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper, Errol','Errol Cooper Jr.',NULL,NULL,NULL,NULL,NULL,'Both','932311595',NULL,'Sample Data','Errol','','Cooper',NULL,1,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Cooper Jr.',NULL,2,'1963-07-29',0,NULL,NULL,NULL,'Guymon Food Academy',NULL,NULL,118,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (160,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Shad','Shad Jameson Sr.',NULL,NULL,NULL,NULL,NULL,'Both','2488914150',NULL,'Sample Data','Shad','','Jameson',NULL,2,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Jameson Sr.',NULL,2,'2013-03-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (161,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav family','Yadav family',NULL,NULL,NULL,'5',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,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (162,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Jina','Jina Jones',NULL,NULL,NULL,'1',NULL,'Both','1835869309',NULL,'Sample Data','Jina','X','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Jones',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (163,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Blackwell, Nicole','Dr. Nicole Blackwell',NULL,NULL,NULL,'4',NULL,'Both','1660197539',NULL,'Sample Data','Nicole','V','Blackwell',4,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Dr. Nicole Blackwell',NULL,1,'1950-07-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (164,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Yadav, Rodrigo','Dr. Rodrigo Yadav',NULL,NULL,NULL,'3',NULL,'Both','129121277',NULL,'Sample Data','Rodrigo','Z','Yadav',4,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Dr. Rodrigo Yadav',NULL,NULL,'1955-10-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (165,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Barry','Barry Smith Jr.',NULL,NULL,NULL,NULL,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,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (166,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Reynolds, Josefa','Ms. Josefa Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','2579265288',NULL,'Sample Data','Josefa','','Reynolds',2,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Ms. Josefa Reynolds',NULL,NULL,'1999-12-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (167,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cruz, Kenny','Mr. Kenny Cruz III',NULL,NULL,NULL,'5',NULL,'Both','3987849545',NULL,'Sample Data','Kenny','O','Cruz',3,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Cruz III',NULL,2,NULL,0,NULL,NULL,NULL,'Progressive Sports Fellowship',NULL,NULL,154,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (168,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Kathleen','Kathleen Wattson',NULL,NULL,NULL,'3',NULL,'Both','784443764',NULL,'Sample Data','Kathleen','O','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Wattson',NULL,NULL,'1975-01-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (169,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Parker, Kathleen','Kathleen Parker',NULL,NULL,NULL,'4',NULL,'Both','295233156',NULL,'Sample Data','Kathleen','A','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Parker',NULL,1,'1960-04-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (170,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Kenny','Kenny Ivanov Jr.',NULL,NULL,NULL,NULL,NULL,'Both','4111336352',NULL,'Sample Data','Kenny','H','Ivanov',NULL,1,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Ivanov Jr.',NULL,2,'1985-02-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (171,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Smith, Roland','Roland Smith',NULL,NULL,NULL,NULL,NULL,'Both','2353910553',NULL,'Sample Data','Roland','','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Smith',NULL,2,'1951-05-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (172,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Betty','Mrs. Betty Lee',NULL,NULL,NULL,NULL,NULL,'Both','4193978956',NULL,'Sample Data','Betty','B','Lee',1,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Mrs. Betty Lee',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (173,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'wilson.jacob@lol.info','wilson.jacob@lol.info',NULL,NULL,NULL,'1',NULL,'Both','3178281536',NULL,'Sample Data',NULL,NULL,NULL,3,3,NULL,NULL,1,NULL,'Dear wilson.jacob@lol.info',1,NULL,'Dear wilson.jacob@lol.info',1,NULL,'wilson.jacob@lol.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (174,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Samson family','Samson family',NULL,NULL,NULL,NULL,NULL,'Both','333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:28'),
- (175,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'kennyblackwell@infomail.info','kennyblackwell@infomail.info',NULL,NULL,NULL,'1',NULL,'Both','1331050582',NULL,'Sample Data',NULL,NULL,NULL,NULL,4,NULL,NULL,1,NULL,'Dear kennyblackwell@infomail.info',1,NULL,'Dear kennyblackwell@infomail.info',1,NULL,'kennyblackwell@infomail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (176,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee-Roberts, Laree','Laree Lee-Roberts',NULL,NULL,NULL,NULL,NULL,'Both','1708670436',NULL,'Sample Data','Laree','','Lee-Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Lee-Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (177,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'jamesoni8@testmail.net','jamesoni8@testmail.net',NULL,NULL,NULL,NULL,NULL,'Both','1038165035',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear jamesoni8@testmail.net',1,NULL,'Dear jamesoni8@testmail.net',1,NULL,'jamesoni8@testmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (178,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov, Princess','Ms. Princess Dimitrov',NULL,NULL,NULL,'5',NULL,'Both','4281935840',NULL,'Sample Data','Princess','E','Dimitrov',2,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Ms. Princess Dimitrov',NULL,1,'1960-11-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (179,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Patel, Miguel','Miguel Patel',NULL,NULL,NULL,'3',NULL,'Both','2561562874',NULL,'Sample Data','Miguel','F','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Patel',NULL,2,'2002-10-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (180,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Lee-Smith family','Lee-Smith family',NULL,NULL,NULL,NULL,NULL,'Both','1627239178',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Lee-Smith family',5,NULL,'Dear Lee-Smith family',2,NULL,'Lee-Smith family',NULL,NULL,NULL,0,NULL,'Lee-Smith family',NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (181,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Omar','Dr. Omar Lee II',NULL,NULL,NULL,'3',NULL,'Both','1863358855',NULL,'Sample Data','Omar','W','Lee',4,3,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Dr. Omar Lee II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (182,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Clint','Clint Cooper II',NULL,NULL,NULL,NULL,NULL,'Both','303284897',NULL,'Sample Data','Clint','','Cooper',NULL,3,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Cooper II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (183,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice-Lee, Lincoln','Lincoln Prentice-Lee',NULL,NULL,NULL,NULL,NULL,'Both','832298404',NULL,'Sample Data','Lincoln','','Prentice-Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Prentice-Lee',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (184,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Brent','Mr. Brent Prentice III',NULL,NULL,NULL,'4',NULL,'Both','279352372',NULL,'Sample Data','Brent','','Prentice',3,4,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Mr. Brent Prentice III',NULL,2,'1984-05-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (185,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terrell, Carylon','Carylon Terrell',NULL,NULL,NULL,'3',NULL,'Both','3327689936',NULL,'Sample Data','Carylon','','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Terrell',NULL,NULL,'1976-02-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (186,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'wattson.troy62@lol.co.uk','wattson.troy62@lol.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','1866722543',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear wattson.troy62@lol.co.uk',1,NULL,'Dear wattson.troy62@lol.co.uk',1,NULL,'wattson.troy62@lol.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (187,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'allanzope56@example.co.nz','allanzope56@example.co.nz',NULL,NULL,NULL,'1',NULL,'Both','3480035232',NULL,'Sample Data',NULL,NULL,NULL,3,3,NULL,NULL,1,NULL,'Dear allanzope56@example.co.nz',1,NULL,'Dear allanzope56@example.co.nz',1,NULL,'allanzope56@example.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (188,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jensen-Łąchowski, Andrew','Andrew Jensen-Łąchowski',NULL,NULL,NULL,NULL,NULL,'Both','638879978',NULL,'Sample Data','Andrew','','Jensen-Łąchowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Jensen-Łąchowski',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (189,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Robertson, Shauna','Mrs. Shauna Robertson',NULL,NULL,NULL,'4',NULL,'Both','2123826543',NULL,'Sample Data','Shauna','','Robertson',1,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Mrs. Shauna Robertson',NULL,1,'1961-10-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (190,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Smith, Kiara','Kiara Smith',NULL,NULL,NULL,'2',NULL,'Both','550960995',NULL,'Sample Data','Kiara','X','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Smith',NULL,1,'1964-01-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (191,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'lee.w.heidi@spamalot.co.uk','lee.w.heidi@spamalot.co.uk',NULL,NULL,NULL,'5',NULL,'Both','2789736681',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear lee.w.heidi@spamalot.co.uk',1,NULL,'Dear lee.w.heidi@spamalot.co.uk',1,NULL,'lee.w.heidi@spamalot.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (192,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samson, Jacob','Dr. Jacob Samson',NULL,NULL,NULL,NULL,NULL,'Both','1567006775',NULL,'Sample Data','Jacob','A','Samson',4,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Dr. Jacob Samson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (193,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Sherman','Dr. Sherman Samson Sr.',NULL,NULL,NULL,NULL,NULL,'Both','583200758',NULL,'Sample Data','Sherman','','Samson',4,2,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Dr. Sherman Samson Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (194,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Nicole','Mrs. Nicole Prentice',NULL,NULL,NULL,'3',NULL,'Both','138339105',NULL,'Sample Data','Nicole','','Prentice',1,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Mrs. Nicole Prentice',NULL,1,'1955-02-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (195,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Terry, Delana','Delana Terry',NULL,NULL,NULL,NULL,NULL,'Both','588631021',NULL,'Sample Data','Delana','','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:27'),
- (196,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen-Łąchowski, Scott','Scott Jensen-Łąchowski Jr.',NULL,NULL,NULL,'5',NULL,'Both','438780619',NULL,'Sample Data','Scott','L','Jensen-Łąchowski',NULL,1,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Jensen-Łąchowski Jr.',NULL,2,'2010-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (197,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Yadav, Lawerence','Lawerence Yadav',NULL,NULL,NULL,'4',NULL,'Both','2808018340',NULL,'Sample Data','Lawerence','H','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Yadav',NULL,NULL,'1977-03-12',0,NULL,NULL,NULL,'Indiana Technology Services',NULL,NULL,127,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (198,'Individual',NULL,1,1,0,0,1,0,NULL,NULL,'Samson, Angelika','Angelika Samson',NULL,NULL,NULL,'1',NULL,'Both','3050635496',NULL,'Sample Data','Angelika','I','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Angelika Samson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (199,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Erik','Erik Cruz II',NULL,NULL,NULL,NULL,NULL,'Both','3233134929',NULL,'Sample Data','Erik','R','Cruz',NULL,3,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Cruz II',NULL,NULL,'1971-06-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:30'),
- (200,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Łąchowski, Teresa','Dr. Teresa Łąchowski',NULL,NULL,NULL,NULL,NULL,'Both','4252064413',NULL,'Sample Data','Teresa','','Łąchowski',4,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Dr. Teresa Łąchowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:29'),
- (201,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Lee-Roberts, Arlyne','Arlyne Lee-Roberts',NULL,NULL,NULL,NULL,NULL,'Both','2500385273',NULL,'Sample Data','Arlyne','','Lee-Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Lee-Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:26','2022-08-09 18:17:31'),
- (202,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Jenny','Jenny Lee',NULL,NULL,NULL,NULL,'en_US','Both','d8df141ccced1426824bb99627dc3982',NULL,NULL,'Jenny',NULL,'Lee',NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-08-09 18:17:32','2022-08-09 18:17:33');
+ (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,'2022-10-01 23:22:54'),
+ (2,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Community Music Trust','Community Music Trust',NULL,NULL,NULL,NULL,NULL,'Both','92284101',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Music Trust',NULL,NULL,NULL,0,NULL,NULL,124,'Community Music Trust',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (3,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Errol','Mr. Errol Cruz III',NULL,NULL,NULL,NULL,NULL,'Both','4273315760',NULL,'Sample Data','Errol','Q','Cruz',3,4,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Mr. Errol Cruz III',NULL,2,'1949-09-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (4,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Brittney','Dr. Brittney Adams',NULL,NULL,NULL,NULL,NULL,'Both','1087046630',NULL,'Sample Data','Brittney','P','Adams',4,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Dr. Brittney Adams',NULL,NULL,'1993-01-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (5,'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,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (6,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Rural Legal Network','Rural Legal Network',NULL,NULL,NULL,'5',NULL,'Both','2433914219',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Legal Network',NULL,NULL,NULL,0,NULL,NULL,125,'Rural Legal Network',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (7,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jensen, Roland','Dr. Roland Jensen Jr.',NULL,NULL,NULL,NULL,NULL,'Both','3860934183',NULL,'Sample Data','Roland','','Jensen',4,1,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Dr. Roland Jensen Jr.',NULL,2,'1967-09-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (8,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Justina','Justina Wagner',NULL,NULL,NULL,NULL,NULL,'Both','1216374119',NULL,'Sample Data','Justina','G','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Wagner',NULL,1,'1960-12-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (9,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Smith, Clint','Clint Smith II',NULL,NULL,NULL,NULL,NULL,'Both','2730601630',NULL,'Sample Data','Clint','G','Smith',NULL,3,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Smith II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (10,'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,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (11,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Irvin','Mr. Irvin Bachman',NULL,NULL,NULL,'2',NULL,'Both','1755292873',NULL,'Sample Data','Irvin','','Bachman',3,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Mr. Irvin Bachman',NULL,NULL,'1963-05-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (12,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Delana','Dr. Delana Barkley',NULL,NULL,NULL,'4',NULL,'Both','1262819409',NULL,'Sample Data','Delana','C','Barkley',4,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Dr. Delana Barkley',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (13,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Deforest, Alexia','Alexia Deforest',NULL,NULL,NULL,'2',NULL,'Both','1109457438',NULL,'Sample Data','Alexia','S','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Deforest',NULL,1,'1992-11-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (14,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'margaretl86@sample.org','margaretl86@sample.org',NULL,NULL,NULL,'3',NULL,'Both','1944396280',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear margaretl86@sample.org',1,NULL,'Dear margaretl86@sample.org',1,NULL,'margaretl86@sample.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (15,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'lawerenceg@testmail.biz','lawerenceg@testmail.biz',NULL,NULL,NULL,'1',NULL,'Both','3249117292',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear lawerenceg@testmail.biz',1,NULL,'Dear lawerenceg@testmail.biz',1,NULL,'lawerenceg@testmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (16,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Lee-Díaz family','Lee-Díaz family',NULL,NULL,NULL,'3',NULL,'Both','317438340',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Lee-Díaz family',5,NULL,'Dear Lee-Díaz family',2,NULL,'Lee-Díaz family',NULL,NULL,NULL,0,NULL,'Lee-Díaz family',NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (17,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'González, Merrie','Merrie González',NULL,NULL,NULL,'4',NULL,'Both','1134733928',NULL,'Sample Data','Merrie','F','González',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie González',NULL,1,'1955-07-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (18,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Ivanov, Lawerence','Lawerence Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','268329993',NULL,'Sample Data','Lawerence','','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Ivanov',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (19,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Irvin','Irvin Lee',NULL,NULL,NULL,'4',NULL,'Both','1021209038',NULL,'Sample Data','Irvin','','Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Lee',NULL,2,'1967-06-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (20,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, Elbert','Dr. Elbert Parker II',NULL,NULL,NULL,NULL,NULL,'Both','2158710005',NULL,'Sample Data','Elbert','','Parker',4,3,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Dr. Elbert Parker II',NULL,2,'1978-07-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (21,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Kiara','Kiara Nielsen',NULL,NULL,NULL,NULL,NULL,'Both','4265488572',NULL,'Sample Data','Kiara','','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Nielsen',NULL,NULL,NULL,0,NULL,NULL,NULL,'Community Legal Services',NULL,NULL,90,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (22,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner-Wilson, Kandace','Mrs. Kandace Wagner-Wilson',NULL,NULL,NULL,'4',NULL,'Both','2181541646',NULL,'Sample Data','Kandace','E','Wagner-Wilson',1,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Mrs. Kandace Wagner-Wilson',NULL,NULL,NULL,0,NULL,NULL,NULL,'Sedalia Peace Fellowship',NULL,NULL,139,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (23,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Ivey','Dr. Ivey Bachman',NULL,NULL,NULL,'3',NULL,'Both','908900528',NULL,'Sample Data','Ivey','','Bachman',4,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Dr. Ivey Bachman',NULL,1,'1988-06-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (24,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Jensen family','Jensen family',NULL,NULL,NULL,'3',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,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (25,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Irvin','Irvin Wilson',NULL,NULL,NULL,NULL,NULL,'Both','441477896',NULL,'Sample Data','Irvin','M','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Wilson',NULL,2,'2011-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (26,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Brigette','Brigette Olsen',NULL,NULL,NULL,NULL,NULL,'Both','2958585175',NULL,'Sample Data','Brigette','F','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Olsen',NULL,1,'2013-05-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (27,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Toby','Mr. Toby Jacobs II',NULL,NULL,NULL,'5',NULL,'Both','247886444',NULL,'Sample Data','Toby','M','Jacobs',3,3,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Jacobs II',NULL,NULL,'1972-12-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (28,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Angelika','Ms. Angelika Jones',NULL,NULL,NULL,'2',NULL,'Both','2752368392',NULL,'Sample Data','Angelika','Y','Jones',2,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Ms. Angelika Jones',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (29,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Lee, Irvin','Dr. Irvin Lee',NULL,NULL,NULL,'4',NULL,'Both','1021209038',NULL,'Sample Data','Irvin','','Lee',4,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Dr. Irvin Lee',NULL,2,'1961-01-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (30,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Sonny','Sonny Smith Sr.',NULL,NULL,NULL,'5',NULL,'Both','2875915978',NULL,'Sample Data','Sonny','S','Smith',NULL,2,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Smith Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (31,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Bachman family','Bachman family',NULL,NULL,NULL,NULL,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,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (32,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Esta','Esta Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','534629196',NULL,'Sample Data','Esta','','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Blackwell',NULL,1,'1974-05-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (33,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen family','Olsen family',NULL,NULL,NULL,'4',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,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (34,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Łąchowski, Herminia','Ms. Herminia Łąchowski',NULL,NULL,NULL,'3',NULL,'Both','2946415984',NULL,'Sample Data','Herminia','Z','Łąchowski',2,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Ms. Herminia Łąchowski',NULL,NULL,'1982-06-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (35,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts, Maxwell','Maxwell Roberts',NULL,NULL,NULL,NULL,NULL,'Both','3618827003',NULL,'Sample Data','Maxwell','B','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Roberts',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (36,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Cooper, Rebekah','Rebekah Cooper',NULL,NULL,NULL,'5',NULL,'Both','3979151803',NULL,'Sample Data','Rebekah','Z','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Cooper',NULL,1,NULL,0,NULL,NULL,NULL,'South Carolina Wellness Partners',NULL,NULL,112,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (37,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Samson family','Samson family',NULL,NULL,NULL,'3',NULL,'Both','333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (38,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Elbert','Mr. Elbert Yadav Sr.',NULL,NULL,NULL,'2',NULL,'Both','2557263059',NULL,'Sample Data','Elbert','Z','Yadav',3,2,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert Yadav Sr.',NULL,2,NULL,1,'2022-01-29',NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (39,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Sanford','Sanford Barkley',NULL,NULL,NULL,'2',NULL,'Both','975752860',NULL,'Sample Data','Sanford','','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Barkley',NULL,NULL,'1958-01-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (40,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Ivanov, Irvin','Mr. Irvin Ivanov II',NULL,NULL,NULL,'3',NULL,'Both','2628247086',NULL,'Sample Data','Irvin','','Ivanov',3,3,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Mr. Irvin Ivanov II',NULL,2,'1981-03-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (41,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Barkley-Parker, Heidi','Heidi Barkley-Parker',NULL,NULL,NULL,NULL,NULL,'Both','1995923481',NULL,'Sample Data','Heidi','U','Barkley-Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Barkley-Parker',NULL,1,'1985-03-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (42,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Brittney','Brittney Adams',NULL,NULL,NULL,'1',NULL,'Both','1087046630',NULL,'Sample Data','Brittney','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Adams',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (43,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'bachman.carylon1@sample.biz','bachman.carylon1@sample.biz',NULL,NULL,NULL,'3',NULL,'Both','3919679807',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear bachman.carylon1@sample.biz',1,NULL,'Dear bachman.carylon1@sample.biz',1,NULL,'bachman.carylon1@sample.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (44,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Norris','Norris Samuels II',NULL,NULL,NULL,NULL,NULL,'Both','729903079',NULL,'Sample Data','Norris','','Samuels',NULL,3,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Samuels II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (45,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'González-Nielsen family','González-Nielsen family',NULL,NULL,NULL,NULL,NULL,'Both','3758827174',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear González-Nielsen family',5,NULL,'Dear González-Nielsen family',2,NULL,'González-Nielsen family',NULL,NULL,NULL,0,NULL,'González-Nielsen family',NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (46,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ejacobs42@fakemail.co.pl','ejacobs42@fakemail.co.pl',NULL,NULL,NULL,'3',NULL,'Both','1203850863',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear ejacobs42@fakemail.co.pl',1,NULL,'Dear ejacobs42@fakemail.co.pl',1,NULL,'ejacobs42@fakemail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (47,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Yadav, Brzęczysław','Mr. Brzęczysław Yadav',NULL,NULL,NULL,'3',NULL,'Both','2171812768',NULL,'Sample Data','Brzęczysław','','Yadav',3,NULL,NULL,NULL,1,NULL,'Dear Brzęczysław',1,NULL,'Dear Brzęczysław',1,NULL,'Mr. Brzęczysław Yadav',NULL,NULL,'1961-04-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (48,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Adams, Troy','Troy Adams',NULL,NULL,NULL,'5',NULL,'Both','271731072',NULL,'Sample Data','Troy','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Adams',NULL,NULL,'1941-03-06',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (49,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Lee, Allen','Allen Lee II',NULL,NULL,NULL,'3',NULL,'Both','23882505',NULL,'Sample Data','Allen','A','Lee',NULL,3,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Lee II',NULL,2,'1971-01-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (50,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'jj.wattson@spamalot.co.pl','jj.wattson@spamalot.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','225788719',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear jj.wattson@spamalot.co.pl',1,NULL,'Dear jj.wattson@spamalot.co.pl',1,NULL,'jj.wattson@spamalot.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (51,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Landon','Dr. Landon Cooper',NULL,NULL,NULL,NULL,NULL,'Both','3917161471',NULL,'Sample Data','Landon','','Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Dr. Landon Cooper',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (52,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman-Cooper, Mei','Mei Bachman-Cooper',NULL,NULL,NULL,NULL,NULL,'Both','1935938501',NULL,'Sample Data','Mei','','Bachman-Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Bachman-Cooper',NULL,1,'1984-11-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (53,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'kathleenjacobs7@infomail.co.uk','kathleenjacobs7@infomail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','4054748194',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear kathleenjacobs7@infomail.co.uk',1,NULL,'Dear kathleenjacobs7@infomail.co.uk',1,NULL,'kathleenjacobs7@infomail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (54,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Łąchowski, Ashlie','Ashlie Łąchowski',NULL,NULL,NULL,'4',NULL,'Both','3338606881',NULL,'Sample Data','Ashlie','G','Łąchowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Łąchowski',NULL,1,'2001-07-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (55,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Parker, Sanford','Dr. Sanford Parker',NULL,NULL,NULL,NULL,NULL,'Both','2029750387',NULL,'Sample Data','Sanford','','Parker',4,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Dr. Sanford Parker',NULL,NULL,'1933-06-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (56,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'jones-bachman.nicole@fakemail.co.nz','jones-bachman.nicole@fakemail.co.nz',NULL,NULL,NULL,NULL,NULL,'Both','1899244922',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear jones-bachman.nicole@fakemail.co.nz',1,NULL,'Dear jones-bachman.nicole@fakemail.co.nz',1,NULL,'jones-bachman.nicole@fakemail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (57,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Díaz, Elbert','Elbert Díaz',NULL,NULL,NULL,'5',NULL,'Both','3277500689',NULL,'Sample Data','Elbert','J','Díaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Díaz',NULL,2,'1963-11-03',0,NULL,NULL,NULL,'Iowa Family Services',NULL,NULL,152,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (58,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen-Lee, Carylon','Mrs. Carylon Jensen-Lee',NULL,NULL,NULL,NULL,NULL,'Both','2076037042',NULL,'Sample Data','Carylon','Y','Jensen-Lee',1,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Mrs. Carylon Jensen-Lee',NULL,1,'1992-11-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (59,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell family','Blackwell family',NULL,NULL,NULL,NULL,NULL,'Both','3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (60,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Wilson family','Wilson family',NULL,NULL,NULL,NULL,NULL,'Both','350510798',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson family',5,NULL,'Dear Wilson family',2,NULL,'Wilson family',NULL,NULL,NULL,0,NULL,'Wilson family',NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (61,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Olsen, Roland','Dr. Roland Olsen',NULL,NULL,NULL,'4',NULL,'Both','3464138564',NULL,'Sample Data','Roland','Q','Olsen',4,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Dr. Roland Olsen',NULL,2,'1992-05-07',0,NULL,NULL,NULL,'Maple Education Solutions',NULL,NULL,97,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (62,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Damaris','Damaris Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','1974160722',NULL,'Sample Data','Damaris','U','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Ivanov',NULL,1,'2002-06-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (63,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jensen, Elizabeth','Elizabeth Jensen',NULL,NULL,NULL,'5',NULL,'Both','423096601',NULL,'Sample Data','Elizabeth','U','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Jensen',NULL,1,'2007-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (64,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Łąchowski family','Łąchowski family',NULL,NULL,NULL,NULL,NULL,'Both','2407077255',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Łąchowski family',5,NULL,'Dear Łąchowski family',2,NULL,'Łąchowski family',NULL,NULL,NULL,0,NULL,'Łąchowski family',NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (65,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Indiana Wellness Academy','Indiana Wellness Academy',NULL,NULL,NULL,NULL,NULL,'Both','412286663',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Indiana Wellness Academy',NULL,NULL,NULL,0,NULL,NULL,155,'Indiana Wellness Academy',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (66,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Sonny','Mr. Sonny Deforest',NULL,NULL,NULL,'5',NULL,'Both','2565284656',NULL,'Sample Data','Sonny','','Deforest',3,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Mr. Sonny Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (67,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Allan','Dr. Allan Cooper',NULL,NULL,NULL,'5',NULL,'Both','350402207',NULL,'Sample Data','Allan','W','Cooper',4,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Dr. Allan Cooper',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (68,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Bachman, Nicole','Nicole Bachman',NULL,NULL,NULL,'3',NULL,'Both','1447276636',NULL,'Sample Data','Nicole','L','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Bachman',NULL,NULL,'1948-07-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (69,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, Troy','Troy Parker',NULL,NULL,NULL,'2',NULL,'Both','1888190696',NULL,'Sample Data','Troy','','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Parker',NULL,NULL,'1993-01-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (70,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Paradise Family Collective','Paradise Family Collective',NULL,NULL,NULL,NULL,NULL,'Both','607016509',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Paradise Family Collective',NULL,NULL,NULL,0,NULL,NULL,NULL,'Paradise Family Collective',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (71,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Van Ness Agriculture Solutions','Van Ness Agriculture Solutions',NULL,NULL,NULL,'1',NULL,'Both','2581247686',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Van Ness Agriculture Solutions',NULL,NULL,NULL,0,NULL,NULL,117,'Van Ness Agriculture Solutions',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (72,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Robertson, Brittney','Brittney Robertson',NULL,NULL,NULL,'1',NULL,'Both','1961955547',NULL,'Sample Data','Brittney','','Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (73,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Oklahoma Environmental Trust','Oklahoma Environmental Trust',NULL,NULL,NULL,'1',NULL,'Both','3114969280',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Oklahoma Environmental Trust',NULL,NULL,NULL,0,NULL,NULL,188,'Oklahoma Environmental Trust',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (74,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Carlos','Carlos Lee Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1904694300',NULL,'Sample Data','Carlos','','Lee',NULL,2,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Lee Sr.',NULL,NULL,'1999-05-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (75,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Yadav, Alida','Dr. Alida Yadav',NULL,NULL,NULL,NULL,NULL,'Both','3582338734',NULL,'Sample Data','Alida','','Yadav',4,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Dr. Alida Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (76,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Cooper-Wattson, Santina','Santina Cooper-Wattson',NULL,NULL,NULL,'2',NULL,'Both','3390360675',NULL,'Sample Data','Santina','U','Cooper-Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Cooper-Wattson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (77,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Blackwell, Carylon','Carylon Blackwell',NULL,NULL,NULL,'4',NULL,'Both','1747720268',NULL,'Sample Data','Carylon','V','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Blackwell',NULL,1,'1972-10-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (78,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'brentj20@notmail.org','brentj20@notmail.org',NULL,NULL,NULL,NULL,NULL,'Both','3556727865',NULL,'Sample Data',NULL,NULL,NULL,3,3,NULL,NULL,1,NULL,'Dear brentj20@notmail.org',1,NULL,'Dear brentj20@notmail.org',1,NULL,'brentj20@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (79,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Woodbridge Education Fund','Woodbridge Education Fund',NULL,NULL,NULL,NULL,NULL,'Both','577170961',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Woodbridge Education Fund',NULL,NULL,NULL,0,NULL,NULL,171,'Woodbridge Education Fund',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (80,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Lee-Díaz, Heidi','Mrs. Heidi Lee-Díaz',NULL,NULL,NULL,NULL,NULL,'Both','3493971319',NULL,'Sample Data','Heidi','D','Lee-Díaz',1,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Mrs. Heidi Lee-Díaz',NULL,1,'2000-03-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (81,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Eleonor','Eleonor Müller',NULL,NULL,NULL,NULL,NULL,'Both','4009103845',NULL,'Sample Data','Eleonor','','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Müller',NULL,NULL,'1955-04-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (82,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, Megan','Dr. Megan Parker',NULL,NULL,NULL,NULL,NULL,'Both','4204728620',NULL,'Sample Data','Megan','','Parker',4,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Dr. Megan Parker',NULL,NULL,'1996-03-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (83,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Blackwell, Scott','Dr. Scott Blackwell',NULL,NULL,NULL,'1',NULL,'Both','1650464224',NULL,'Sample Data','Scott','B','Blackwell',4,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Dr. Scott Blackwell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (84,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Blenheim Legal School','Blenheim Legal School',NULL,NULL,NULL,NULL,NULL,'Both','130785031',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Blenheim Legal School',NULL,NULL,NULL,0,NULL,NULL,NULL,'Blenheim Legal School',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (85,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Santina','Mrs. Santina Bachman',NULL,NULL,NULL,'5',NULL,'Both','4208037952',NULL,'Sample Data','Santina','','Bachman',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Bachman',NULL,1,'1984-09-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (86,'Household',NULL,0,0,0,0,0,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,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (87,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Samson, Megan','Megan Samson',NULL,NULL,NULL,'4',NULL,'Both','4028113417',NULL,'Sample Data','Megan','Q','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Samson',NULL,1,'1957-01-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (88,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Merrie','Merrie Deforest',NULL,NULL,NULL,'2',NULL,'Both','4291196669',NULL,'Sample Data','Merrie','I','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Deforest',NULL,1,'2005-03-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (89,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Kacey','Kacey Wilson',NULL,NULL,NULL,NULL,NULL,'Both','397896521',NULL,'Sample Data','Kacey','','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Wilson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (90,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Community Legal Services','Community Legal Services',NULL,NULL,NULL,NULL,NULL,'Both','1570149651',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Legal Services',NULL,NULL,NULL,0,NULL,NULL,21,'Community Legal Services',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (91,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Maxwell','Mr. Maxwell Prentice',NULL,NULL,NULL,'1',NULL,'Both','1532112278',NULL,'Sample Data','Maxwell','X','Prentice',3,NULL,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Mr. Maxwell Prentice',NULL,2,'1960-03-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (92,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Troy','Dr. Troy Deforest III',NULL,NULL,NULL,NULL,NULL,'Both','696795137',NULL,'Sample Data','Troy','','Deforest',4,4,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Dr. Troy Deforest III',NULL,NULL,'1984-09-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (93,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Damaris','Mrs. Damaris Ivanov',NULL,NULL,NULL,NULL,NULL,'Both','1974160722',NULL,'Sample Data','Damaris','','Ivanov',1,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Mrs. Damaris Ivanov',NULL,1,'1952-04-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (94,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Barkley, Jay','Mr. Jay Barkley II',NULL,NULL,NULL,'5',NULL,'Both','3834351816',NULL,'Sample Data','Jay','R','Barkley',3,3,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Mr. Jay Barkley II',NULL,2,'1983-10-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (95,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Ivanov, Landon','Landon Ivanov Sr.',NULL,NULL,NULL,'5',NULL,'Both','1470212160',NULL,'Sample Data','Landon','K','Ivanov',NULL,2,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Ivanov Sr.',NULL,2,'2006-05-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (96,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'United Poetry Solutions','United Poetry Solutions',NULL,NULL,NULL,NULL,NULL,'Both','1800142211',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Poetry Solutions',NULL,NULL,NULL,0,NULL,NULL,NULL,'United Poetry Solutions',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (97,'Organization',NULL,1,1,0,0,0,0,NULL,NULL,'Maple Education Solutions','Maple Education Solutions',NULL,NULL,NULL,'3',NULL,'Both','3408637554',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Maple Education Solutions',NULL,NULL,NULL,0,NULL,NULL,61,'Maple Education Solutions',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (98,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'González-Nielsen, Landon','Landon González-Nielsen Sr.',NULL,NULL,NULL,'3',NULL,'Both','3333938202',NULL,'Sample Data','Landon','','González-Nielsen',NULL,2,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon González-Nielsen Sr.',NULL,2,'1998-02-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (99,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'jbarkley14@mymail.org','jbarkley14@mymail.org',NULL,NULL,NULL,'4',NULL,'Both','2695969707',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear jbarkley14@mymail.org',1,NULL,'Dear jbarkley14@mymail.org',1,NULL,'jbarkley14@mymail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (100,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Nielsen, Esta','Dr. Esta Nielsen',NULL,NULL,NULL,NULL,NULL,'Both','2804173952',NULL,'Sample Data','Esta','','Nielsen',4,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Dr. Esta Nielsen',NULL,1,'1977-04-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (101,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Clint','Clint Olsen Jr.',NULL,NULL,NULL,NULL,NULL,'Both','654679479',NULL,'Sample Data','Clint','P','Olsen',NULL,1,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Olsen Jr.',NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (102,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wilson, Laree','Laree Wilson',NULL,NULL,NULL,NULL,NULL,'Both','2893161041',NULL,'Sample Data','Laree','','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Wilson',NULL,1,'1994-02-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (103,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Iris','Iris Barkley',NULL,NULL,NULL,NULL,NULL,'Both','3359813263',NULL,'Sample Data','Iris','','Barkley',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Barkley',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (104,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Roberts, Iris','Iris Roberts',NULL,NULL,NULL,NULL,NULL,'Both','1428740139',NULL,'Sample Data','Iris','K','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Roberts',NULL,1,'1984-09-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (105,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Oregon Wellness Services','Oregon Wellness Services',NULL,NULL,NULL,NULL,NULL,'Both','2764725368',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Oregon Wellness Services',NULL,NULL,NULL,0,NULL,NULL,107,'Oregon Wellness Services',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (106,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Creative Literacy School','Creative Literacy School',NULL,NULL,NULL,NULL,NULL,'Both','151875743',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Literacy School',NULL,NULL,NULL,0,NULL,NULL,121,'Creative Literacy School',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (107,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Bachman, Errol','Errol Bachman',NULL,NULL,NULL,'2',NULL,'Both','305276862',NULL,'Sample Data','Errol','F','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Bachman',NULL,NULL,NULL,0,NULL,NULL,NULL,'Oregon Wellness Services',NULL,NULL,105,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (108,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Łąchowski, Jina','Jina Łąchowski',NULL,NULL,NULL,NULL,NULL,'Both','4065988488',NULL,'Sample Data','Jina','Z','Łąchowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Łąchowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (109,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Díaz-Zope, Clint','Mr. Clint Díaz-Zope Jr.',NULL,NULL,NULL,'4',NULL,'Both','3373696688',NULL,'Sample Data','Clint','Z','Díaz-Zope',3,1,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Mr. Clint Díaz-Zope Jr.',NULL,2,'1986-06-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (110,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Ray','Ray Roberts Jr.',NULL,NULL,NULL,'2',NULL,'Both','1321167237',NULL,'Sample Data','Ray','W','Roberts',NULL,1,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Roberts Jr.',NULL,NULL,'1993-09-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (111,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Díaz-Zope family','Díaz-Zope family',NULL,NULL,NULL,NULL,NULL,'Both','2559377547',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Díaz-Zope family',5,NULL,'Dear Díaz-Zope family',2,NULL,'Díaz-Zope family',NULL,NULL,NULL,0,NULL,'Díaz-Zope family',NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (112,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'South Carolina Wellness Partners','South Carolina Wellness Partners',NULL,NULL,NULL,'1',NULL,'Both','1236203583',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'South Carolina Wellness Partners',NULL,NULL,NULL,0,NULL,NULL,36,'South Carolina Wellness Partners',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (113,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'zopep@mymail.info','zopep@mymail.info',NULL,NULL,NULL,'2',NULL,'Both','2034036788',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear zopep@mymail.info',1,NULL,'Dear zopep@mymail.info',1,NULL,'zopep@mymail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (114,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Díaz-Zope, Ashlie','Ashlie Díaz-Zope',NULL,NULL,NULL,'2',NULL,'Both','3479085343',NULL,'Sample Data','Ashlie','','Díaz-Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Díaz-Zope',NULL,1,'1983-09-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (115,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Díaz, Valene','Valene Díaz',NULL,NULL,NULL,'2',NULL,'Both','3532656393',NULL,'Sample Data','Valene','','Díaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Díaz',NULL,1,'1973-01-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (116,'Household',NULL,0,0,0,0,0,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,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (117,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Olsen, Jackson','Mr. Jackson Olsen',NULL,NULL,NULL,'1',NULL,'Both','2108387664',NULL,'Sample Data','Jackson','','Olsen',3,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson Olsen',NULL,NULL,'1967-02-25',0,NULL,NULL,NULL,'Van Ness Agriculture Solutions',NULL,NULL,71,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (118,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'terrell.lou@example.com','terrell.lou@example.com',NULL,NULL,NULL,'3',NULL,'Both','1557086788',NULL,'Sample Data',NULL,NULL,NULL,3,2,NULL,NULL,1,NULL,'Dear terrell.lou@example.com',1,NULL,'Dear terrell.lou@example.com',1,NULL,'terrell.lou@example.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (119,'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,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (120,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Lou','Dr. Lou Deforest',NULL,NULL,NULL,'5',NULL,'Both','1322815112',NULL,'Sample Data','Lou','Q','Deforest',4,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Deforest',NULL,NULL,'1965-05-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (121,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Smith, Clint','Mr. Clint Smith Sr.',NULL,NULL,NULL,NULL,NULL,'Both','2730601630',NULL,'Sample Data','Clint','D','Smith',3,2,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Mr. Clint Smith Sr.',NULL,NULL,'1960-07-22',0,NULL,NULL,NULL,'Creative Literacy School',NULL,NULL,106,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (122,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'iriswattson90@testmail.co.in','iriswattson90@testmail.co.in',NULL,NULL,NULL,NULL,NULL,'Both','989156223',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear iriswattson90@testmail.co.in',1,NULL,'Dear iriswattson90@testmail.co.in',1,NULL,'iriswattson90@testmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,'Friends Literacy Alliance',NULL,NULL,132,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (123,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Lee, Lincoln','Lincoln Lee',NULL,NULL,NULL,'1',NULL,'Both','1179315718',NULL,'Sample Data','Lincoln','','Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Lee',NULL,NULL,'1986-09-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (124,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Roberts, Laree','Ms. Laree Roberts',NULL,NULL,NULL,NULL,NULL,'Both','3314820485',NULL,'Sample Data','Laree','Z','Roberts',2,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Ms. Laree Roberts',NULL,NULL,'1935-07-28',0,NULL,NULL,NULL,'Community Music Trust',NULL,NULL,2,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (125,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Princess','Princess Olsen',NULL,NULL,NULL,NULL,NULL,'Both','13405309',NULL,'Sample Data','Princess','','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Olsen',NULL,NULL,'1981-04-20',0,NULL,NULL,NULL,'Rural Legal Network',NULL,NULL,6,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (126,'Organization',NULL,0,1,0,0,1,0,NULL,NULL,'Community Technology Association','Community Technology Association',NULL,NULL,NULL,'5',NULL,'Both','1750000393',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Technology Association',NULL,NULL,NULL,0,NULL,NULL,NULL,'Community Technology Association',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (127,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Reynolds, Rolando','Dr. Rolando Reynolds Jr.',NULL,NULL,NULL,NULL,NULL,'Both','1271547729',NULL,'Sample Data','Rolando','','Reynolds',4,1,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Reynolds Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (128,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Lee, Rolando','Dr. Rolando Lee',NULL,NULL,NULL,NULL,NULL,'Both','3374817738',NULL,'Sample Data','Rolando','R','Lee',4,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Lee',NULL,NULL,'1958-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (129,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts, Kacey','Dr. Kacey Roberts',NULL,NULL,NULL,NULL,NULL,'Both','2119265437',NULL,'Sample Data','Kacey','','Roberts',4,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Dr. Kacey Roberts',NULL,1,'1973-06-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (130,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Łąchowski, Megan','Megan Łąchowski',NULL,NULL,NULL,'5',NULL,'Both','1824434920',NULL,'Sample Data','Megan','E','Łąchowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Łąchowski',NULL,NULL,'1971-11-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (131,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Lee-Díaz, Barry','Barry Lee-Díaz',NULL,NULL,NULL,NULL,NULL,'Both','80716707',NULL,'Sample Data','Barry','L','Lee-Díaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Lee-Díaz',NULL,NULL,'2008-04-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (132,'Organization',NULL,1,1,0,0,1,0,NULL,NULL,'Friends Literacy Alliance','Friends Literacy Alliance',NULL,NULL,NULL,NULL,NULL,'Both','4112471254',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Friends Literacy Alliance',NULL,NULL,NULL,0,NULL,NULL,122,'Friends Literacy Alliance',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (133,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Delaware Peace Systems','Delaware Peace Systems',NULL,NULL,NULL,NULL,NULL,'Both','1719757853',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Delaware Peace Systems',NULL,NULL,NULL,0,NULL,NULL,181,'Delaware Peace Systems',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (134,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Ashley','Ashley Adams',NULL,NULL,NULL,NULL,NULL,'Both','2907231858',NULL,'Sample Data','Ashley','E','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Adams',NULL,NULL,'1947-09-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (135,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Cooper, Claudio','Mr. Claudio Cooper',NULL,NULL,NULL,NULL,NULL,'Both','1104394960',NULL,'Sample Data','Claudio','F','Cooper',3,NULL,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Mr. Claudio Cooper',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (136,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts, Kenny','Mr. Kenny Roberts Sr.',NULL,NULL,NULL,'5',NULL,'Both','438284626',NULL,'Sample Data','Kenny','D','Roberts',3,2,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Roberts Sr.',NULL,2,'1994-06-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (137,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'González, Valene','Valene González',NULL,NULL,NULL,'5',NULL,'Both','970849646',NULL,'Sample Data','Valene','E','González',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene González',NULL,1,'1983-04-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (138,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Brigette','Ms. Brigette Ivanov',NULL,NULL,NULL,'2',NULL,'Both','2016612463',NULL,'Sample Data','Brigette','','Ivanov',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette Ivanov',NULL,NULL,'1943-11-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (139,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Sedalia Peace Fellowship','Sedalia Peace Fellowship',NULL,NULL,NULL,NULL,NULL,'Both','3110870413',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sedalia Peace Fellowship',NULL,NULL,NULL,0,NULL,NULL,22,'Sedalia Peace Fellowship',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (140,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Russell','Dr. Russell Robertson',NULL,NULL,NULL,NULL,NULL,'Both','3573168465',NULL,'Sample Data','Russell','','Robertson',4,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Dr. Russell Robertson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (141,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Díaz, Elbert','Dr. Elbert Díaz Jr.',NULL,NULL,NULL,NULL,NULL,'Both','3277500689',NULL,'Sample Data','Elbert','','Díaz',4,1,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Dr. Elbert Díaz Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (142,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Cooper, Arlyne','Mrs. Arlyne Cooper',NULL,NULL,NULL,'5',NULL,'Both','1117506834',NULL,'Sample Data','Arlyne','V','Cooper',1,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Mrs. Arlyne Cooper',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (143,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'nr.wilson@mymail.info','nr.wilson@mymail.info',NULL,NULL,NULL,'1',NULL,'Both','1042947842',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear nr.wilson@mymail.info',1,NULL,'Dear nr.wilson@mymail.info',1,NULL,'nr.wilson@mymail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (144,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov, Kathlyn','Kathlyn Dimitrov',NULL,NULL,NULL,'5',NULL,'Both','3934921435',NULL,'Sample Data','Kathlyn','U','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Dimitrov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (145,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Barkley, Miguel','Dr. Miguel Barkley',NULL,NULL,NULL,'3',NULL,'Both','4174482755',NULL,'Sample Data','Miguel','K','Barkley',4,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Dr. Miguel Barkley',NULL,2,'1980-04-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (146,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Reynolds, Bob','Mr. Bob Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','4228327556',NULL,'Sample Data','Bob','N','Reynolds',3,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Mr. Bob Reynolds',NULL,NULL,'1998-09-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (147,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Robertson, Rosario','Rosario Robertson III',NULL,NULL,NULL,'3',NULL,'Both','1907398578',NULL,'Sample Data','Rosario','','Robertson',NULL,4,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Robertson III',NULL,2,'1980-05-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (148,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Winford','Winford Blackwell Jr.',NULL,NULL,NULL,'3',NULL,'Both','2809865453',NULL,'Sample Data','Winford','','Blackwell',NULL,1,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford Blackwell Jr.',NULL,NULL,'1985-01-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (149,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'shadparker@airmail.co.pl','shadparker@airmail.co.pl',NULL,NULL,NULL,'2',NULL,'Both','1610567243',NULL,'Sample Data',NULL,NULL,NULL,NULL,4,NULL,NULL,1,NULL,'Dear shadparker@airmail.co.pl',1,NULL,'Dear shadparker@airmail.co.pl',1,NULL,'shadparker@airmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (150,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell, Sonny','Sonny Terrell III',NULL,NULL,NULL,NULL,NULL,'Both','462144814',NULL,'Sample Data','Sonny','','Terrell',NULL,4,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Terrell III',NULL,2,'1962-07-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (151,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'blackwell.herminia@infomail.info','blackwell.herminia@infomail.info',NULL,NULL,NULL,NULL,NULL,'Both','1364158975',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear blackwell.herminia@infomail.info',1,NULL,'Dear blackwell.herminia@infomail.info',1,NULL,'blackwell.herminia@infomail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (152,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Iowa Family Services','Iowa Family Services',NULL,NULL,NULL,'4',NULL,'Both','424344240',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Iowa Family Services',NULL,NULL,NULL,0,NULL,NULL,57,'Iowa Family Services',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (153,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Łąchowski, Jay','Jay Łąchowski',NULL,NULL,NULL,'5',NULL,'Both','2087696859',NULL,'Sample Data','Jay','','Łąchowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay Łąchowski',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (154,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Daren','Daren Terry II',NULL,NULL,NULL,'5',NULL,'Both','1047592601',NULL,'Sample Data','Daren','N','Terry',NULL,3,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Terry II',NULL,2,'1970-10-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (155,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Jacobs, Truman','Truman Jacobs III',NULL,NULL,NULL,'1',NULL,'Both','2934376834',NULL,'Sample Data','Truman','','Jacobs',NULL,4,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Jacobs III',NULL,2,'1966-08-27',0,NULL,NULL,NULL,'Indiana Wellness Academy',NULL,NULL,65,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (156,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Herminia','Herminia Wilson',NULL,NULL,NULL,NULL,NULL,'Both','1306948243',NULL,'Sample Data','Herminia','','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Wilson',NULL,1,NULL,1,'2021-11-28',NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (157,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest family','Deforest family',NULL,NULL,NULL,NULL,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,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (158,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Cooper-Wattson, Shad','Shad Cooper-Wattson',NULL,NULL,NULL,'5',NULL,'Both','706390943',NULL,'Sample Data','Shad','','Cooper-Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Cooper-Wattson',NULL,2,'2011-11-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (159,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'jeds@testing.co.nz','jeds@testing.co.nz',NULL,NULL,NULL,NULL,NULL,'Both','2123640668',NULL,'Sample Data',NULL,NULL,NULL,NULL,3,NULL,NULL,1,NULL,'Dear jeds@testing.co.nz',1,NULL,'Dear jeds@testing.co.nz',1,NULL,'jeds@testing.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (160,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell, Scarlet','Mrs. Scarlet Terrell',NULL,NULL,NULL,NULL,NULL,'Both','461554358',NULL,'Sample Data','Scarlet','J','Terrell',1,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Mrs. Scarlet Terrell',NULL,NULL,'1950-06-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (161,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Cruz-Smith, Angelika','Dr. Angelika Cruz-Smith',NULL,NULL,NULL,'3',NULL,'Both','993552401',NULL,'Sample Data','Angelika','','Cruz-Smith',4,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Dr. Angelika Cruz-Smith',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (162,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Blackwell, Allen','Dr. Allen Blackwell',NULL,NULL,NULL,'3',NULL,'Both','2363401575',NULL,'Sample Data','Allen','','Blackwell',4,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Blackwell',NULL,2,'1961-10-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (163,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Barkley, Jed','Dr. Jed Barkley',NULL,NULL,NULL,NULL,NULL,'Both','3823188245',NULL,'Sample Data','Jed','','Barkley',4,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Dr. Jed Barkley',NULL,2,'1961-11-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (164,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper-Wattson family','Cooper-Wattson family',NULL,NULL,NULL,'3',NULL,'Both','2937450762',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Cooper-Wattson family',5,NULL,'Dear Cooper-Wattson family',2,NULL,'Cooper-Wattson family',NULL,NULL,NULL,0,NULL,'Cooper-Wattson family',NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (165,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Errol','Errol Wilson',NULL,NULL,NULL,NULL,NULL,'Both','1627252863',NULL,'Sample Data','Errol','','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Wilson',NULL,NULL,'1982-11-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (166,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Nicole','Ms. Nicole Cruz',NULL,NULL,NULL,'1',NULL,'Both','2971081443',NULL,'Sample Data','Nicole','W','Cruz',2,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Ms. Nicole Cruz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (167,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'González, Jackson','Dr. Jackson González',NULL,NULL,NULL,'3',NULL,'Both','4275829889',NULL,'Sample Data','Jackson','','González',4,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson González',NULL,2,'1976-02-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (168,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Ashley','Ashley Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','2843113739',NULL,'Sample Data','Ashley','A','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Blackwell',NULL,NULL,'1941-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (169,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Andrew','Dr. Andrew Samson',NULL,NULL,NULL,NULL,NULL,'Both','2323395058',NULL,'Sample Data','Andrew','K','Samson',4,NULL,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Dr. Andrew Samson',NULL,2,'1952-09-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (170,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Samson, Maria','Maria Samson Jr.',NULL,NULL,NULL,'3',NULL,'Both','1039221596',NULL,'Sample Data','Maria','X','Samson',NULL,1,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Samson Jr.',NULL,2,'2014-04-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (171,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Bachman-Cooper, Princess','Princess Bachman-Cooper',NULL,NULL,NULL,NULL,NULL,'Both','669201677',NULL,'Sample Data','Princess','J','Bachman-Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Bachman-Cooper',NULL,1,'1998-06-09',0,NULL,NULL,NULL,'Woodbridge Education Fund',NULL,NULL,79,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (172,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov-Lee, Brigette','Brigette Dimitrov-Lee',NULL,NULL,NULL,'4',NULL,'Both','209622055',NULL,'Sample Data','Brigette','','Dimitrov-Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Dimitrov-Lee',NULL,NULL,'1983-03-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (173,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Carlos','Carlos Ivanov II',NULL,NULL,NULL,NULL,NULL,'Both','3509440467',NULL,'Sample Data','Carlos','','Ivanov',NULL,3,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Ivanov II',NULL,2,'1965-03-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (174,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Brigette','Brigette McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','393115724',NULL,'Sample Data','Brigette','E','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette McReynolds',NULL,1,'1954-05-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (175,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Blackwell, Jacob','Jacob Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','4049710903',NULL,'Sample Data','Jacob','T','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Blackwell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (176,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Eleonor','Ms. Eleonor Jameson',NULL,NULL,NULL,'5',NULL,'Both','1654133418',NULL,'Sample Data','Eleonor','E','Jameson',2,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Ms. Eleonor Jameson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (177,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Juliann','Juliann Wattson',NULL,NULL,NULL,NULL,NULL,'Both','3492603450',NULL,'Sample Data','Juliann','C','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Wattson',NULL,1,'1991-06-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (178,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts family','Roberts family',NULL,NULL,NULL,'5',NULL,'Both','2097305882',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Roberts family',5,NULL,'Dear Roberts family',2,NULL,'Roberts family',NULL,NULL,NULL,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (179,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Samuels, Heidi','Mrs. Heidi Samuels',NULL,NULL,NULL,'3',NULL,'Both','3595168109',NULL,'Sample Data','Heidi','Q','Samuels',1,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Mrs. Heidi Samuels',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (180,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samson, Alexia','Ms. Alexia Samson',NULL,NULL,NULL,NULL,NULL,'Both','502692476',NULL,'Sample Data','Alexia','E','Samson',2,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Ms. Alexia Samson',NULL,NULL,'1989-08-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (181,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Clint','Clint Blackwell Sr.',NULL,NULL,NULL,NULL,NULL,'Both','3997373533',NULL,'Sample Data','Clint','','Blackwell',NULL,2,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Blackwell Sr.',NULL,2,NULL,0,NULL,NULL,NULL,'Delaware Peace Systems',NULL,NULL,133,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (182,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'jensen.sonny@fishmail.co.uk','jensen.sonny@fishmail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','2715690168',NULL,'Sample Data',NULL,NULL,NULL,NULL,2,NULL,NULL,1,NULL,'Dear jensen.sonny@fishmail.co.uk',1,NULL,'Dear jensen.sonny@fishmail.co.uk',1,NULL,'jensen.sonny@fishmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (183,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Juliann','Juliann Jacobs',NULL,NULL,NULL,'5',NULL,'Both','3009811288',NULL,'Sample Data','Juliann','U','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Jacobs',NULL,NULL,'1967-08-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (184,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice, Valene','Valene Prentice',NULL,NULL,NULL,NULL,NULL,'Both','2953436948',NULL,'Sample Data','Valene','','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Prentice',NULL,NULL,'1993-05-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (185,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Parker family','Parker family',NULL,NULL,NULL,'5',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,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (186,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Deforest, Beula','Beula Deforest',NULL,NULL,NULL,'2',NULL,'Both','2616445731',NULL,'Sample Data','Beula','B','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Deforest',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (187,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ashleyp@notmail.co.uk','ashleyp@notmail.co.uk',NULL,NULL,NULL,'3',NULL,'Both','2954983154',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear ashleyp@notmail.co.uk',1,NULL,'Dear ashleyp@notmail.co.uk',1,NULL,'ashleyp@notmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (188,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Miguel','Miguel Yadav',NULL,NULL,NULL,NULL,NULL,'Both','2177433164',NULL,'Sample Data','Miguel','W','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Yadav',NULL,2,NULL,0,NULL,NULL,NULL,'Oklahoma Environmental Trust',NULL,NULL,73,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (189,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Lee, Ray','Ray Lee Jr.',NULL,NULL,NULL,NULL,NULL,'Both','77853179',NULL,'Sample Data','Ray','','Lee',NULL,1,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Lee Jr.',NULL,NULL,'2005-03-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (190,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Sherman','Dr. Sherman Jameson',NULL,NULL,NULL,'1',NULL,'Both','3618683282',NULL,'Sample Data','Sherman','','Jameson',4,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Dr. Sherman Jameson',NULL,2,'1946-12-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (191,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'González-Nielsen, Magan','Mrs. Magan González-Nielsen',NULL,NULL,NULL,'4',NULL,'Both','2360217246',NULL,'Sample Data','Magan','','González-Nielsen',1,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Mrs. Magan González-Nielsen',NULL,1,'1984-06-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (192,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Yadav, Maxwell','Maxwell Yadav II',NULL,NULL,NULL,'1',NULL,'Both','1292324110',NULL,'Sample Data','Maxwell','E','Yadav',NULL,3,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Maxwell Yadav II',NULL,NULL,'1949-09-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (193,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Bryon','Bryon Jensen',NULL,NULL,NULL,NULL,NULL,'Both','199557848',NULL,'Sample Data','Bryon','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Bryon Jensen',NULL,2,'1959-01-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (194,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Billy','Billy Samuels Sr.',NULL,NULL,NULL,'3',NULL,'Both','92935923',NULL,'Sample Data','Billy','M','Samuels',NULL,2,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy Samuels Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (195,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Zope, Craig','Mr. Craig Zope',NULL,NULL,NULL,'5',NULL,'Both','1190830057',NULL,'Sample Data','Craig','','Zope',3,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Mr. Craig Zope',NULL,2,'1949-06-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (196,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Lashawnda','Mrs. Lashawnda Roberts',NULL,NULL,NULL,'2',NULL,'Both','1535794167',NULL,'Sample Data','Lashawnda','D','Roberts',1,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Mrs. Lashawnda Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (197,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Felisha','Ms. Felisha Jensen',NULL,NULL,NULL,'3',NULL,'Both','45016701',NULL,'Sample Data','Felisha','','Jensen',2,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Ms. Felisha Jensen',NULL,NULL,'1983-03-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (198,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Mei','Mei Müller',NULL,NULL,NULL,'2',NULL,'Both','726297805',NULL,'Sample Data','Mei','','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (199,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Samson, Kacey','Ms. Kacey Samson',NULL,NULL,NULL,NULL,NULL,'Both','277653729',NULL,'Sample Data','Kacey','','Samson',2,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Ms. Kacey Samson',NULL,1,'1959-11-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (200,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman-Cooper family','Bachman-Cooper family',NULL,NULL,NULL,'4',NULL,'Both','1281329042',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Bachman-Cooper family',5,NULL,'Dear Bachman-Cooper family',2,NULL,'Bachman-Cooper family',NULL,NULL,NULL,0,NULL,'Bachman-Cooper family',NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:00'),
+ (201,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Van Ness Sustainability Fellowship','Van Ness Sustainability Fellowship',NULL,NULL,NULL,NULL,NULL,'Both','3238321671',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Van Ness Sustainability Fellowship',NULL,NULL,NULL,0,NULL,NULL,NULL,'Van Ness Sustainability Fellowship',NULL,NULL,NULL,0,'2022-10-01 23:23:00','2022-10-01 23:23:01'),
+ (202,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Jenny','Jenny Lee',NULL,NULL,NULL,NULL,'en_US','Both','a927518252f60c827cc909940d38c062',NULL,NULL,'Jenny',NULL,'Lee',NULL,NULL,NULL,1,1,NULL,'Dear Jenny',1,NULL,'Dear Jenny',1,NULL,'Jenny Lee','Volunteer coordinator',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2022-10-01 23:23:01','2022-10-01 23:23:01');
 /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2134,117 +2386,117 @@ 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`, `is_template`) VALUES
- (1,2,1,NULL,4,'2012-08-09 13:17:36',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,NULL,NULL,0),
- (2,4,1,NULL,1,'2020-05-09 13:17:36',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,0),
- (3,6,1,NULL,4,'2016-07-15 00:17:36',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,NULL,NULL,0),
- (4,8,1,NULL,4,'2020-05-09 13:17:36',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,NULL,NULL,0),
- (5,4,1,NULL,1,'2020-05-09 13:17:36',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (6,16,1,NULL,4,'2022-05-16 12:35:36',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,NULL,NULL,0),
- (7,19,1,NULL,1,'2022-08-07 13:17:36',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,NULL,NULL,0),
- (8,82,1,NULL,1,'2021-12-15 21:28:36',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,0),
- (9,92,1,NULL,1,'2021-09-09 13:17:36',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,0),
- (10,34,1,NULL,1,'2018-03-17 15:17:36',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,0),
- (11,71,1,NULL,1,'2022-08-08 09:17:36',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (12,43,1,NULL,1,'2021-05-09 02:44:16',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (13,32,1,NULL,1,'2022-05-09 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (14,32,1,NULL,1,'2022-06-09 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (15,59,1,NULL,1,'2021-05-09 13:17:36',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (16,59,1,NULL,1,'2021-06-09 13:17:36',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (17,59,1,NULL,1,'2021-07-09 13:17:36',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (18,59,1,NULL,1,'2021-08-09 13:17:36',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (19,59,1,NULL,1,'2021-09-09 13:17:36',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (20,59,1,NULL,1,'2021-10-09 13:17:36',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (21,59,1,NULL,1,'2021-11-09 13:17:36',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (22,59,1,NULL,1,'2021-12-09 13:17:36',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (23,59,1,NULL,1,'2022-01-09 13:17:36',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (24,59,1,NULL,1,'2022-02-09 13:17:36',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (25,59,1,NULL,1,'2022-03-09 13:17:36',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (26,99,1,NULL,1,'2021-12-09 13:17:36',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (27,99,1,NULL,1,'2022-01-09 13:17:36',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (28,99,1,NULL,1,'2022-02-09 13:17:36',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (29,99,1,NULL,1,'2022-03-09 13:17:36',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (30,99,1,NULL,1,'2022-04-09 13:17:36',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (31,103,1,NULL,1,'2022-07-09 13:17:36',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (32,111,2,NULL,1,'2022-08-09 14:17:37',0.00,100.00,NULL,NULL,'d607decbc48ec0ad',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (33,62,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'c4bce117c638cc33',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (34,72,2,NULL,1,'2022-08-09 14:17:37',0.00,100.00,NULL,NULL,'40949fffcf34d5b1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (35,164,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'0dcb8adf832bd350',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (36,44,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'923dccb9f741efc1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (37,137,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'8c4726b018ca49c8',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (38,194,2,NULL,1,'2022-08-09 14:17:37',0.00,100.00,NULL,NULL,'784f2de42f58bc9b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (39,193,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'10efdb2922062996',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (40,125,2,NULL,1,'2022-08-09 14:17:37',0.00,100.00,NULL,NULL,'ba90353970871228',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (41,94,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'0ececcf152e9309a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (42,22,2,NULL,1,'2022-08-09 14:17:37',0.00,1200.00,NULL,NULL,'1037c1a3d871ef97',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (43,166,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'e30a413c12e4261b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (44,43,2,NULL,1,'2022-08-09 14:17:37',0.00,100.00,NULL,NULL,'28818f6fe5a60605',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (45,104,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'5037b8cd2ac406ee',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (46,42,2,NULL,1,'2022-08-09 14:17:37',0.00,100.00,NULL,NULL,'0e71f0d478eb8bef',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (47,152,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'bcec8323ff53dd8e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (48,138,2,NULL,1,'2022-08-09 14:17:37',0.00,100.00,NULL,NULL,'a27a39749bead0f7',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (49,129,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'04700d999f324cd4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (50,198,2,NULL,1,'2022-08-09 14:17:37',0.00,100.00,NULL,NULL,'48f417be9e02d0fe',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (51,63,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'c5d30b1628a0ff5e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (52,97,2,NULL,1,'2022-08-09 14:17:37',0.00,100.00,NULL,NULL,'02f1e378fd0e008d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (53,83,2,NULL,1,'2022-08-09 14:17:37',0.00,1200.00,NULL,NULL,'16a50e8b47b6648e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (54,171,2,NULL,1,'2022-08-09 14:17:37',0.00,100.00,NULL,NULL,'9b2cdcd32f494abc',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (55,96,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'f2b89130219e82f2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (56,87,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'a7f8ea35d21d28bf',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (57,112,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'ea55166c4fc5c88b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (58,155,2,NULL,1,'2022-08-09 14:17:37',0.00,100.00,NULL,NULL,'a29893cc19cfe951',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (59,130,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'38aeefa123e0510c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (60,86,2,NULL,1,'2022-08-09 14:17:37',0.00,100.00,NULL,NULL,'acd07e2044ddefa8',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (61,71,2,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'a67417123e672f40',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (63,3,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'da4485fee321ad71',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (64,5,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'2a39ae1136f579fe',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (65,12,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'038050cc049140b0',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (66,14,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'ce0e377cbf77ff2a',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (67,20,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'5a2293bc7ffd48c2',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (68,23,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'af5f6c63c68e0f2d',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (69,25,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'fdd12fb6cfe80431',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (70,26,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'449d36ecd262bb21',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (71,34,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'171968918025f95e',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (72,36,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'cac4ecd249e78e87',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (73,37,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'2bd2f9fd4bc2798b',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (74,40,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'24adeafb1a7ba5f4',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (75,46,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'2c3b127d6e36f8c9',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (76,54,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'ac1ba0fab0e130be',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (77,57,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'d4ab441393416c45',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (78,59,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'146e8850f2e7fb37',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (79,65,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'9d0ffe57ed042358',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (80,67,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'3fa7dec8d96fe4cb',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (81,70,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'d9725f7a4a05f591',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (82,72,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'262029bf65d1baa3',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (83,83,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'68a821ef82e68526',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (84,86,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'b11a8af673da463a',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (85,90,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'8fb5963740a7fd14',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (86,92,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'66585f11b40bee81',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (87,93,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'2e6c7c7e802d4f4b',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (88,99,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'9894da49fa8276cb',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (89,101,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'dbf3633ac4ac5fce',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (90,104,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'a600ec6f03a02f48',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (91,105,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'b0efab58ce10f888',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (92,114,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'9106cbb2a5ed3290',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (93,119,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'7d9dbe81c9e21b9a',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (94,125,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'c6243424362307ff',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (95,126,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'89a4543b8308c6a2',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (96,127,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'b621266dad59b481',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (97,130,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'6fbba7c8e59ca9e5',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (98,138,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'52645e4bda2bfa9f',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (99,139,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'3f353aa8a0c8251f',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (100,141,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'23e5d732ebc4a020',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (101,143,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'8d574031b8206322',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (102,150,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'a8cd8a2d94821e43',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (103,151,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'c5509b438071e459',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (104,152,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'1011d95c65726793',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (105,154,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'4ccc027c624f571d',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (106,157,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'41b268bdf84ecff8',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (107,165,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'8ff5f27e3a747d12',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (108,174,4,NULL,1,'2022-08-09 14:17:37',0.00,800.00,NULL,NULL,'e538baa3ddbc8723',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (109,179,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'f2b321167ee5ec93',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (110,182,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'daca2c6ea4c5ecb8',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (111,183,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'22de7be765dd507a',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
- (112,190,4,NULL,1,'2022-08-09 14:17:37',0.00,50.00,NULL,NULL,'b714e861ea1c0937',NULL,NULL,'USD',NULL,NULL,'2022-08-09 14:17:37',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0);
+ (1,2,1,NULL,4,'2012-10-01 23:23:03',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,NULL,NULL,0),
+ (2,4,1,NULL,1,'2020-07-01 23:23:03',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,0),
+ (3,6,1,NULL,4,'2016-09-06 10:23:03',0.00,25.00,NULL,NULL,'GBP12',NULL,NULL,'GBP',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,NULL,NULL,0),
+ (4,8,1,NULL,4,'2020-07-01 23:23:03',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,NULL,NULL,0),
+ (5,4,1,NULL,1,'2020-07-01 23:23:03',0.00,50.00,NULL,NULL,'Q90901X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (6,16,1,NULL,4,'2022-07-08 22:41:03',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'April Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,NULL,NULL,0),
+ (7,19,1,NULL,1,'2022-09-29 23:23:03',0.00,1750.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,NULL,NULL,0),
+ (8,82,1,NULL,1,'2022-02-07 07:34:03',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,0),
+ (9,92,1,NULL,1,'2021-11-01 23:23:03',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,0),
+ (10,34,1,NULL,1,'2018-05-10 01:23:03',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,0),
+ (11,71,1,NULL,1,'2022-09-30 19:23:03',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (12,43,1,NULL,1,'2021-07-01 12:49:43',0.00,50.00,NULL,NULL,'P291X1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Online: Save the Penguins',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (13,32,1,NULL,1,'2022-07-01 00:00:00',0.00,50.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (14,32,1,NULL,1,'2022-08-01 00:00:00',0.00,50.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (15,59,1,NULL,1,'2021-07-01 23:23:03',0.00,25.00,NULL,NULL,'PL32I591',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (16,59,1,NULL,1,'2021-08-01 23:23:03',0.00,25.00,NULL,NULL,'PL32I592',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (17,59,1,NULL,1,'2021-09-01 23:23:03',0.00,25.00,NULL,NULL,'PL32I593',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (18,59,1,NULL,1,'2021-10-01 23:23:03',0.00,25.00,NULL,NULL,'PL32I594',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (19,59,1,NULL,1,'2021-11-01 23:23:03',0.00,25.00,NULL,NULL,'PL32I595',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (20,59,1,NULL,1,'2021-12-01 23:23:03',0.00,25.00,NULL,NULL,'PL32I596',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (21,59,1,NULL,1,'2022-01-01 23:23:03',0.00,25.00,NULL,NULL,'PL32I597',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (22,59,1,NULL,1,'2022-02-01 23:23:03',0.00,25.00,NULL,NULL,'PL32I598',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (23,59,1,NULL,1,'2022-03-01 23:23:03',0.00,25.00,NULL,NULL,'PL32I599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (24,59,1,NULL,1,'2022-04-01 23:23:03',0.00,25.00,NULL,NULL,'PL32I5910',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (25,59,1,NULL,1,'2022-05-01 23:23:03',0.00,25.00,NULL,NULL,'PL32I5911',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,1,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (26,99,1,NULL,1,'2022-02-01 23:23:03',0.00,10.00,NULL,NULL,'PL32I991',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (27,99,1,NULL,1,'2022-03-01 23:23:03',0.00,10.00,NULL,NULL,'PL32I992',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (28,99,1,NULL,1,'2022-04-01 23:23:03',0.00,10.00,NULL,NULL,'PL32I993',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (29,99,1,NULL,1,'2022-05-01 23:23:03',0.00,10.00,NULL,NULL,'PL32I994',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (30,99,1,NULL,1,'2022-06-01 23:23:03',0.00,10.00,NULL,NULL,'PL32I995',NULL,NULL,'CAD',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,2,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (31,103,1,NULL,1,'2022-09-01 23:23:03',0.00,5.00,NULL,NULL,'PL32I1031',NULL,NULL,'EUR',NULL,NULL,NULL,NULL,'Recurring contribution',NULL,3,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (32,18,2,NULL,1,'2022-10-01 23:23:03',0.00,100.00,NULL,NULL,'1a8e5232959bdfe4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (33,107,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'d88fd5ef1f3329cc',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (34,27,2,NULL,1,'2022-10-01 23:23:03',0.00,100.00,NULL,NULL,'c0939b7ffc618a81',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (35,8,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'5d3aa89ed18e8522',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (36,120,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'17c099f6aec00073',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (37,198,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'521a745db2b29379',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (38,134,2,NULL,1,'2022-10-01 23:23:03',0.00,100.00,NULL,NULL,'7d42334f2225ea8a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (39,175,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'25326db00618a5d5',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (40,127,2,NULL,1,'2022-10-01 23:23:03',0.00,100.00,NULL,NULL,'71af17e13f853ad1',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (41,104,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'db66ee1d036d7a45',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (42,100,2,NULL,1,'2022-10-01 23:23:03',0.00,1200.00,NULL,NULL,'2d55072f4d03ef76',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (43,154,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'b5381206ba1874be',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (44,168,2,NULL,1,'2022-10-01 23:23:03',0.00,100.00,NULL,NULL,'9ec5b1bc19358657',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (45,162,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'3606488daaa8333d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (46,102,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'27b90173755d7b2f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (47,3,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'5a685259aca4dd38',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (48,173,2,NULL,1,'2022-10-01 23:23:03',0.00,100.00,NULL,NULL,'c8d1a73561f2933b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (49,13,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'4306afe3c0436727',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (50,68,2,NULL,1,'2022-10-01 23:23:03',0.00,100.00,NULL,NULL,'c9164113a924ae26',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (51,180,2,NULL,1,'2022-10-01 23:23:03',0.00,100.00,NULL,NULL,'c451132beee4425c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (52,141,2,NULL,1,'2022-10-01 23:23:03',0.00,100.00,NULL,NULL,'e141cda9e8570582',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (53,150,2,NULL,1,'2022-10-01 23:23:03',0.00,1200.00,NULL,NULL,'a77b47dd9430ff18',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (54,155,2,NULL,1,'2022-10-01 23:23:03',0.00,100.00,NULL,NULL,'1228686b4ab6919f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (55,30,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'fd390affcf483427',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (56,26,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'f51c4c19df6fc281',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (57,63,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'a1b6368e56f95464',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (58,41,2,NULL,1,'2022-10-01 23:23:03',0.00,100.00,NULL,NULL,'7a74f4fce6fd057b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (59,187,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'3925f801a373edae',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (60,53,2,NULL,1,'2022-10-01 23:23:03',0.00,100.00,NULL,NULL,'79e857b13e94376e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (61,54,2,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'fc1758d004b0ae21',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (63,132,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'0e75de8f6a95e292',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (64,16,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'2362a43c975829e9',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (65,154,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'0f394f1b98e1b0ce',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (66,113,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'6200169541b621ea',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (67,9,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'e3104b4b5b332a7f',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (68,62,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'431fe2de2bd8f05e',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (69,21,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'ab086f73d6b6b86a',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (70,11,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'80d2c83b69ae45d0',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (71,12,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'f52e86bf3f315a1f',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (72,25,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'9915d39c6f4feffa',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (73,18,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'3a04cf38e9f4ec13',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (74,83,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'86015459711adbf0',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (75,160,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'e620d4c5259b6373',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (76,141,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'07b9b06f4b951b87',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (77,143,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'d2c78af57bfb4b61',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (78,109,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'99cdea19555f1417',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (79,100,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'aee63413ffc822ec',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (80,185,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'9aeae7e49e51a59c',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (81,48,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'f309d46486a2ca0a',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (82,94,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'035c62d4a82e5a33',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (83,41,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'1dc25ef3e86b39b8',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (84,177,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'b8ba2672a6207df5',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (85,17,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'d05fd42bb26e20e7',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (86,172,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'11e44172ac8c1903',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (87,188,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'fa8c9f5ad0a37572',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (88,89,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'db968b6030ba51c8',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (89,74,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'aee6842245c56141',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (90,170,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'d874d0f3d846e632',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (91,150,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'62bfe2eee8342448',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (92,24,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'91cc2b79966be30b',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (93,99,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'9eb0f53dd6817444',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (94,108,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'48d1b3b3453daa42',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (95,133,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'823f814e2c45d485',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (96,22,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'576416d60b3be0c9',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (97,129,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'5775f7efba7bb67c',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (98,84,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'302750259dbc08a0',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (99,31,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'42edf27bd059c7a6',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (100,70,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'6fbfd6a45612e484',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (101,58,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'c83961e64d66ac43',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (102,38,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'0660295648d39e7c',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (103,192,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'c71813ad06532cb1',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (104,95,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'cee89517c091ae9d',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (105,166,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'6cbed5fa38f16e0d',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (106,93,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'36479eed18ab2ced',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (107,28,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'abeb6a8205c914b1',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (108,39,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'d844c57fa6927f04',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (109,110,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'f61580087ee68138',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (110,3,4,NULL,1,'2022-10-01 23:23:03',0.00,50.00,NULL,NULL,'11bfbcc970d02cb5',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (111,157,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'6d473b11e68829f6',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0),
+ (112,29,4,NULL,1,'2022-10-01 23:23:03',0.00,800.00,NULL,NULL,'78e3cac74b44d358',NULL,NULL,'USD',NULL,NULL,'2022-10-01 23:23:03',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0);
 /*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2277,9 +2529,9 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_contribution_recur` WRITE;
 /*!40000 ALTER TABLE `civicrm_contribution_recur` DISABLE KEYS */;
 INSERT INTO `civicrm_contribution_recur` (`id`, `contact_id`, `amount`, `currency`, `frequency_unit`, `frequency_interval`, `installments`, `start_date`, `create_date`, `modified_date`, `cancel_date`, `cancel_reason`, `end_date`, `processor_id`, `payment_token_id`, `trxn_id`, `invoice_id`, `contribution_status_id`, `is_test`, `cycle_day`, `next_sched_contribution_date`, `failure_count`, `failure_retry_date`, `auto_renew`, `payment_processor_id`, `financial_type_id`, `payment_instrument_id`, `campaign_id`, `is_email_receipt`) VALUES
- (1,59,25.00,'USD','month',1,12,'2021-05-09 13:17:36','2022-08-09 14:17:36','2022-08-09 18:17:36',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
- (2,99,10.00,'CAD','month',1,6,'2021-12-09 13:17:36','2022-08-09 14:17:36','2022-08-09 18:17:36','2022-07-09 13:17:36','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
- (3,103,5.00,'EUR','month',3,3,'2022-07-09 13:17:36','2022-08-09 14:17:36','2022-08-09 18:17:36',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2022-10-09 13:17:36',0,NULL,0,1,NULL,NULL,NULL,1);
+ (1,59,25.00,'USD','month',1,12,'2021-07-01 23:23:03','2022-10-01 23:23:03','2022-10-01 23:23:03',NULL,'',NULL,'CLC45',NULL,'56799',NULL,1,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
+ (2,99,10.00,'CAD','month',1,6,'2022-02-01 23:23:03','2022-10-01 23:23:03','2022-10-01 23:23:03','2022-09-01 23:23:03','No longer interested',NULL,'CLR35',NULL,'22799',NULL,3,0,1,NULL,0,NULL,0,1,NULL,NULL,NULL,1),
+ (3,103,5.00,'EUR','month',3,3,'2022-09-01 23:23:03','2022-10-01 23:23:03','2022-10-01 23:23:03',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2022-12-01 23:23:03',0,NULL,0,1,NULL,NULL,NULL,1);
 /*!40000 ALTER TABLE `civicrm_contribution_recur` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2290,8 +2542,8 @@ 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,9,72,10.00,'USD',1,1,'Jones Family','Helping Hands',10),
- (2,10,72,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10);
+ (1,9,27,10.00,'USD',1,1,'Jones Family','Helping Hands',10),
+ (2,10,27,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10);
 /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2890,7 +3142,7 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_domain` WRITE;
 /*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */;
 INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES
- (1,'Default Domain Name',NULL,'5.53.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
+ (1,'Default Domain Name',NULL,'5.54.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}');
 /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -2902,198 +3154,195 @@ 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',1,0,0,0,NULL,NULL,NULL,NULL),
- (2,19,1,'lee.s.junko@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (3,19,1,'junkol@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (4,74,1,'brzczysawcooper74@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (5,36,1,'ashlied96@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (6,72,1,'tobyr@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (7,72,1,'reynolds.toby@lol.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (8,195,1,'delanaterry85@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (9,195,1,'terry.delana85@lol.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (10,14,1,'sq.olsen88@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (11,121,1,'angelikajameson52@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (12,121,1,'ajameson@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (13,112,1,'rc.mcreynolds@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (14,112,1,'rodrigomcreynolds@example.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (15,27,1,'coopera65@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (16,27,1,'coopera@fishmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (17,68,1,'darensmith29@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (18,68,1,'darens90@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (19,142,1,'barkley.delana@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (20,142,1,'delanabarkley59@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (21,165,1,'smithb@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (22,18,1,'delanar@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (23,18,1,'reynolds.delana51@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (24,52,1,'scottr@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (25,46,1,'wattsons@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (26,46,1,'wattson.santina@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (27,159,1,'ecooper@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (28,110,1,'olsen.allen@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (29,110,1,'olsen.allen38@airmail.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (30,120,1,'olsen.valene23@example.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (31,91,1,'bg.daz@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (32,90,1,'meganbachman@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (33,80,1,'wattson.lashawnda7@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (34,80,1,'lashawndawattson@testmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (35,10,1,'esmith@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (36,10,1,'smith.errol2@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (37,185,1,'carylonterrell@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (38,185,1,'cterrell@sample.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (39,155,1,'ba.prentice@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (40,155,1,'billyp51@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (41,175,1,'kennyblackwell@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (42,145,1,'chowski.i.esta@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (43,58,1,'bachman.q.alexia@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (44,33,1,'smith.alida@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (45,197,1,'yadavl75@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (46,2,1,'deforestb@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (47,100,1,'carlosr@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (48,100,1,'reynolds.s.carlos89@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (49,12,1,'wattsonb94@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (50,75,1,'ivanov.junko87@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (51,133,1,'nicolegonzlez98@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (52,133,1,'nicoleg@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (53,57,1,'damarisdaz59@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (54,57,1,'damarisd@fishmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (55,164,1,'yadav.z.rodrigo@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (56,95,1,'hterry@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (57,95,1,'herminiaterry@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (58,7,1,'elizabethj@lol.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (59,7,1,'jacobs.elizabeth18@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (60,29,1,'claudiochowski@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (61,29,1,'chowski.claudio@testmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (62,173,1,'wilson.jacob@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (63,144,1,'jensen.ashley@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (64,38,1,'es.barkley@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (65,38,1,'es.barkley@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (66,171,1,'rolandsmith26@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (67,104,1,'samuels.scott72@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (68,153,1,'rolandg@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (69,153,1,'rolandgonzlez71@infomail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (70,115,1,'cq.terrell@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (71,45,1,'brigetted99@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (72,62,1,'kc.mcreynolds@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (73,182,1,'cooperc73@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (74,178,1,'princessdimitrov@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (75,178,1,'princessd@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (76,97,1,'chowski.scarlet@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (77,132,1,'grant.felisha92@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (78,84,1,'mcreynoldss37@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (79,84,1,'shadm@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (80,63,1,'margaretd11@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (81,87,1,'brentg@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (82,87,1,'bn.gonzlez@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (83,168,1,'ko.wattson53@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (84,109,1,'felishaadams36@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (85,109,1,'felishaa28@example.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (86,152,1,'brigettejones@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (87,44,1,'jones.roland43@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (88,43,1,'jo.prentice-lee@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (89,183,1,'lincolnprentice-lee@example.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (90,137,1,'jacksonj4@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (91,137,1,'jensenj@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (92,188,1,'jensen-chowskia@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (93,196,1,'jensen-chowskis44@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (94,196,1,'scottj@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (95,187,1,'allanzope56@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (96,156,1,'gonzlez-zoped@example.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (97,89,1,'zopes79@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (98,89,1,'scottzope74@testmail.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (99,59,1,'tobysamson@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (100,76,1,'samson.elina@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (101,76,1,'elinasamson@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (102,151,1,'samson.ashley@example.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (103,151,1,'ashleys69@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (104,198,1,'ai.samson15@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (105,49,1,'dimitrov.sharyn@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (106,49,1,'dimitrovs@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (107,16,1,'ashleyj@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (108,113,1,'errold@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (109,119,1,'ae.terry23@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (110,119,1,'terrya@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (111,186,1,'wattson.troy62@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (112,94,1,'eterry-wattson31@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (113,123,1,'patel.alexia@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (114,123,1,'alexiap@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (115,179,1,'miguelpatel@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (116,179,1,'patelm@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (117,129,1,'yadav.lou@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (118,66,1,'yadavd56@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (119,13,1,'yadav.bernadette@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (120,53,1,'yadav.valene@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (121,96,1,'ashleylee12@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (122,96,1,'alee37@airmail.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (123,172,1,'lee.betty86@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (124,172,1,'bettylee@lol.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (125,191,1,'lee.w.heidi@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (126,30,1,'ashleyb@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (127,30,1,'av.bachman@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (128,135,1,'nicolebachman@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (129,135,1,'bachman.nicole@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),
- (130,56,1,'kennyj94@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (131,177,1,'iveyj48@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (132,177,1,'jamesoni8@testmail.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (133,199,1,'cruz.erik83@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
- (134,199,1,'cruz.erik@fishmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (135,167,1,'cruz.kenny@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (136,167,1,'kennycruz@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (137,40,1,'jaycruz@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (138,40,1,'cruz.jay@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
- (139,146,1,'robertson.lou55@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
- (140,146,1,'robertson.lou@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
- (141,107,1,'rrobertson@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (142,39,1,'samson.toby81@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (143,39,1,'samson.toby49@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (144,192,1,'samson.jacob69@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (145,47,1,'sonnyw5@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (146,47,1,'wilson.sonny54@sample.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
- (147,130,1,'carylonw46@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (148,130,1,'carylonwilson7@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),
- (149,83,1,'dimitrovm28@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (150,83,1,'dimitrov.maxwell@example.net',0,0,0,0,NULL,NULL,NULL,NULL),
- (151,9,1,'dimitrov.bernadette97@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (152,6,1,'dimitrovb3@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (153,26,1,'dimitrov.scarlet@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
- (154,26,1,'sdimitrov63@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
- (155,125,1,'jacobwilson@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (156,28,1,'irisw@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (157,28,1,'irisw@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (158,88,1,'nicolew@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
- (159,88,1,'wilson.nicole@airmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
- (160,42,1,'lee.craig@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (161,20,1,'roberts.beula43@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (162,176,1,'lareel7@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
- (163,190,1,'kiaras56@example.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (164,67,1,'lee-smithk@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
- (165,31,1,'lee-smith.allen68@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),
- (166,82,3,'sales@ruralliteracy.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (167,14,2,'@ruralliteracy.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (168,69,3,'contact@rhinehartpeaceschool.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (169,105,2,'rwilson@rhinehartpeaceschool.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (170,15,3,'info@floridaacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (171,155,2,'prenticeb@floridaacademy.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (172,99,3,'feedback@dianapoetry.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (173,41,3,'feedback@globalfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (174,78,2,'scarletsamuels@globalfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (175,122,3,'info@baltimorefellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (176,5,3,'contact@collegehealthacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (177,22,2,'wilsonk75@collegehealthacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (178,55,3,'sales@ecmusicsystems.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (179,147,3,'feedback@missouridevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (180,30,2,'ashleyb@missouridevelopment.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (181,154,3,'contact@progressivesportsfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (182,167,2,'ko.cruz4@progressivesportsfellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (183,127,3,'service@indianatechnology.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (184,197,2,'yadavl8@indianatechnology.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (185,118,3,'feedback@guymonacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (186,159,2,'cooper.errol@guymonacademy.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (187,61,3,'info@sierranetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (188,64,3,'feedback@cauldermusic.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (189,138,2,'wagnerb53@cauldermusic.org',1,0,0,0,NULL,NULL,NULL,NULL),
- (190,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
- (191,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (192,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
- (193,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL);
+ (2,102,1,'wilson.laree@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (3,151,1,'blackwell.herminia@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (4,72,1,'robertson.brittney@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (5,72,1,'robertson.brittney@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (6,27,1,'jacobs.m.toby@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (7,27,1,'tm.jacobs96@sample.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (8,147,1,'robertson.rosario33@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (9,147,1,'robertsonr@testmail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (10,4,1,'brittneyadams@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (11,4,1,'adams.p.brittney@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (12,15,1,'lr.gonzlez23@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (13,15,1,'lawerenceg@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (14,135,1,'cooperc66@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (15,135,1,'cooperc@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (16,186,1,'deforestb@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (17,48,1,'troyadams10@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (18,128,1,'rr.lee@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (19,128,1,'leer84@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (20,156,1,'wilsonh@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (21,38,1,'elbertyadav@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (22,38,1,'elbertyadav61@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (23,101,1,'olsen.clint@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (24,175,1,'blackwell.t.jacob@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (25,175,1,'blackwell.jacob@fishmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (26,28,1,'ay.jones19@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (27,198,1,'mmller@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (28,179,1,'heidis@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (29,196,1,'robertsl@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (30,188,1,'mw.yadav33@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (31,51,1,'landoncooper73@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (32,194,1,'bm.samuels@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (33,195,1,'craigz78@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (34,85,1,'bachmans35@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (35,154,1,'terryd@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (36,154,1,'dn.terry@testmail.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (37,75,1,'alidayadav@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (38,75,1,'alidayadav69@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (39,3,1,'errolcruz49@example.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (40,3,1,'errolcruz@sample.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (41,199,1,'kaceysamson@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (42,199,1,'kaceysamson@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (43,87,1,'samson.q.megan@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (44,12,1,'barkleyd81@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (45,12,1,'barkley.delana@fakemail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (46,168,1,'blackwell.ashley@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (47,78,1,'brentj20@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (48,124,1,'lz.roberts@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (49,53,1,'kathleenjacobs@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (50,53,1,'kathleenjacobs7@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (51,141,1,'daz.elbert@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (52,42,1,'adams.brittney@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (53,42,1,'adams.brittney63@notmail.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (54,166,1,'nw.cruz@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (55,166,1,'cruzn58@sample.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (56,21,1,'kiaranielsen@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (57,122,1,'wattson.iris@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (58,122,1,'iriswattson90@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (59,140,1,'robertson.russell90@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (60,150,1,'sterrell@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (61,150,1,'terrells@fishmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (62,39,1,'barkley.sanford@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (63,184,1,'prentice.valene@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (64,77,1,'carylonb@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (65,44,1,'norrissamuels@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (66,44,1,'norrissamuels58@fakemail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (67,81,1,'mllere61@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (68,110,1,'roberts.w.ray@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (69,110,1,'roberts.ray@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (70,91,1,'prenticem@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (71,83,1,'scottblackwell26@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (72,83,1,'blackwells@sample.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (73,46,1,'jacobs.elizabeth@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (74,46,1,'ejacobs42@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (75,187,1,'ashleyp@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (76,36,1,'rebekahc74@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (77,36,1,'cooper.z.rebekah86@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (78,68,1,'bachman.nicole@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (79,183,1,'jacobsj70@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (80,138,1,'ivanov.brigette34@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (81,138,1,'brigetteivanov@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (82,146,1,'bn.reynolds@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (83,146,1,'reynolds.bob83@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (84,176,1,'eleonorj@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (85,174,1,'be.mcreynolds@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (86,174,1,'mcreynolds.brigette@lol.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (87,118,1,'louterrell@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (88,118,1,'terrell.lou@example.com',0,0,0,0,NULL,NULL,NULL,NULL),
+ (89,18,1,'livanov@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (90,18,1,'lawerenceivanov@sample.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (91,190,1,'shermanj45@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (92,190,1,'shermanjameson54@infomail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (93,50,1,'jj.wattson@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (94,66,1,'deforests44@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (95,104,1,'roberts.iris@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (96,104,1,'roberts.k.iris@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (97,136,1,'robertsk64@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (98,76,1,'cooper-wattson.santina@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (99,76,1,'santinacooper-wattson@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (100,92,1,'troydeforest@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (101,92,1,'troyd@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (102,88,1,'deforest.merrie86@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (103,88,1,'deforest.merrie@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (104,7,1,'jensen.roland@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (105,7,1,'rjensen34@testmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),
+ (106,197,1,'jensenf@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (107,182,1,'jensen.sonny@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (108,191,1,'magang54@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (109,98,1,'lgonzlez-nielsen8@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (110,98,1,'gonzlez-nielsenl@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (111,172,1,'dimitrov-lee.brigette@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (112,49,1,'allenlee@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (113,115,1,'vdaz@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (114,131,1,'lee-dazb59@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (115,162,1,'allenb86@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (116,148,1,'blackwellw88@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (117,181,1,'blackwellc@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (118,19,1,'lee.irvin41@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (119,58,1,'jensen-lee.y.carylon25@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (120,58,1,'jensen-lee.carylon@testing.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (121,14,1,'margaretl86@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (122,123,1,'leel@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (123,117,1,'olsen.jackson15@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (124,125,1,'princessolsen32@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (125,11,1,'irvinb@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (126,52,1,'bachman-cooperm@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),
+ (127,52,1,'mbachman-cooper@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (128,171,1,'princessb@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (129,171,1,'bachman-cooper.princess@notmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (130,159,1,'jeds@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (131,170,1,'samsonm53@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (132,170,1,'samson.x.maria24@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (133,180,1,'ae.samson56@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (134,121,1,'smith.d.clint59@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),
+ (135,121,1,'clints79@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (136,161,1,'cruz-smith.angelika@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),
+ (137,161,1,'acruz-smith58@infomail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (138,30,1,'sonnys@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (139,30,1,'ss.smith@example.net',0,0,0,0,NULL,NULL,NULL,NULL),
+ (140,107,1,'errolb67@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (141,56,1,'jones-bachman.nicole@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (142,43,1,'bachman.carylon1@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (143,149,1,'parker.shad50@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (144,149,1,'shadparker@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (145,20,1,'elbertparker21@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (146,20,1,'parkere35@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),
+ (147,69,1,'troyparker@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (148,57,1,'elbertd89@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (149,57,1,'daz.elbert@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (150,113,1,'princessz96@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (151,113,1,'zopep@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL),
+ (152,163,1,'barkleyj94@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (153,99,1,'jbarkley14@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (154,173,1,'civanov@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),
+ (155,173,1,'ivanov.carlos@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),
+ (156,22,1,'wagner-wilson.e.kandace51@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),
+ (157,22,1,'wagner-wilson.kandace@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),
+ (158,143,1,'nr.wilson@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),
+ (159,6,3,'service@rurallegalnetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (160,125,2,'olsenp11@rurallegalnetwork.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (161,133,3,'info@delawarepeace.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (162,181,2,'clintblackwell32@delawarepeace.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (163,106,3,'service@creativeliteracyschool.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (164,121,2,'smithc11@creativeliteracyschool.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (165,65,3,'info@indianaacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (166,155,2,'jacobs.truman47@indianaacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (167,79,3,'service@woodbridgeeducation.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (168,171,2,'princessb@woodbridgeeducation.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (169,90,3,'sales@communityservices.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (170,21,2,'kiaran@communityservices.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (171,71,3,'feedback@vnagriculturesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (172,117,2,'olsenj@vnagriculturesolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (173,152,3,'feedback@iowaservices.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (174,57,2,'daz.j.elbert88@iowaservices.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (175,139,3,'sales@sedaliapeacefellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (176,22,2,'wagner-wilson.e.kandace@sedaliapeacefellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (177,73,3,'feedback@oklahomatrust.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (178,188,2,'yadav.miguel@oklahomatrust.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (179,126,3,'service@communitytechnology.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (180,84,3,'feedback@blenheimschool.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (181,96,3,'feedback@unitedpoetry.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (182,201,3,'contact@vnsustainabilityfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (183,112,3,'feedback@scwellnesspartners.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (184,36,2,'cooper.rebekah@scwellnesspartners.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (185,105,3,'sales@oregonwellness.org',1,0,0,0,NULL,NULL,NULL,NULL),
+ (186,107,2,'errolbachman39@oregonwellness.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (187,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL),
+ (188,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (189,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),
+ (190,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3227,11 +3476,11 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`,
  (70,'civicrm_financial_item',35,35,100.00),
  (71,'civicrm_contribution',44,36,100.00),
  (72,'civicrm_financial_item',36,36,100.00),
- (73,'civicrm_contribution',46,37,100.00),
+ (73,'civicrm_contribution',48,37,100.00),
  (74,'civicrm_financial_item',37,37,100.00),
- (75,'civicrm_contribution',48,38,100.00),
+ (75,'civicrm_contribution',50,38,100.00),
  (76,'civicrm_financial_item',38,38,100.00),
- (77,'civicrm_contribution',50,39,100.00),
+ (77,'civicrm_contribution',51,39,100.00),
  (78,'civicrm_financial_item',39,39,100.00),
  (79,'civicrm_contribution',52,40,100.00),
  (80,'civicrm_financial_item',40,40,100.00),
@@ -3257,11 +3506,11 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`,
  (100,'civicrm_financial_item',50,50,50.00),
  (101,'civicrm_contribution',45,51,50.00),
  (102,'civicrm_financial_item',51,51,50.00),
- (103,'civicrm_contribution',47,52,50.00),
+ (103,'civicrm_contribution',46,52,50.00),
  (104,'civicrm_financial_item',52,52,50.00),
- (105,'civicrm_contribution',49,53,50.00),
+ (105,'civicrm_contribution',47,53,50.00),
  (106,'civicrm_financial_item',53,53,50.00),
- (107,'civicrm_contribution',51,54,50.00),
+ (107,'civicrm_contribution',49,54,50.00),
  (108,'civicrm_financial_item',54,54,50.00),
  (109,'civicrm_contribution',55,55,50.00),
  (110,'civicrm_financial_item',55,55,50.00),
@@ -3277,105 +3526,105 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`,
  (120,'civicrm_financial_item',60,60,1200.00),
  (121,'civicrm_contribution',53,61,1200.00),
  (122,'civicrm_financial_item',61,61,1200.00),
- (123,'civicrm_contribution',72,62,50.00),
+ (123,'civicrm_contribution',64,62,50.00),
  (124,'civicrm_financial_item',62,62,50.00),
- (125,'civicrm_contribution',91,63,50.00),
+ (125,'civicrm_contribution',67,63,50.00),
  (126,'civicrm_financial_item',63,63,50.00),
- (127,'civicrm_contribution',87,64,50.00),
+ (127,'civicrm_contribution',70,64,50.00),
  (128,'civicrm_financial_item',64,64,50.00),
- (129,'civicrm_contribution',106,65,50.00),
+ (129,'civicrm_contribution',73,65,50.00),
  (130,'civicrm_financial_item',65,65,50.00),
- (131,'civicrm_contribution',94,66,50.00),
+ (131,'civicrm_contribution',76,66,50.00),
  (132,'civicrm_financial_item',66,66,50.00),
- (133,'civicrm_contribution',99,67,50.00),
+ (133,'civicrm_contribution',79,67,50.00),
  (134,'civicrm_financial_item',67,67,50.00),
- (135,'civicrm_contribution',84,68,50.00),
+ (135,'civicrm_contribution',82,68,50.00),
  (136,'civicrm_financial_item',68,68,50.00),
- (137,'civicrm_contribution',111,69,50.00),
+ (137,'civicrm_contribution',85,69,50.00),
  (138,'civicrm_financial_item',69,69,50.00),
  (139,'civicrm_contribution',89,70,50.00),
  (140,'civicrm_financial_item',70,70,50.00),
- (141,'civicrm_contribution',100,71,50.00),
+ (141,'civicrm_contribution',92,71,50.00),
  (142,'civicrm_financial_item',71,71,50.00),
- (143,'civicrm_contribution',85,72,50.00),
+ (143,'civicrm_contribution',95,72,50.00),
  (144,'civicrm_financial_item',72,72,50.00),
- (145,'civicrm_contribution',67,73,50.00),
+ (145,'civicrm_contribution',98,73,50.00),
  (146,'civicrm_financial_item',73,73,50.00),
- (147,'civicrm_contribution',105,74,50.00),
+ (147,'civicrm_contribution',101,74,50.00),
  (148,'civicrm_financial_item',74,74,50.00),
- (149,'civicrm_contribution',107,75,50.00),
+ (149,'civicrm_contribution',104,75,50.00),
  (150,'civicrm_financial_item',75,75,50.00),
- (151,'civicrm_contribution',69,76,50.00),
+ (151,'civicrm_contribution',107,76,50.00),
  (152,'civicrm_financial_item',76,76,50.00),
- (153,'civicrm_contribution',75,77,50.00),
+ (153,'civicrm_contribution',110,77,50.00),
  (154,'civicrm_financial_item',77,77,50.00),
- (155,'civicrm_contribution',98,78,800.00),
+ (155,'civicrm_contribution',65,78,800.00),
  (156,'civicrm_financial_item',78,78,800.00),
- (157,'civicrm_contribution',76,79,800.00),
+ (157,'civicrm_contribution',68,79,800.00),
  (158,'civicrm_financial_item',79,79,800.00),
- (159,'civicrm_contribution',90,80,800.00),
+ (159,'civicrm_contribution',71,80,800.00),
  (160,'civicrm_financial_item',80,80,800.00),
- (161,'civicrm_contribution',96,81,800.00),
+ (161,'civicrm_contribution',74,81,800.00),
  (162,'civicrm_financial_item',81,81,800.00),
- (163,'civicrm_contribution',97,82,800.00),
+ (163,'civicrm_contribution',77,82,800.00),
  (164,'civicrm_financial_item',82,82,800.00),
- (165,'civicrm_contribution',65,83,800.00),
+ (165,'civicrm_contribution',80,83,800.00),
  (166,'civicrm_financial_item',83,83,800.00),
- (167,'civicrm_contribution',86,84,800.00),
+ (167,'civicrm_contribution',83,84,800.00),
  (168,'civicrm_financial_item',84,84,800.00),
- (169,'civicrm_contribution',80,85,800.00),
+ (169,'civicrm_contribution',86,85,800.00),
  (170,'civicrm_financial_item',85,85,800.00),
- (171,'civicrm_contribution',78,86,800.00),
+ (171,'civicrm_contribution',87,86,800.00),
  (172,'civicrm_financial_item',86,86,800.00),
- (173,'civicrm_contribution',92,87,800.00),
+ (173,'civicrm_contribution',90,87,800.00),
  (174,'civicrm_financial_item',87,87,800.00),
  (175,'civicrm_contribution',93,88,800.00),
  (176,'civicrm_financial_item',88,88,800.00),
- (177,'civicrm_contribution',88,89,800.00),
+ (177,'civicrm_contribution',96,89,800.00),
  (178,'civicrm_financial_item',89,89,800.00),
- (179,'civicrm_contribution',81,90,800.00),
+ (179,'civicrm_contribution',99,90,800.00),
  (180,'civicrm_financial_item',90,90,800.00),
- (181,'civicrm_contribution',82,91,800.00),
+ (181,'civicrm_contribution',102,91,800.00),
  (182,'civicrm_financial_item',91,91,800.00),
- (183,'civicrm_contribution',68,92,800.00),
+ (183,'civicrm_contribution',105,92,800.00),
  (184,'civicrm_financial_item',92,92,800.00),
  (185,'civicrm_contribution',108,93,800.00),
  (186,'civicrm_financial_item',93,93,800.00),
- (187,'civicrm_contribution',73,94,800.00),
+ (187,'civicrm_contribution',111,94,800.00),
  (188,'civicrm_financial_item',94,94,800.00),
- (189,'civicrm_contribution',63,95,800.00),
+ (189,'civicrm_contribution',112,95,800.00),
  (190,'civicrm_financial_item',95,95,800.00),
- (191,'civicrm_contribution',110,96,50.00),
+ (191,'civicrm_contribution',63,96,50.00),
  (192,'civicrm_financial_item',96,96,50.00),
- (193,'civicrm_contribution',77,97,50.00),
+ (193,'civicrm_contribution',66,97,50.00),
  (194,'civicrm_financial_item',97,97,50.00),
- (195,'civicrm_contribution',103,98,50.00),
+ (195,'civicrm_contribution',69,98,50.00),
  (196,'civicrm_financial_item',98,98,50.00),
- (197,'civicrm_contribution',83,99,50.00),
+ (197,'civicrm_contribution',72,99,50.00),
  (198,'civicrm_financial_item',99,99,50.00),
- (199,'civicrm_contribution',101,100,50.00),
+ (199,'civicrm_contribution',75,100,50.00),
  (200,'civicrm_financial_item',100,100,50.00),
- (201,'civicrm_contribution',104,101,50.00),
+ (201,'civicrm_contribution',78,101,50.00),
  (202,'civicrm_financial_item',101,101,50.00),
- (203,'civicrm_contribution',71,102,50.00),
+ (203,'civicrm_contribution',81,102,50.00),
  (204,'civicrm_financial_item',102,102,50.00),
- (205,'civicrm_contribution',79,103,50.00),
+ (205,'civicrm_contribution',84,103,50.00),
  (206,'civicrm_financial_item',103,103,50.00),
- (207,'civicrm_contribution',102,104,50.00),
+ (207,'civicrm_contribution',88,104,50.00),
  (208,'civicrm_financial_item',104,104,50.00),
- (209,'civicrm_contribution',95,105,50.00),
+ (209,'civicrm_contribution',91,105,50.00),
  (210,'civicrm_financial_item',105,105,50.00),
- (211,'civicrm_contribution',64,106,50.00),
+ (211,'civicrm_contribution',94,106,50.00),
  (212,'civicrm_financial_item',106,106,50.00),
- (213,'civicrm_contribution',70,107,50.00),
+ (213,'civicrm_contribution',97,107,50.00),
  (214,'civicrm_financial_item',107,107,50.00),
- (215,'civicrm_contribution',109,108,50.00),
+ (215,'civicrm_contribution',100,108,50.00),
  (216,'civicrm_financial_item',108,108,50.00),
- (217,'civicrm_contribution',74,109,50.00),
+ (217,'civicrm_contribution',103,109,50.00),
  (218,'civicrm_financial_item',109,109,50.00),
- (219,'civicrm_contribution',66,110,50.00),
+ (219,'civicrm_contribution',106,110,50.00),
  (220,'civicrm_financial_item',110,110,50.00),
- (221,'civicrm_contribution',112,111,50.00),
+ (221,'civicrm_contribution',109,111,50.00),
  (222,'civicrm_financial_item',111,111,50.00);
 /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */;
 UNLOCK TABLES;
@@ -3387,122 +3636,126 @@ 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
- (6,'civicrm_contact',5,3),
- (107,'civicrm_contact',6,4),
- (108,'civicrm_contact',6,5),
- (51,'civicrm_contact',7,5),
- (33,'civicrm_contact',10,4),
- (4,'civicrm_contact',11,3),
- (87,'civicrm_contact',13,5),
- (15,'civicrm_contact',14,4),
- (3,'civicrm_contact',15,1),
- (11,'civicrm_contact',19,5),
- (34,'civicrm_contact',24,4),
- (35,'civicrm_contact',24,5),
- (52,'civicrm_contact',29,4),
- (46,'civicrm_contact',34,4),
- (92,'civicrm_contact',35,4),
- (12,'civicrm_contact',36,4),
- (13,'civicrm_contact',36,5),
- (55,'civicrm_contact',38,4),
- (99,'civicrm_contact',39,4),
- (100,'civicrm_contact',39,5),
- (96,'civicrm_contact',40,4),
- (5,'civicrm_contact',41,3),
- (111,'civicrm_contact',42,4),
- (112,'civicrm_contact',42,5),
- (70,'civicrm_contact',43,5),
- (103,'civicrm_contact',47,4),
- (78,'civicrm_contact',49,5),
- (53,'civicrm_contact',50,4),
- (26,'civicrm_contact',51,4),
- (27,'civicrm_contact',51,5),
- (20,'civicrm_contact',52,5),
- (93,'civicrm_contact',56,5),
- (47,'civicrm_contact',57,4),
- (48,'civicrm_contact',57,5),
- (37,'civicrm_contact',58,4),
- (76,'civicrm_contact',59,4),
- (41,'civicrm_contact',60,4),
- (42,'civicrm_contact',60,5),
- (58,'civicrm_contact',62,5),
- (62,'civicrm_contact',63,4),
- (63,'civicrm_contact',63,5),
- (10,'civicrm_contact',64,2),
- (14,'civicrm_contact',65,4),
- (116,'civicrm_contact',67,4),
- (17,'civicrm_contact',68,5),
- (44,'civicrm_contact',75,4),
- (45,'civicrm_contact',75,5),
- (110,'civicrm_contact',77,4),
- (31,'civicrm_contact',80,5),
- (68,'civicrm_contact',81,4),
- (69,'civicrm_contact',81,5),
- (1,'civicrm_contact',82,2),
- (106,'civicrm_contact',83,5),
- (94,'civicrm_contact',85,5),
- (115,'civicrm_contact',86,4),
- (30,'civicrm_contact',91,5),
- (21,'civicrm_contact',93,4),
- (22,'civicrm_contact',93,5),
- (81,'civicrm_contact',94,5),
- (88,'civicrm_contact',96,4),
- (89,'civicrm_contact',96,5),
- (43,'civicrm_contact',100,4),
- (74,'civicrm_contact',102,4),
- (75,'civicrm_contact',102,5),
- (90,'civicrm_contact',103,4),
- (56,'civicrm_contact',104,4),
- (104,'civicrm_contact',105,4),
- (105,'civicrm_contact',105,5),
- (98,'civicrm_contact',107,4),
- (66,'civicrm_contact',109,5),
- (38,'civicrm_contact',111,4),
- (39,'civicrm_contact',111,5),
- (16,'civicrm_contact',112,5),
- (79,'civicrm_contact',113,5),
- (57,'civicrm_contact',115,5),
- (82,'civicrm_contact',116,4),
- (80,'civicrm_contact',119,5),
- (83,'civicrm_contact',123,4),
- (84,'civicrm_contact',123,5),
- (109,'civicrm_contact',125,5),
- (9,'civicrm_contact',126,2),
- (8,'civicrm_contact',127,1),
- (85,'civicrm_contact',129,4),
- (86,'civicrm_contact',129,5),
- (60,'civicrm_contact',132,4),
- (61,'civicrm_contact',132,5),
- (71,'civicrm_contact',137,4),
- (28,'civicrm_contact',138,4),
- (29,'civicrm_contact',138,5),
- (91,'civicrm_contact',140,5),
- (97,'civicrm_contact',146,5),
- (7,'civicrm_contact',147,3),
- (2,'civicrm_contact',148,3),
- (49,'civicrm_contact',150,4),
- (50,'civicrm_contact',150,5),
- (77,'civicrm_contact',151,5),
- (67,'civicrm_contact',152,5),
- (24,'civicrm_contact',159,4),
- (25,'civicrm_contact',159,5),
- (23,'civicrm_contact',163,5),
- (18,'civicrm_contact',165,4),
- (19,'civicrm_contact',165,5),
- (32,'civicrm_contact',166,4),
- (64,'civicrm_contact',168,4),
- (65,'civicrm_contact',168,5),
- (36,'civicrm_contact',175,4),
- (59,'civicrm_contact',178,5),
- (73,'civicrm_contact',187,5),
- (72,'civicrm_contact',188,4),
- (101,'civicrm_contact',192,4),
- (102,'civicrm_contact',192,5),
- (54,'civicrm_contact',194,5),
- (40,'civicrm_contact',197,4),
- (95,'civicrm_contact',199,5),
- (113,'civicrm_contact',201,4),
- (114,'civicrm_contact',201,5);
+ (3,'civicrm_contact',2,1),
+ (33,'civicrm_contact',3,4),
+ (34,'civicrm_contact',3,5),
+ (77,'civicrm_contact',7,4),
+ (99,'civicrm_contact',9,4),
+ (100,'civicrm_contact',9,5),
+ (94,'civicrm_contact',11,4),
+ (76,'civicrm_contact',13,4),
+ (90,'civicrm_contact',14,4),
+ (17,'civicrm_contact',15,4),
+ (18,'civicrm_contact',15,5),
+ (66,'civicrm_contact',18,4),
+ (67,'civicrm_contact',18,5),
+ (89,'civicrm_contact',19,4),
+ (104,'civicrm_contact',20,4),
+ (120,'civicrm_contact',25,5),
+ (25,'civicrm_contact',28,4),
+ (81,'civicrm_contact',29,4),
+ (22,'civicrm_contact',38,5),
+ (50,'civicrm_contact',39,4),
+ (51,'civicrm_contact',39,5),
+ (68,'civicrm_contact',40,4),
+ (102,'civicrm_contact',43,5),
+ (56,'civicrm_contact',46,5),
+ (84,'civicrm_contact',49,4),
+ (95,'civicrm_contact',52,5),
+ (114,'civicrm_contact',54,4),
+ (115,'civicrm_contact',54,5),
+ (105,'civicrm_contact',57,4),
+ (106,'civicrm_contact',57,5),
+ (93,'civicrm_contact',61,5),
+ (4,'civicrm_contact',65,1),
+ (69,'civicrm_contact',66,4),
+ (70,'civicrm_contact',66,5),
+ (72,'civicrm_contact',67,4),
+ (13,'civicrm_contact',72,4),
+ (14,'civicrm_contact',72,5),
+ (73,'civicrm_contact',76,4),
+ (52,'civicrm_contact',77,4),
+ (39,'civicrm_contact',78,4),
+ (40,'civicrm_contact',78,5),
+ (85,'civicrm_contact',80,4),
+ (53,'civicrm_contact',82,5),
+ (31,'civicrm_contact',85,4),
+ (35,'civicrm_contact',87,4),
+ (36,'civicrm_contact',87,5),
+ (48,'civicrm_contact',89,4),
+ (5,'civicrm_contact',90,1),
+ (55,'civicrm_contact',91,4),
+ (29,'civicrm_contact',94,5),
+ (117,'civicrm_contact',95,4),
+ (9,'civicrm_contact',96,3),
+ (110,'civicrm_contact',99,4),
+ (111,'civicrm_contact',99,5),
+ (11,'civicrm_contact',102,4),
+ (12,'civicrm_contact',102,5),
+ (101,'civicrm_contact',107,4),
+ (54,'civicrm_contact',110,4),
+ (10,'civicrm_contact',112,2),
+ (107,'civicrm_contact',114,4),
+ (108,'civicrm_contact',114,5),
+ (91,'civicrm_contact',117,4),
+ (92,'civicrm_contact',117,5),
+ (74,'civicrm_contact',120,4),
+ (75,'civicrm_contact',120,5),
+ (98,'civicrm_contact',121,4),
+ (8,'civicrm_contact',126,3),
+ (57,'civicrm_contact',127,5),
+ (21,'civicrm_contact',128,4),
+ (43,'civicrm_contact',129,4),
+ (44,'civicrm_contact',129,5),
+ (1,'civicrm_contact',132,1),
+ (2,'civicrm_contact',133,2),
+ (71,'civicrm_contact',136,5),
+ (7,'civicrm_contact',139,2),
+ (49,'civicrm_contact',140,5),
+ (45,'civicrm_contact',141,4),
+ (46,'civicrm_contact',141,5),
+ (59,'civicrm_contact',144,4),
+ (60,'civicrm_contact',144,5),
+ (109,'civicrm_contact',145,4),
+ (63,'civicrm_contact',146,4),
+ (15,'civicrm_contact',147,4),
+ (16,'civicrm_contact',147,5),
+ (88,'civicrm_contact',148,5),
+ (103,'civicrm_contact',149,4),
+ (6,'civicrm_contact',152,2),
+ (112,'civicrm_contact',153,4),
+ (113,'civicrm_contact',153,5),
+ (32,'civicrm_contact',154,5),
+ (24,'civicrm_contact',160,5),
+ (86,'civicrm_contact',162,4),
+ (87,'civicrm_contact',162,5),
+ (118,'civicrm_contact',165,4),
+ (119,'civicrm_contact',165,5),
+ (47,'civicrm_contact',166,5),
+ (79,'civicrm_contact',167,4),
+ (37,'civicrm_contact',168,4),
+ (38,'civicrm_contact',168,5),
+ (96,'civicrm_contact',169,5),
+ (97,'civicrm_contact',170,4),
+ (116,'civicrm_contact',173,4),
+ (64,'civicrm_contact',174,4),
+ (65,'civicrm_contact',174,5),
+ (23,'civicrm_contact',175,4),
+ (78,'civicrm_contact',182,4),
+ (61,'civicrm_contact',183,4),
+ (62,'civicrm_contact',183,5),
+ (19,'civicrm_contact',186,4),
+ (20,'civicrm_contact',186,5),
+ (58,'civicrm_contact',187,4),
+ (82,'civicrm_contact',189,4),
+ (83,'civicrm_contact',189,5),
+ (80,'civicrm_contact',191,5),
+ (41,'civicrm_contact',192,4),
+ (42,'civicrm_contact',192,5),
+ (30,'civicrm_contact',194,5),
+ (28,'civicrm_contact',196,4),
+ (26,'civicrm_contact',198,4),
+ (27,'civicrm_contact',198,5);
 /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3513,9 +3766,9 @@ 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,'2023-02-09 17:00:00','2023-02-11 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,0,0,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,'2022-08-08 12:00:00','2022-08-08 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,0,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,0,0,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,'2023-03-09 07:00:00','2023-03-12 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,0,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,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0),
+ (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,'2023-04-01 17:00:00','2023-04-03 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,0,0,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,'2022-09-30 12:00:00','2022-09-30 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,0,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,0,0,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,'2023-05-01 07:00:00','2023-05-04 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,0,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,0,0,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,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,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,0,0,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,0,0,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0);
@@ -3599,117 +3852,117 @@ 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,'2022-08-09 18:17:37','2012-08-09 13:17:36',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),
- (2,'2022-08-09 18:17:37','2020-05-09 13:17:36',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),
- (3,'2022-08-09 18:17:37','2016-07-15 00:17:36',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3),
- (4,'2022-08-09 18:17:37','2020-05-09 13:17:36',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),
- (5,'2022-08-09 18:17:37','2020-05-09 13:17:36',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5),
- (6,'2022-08-09 18:17:37','2022-05-16 12:35:36',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6),
- (7,'2022-08-09 18:17:37','2022-08-07 13:17:36',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7),
- (8,'2022-08-09 18:17:37','2021-12-15 21:28:36',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8),
- (9,'2022-08-09 18:17:37','2021-09-09 13:17:36',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9),
- (10,'2022-08-09 18:17:37','2018-03-17 15:17:36',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10),
- (11,'2022-08-09 18:17:37','2022-08-08 09:17:36',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11),
- (12,'2022-08-09 18:17:37','2021-05-09 02:44:16',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12),
- (13,'2022-08-09 18:17:37','2022-05-09 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13),
- (14,'2022-08-09 18:17:37','2022-06-09 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14),
- (15,'2022-08-09 18:17:37','2021-05-09 13:17:36',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15),
- (16,'2022-08-09 18:17:37','2021-06-09 13:17:36',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16),
- (17,'2022-08-09 18:17:37','2021-07-09 13:17:36',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17),
- (18,'2022-08-09 18:17:37','2021-08-09 13:17:36',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18),
- (19,'2022-08-09 18:17:37','2021-09-09 13:17:36',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19),
- (20,'2022-08-09 18:17:37','2021-10-09 13:17:36',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20),
- (21,'2022-08-09 18:17:37','2021-11-09 13:17:36',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21),
- (22,'2022-08-09 18:17:37','2021-12-09 13:17:36',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22),
- (23,'2022-08-09 18:17:37','2022-01-09 13:17:36',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23),
- (24,'2022-08-09 18:17:37','2022-02-09 13:17:36',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24),
- (25,'2022-08-09 18:17:37','2022-03-09 13:17:36',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25),
- (26,'2022-08-09 18:17:37','2021-12-09 13:17:36',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26),
- (27,'2022-08-09 18:17:37','2022-01-09 13:17:36',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27),
- (28,'2022-08-09 18:17:38','2022-02-09 13:17:36',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28),
- (29,'2022-08-09 18:17:38','2022-03-09 13:17:36',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29),
- (30,'2022-08-09 18:17:38','2022-04-09 13:17:36',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30),
- (31,'2022-08-09 18:17:38','2022-07-09 13:17:36',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31),
- (32,'2022-08-09 18:17:38','2022-08-09 14:17:37',111,'General',100.00,'USD',2,1,'civicrm_line_item',32),
- (33,'2022-08-09 18:17:38','2022-08-09 14:17:37',72,'General',100.00,'USD',2,1,'civicrm_line_item',33),
- (34,'2022-08-09 18:17:38','2022-08-09 14:17:37',194,'General',100.00,'USD',2,1,'civicrm_line_item',34),
- (35,'2022-08-09 18:17:38','2022-08-09 14:17:37',125,'General',100.00,'USD',2,1,'civicrm_line_item',35),
- (36,'2022-08-09 18:17:38','2022-08-09 14:17:37',43,'General',100.00,'USD',2,1,'civicrm_line_item',36),
- (37,'2022-08-09 18:17:38','2022-08-09 14:17:37',42,'General',100.00,'USD',2,1,'civicrm_line_item',37),
- (38,'2022-08-09 18:17:38','2022-08-09 14:17:37',138,'General',100.00,'USD',2,1,'civicrm_line_item',38),
- (39,'2022-08-09 18:17:38','2022-08-09 14:17:37',198,'General',100.00,'USD',2,1,'civicrm_line_item',39),
- (40,'2022-08-09 18:17:38','2022-08-09 14:17:37',97,'General',100.00,'USD',2,1,'civicrm_line_item',40),
- (41,'2022-08-09 18:17:38','2022-08-09 14:17:37',171,'General',100.00,'USD',2,1,'civicrm_line_item',41),
- (42,'2022-08-09 18:17:38','2022-08-09 14:17:37',155,'General',100.00,'USD',2,1,'civicrm_line_item',42),
- (43,'2022-08-09 18:17:38','2022-08-09 14:17:37',86,'General',100.00,'USD',2,1,'civicrm_line_item',43),
- (44,'2022-08-09 18:17:38','2022-08-09 14:17:37',62,'Student',50.00,'USD',2,1,'civicrm_line_item',44),
- (45,'2022-08-09 18:17:38','2022-08-09 14:17:37',164,'Student',50.00,'USD',2,1,'civicrm_line_item',45),
- (46,'2022-08-09 18:17:38','2022-08-09 14:17:37',44,'Student',50.00,'USD',2,1,'civicrm_line_item',46),
- (47,'2022-08-09 18:17:38','2022-08-09 14:17:37',137,'Student',50.00,'USD',2,1,'civicrm_line_item',47),
- (48,'2022-08-09 18:17:38','2022-08-09 14:17:37',193,'Student',50.00,'USD',2,1,'civicrm_line_item',48),
- (49,'2022-08-09 18:17:38','2022-08-09 14:17:37',94,'Student',50.00,'USD',2,1,'civicrm_line_item',49),
- (50,'2022-08-09 18:17:38','2022-08-09 14:17:37',166,'Student',50.00,'USD',2,1,'civicrm_line_item',50),
- (51,'2022-08-09 18:17:38','2022-08-09 14:17:37',104,'Student',50.00,'USD',2,1,'civicrm_line_item',51),
- (52,'2022-08-09 18:17:38','2022-08-09 14:17:37',152,'Student',50.00,'USD',2,1,'civicrm_line_item',52),
- (53,'2022-08-09 18:17:38','2022-08-09 14:17:37',129,'Student',50.00,'USD',2,1,'civicrm_line_item',53),
- (54,'2022-08-09 18:17:38','2022-08-09 14:17:37',63,'Student',50.00,'USD',2,1,'civicrm_line_item',54),
- (55,'2022-08-09 18:17:38','2022-08-09 14:17:37',96,'Student',50.00,'USD',2,1,'civicrm_line_item',55),
- (56,'2022-08-09 18:17:38','2022-08-09 14:17:37',87,'Student',50.00,'USD',2,1,'civicrm_line_item',56),
- (57,'2022-08-09 18:17:38','2022-08-09 14:17:37',112,'Student',50.00,'USD',2,1,'civicrm_line_item',57),
- (58,'2022-08-09 18:17:38','2022-08-09 14:17:37',130,'Student',50.00,'USD',2,1,'civicrm_line_item',58),
- (59,'2022-08-09 18:17:38','2022-08-09 14:17:37',71,'Student',50.00,'USD',2,1,'civicrm_line_item',59),
- (60,'2022-08-09 18:17:38','2022-08-09 14:17:37',22,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60),
- (61,'2022-08-09 18:17:38','2022-08-09 14:17:37',83,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61),
- (62,'2022-08-09 18:17:38','2022-08-09 14:17:37',36,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97),
- (63,'2022-08-09 18:17:38','2022-08-09 14:17:37',105,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98),
- (64,'2022-08-09 18:17:38','2022-08-09 14:17:37',93,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99),
- (65,'2022-08-09 18:17:38','2022-08-09 14:17:37',157,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100),
- (66,'2022-08-09 18:17:38','2022-08-09 14:17:37',125,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101),
- (67,'2022-08-09 18:17:38','2022-08-09 14:17:37',139,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102),
- (68,'2022-08-09 18:17:38','2022-08-09 14:17:37',86,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103),
- (69,'2022-08-09 18:17:38','2022-08-09 14:17:37',183,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104),
- (70,'2022-08-09 18:17:38','2022-08-09 14:17:37',101,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105),
- (71,'2022-08-09 18:17:38','2022-08-09 14:17:37',141,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106),
- (72,'2022-08-09 18:17:38','2022-08-09 14:17:37',90,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107),
- (73,'2022-08-09 18:17:38','2022-08-09 14:17:37',20,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108),
- (74,'2022-08-09 18:17:38','2022-08-09 14:17:37',154,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109),
- (75,'2022-08-09 18:17:38','2022-08-09 14:17:37',165,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110),
- (76,'2022-08-09 18:17:38','2022-08-09 14:17:37',25,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111),
- (77,'2022-08-09 18:17:38','2022-08-09 14:17:37',46,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112),
- (78,'2022-08-09 18:17:38','2022-08-09 14:17:37',138,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),
- (79,'2022-08-09 18:17:38','2022-08-09 14:17:37',54,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),
- (80,'2022-08-09 18:17:38','2022-08-09 14:17:37',104,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65),
- (81,'2022-08-09 18:17:38','2022-08-09 14:17:37',127,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66),
- (82,'2022-08-09 18:17:38','2022-08-09 14:17:37',130,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67),
- (83,'2022-08-09 18:17:38','2022-08-09 14:17:37',12,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68),
- (84,'2022-08-09 18:17:38','2022-08-09 14:17:37',92,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69),
- (85,'2022-08-09 18:17:38','2022-08-09 14:17:37',67,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70),
- (86,'2022-08-09 18:17:38','2022-08-09 14:17:37',59,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71),
- (87,'2022-08-09 18:17:38','2022-08-09 14:17:37',114,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72),
- (88,'2022-08-09 18:17:38','2022-08-09 14:17:37',119,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73),
- (89,'2022-08-09 18:17:38','2022-08-09 14:17:37',99,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74),
- (90,'2022-08-09 18:17:38','2022-08-09 14:17:37',70,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75),
- (91,'2022-08-09 18:17:38','2022-08-09 14:17:37',72,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76),
- (92,'2022-08-09 18:17:38','2022-08-09 14:17:37',23,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77),
- (93,'2022-08-09 18:17:38','2022-08-09 14:17:37',174,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78),
- (94,'2022-08-09 18:17:38','2022-08-09 14:17:37',37,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79),
- (95,'2022-08-09 18:17:38','2022-08-09 14:17:37',3,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80),
- (96,'2022-08-09 18:17:38','2022-08-09 14:17:37',182,'Single',50.00,'USD',4,1,'civicrm_line_item',81),
- (97,'2022-08-09 18:17:38','2022-08-09 14:17:37',57,'Single',50.00,'USD',4,1,'civicrm_line_item',82),
- (98,'2022-08-09 18:17:38','2022-08-09 14:17:37',151,'Single',50.00,'USD',4,1,'civicrm_line_item',83),
- (99,'2022-08-09 18:17:39','2022-08-09 14:17:37',83,'Single',50.00,'USD',4,1,'civicrm_line_item',84),
- (100,'2022-08-09 18:17:39','2022-08-09 14:17:37',143,'Single',50.00,'USD',4,1,'civicrm_line_item',85),
- (101,'2022-08-09 18:17:39','2022-08-09 14:17:37',152,'Single',50.00,'USD',4,1,'civicrm_line_item',86),
- (102,'2022-08-09 18:17:39','2022-08-09 14:17:37',34,'Single',50.00,'USD',4,1,'civicrm_line_item',87),
- (103,'2022-08-09 18:17:39','2022-08-09 14:17:37',65,'Single',50.00,'USD',4,1,'civicrm_line_item',88),
- (104,'2022-08-09 18:17:39','2022-08-09 14:17:37',150,'Single',50.00,'USD',4,1,'civicrm_line_item',89),
- (105,'2022-08-09 18:17:39','2022-08-09 14:17:37',126,'Single',50.00,'USD',4,1,'civicrm_line_item',90),
- (106,'2022-08-09 18:17:39','2022-08-09 14:17:37',5,'Single',50.00,'USD',4,1,'civicrm_line_item',91),
- (107,'2022-08-09 18:17:39','2022-08-09 14:17:37',26,'Single',50.00,'USD',4,1,'civicrm_line_item',92),
- (108,'2022-08-09 18:17:39','2022-08-09 14:17:37',179,'Single',50.00,'USD',4,1,'civicrm_line_item',93),
- (109,'2022-08-09 18:17:39','2022-08-09 14:17:37',40,'Single',50.00,'USD',4,1,'civicrm_line_item',94),
- (110,'2022-08-09 18:17:39','2022-08-09 14:17:37',14,'Single',50.00,'USD',4,1,'civicrm_line_item',95),
- (111,'2022-08-09 18:17:39','2022-08-09 14:17:37',190,'Single',50.00,'USD',4,1,'civicrm_line_item',96);
+ (1,'2022-10-01 23:23:03','2012-10-01 23:23:03',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),
+ (2,'2022-10-01 23:23:03','2020-07-01 23:23:03',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),
+ (3,'2022-10-01 23:23:03','2016-09-06 10:23:03',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3),
+ (4,'2022-10-01 23:23:03','2020-07-01 23:23:03',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),
+ (5,'2022-10-01 23:23:03','2020-07-01 23:23:03',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5),
+ (6,'2022-10-01 23:23:03','2022-07-08 22:41:03',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6),
+ (7,'2022-10-01 23:23:03','2022-09-29 23:23:03',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7),
+ (8,'2022-10-01 23:23:03','2022-02-07 07:34:03',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8),
+ (9,'2022-10-01 23:23:03','2021-11-01 23:23:03',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9),
+ (10,'2022-10-01 23:23:03','2018-05-10 01:23:03',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10),
+ (11,'2022-10-01 23:23:03','2022-09-30 19:23:03',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11),
+ (12,'2022-10-01 23:23:03','2021-07-01 12:49:43',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12),
+ (13,'2022-10-01 23:23:03','2022-07-01 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13),
+ (14,'2022-10-01 23:23:03','2022-08-01 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14),
+ (15,'2022-10-01 23:23:03','2021-07-01 23:23:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15),
+ (16,'2022-10-01 23:23:03','2021-08-01 23:23:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16),
+ (17,'2022-10-01 23:23:03','2021-09-01 23:23:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17),
+ (18,'2022-10-01 23:23:03','2021-10-01 23:23:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18),
+ (19,'2022-10-01 23:23:03','2021-11-01 23:23:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19),
+ (20,'2022-10-01 23:23:03','2021-12-01 23:23:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20),
+ (21,'2022-10-01 23:23:03','2022-01-01 23:23:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21),
+ (22,'2022-10-01 23:23:03','2022-02-01 23:23:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22),
+ (23,'2022-10-01 23:23:03','2022-03-01 23:23:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23),
+ (24,'2022-10-01 23:23:03','2022-04-01 23:23:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24),
+ (25,'2022-10-01 23:23:03','2022-05-01 23:23:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25),
+ (26,'2022-10-01 23:23:03','2022-02-01 23:23:03',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26),
+ (27,'2022-10-01 23:23:03','2022-03-01 23:23:03',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27),
+ (28,'2022-10-01 23:23:03','2022-04-01 23:23:03',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28),
+ (29,'2022-10-01 23:23:03','2022-05-01 23:23:03',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29),
+ (30,'2022-10-01 23:23:03','2022-06-01 23:23:03',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30),
+ (31,'2022-10-01 23:23:03','2022-09-01 23:23:03',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31),
+ (32,'2022-10-01 23:23:03','2022-10-01 23:23:03',18,'General',100.00,'USD',2,1,'civicrm_line_item',32),
+ (33,'2022-10-01 23:23:03','2022-10-01 23:23:03',27,'General',100.00,'USD',2,1,'civicrm_line_item',33),
+ (34,'2022-10-01 23:23:03','2022-10-01 23:23:03',134,'General',100.00,'USD',2,1,'civicrm_line_item',34),
+ (35,'2022-10-01 23:23:03','2022-10-01 23:23:03',127,'General',100.00,'USD',2,1,'civicrm_line_item',35),
+ (36,'2022-10-01 23:23:03','2022-10-01 23:23:03',168,'General',100.00,'USD',2,1,'civicrm_line_item',36),
+ (37,'2022-10-01 23:23:03','2022-10-01 23:23:03',173,'General',100.00,'USD',2,1,'civicrm_line_item',37),
+ (38,'2022-10-01 23:23:03','2022-10-01 23:23:03',68,'General',100.00,'USD',2,1,'civicrm_line_item',38),
+ (39,'2022-10-01 23:23:03','2022-10-01 23:23:03',180,'General',100.00,'USD',2,1,'civicrm_line_item',39),
+ (40,'2022-10-01 23:23:03','2022-10-01 23:23:03',141,'General',100.00,'USD',2,1,'civicrm_line_item',40),
+ (41,'2022-10-01 23:23:03','2022-10-01 23:23:03',155,'General',100.00,'USD',2,1,'civicrm_line_item',41),
+ (42,'2022-10-01 23:23:03','2022-10-01 23:23:03',41,'General',100.00,'USD',2,1,'civicrm_line_item',42),
+ (43,'2022-10-01 23:23:03','2022-10-01 23:23:03',53,'General',100.00,'USD',2,1,'civicrm_line_item',43),
+ (44,'2022-10-01 23:23:03','2022-10-01 23:23:03',107,'Student',50.00,'USD',2,1,'civicrm_line_item',44),
+ (45,'2022-10-01 23:23:03','2022-10-01 23:23:03',8,'Student',50.00,'USD',2,1,'civicrm_line_item',45),
+ (46,'2022-10-01 23:23:03','2022-10-01 23:23:03',120,'Student',50.00,'USD',2,1,'civicrm_line_item',46),
+ (47,'2022-10-01 23:23:03','2022-10-01 23:23:03',198,'Student',50.00,'USD',2,1,'civicrm_line_item',47),
+ (48,'2022-10-01 23:23:03','2022-10-01 23:23:03',175,'Student',50.00,'USD',2,1,'civicrm_line_item',48),
+ (49,'2022-10-01 23:23:03','2022-10-01 23:23:03',104,'Student',50.00,'USD',2,1,'civicrm_line_item',49),
+ (50,'2022-10-01 23:23:03','2022-10-01 23:23:03',154,'Student',50.00,'USD',2,1,'civicrm_line_item',50),
+ (51,'2022-10-01 23:23:03','2022-10-01 23:23:03',162,'Student',50.00,'USD',2,1,'civicrm_line_item',51),
+ (52,'2022-10-01 23:23:03','2022-10-01 23:23:03',102,'Student',50.00,'USD',2,1,'civicrm_line_item',52),
+ (53,'2022-10-01 23:23:03','2022-10-01 23:23:03',3,'Student',50.00,'USD',2,1,'civicrm_line_item',53),
+ (54,'2022-10-01 23:23:03','2022-10-01 23:23:03',13,'Student',50.00,'USD',2,1,'civicrm_line_item',54),
+ (55,'2022-10-01 23:23:03','2022-10-01 23:23:03',30,'Student',50.00,'USD',2,1,'civicrm_line_item',55),
+ (56,'2022-10-01 23:23:03','2022-10-01 23:23:03',26,'Student',50.00,'USD',2,1,'civicrm_line_item',56),
+ (57,'2022-10-01 23:23:03','2022-10-01 23:23:03',63,'Student',50.00,'USD',2,1,'civicrm_line_item',57),
+ (58,'2022-10-01 23:23:03','2022-10-01 23:23:03',187,'Student',50.00,'USD',2,1,'civicrm_line_item',58),
+ (59,'2022-10-01 23:23:03','2022-10-01 23:23:03',54,'Student',50.00,'USD',2,1,'civicrm_line_item',59),
+ (60,'2022-10-01 23:23:03','2022-10-01 23:23:03',100,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60),
+ (61,'2022-10-01 23:23:03','2022-10-01 23:23:03',150,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61),
+ (62,'2022-10-01 23:23:03','2022-10-01 23:23:03',16,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97),
+ (63,'2022-10-01 23:23:03','2022-10-01 23:23:03',9,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98),
+ (64,'2022-10-01 23:23:03','2022-10-01 23:23:03',11,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99),
+ (65,'2022-10-01 23:23:03','2022-10-01 23:23:03',18,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100),
+ (66,'2022-10-01 23:23:03','2022-10-01 23:23:03',141,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101),
+ (67,'2022-10-01 23:23:03','2022-10-01 23:23:03',100,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102),
+ (68,'2022-10-01 23:23:03','2022-10-01 23:23:03',94,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103),
+ (69,'2022-10-01 23:23:03','2022-10-01 23:23:03',17,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104),
+ (70,'2022-10-01 23:23:03','2022-10-01 23:23:03',74,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105),
+ (71,'2022-10-01 23:23:03','2022-10-01 23:23:03',24,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106),
+ (72,'2022-10-01 23:23:03','2022-10-01 23:23:03',133,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107),
+ (73,'2022-10-01 23:23:03','2022-10-01 23:23:03',84,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108),
+ (74,'2022-10-01 23:23:03','2022-10-01 23:23:03',58,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109),
+ (75,'2022-10-01 23:23:03','2022-10-01 23:23:03',95,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110),
+ (76,'2022-10-01 23:23:03','2022-10-01 23:23:03',28,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111),
+ (77,'2022-10-01 23:23:03','2022-10-01 23:23:03',3,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112),
+ (78,'2022-10-01 23:23:03','2022-10-01 23:23:03',154,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),
+ (79,'2022-10-01 23:23:03','2022-10-01 23:23:03',62,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),
+ (80,'2022-10-01 23:23:03','2022-10-01 23:23:03',12,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65),
+ (81,'2022-10-01 23:23:03','2022-10-01 23:23:03',83,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66),
+ (82,'2022-10-01 23:23:03','2022-10-01 23:23:03',143,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67),
+ (83,'2022-10-01 23:23:03','2022-10-01 23:23:03',185,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68),
+ (84,'2022-10-01 23:23:03','2022-10-01 23:23:03',41,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69),
+ (85,'2022-10-01 23:23:03','2022-10-01 23:23:03',172,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70),
+ (86,'2022-10-01 23:23:03','2022-10-01 23:23:03',188,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71),
+ (87,'2022-10-01 23:23:03','2022-10-01 23:23:03',170,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72),
+ (88,'2022-10-01 23:23:03','2022-10-01 23:23:03',99,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73),
+ (89,'2022-10-01 23:23:03','2022-10-01 23:23:03',22,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74),
+ (90,'2022-10-01 23:23:03','2022-10-01 23:23:03',31,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75),
+ (91,'2022-10-01 23:23:03','2022-10-01 23:23:03',38,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76),
+ (92,'2022-10-01 23:23:03','2022-10-01 23:23:03',166,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77),
+ (93,'2022-10-01 23:23:03','2022-10-01 23:23:03',39,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78),
+ (94,'2022-10-01 23:23:03','2022-10-01 23:23:03',157,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79),
+ (95,'2022-10-01 23:23:03','2022-10-01 23:23:03',29,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80),
+ (96,'2022-10-01 23:23:03','2022-10-01 23:23:03',132,'Single',50.00,'USD',4,1,'civicrm_line_item',81),
+ (97,'2022-10-01 23:23:03','2022-10-01 23:23:03',113,'Single',50.00,'USD',4,1,'civicrm_line_item',82),
+ (98,'2022-10-01 23:23:03','2022-10-01 23:23:03',21,'Single',50.00,'USD',4,1,'civicrm_line_item',83),
+ (99,'2022-10-01 23:23:03','2022-10-01 23:23:03',25,'Single',50.00,'USD',4,1,'civicrm_line_item',84),
+ (100,'2022-10-01 23:23:03','2022-10-01 23:23:03',160,'Single',50.00,'USD',4,1,'civicrm_line_item',85),
+ (101,'2022-10-01 23:23:03','2022-10-01 23:23:03',109,'Single',50.00,'USD',4,1,'civicrm_line_item',86),
+ (102,'2022-10-01 23:23:03','2022-10-01 23:23:03',48,'Single',50.00,'USD',4,1,'civicrm_line_item',87),
+ (103,'2022-10-01 23:23:03','2022-10-01 23:23:03',177,'Single',50.00,'USD',4,1,'civicrm_line_item',88),
+ (104,'2022-10-01 23:23:03','2022-10-01 23:23:03',89,'Single',50.00,'USD',4,1,'civicrm_line_item',89),
+ (105,'2022-10-01 23:23:03','2022-10-01 23:23:03',150,'Single',50.00,'USD',4,1,'civicrm_line_item',90),
+ (106,'2022-10-01 23:23:03','2022-10-01 23:23:03',108,'Single',50.00,'USD',4,1,'civicrm_line_item',91),
+ (107,'2022-10-01 23:23:03','2022-10-01 23:23:03',129,'Single',50.00,'USD',4,1,'civicrm_line_item',92),
+ (108,'2022-10-01 23:23:03','2022-10-01 23:23:03',70,'Single',50.00,'USD',4,1,'civicrm_line_item',93),
+ (109,'2022-10-01 23:23:03','2022-10-01 23:23:03',192,'Single',50.00,'USD',4,1,'civicrm_line_item',94),
+ (110,'2022-10-01 23:23:03','2022-10-01 23:23:03',93,'Single',50.00,'USD',4,1,'civicrm_line_item',95),
+ (111,'2022-10-01 23:23:03','2022-10-01 23:23:03',110,'Single',50.00,'USD',4,1,'civicrm_line_item',96);
 /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3720,117 +3973,117 @@ 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`, `order_reference`) VALUES
- (1,NULL,6,'2012-08-09 13:17:36',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL),
- (2,NULL,6,'2020-05-09 13:17:36',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (3,NULL,6,'2016-07-15 00:17:36',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL),
- (4,NULL,6,'2020-05-09 13:17:36',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL),
- (5,NULL,6,'2020-05-09 13:17:36',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (6,NULL,6,'2022-05-16 12:35:36',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL),
- (7,NULL,6,'2022-08-07 13:17:36',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL),
- (8,NULL,6,'2021-12-15 21:28:36',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (9,NULL,6,'2021-09-09 13:17:36',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (10,NULL,6,'2018-03-17 15:17:36',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (11,NULL,6,'2022-08-08 09:17:36',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (12,NULL,6,'2021-05-09 02:44:16',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (13,NULL,6,'2022-05-09 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (14,NULL,6,'2022-06-09 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (15,NULL,6,'2021-05-09 13:17:36',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (16,NULL,6,'2021-06-09 13:17:36',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (17,NULL,6,'2021-07-09 13:17:36',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (18,NULL,6,'2021-08-09 13:17:36',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (19,NULL,6,'2021-09-09 13:17:36',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (20,NULL,6,'2021-10-09 13:17:36',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (21,NULL,6,'2021-11-09 13:17:36',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (22,NULL,6,'2021-12-09 13:17:36',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (23,NULL,6,'2022-01-09 13:17:36',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (24,NULL,6,'2022-02-09 13:17:36',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (25,NULL,6,'2022-03-09 13:17:36',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (26,NULL,6,'2021-12-09 13:17:36',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (27,NULL,6,'2022-01-09 13:17:36',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (28,NULL,6,'2022-02-09 13:17:36',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (29,NULL,6,'2022-03-09 13:17:36',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (30,NULL,6,'2022-04-09 13:17:36',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (31,NULL,6,'2022-07-09 13:17:36',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (32,NULL,6,'2022-08-09 14:17:37',100.00,NULL,NULL,'USD',1,'d607decbc48ec0ad',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (33,NULL,6,'2022-08-09 14:17:37',100.00,NULL,NULL,'USD',1,'40949fffcf34d5b1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (34,NULL,6,'2022-08-09 14:17:37',100.00,NULL,NULL,'USD',1,'784f2de42f58bc9b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (35,NULL,6,'2022-08-09 14:17:37',100.00,NULL,NULL,'USD',1,'ba90353970871228',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (36,NULL,6,'2022-08-09 14:17:37',100.00,NULL,NULL,'USD',1,'28818f6fe5a60605',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (37,NULL,6,'2022-08-09 14:17:37',100.00,NULL,NULL,'USD',1,'0e71f0d478eb8bef',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (38,NULL,6,'2022-08-09 14:17:37',100.00,NULL,NULL,'USD',1,'a27a39749bead0f7',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (39,NULL,6,'2022-08-09 14:17:37',100.00,NULL,NULL,'USD',1,'48f417be9e02d0fe',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (40,NULL,6,'2022-08-09 14:17:37',100.00,NULL,NULL,'USD',1,'02f1e378fd0e008d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (41,NULL,6,'2022-08-09 14:17:37',100.00,NULL,NULL,'USD',1,'9b2cdcd32f494abc',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (42,NULL,6,'2022-08-09 14:17:37',100.00,NULL,NULL,'USD',1,'a29893cc19cfe951',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (43,NULL,6,'2022-08-09 14:17:37',100.00,NULL,NULL,'USD',1,'acd07e2044ddefa8',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (44,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'c4bce117c638cc33',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (45,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'0dcb8adf832bd350',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (46,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'923dccb9f741efc1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (47,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'8c4726b018ca49c8',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (48,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'10efdb2922062996',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (49,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'0ececcf152e9309a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (50,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'e30a413c12e4261b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (51,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'5037b8cd2ac406ee',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (52,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'bcec8323ff53dd8e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (53,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'04700d999f324cd4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (54,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'c5d30b1628a0ff5e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (55,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'f2b89130219e82f2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (56,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'a7f8ea35d21d28bf',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (57,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'ea55166c4fc5c88b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (58,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'38aeefa123e0510c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (59,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'a67417123e672f40',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (60,NULL,6,'2022-08-09 14:17:37',1200.00,NULL,NULL,'USD',1,'1037c1a3d871ef97',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (61,NULL,6,'2022-08-09 14:17:37',1200.00,NULL,NULL,'USD',1,'16a50e8b47b6648e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (62,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'cac4ecd249e78e87',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (63,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'b0efab58ce10f888',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (64,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'2e6c7c7e802d4f4b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (65,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'41b268bdf84ecff8',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (66,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'c6243424362307ff',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (67,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'3f353aa8a0c8251f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (68,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'b11a8af673da463a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (69,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'22de7be765dd507a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (70,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'dbf3633ac4ac5fce',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (71,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'23e5d732ebc4a020',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (72,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'8fb5963740a7fd14',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (73,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'5a2293bc7ffd48c2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (74,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'4ccc027c624f571d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (75,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'8ff5f27e3a747d12',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (76,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'fdd12fb6cfe80431',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (77,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'2c3b127d6e36f8c9',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (78,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'52645e4bda2bfa9f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (79,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'ac1ba0fab0e130be',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (80,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'a600ec6f03a02f48',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (81,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'b621266dad59b481',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (82,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'6fbba7c8e59ca9e5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (83,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'038050cc049140b0',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (84,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'66585f11b40bee81',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (85,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'3fa7dec8d96fe4cb',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (86,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'146e8850f2e7fb37',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (87,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'9106cbb2a5ed3290',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (88,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'7d9dbe81c9e21b9a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (89,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'9894da49fa8276cb',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (90,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'d9725f7a4a05f591',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (91,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'262029bf65d1baa3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (92,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'af5f6c63c68e0f2d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (93,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'e538baa3ddbc8723',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (94,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'2bd2f9fd4bc2798b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (95,NULL,6,'2022-08-09 14:17:37',800.00,NULL,NULL,'USD',1,'da4485fee321ad71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (96,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'daca2c6ea4c5ecb8',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (97,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'d4ab441393416c45',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (98,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'c5509b438071e459',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (99,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'68a821ef82e68526',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (100,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'8d574031b8206322',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (101,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'1011d95c65726793',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (102,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'171968918025f95e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (103,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'9d0ffe57ed042358',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (104,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'a8cd8a2d94821e43',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (105,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'89a4543b8308c6a2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (106,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'2a39ae1136f579fe',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (107,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'449d36ecd262bb21',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (108,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'f2b321167ee5ec93',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (109,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'24adeafb1a7ba5f4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (110,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'ce0e377cbf77ff2a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
- (111,NULL,6,'2022-08-09 14:17:37',50.00,NULL,NULL,'USD',1,'b714e861ea1c0937',NULL,1,NULL,1,NULL,NULL,NULL,NULL);
+ (1,NULL,6,'2012-10-01 23:23:03',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL),
+ (2,NULL,6,'2020-07-01 23:23:03',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (3,NULL,6,'2016-09-06 10:23:03',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL),
+ (4,NULL,6,'2020-07-01 23:23:03',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL),
+ (5,NULL,6,'2020-07-01 23:23:03',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (6,NULL,6,'2022-07-08 22:41:03',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL),
+ (7,NULL,6,'2022-09-29 23:23:03',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL),
+ (8,NULL,6,'2022-02-07 07:34:03',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (9,NULL,6,'2021-11-01 23:23:03',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (10,NULL,6,'2018-05-10 01:23:03',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (11,NULL,6,'2022-09-30 19:23:03',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (12,NULL,6,'2021-07-01 12:49:43',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (13,NULL,6,'2022-07-01 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (14,NULL,6,'2022-08-01 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (15,NULL,6,'2021-07-01 23:23:03',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (16,NULL,6,'2021-08-01 23:23:03',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (17,NULL,6,'2021-09-01 23:23:03',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (18,NULL,6,'2021-10-01 23:23:03',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (19,NULL,6,'2021-11-01 23:23:03',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (20,NULL,6,'2021-12-01 23:23:03',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (21,NULL,6,'2022-01-01 23:23:03',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (22,NULL,6,'2022-02-01 23:23:03',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (23,NULL,6,'2022-03-01 23:23:03',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (24,NULL,6,'2022-04-01 23:23:03',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (25,NULL,6,'2022-05-01 23:23:03',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (26,NULL,6,'2022-02-01 23:23:03',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (27,NULL,6,'2022-03-01 23:23:03',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (28,NULL,6,'2022-04-01 23:23:03',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (29,NULL,6,'2022-05-01 23:23:03',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (30,NULL,6,'2022-06-01 23:23:03',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (31,NULL,6,'2022-09-01 23:23:03',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (32,NULL,6,'2022-10-01 23:23:03',100.00,NULL,NULL,'USD',1,'1a8e5232959bdfe4',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (33,NULL,6,'2022-10-01 23:23:03',100.00,NULL,NULL,'USD',1,'c0939b7ffc618a81',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (34,NULL,6,'2022-10-01 23:23:03',100.00,NULL,NULL,'USD',1,'7d42334f2225ea8a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (35,NULL,6,'2022-10-01 23:23:03',100.00,NULL,NULL,'USD',1,'71af17e13f853ad1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (36,NULL,6,'2022-10-01 23:23:03',100.00,NULL,NULL,'USD',1,'9ec5b1bc19358657',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (37,NULL,6,'2022-10-01 23:23:03',100.00,NULL,NULL,'USD',1,'c8d1a73561f2933b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (38,NULL,6,'2022-10-01 23:23:03',100.00,NULL,NULL,'USD',1,'c9164113a924ae26',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (39,NULL,6,'2022-10-01 23:23:03',100.00,NULL,NULL,'USD',1,'c451132beee4425c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (40,NULL,6,'2022-10-01 23:23:03',100.00,NULL,NULL,'USD',1,'e141cda9e8570582',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (41,NULL,6,'2022-10-01 23:23:03',100.00,NULL,NULL,'USD',1,'1228686b4ab6919f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (42,NULL,6,'2022-10-01 23:23:03',100.00,NULL,NULL,'USD',1,'7a74f4fce6fd057b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (43,NULL,6,'2022-10-01 23:23:03',100.00,NULL,NULL,'USD',1,'79e857b13e94376e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (44,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'d88fd5ef1f3329cc',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (45,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'5d3aa89ed18e8522',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (46,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'17c099f6aec00073',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (47,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'521a745db2b29379',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (48,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'25326db00618a5d5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (49,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'db66ee1d036d7a45',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (50,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'b5381206ba1874be',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (51,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'3606488daaa8333d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (52,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'27b90173755d7b2f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (53,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'5a685259aca4dd38',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (54,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'4306afe3c0436727',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (55,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'fd390affcf483427',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (56,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'f51c4c19df6fc281',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (57,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'a1b6368e56f95464',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (58,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'3925f801a373edae',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (59,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'fc1758d004b0ae21',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (60,NULL,6,'2022-10-01 23:23:03',1200.00,NULL,NULL,'USD',1,'2d55072f4d03ef76',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (61,NULL,6,'2022-10-01 23:23:03',1200.00,NULL,NULL,'USD',1,'a77b47dd9430ff18',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (62,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'2362a43c975829e9',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (63,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'e3104b4b5b332a7f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (64,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'80d2c83b69ae45d0',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (65,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'3a04cf38e9f4ec13',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (66,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'07b9b06f4b951b87',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (67,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'aee63413ffc822ec',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (68,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'035c62d4a82e5a33',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (69,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'d05fd42bb26e20e7',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (70,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'aee6842245c56141',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (71,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'91cc2b79966be30b',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (72,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'823f814e2c45d485',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (73,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'302750259dbc08a0',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (74,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'c83961e64d66ac43',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (75,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'cee89517c091ae9d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (76,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'abeb6a8205c914b1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (77,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'11bfbcc970d02cb5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (78,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'0f394f1b98e1b0ce',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (79,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'431fe2de2bd8f05e',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (80,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'f52e86bf3f315a1f',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (81,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'86015459711adbf0',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (82,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'d2c78af57bfb4b61',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (83,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'9aeae7e49e51a59c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (84,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'1dc25ef3e86b39b8',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (85,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'11e44172ac8c1903',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (86,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'fa8c9f5ad0a37572',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (87,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'d874d0f3d846e632',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (88,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'9eb0f53dd6817444',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (89,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'576416d60b3be0c9',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (90,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'42edf27bd059c7a6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (91,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'0660295648d39e7c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (92,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'6cbed5fa38f16e0d',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (93,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'d844c57fa6927f04',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (94,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'6d473b11e68829f6',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (95,NULL,6,'2022-10-01 23:23:03',800.00,NULL,NULL,'USD',1,'78e3cac74b44d358',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (96,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'0e75de8f6a95e292',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (97,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'6200169541b621ea',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (98,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'ab086f73d6b6b86a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (99,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'9915d39c6f4feffa',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (100,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'e620d4c5259b6373',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (101,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'99cdea19555f1417',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (102,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'f309d46486a2ca0a',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (103,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'b8ba2672a6207df5',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (104,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'db968b6030ba51c8',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (105,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'62bfe2eee8342448',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (106,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'48d1b3b3453daa42',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (107,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'5775f7efba7bb67c',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (108,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'6fbfd6a45612e484',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (109,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'c71813ad06532cb1',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (110,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'36479eed18ab2ced',NULL,1,NULL,1,NULL,NULL,NULL,NULL),
+ (111,NULL,6,'2022-10-01 23:23:03',50.00,NULL,NULL,'USD',1,'f61580087ee68138',NULL,1,NULL,1,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -3869,89 +4122,89 @@ 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,19,'Added',NULL,NULL),
- (2,2,74,'Added',NULL,NULL),
- (3,2,36,'Added',NULL,NULL),
- (4,2,72,'Added',NULL,NULL),
- (5,2,65,'Added',NULL,NULL),
- (6,2,195,'Added',NULL,NULL),
- (7,2,14,'Added',NULL,NULL),
- (8,2,121,'Added',NULL,NULL),
- (9,2,112,'Added',NULL,NULL),
- (10,2,27,'Added',NULL,NULL),
- (11,2,68,'Added',NULL,NULL),
- (12,2,142,'Added',NULL,NULL),
- (13,2,165,'Added',NULL,NULL),
- (14,2,18,'Added',NULL,NULL),
- (15,2,52,'Added',NULL,NULL),
- (16,2,128,'Added',NULL,NULL),
- (17,2,93,'Added',NULL,NULL),
- (18,2,106,'Added',NULL,NULL),
- (19,2,163,'Added',NULL,NULL),
- (20,2,46,'Added',NULL,NULL),
- (21,2,159,'Added',NULL,NULL),
- (22,2,32,'Added',NULL,NULL),
- (23,2,51,'Added',NULL,NULL),
- (24,2,110,'Added',NULL,NULL),
- (25,2,138,'Added',NULL,NULL),
- (26,2,120,'Added',NULL,NULL),
- (27,2,91,'Added',NULL,NULL),
- (28,2,90,'Added',NULL,NULL),
- (29,2,80,'Added',NULL,NULL),
- (30,2,108,'Added',NULL,NULL),
- (31,2,166,'Added',NULL,NULL),
- (32,2,78,'Added',NULL,NULL),
- (33,2,10,'Added',NULL,NULL),
- (34,2,185,'Added',NULL,NULL),
- (35,2,24,'Added',NULL,NULL),
- (36,2,155,'Added',NULL,NULL),
- (37,2,175,'Added',NULL,NULL),
- (38,2,145,'Added',NULL,NULL),
- (39,2,58,'Added',NULL,NULL),
- (40,2,33,'Added',NULL,NULL),
- (41,2,111,'Added',NULL,NULL),
- (42,2,184,'Added',NULL,NULL),
- (43,2,197,'Added',NULL,NULL),
- (44,2,2,'Added',NULL,NULL),
- (45,2,60,'Added',NULL,NULL),
- (46,2,170,'Added',NULL,NULL),
- (47,2,100,'Added',NULL,NULL),
- (48,2,12,'Added',NULL,NULL),
- (49,2,75,'Added',NULL,NULL),
- (50,2,133,'Added',NULL,NULL),
- (51,2,34,'Added',NULL,NULL),
- (52,2,169,'Added',NULL,NULL),
- (53,2,57,'Added',NULL,NULL),
- (54,2,164,'Added',NULL,NULL),
- (55,2,150,'Added',NULL,NULL),
- (56,2,95,'Added',NULL,NULL),
- (57,2,7,'Added',NULL,NULL),
- (58,2,79,'Added',NULL,NULL),
- (59,2,29,'Added',NULL,NULL),
- (60,2,193,'Added',NULL,NULL),
- (61,3,50,'Added',NULL,NULL),
- (62,3,173,'Added',NULL,NULL),
- (63,3,194,'Added',NULL,NULL),
- (64,3,144,'Added',NULL,NULL),
- (65,3,38,'Added',NULL,NULL),
- (66,3,171,'Added',NULL,NULL),
- (67,3,104,'Added',NULL,NULL),
- (68,3,153,'Added',NULL,NULL),
- (69,3,115,'Added',NULL,NULL),
- (70,3,45,'Added',NULL,NULL),
- (71,3,62,'Added',NULL,NULL),
- (72,3,182,'Added',NULL,NULL),
- (73,3,178,'Added',NULL,NULL),
- (74,3,97,'Added',NULL,NULL),
- (75,3,132,'Added',NULL,NULL),
- (76,4,19,'Added',NULL,NULL),
- (77,4,121,'Added',NULL,NULL),
- (78,4,52,'Added',NULL,NULL),
- (79,4,32,'Added',NULL,NULL),
- (80,4,80,'Added',NULL,NULL),
- (81,4,155,'Added',NULL,NULL),
- (82,4,197,'Added',NULL,NULL),
- (83,4,133,'Added',NULL,NULL),
+ (1,2,102,'Added',NULL,NULL),
+ (2,2,151,'Added',NULL,NULL),
+ (3,2,72,'Added',NULL,NULL),
+ (4,2,27,'Added',NULL,NULL),
+ (5,2,147,'Added',NULL,NULL),
+ (6,2,4,'Added',NULL,NULL),
+ (7,2,15,'Added',NULL,NULL),
+ (8,2,135,'Added',NULL,NULL),
+ (9,2,186,'Added',NULL,NULL),
+ (10,2,48,'Added',NULL,NULL),
+ (11,2,128,'Added',NULL,NULL),
+ (12,2,156,'Added',NULL,NULL),
+ (13,2,38,'Added',NULL,NULL),
+ (14,2,101,'Added',NULL,NULL),
+ (15,2,175,'Added',NULL,NULL),
+ (16,2,193,'Added',NULL,NULL),
+ (17,2,160,'Added',NULL,NULL),
+ (18,2,155,'Added',NULL,NULL),
+ (19,2,28,'Added',NULL,NULL),
+ (20,2,55,'Added',NULL,NULL),
+ (21,2,198,'Added',NULL,NULL),
+ (22,2,179,'Added',NULL,NULL),
+ (23,2,196,'Added',NULL,NULL),
+ (24,2,188,'Added',NULL,NULL),
+ (25,2,94,'Added',NULL,NULL),
+ (26,2,51,'Added',NULL,NULL),
+ (27,2,194,'Added',NULL,NULL),
+ (28,2,195,'Added',NULL,NULL),
+ (29,2,85,'Added',NULL,NULL),
+ (30,2,17,'Added',NULL,NULL),
+ (31,2,154,'Added',NULL,NULL),
+ (32,2,75,'Added',NULL,NULL),
+ (33,2,3,'Added',NULL,NULL),
+ (34,2,199,'Added',NULL,NULL),
+ (35,2,87,'Added',NULL,NULL),
+ (36,2,12,'Added',NULL,NULL),
+ (37,2,168,'Added',NULL,NULL),
+ (38,2,134,'Added',NULL,NULL),
+ (39,2,78,'Added',NULL,NULL),
+ (40,2,8,'Added',NULL,NULL),
+ (41,2,192,'Added',NULL,NULL),
+ (42,2,124,'Added',NULL,NULL),
+ (43,2,129,'Added',NULL,NULL),
+ (44,2,53,'Added',NULL,NULL),
+ (45,2,141,'Added',NULL,NULL),
+ (46,2,42,'Added',NULL,NULL),
+ (47,2,166,'Added',NULL,NULL),
+ (48,2,21,'Added',NULL,NULL),
+ (49,2,89,'Added',NULL,NULL),
+ (50,2,122,'Added',NULL,NULL),
+ (51,2,140,'Added',NULL,NULL),
+ (52,2,150,'Added',NULL,NULL),
+ (53,2,39,'Added',NULL,NULL),
+ (54,2,184,'Added',NULL,NULL),
+ (55,2,77,'Added',NULL,NULL),
+ (56,2,44,'Added',NULL,NULL),
+ (57,2,82,'Added',NULL,NULL),
+ (58,2,81,'Added',NULL,NULL),
+ (59,2,110,'Added',NULL,NULL),
+ (60,2,130,'Added',NULL,NULL),
+ (61,3,91,'Added',NULL,NULL),
+ (62,3,83,'Added',NULL,NULL),
+ (63,3,46,'Added',NULL,NULL),
+ (64,3,137,'Added',NULL,NULL),
+ (65,3,127,'Added',NULL,NULL),
+ (66,3,47,'Added',NULL,NULL),
+ (67,3,187,'Added',NULL,NULL),
+ (68,3,36,'Added',NULL,NULL),
+ (69,3,144,'Added',NULL,NULL),
+ (70,3,68,'Added',NULL,NULL),
+ (71,3,183,'Added',NULL,NULL),
+ (72,3,138,'Added',NULL,NULL),
+ (73,3,146,'Added',NULL,NULL),
+ (74,3,176,'Added',NULL,NULL),
+ (75,3,174,'Added',NULL,NULL),
+ (76,4,102,'Added',NULL,NULL),
+ (77,4,135,'Added',NULL,NULL),
+ (78,4,175,'Added',NULL,NULL),
+ (79,4,179,'Added',NULL,NULL),
+ (80,4,85,'Added',NULL,NULL),
+ (81,4,12,'Added',NULL,NULL),
+ (82,4,129,'Added',NULL,NULL),
+ (83,4,122,'Added',NULL,NULL),
  (84,4,202,'Added',NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */;
 UNLOCK TABLES;
@@ -4071,9 +4324,9 @@ INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contributio
  (34,'civicrm_membership',7,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL),
  (35,'civicrm_membership',9,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL),
  (36,'civicrm_membership',13,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL),
- (37,'civicrm_membership',15,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL),
- (38,'civicrm_membership',17,48,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL),
- (39,'civicrm_membership',19,50,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL),
+ (37,'civicrm_membership',17,48,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL),
+ (38,'civicrm_membership',19,50,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL),
+ (39,'civicrm_membership',20,51,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL),
  (40,'civicrm_membership',21,52,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL),
  (41,'civicrm_membership',23,54,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL),
  (42,'civicrm_membership',27,58,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL),
@@ -4086,9 +4339,9 @@ INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contributio
  (49,'civicrm_membership',10,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
  (50,'civicrm_membership',12,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
  (51,'civicrm_membership',14,45,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
- (52,'civicrm_membership',16,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
- (53,'civicrm_membership',18,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
- (54,'civicrm_membership',20,51,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
+ (52,'civicrm_membership',15,46,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
+ (53,'civicrm_membership',16,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
+ (54,'civicrm_membership',18,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
  (55,'civicrm_membership',24,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
  (56,'civicrm_membership',25,56,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
  (57,'civicrm_membership',26,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
@@ -4096,56 +4349,56 @@ INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contributio
  (59,'civicrm_membership',30,61,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL),
  (60,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL,NULL),
  (61,'civicrm_membership',22,53,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL,NULL),
- (63,'civicrm_participant',3,98,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (64,'civicrm_participant',6,76,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (65,'civicrm_participant',9,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (66,'civicrm_participant',12,96,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (67,'civicrm_participant',15,97,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (68,'civicrm_participant',18,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (69,'civicrm_participant',21,86,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (70,'civicrm_participant',24,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (71,'civicrm_participant',25,78,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (72,'civicrm_participant',28,92,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (63,'civicrm_participant',3,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (64,'civicrm_participant',6,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (65,'civicrm_participant',9,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (66,'civicrm_participant',12,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (67,'civicrm_participant',15,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (68,'civicrm_participant',18,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (69,'civicrm_participant',21,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (70,'civicrm_participant',24,86,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (71,'civicrm_participant',25,87,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (72,'civicrm_participant',28,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
  (73,'civicrm_participant',31,93,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (74,'civicrm_participant',34,88,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (75,'civicrm_participant',37,81,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (76,'civicrm_participant',40,82,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (77,'civicrm_participant',43,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (74,'civicrm_participant',34,96,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (75,'civicrm_participant',37,99,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (76,'civicrm_participant',40,102,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (77,'civicrm_participant',43,105,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
  (78,'civicrm_participant',46,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (79,'civicrm_participant',49,73,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (80,'civicrm_participant',50,63,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
- (81,'civicrm_participant',1,110,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (82,'civicrm_participant',4,77,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (83,'civicrm_participant',7,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (84,'civicrm_participant',10,83,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (85,'civicrm_participant',13,101,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (86,'civicrm_participant',16,104,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (87,'civicrm_participant',19,71,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (88,'civicrm_participant',22,79,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (89,'civicrm_participant',26,102,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (90,'civicrm_participant',29,95,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (91,'civicrm_participant',32,64,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (92,'civicrm_participant',35,70,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (93,'civicrm_participant',38,109,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (94,'civicrm_participant',41,74,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (95,'civicrm_participant',44,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (96,'civicrm_participant',47,112,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
- (97,'civicrm_participant',2,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (98,'civicrm_participant',5,91,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (99,'civicrm_participant',8,87,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (100,'civicrm_participant',11,106,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (101,'civicrm_participant',14,94,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (102,'civicrm_participant',17,99,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (103,'civicrm_participant',20,84,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (104,'civicrm_participant',23,111,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (79,'civicrm_participant',49,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (80,'civicrm_participant',50,112,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL),
+ (81,'civicrm_participant',1,63,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (82,'civicrm_participant',4,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (83,'civicrm_participant',7,69,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (84,'civicrm_participant',10,72,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (85,'civicrm_participant',13,75,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (86,'civicrm_participant',16,78,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (87,'civicrm_participant',19,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (88,'civicrm_participant',22,84,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (89,'civicrm_participant',26,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (90,'civicrm_participant',29,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (91,'civicrm_participant',32,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (92,'civicrm_participant',35,97,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (93,'civicrm_participant',38,100,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (94,'civicrm_participant',41,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (95,'civicrm_participant',44,106,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (96,'civicrm_participant',47,109,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL),
+ (97,'civicrm_participant',2,64,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (98,'civicrm_participant',5,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (99,'civicrm_participant',8,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (100,'civicrm_participant',11,73,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (101,'civicrm_participant',14,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (102,'civicrm_participant',17,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (103,'civicrm_participant',20,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (104,'civicrm_participant',23,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
  (105,'civicrm_participant',27,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (106,'civicrm_participant',30,100,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (107,'civicrm_participant',33,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (108,'civicrm_participant',36,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (109,'civicrm_participant',39,105,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (110,'civicrm_participant',42,107,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (111,'civicrm_participant',45,69,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
- (112,'civicrm_participant',48,75,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL);
+ (106,'civicrm_participant',30,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (107,'civicrm_participant',33,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (108,'civicrm_participant',36,98,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (109,'civicrm_participant',39,101,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (110,'civicrm_participant',42,104,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (111,'civicrm_participant',45,107,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL),
+ (112,'civicrm_participant',48,110,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4156,9 +4409,9 @@ 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,183,191,166,NULL,NULL,NULL,NULL,NULL),
- (2,184,192,167,NULL,NULL,NULL,NULL,NULL),
- (3,185,193,168,NULL,NULL,NULL,NULL,NULL);
+ (1,181,188,154,NULL,NULL,NULL,NULL,NULL),
+ (2,182,189,155,NULL,NULL,NULL,NULL,NULL),
+ (3,183,190,156,NULL,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4184,7 +4437,7 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_log` WRITE;
 /*!40000 ALTER TABLE `civicrm_log` DISABLE KEYS */;
 INSERT INTO `civicrm_log` (`id`, `entity_table`, `entity_id`, `data`, `modified_id`, `modified_date`) VALUES
- (1,'civicrm_contact',202,'civicrm_contact,202',202,'2022-08-09 13:17:32');
+ (1,'civicrm_contact',202,'civicrm_contact,202',202,'2022-10-01 23:23:01');
 /*!40000 ALTER TABLE `civicrm_log` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4572,6 +4825,9 @@ UNLOCK TABLES;
 
 LOCK TABLES `civicrm_managed` WRITE;
 /*!40000 ALTER TABLE `civicrm_managed` DISABLE KEYS */;
+INSERT INTO `civicrm_managed` (`id`, `module`, `name`, `entity_type`, `entity_id`, `cleanup`, `entity_modified_date`) VALUES
+ (1,'legacycustomsearches','Custom Searches1','Navigation',252,'always',NULL),
+ (2,'legacycustomsearches','Manage Custom Searches1','Navigation',253,'always',NULL);
 /*!40000 ALTER TABLE `civicrm_managed` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4600,36 +4856,36 @@ 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,111,1,'2022-08-09','2022-08-09','2024-08-08','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (2,62,2,'2022-08-08','2022-08-08','2023-08-07','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (3,72,1,'2022-08-07','2022-08-07','2024-08-06','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (4,164,2,'2022-08-06','2022-08-06','2023-08-05','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (5,44,2,'2021-08-05','2021-08-05','2022-08-04','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (6,137,2,'2022-08-04','2022-08-04','2023-08-03','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (7,194,1,'2022-08-03','2022-08-03','2024-08-02','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (8,193,2,'2022-08-02','2022-08-02','2023-08-01','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (9,125,1,'2022-08-01','2022-08-01','2024-07-31','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (10,94,2,'2021-07-31','2021-07-31','2022-07-30','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (11,22,3,'2022-07-30','2022-07-30',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (12,166,2,'2022-07-29','2022-07-29','2023-07-28','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (13,43,1,'2022-07-28','2022-07-28','2024-07-27','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (14,104,2,'2022-07-27','2022-07-27','2023-07-26','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (15,42,1,'2020-04-19','2020-04-19','2022-04-18','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (16,152,2,'2022-07-25','2022-07-25','2023-07-24','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (17,138,1,'2022-07-24','2022-07-24','2024-07-23','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (18,129,2,'2022-07-23','2022-07-23','2023-07-22','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (19,198,1,'2022-07-22','2022-07-22','2024-07-21','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (20,63,2,'2021-07-21','2021-07-21','2022-07-20','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (21,97,1,'2022-07-20','2022-07-20','2024-07-19','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (22,83,3,'2022-07-19','2022-07-19',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (23,171,1,'2022-07-18','2022-07-18','2024-07-17','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (24,96,2,'2022-07-17','2022-07-17','2023-07-16','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (25,87,2,'2021-07-16','2021-07-16','2022-07-15','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (26,112,2,'2022-07-15','2022-07-15','2023-07-14','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (27,155,1,'2022-07-14','2022-07-14','2024-07-13','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (28,130,2,'2022-07-13','2022-07-13','2023-07-12','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (29,86,1,'2022-07-12','2022-07-12','2024-07-11','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
- (30,71,2,'2021-07-11','2021-07-11','2022-07-10','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL);
+ (1,18,1,'2022-10-01','2022-10-01','2024-09-30','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (2,107,2,'2022-09-30','2022-09-30','2023-09-29','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (3,27,1,'2022-09-29','2022-09-29','2024-09-28','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (4,8,2,'2022-09-28','2022-09-28','2023-09-27','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (5,120,2,'2021-09-27','2021-09-27','2022-09-26','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (6,198,2,'2022-09-26','2022-09-26','2023-09-25','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (7,134,1,'2022-09-25','2022-09-25','2024-09-24','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (8,175,2,'2022-09-24','2022-09-24','2023-09-23','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (9,127,1,'2022-09-23','2022-09-23','2024-09-22','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (10,104,2,'2021-09-22','2021-09-22','2022-09-21','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (11,100,3,'2022-09-21','2022-09-21',NULL,'Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (12,154,2,'2022-09-20','2022-09-20','2023-09-19','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (13,168,1,'2022-09-19','2022-09-19','2024-09-18','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (14,162,2,'2022-09-18','2022-09-18','2023-09-17','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (15,102,2,'2021-09-17','2021-09-17','2022-09-16','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (16,3,2,'2022-09-16','2022-09-16','2023-09-15','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (17,173,1,'2022-09-15','2022-09-15','2024-09-14','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (18,13,2,'2022-09-14','2022-09-14','2023-09-13','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (19,68,1,'2022-09-13','2022-09-13','2024-09-12','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (20,180,1,'2020-05-02','2020-05-02','2022-05-01','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (21,141,1,'2022-09-11','2022-09-11','2024-09-10','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (22,150,3,'2022-09-10','2022-09-10',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (23,155,1,'2022-09-09','2022-09-09','2024-09-08','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (24,30,2,'2022-09-08','2022-09-08','2023-09-07','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (25,26,2,'2021-09-07','2021-09-07','2022-09-06','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (26,63,2,'2022-09-06','2022-09-06','2023-09-05','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (27,41,1,'2022-09-05','2022-09-05','2024-09-04','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (28,187,2,'2022-09-04','2022-09-04','2023-09-03','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (29,53,1,'2022-09-03','2022-09-03','2024-09-02','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL),
+ (30,54,2,'2021-09-02','2021-09-02','2022-09-01','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4651,36 +4907,36 @@ 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,11,1,'2022-07-30',NULL,22,'2022-08-09',3,NULL),
- (2,15,3,'2020-04-19','2022-04-18',42,'2022-08-09',1,NULL),
- (3,13,1,'2022-07-28','2024-07-27',43,'2022-08-09',1,NULL),
- (4,5,4,'2021-08-05','2022-08-04',44,'2022-08-09',2,NULL),
- (5,2,1,'2022-08-08','2023-08-07',62,'2022-08-09',2,NULL),
- (6,20,4,'2021-07-21','2022-07-20',63,'2022-08-09',2,NULL),
- (7,30,4,'2021-07-11','2022-07-10',71,'2022-08-09',2,NULL),
- (8,3,1,'2022-08-07','2024-08-06',72,'2022-08-09',1,NULL),
- (9,22,1,'2022-07-19',NULL,83,'2022-08-09',3,NULL),
- (10,29,1,'2022-07-12','2024-07-11',86,'2022-08-09',1,NULL),
- (11,25,4,'2021-07-16','2022-07-15',87,'2022-08-09',2,NULL),
- (12,10,4,'2021-07-31','2022-07-30',94,'2022-08-09',2,NULL),
- (13,24,1,'2022-07-17','2023-07-16',96,'2022-08-09',2,NULL),
- (14,21,1,'2022-07-20','2024-07-19',97,'2022-08-09',1,NULL),
- (15,14,1,'2022-07-27','2023-07-26',104,'2022-08-09',2,NULL),
- (16,1,1,'2022-08-09','2024-08-08',111,'2022-08-09',1,NULL),
- (17,26,1,'2022-07-15','2023-07-14',112,'2022-08-09',2,NULL),
- (18,9,1,'2022-08-01','2024-07-31',125,'2022-08-09',1,NULL),
- (19,18,1,'2022-07-23','2023-07-22',129,'2022-08-09',2,NULL),
- (20,28,1,'2022-07-13','2023-07-12',130,'2022-08-09',2,NULL),
- (21,6,1,'2022-08-04','2023-08-03',137,'2022-08-09',2,NULL),
- (22,17,1,'2022-07-24','2024-07-23',138,'2022-08-09',1,NULL),
- (23,16,1,'2022-07-25','2023-07-24',152,'2022-08-09',2,NULL),
- (24,27,1,'2022-07-14','2024-07-13',155,'2022-08-09',1,NULL),
- (25,4,1,'2022-08-06','2023-08-05',164,'2022-08-09',2,NULL),
- (26,12,1,'2022-07-29','2023-07-28',166,'2022-08-09',2,NULL),
- (27,23,1,'2022-07-18','2024-07-17',171,'2022-08-09',1,NULL),
- (28,8,1,'2022-08-02','2023-08-01',193,'2022-08-09',2,NULL),
- (29,7,1,'2022-08-03','2024-08-02',194,'2022-08-09',1,NULL),
- (30,19,1,'2022-07-22','2024-07-21',198,'2022-08-09',1,NULL);
+ (1,16,1,'2022-09-16','2023-09-15',3,'2022-10-01',2,NULL),
+ (2,4,1,'2022-09-28','2023-09-27',8,'2022-10-01',2,NULL),
+ (3,18,1,'2022-09-14','2023-09-13',13,'2022-10-01',2,NULL),
+ (4,1,1,'2022-10-01','2024-09-30',18,'2022-10-01',1,NULL),
+ (5,25,4,'2021-09-07','2022-09-06',26,'2022-10-01',2,NULL),
+ (6,3,1,'2022-09-29','2024-09-28',27,'2022-10-01',1,NULL),
+ (7,24,1,'2022-09-08','2023-09-07',30,'2022-10-01',2,NULL),
+ (8,27,1,'2022-09-05','2024-09-04',41,'2022-10-01',1,NULL),
+ (9,29,1,'2022-09-03','2024-09-02',53,'2022-10-01',1,NULL),
+ (10,30,4,'2021-09-02','2022-09-01',54,'2022-10-01',2,NULL),
+ (11,26,1,'2022-09-06','2023-09-05',63,'2022-10-01',2,NULL),
+ (12,19,1,'2022-09-13','2024-09-12',68,'2022-10-01',1,NULL),
+ (13,11,1,'2022-09-21',NULL,100,'2022-10-01',3,NULL),
+ (14,15,4,'2021-09-17','2022-09-16',102,'2022-10-01',2,NULL),
+ (15,10,4,'2021-09-22','2022-09-21',104,'2022-10-01',2,NULL),
+ (16,2,1,'2022-09-30','2023-09-29',107,'2022-10-01',2,NULL),
+ (17,5,4,'2021-09-27','2022-09-26',120,'2022-10-01',2,NULL),
+ (18,9,1,'2022-09-23','2024-09-22',127,'2022-10-01',1,NULL),
+ (19,7,1,'2022-09-25','2024-09-24',134,'2022-10-01',1,NULL),
+ (20,21,1,'2022-09-11','2024-09-10',141,'2022-10-01',1,NULL),
+ (21,22,1,'2022-09-10',NULL,150,'2022-10-01',3,NULL),
+ (22,12,1,'2022-09-20','2023-09-19',154,'2022-10-01',2,NULL),
+ (23,23,1,'2022-09-09','2024-09-08',155,'2022-10-01',1,NULL),
+ (24,14,1,'2022-09-18','2023-09-17',162,'2022-10-01',2,NULL),
+ (25,13,1,'2022-09-19','2024-09-18',168,'2022-10-01',1,NULL),
+ (26,17,1,'2022-09-15','2024-09-14',173,'2022-10-01',1,NULL),
+ (27,8,1,'2022-09-24','2023-09-23',175,'2022-10-01',2,NULL),
+ (28,20,3,'2020-05-02','2022-05-01',180,'2022-10-01',1,NULL),
+ (29,28,1,'2022-09-04','2023-09-03',187,'2022-10-01',2,NULL),
+ (30,6,1,'2022-09-26','2023-09-25',198,'2022-10-01',2,NULL);
 /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -4761,456 +5017,458 @@ 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,1,0,1,0,400,1,1,0,'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,1,0,1,0,410,1,1,0,'a:0:{}'),
- (3,1,'civicrm/import/contact/summary',NULL,'Import 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:31:\"CRM_Contact_Import_Form_Summary\";',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:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
- (4,1,'civicrm/import/outcome',NULL,'Import results','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_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (5,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,1,0,1,0,420,1,1,0,'a:0:{}'),
- (6,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,1,0,1,0,420,1,1,0,'a:0:{}'),
- (7,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (8,1,'civicrm/import/datasource',NULL,'Import','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_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;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,1,0,1,0,450,1,1,0,'a:0:{}'),
- (9,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (10,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,1,0,1,0,0,1,0,0,'a:0:{}'),
- (11,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,1,0,1,0,0,1,1,0,'a:0:{}'),
- (12,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,1,0,1,0,10,1,1,0,'a:0:{}'),
- (13,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (14,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (15,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (16,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,1,0,1,0,12,1,1,0,'a:0:{}'),
- (17,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,1,0,1,0,14,1,1,0,'a:0:{}'),
- (18,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: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:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:38:\"/civicrm/contact/search/custom?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,16,1,1,0,'a:0:{}'),
- (19,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (20,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (21,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (22,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (23,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (24,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (25,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (26,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (27,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (28,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (29,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (30,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (31,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (32,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (33,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (34,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (35,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (36,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (37,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (38,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (39,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (40,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (41,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (42,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (43,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (44,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,1,1,1,0,0,1,0,0,'a:0:{}'),
- (45,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (46,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (47,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (48,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,1,0,1,0,1,1,3,0,'a:0:{}'),
- (49,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (50,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (51,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,1,0,1,0,1,1,3,0,'a:0:{}'),
- (52,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (53,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (54,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (55,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (56,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (57,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (58,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (59,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (60,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (61,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (62,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (63,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,1,0,1,0,105,1,0,0,'a:2:{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\";}'),
- (64,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (65,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (66,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (67,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,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),
- (68,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (69,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (70,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (71,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (72,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (73,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (74,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (75,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (76,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,1,1,1,0,0,1,0,0,'a:0:{}'),
- (77,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (78,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (79,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,1,1,1,0,0,1,0,0,'a:0:{}'),
- (80,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,1,1,1,0,0,1,0,0,'a:0:{}'),
- (81,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (82,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (83,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (84,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (85,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (86,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (87,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (88,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (89,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,1,0,1,0,1,1,3,0,'a:0:{}'),
- (90,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (91,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (92,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (93,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (94,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (95,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,1,0,1,0,30,1,1,0,'a:0:{}'),
- (96,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,1,0,1,0,1,1,0,0,'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\";}'),
- (97,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (98,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (99,1,'civicrm/tag',NULL,'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: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,1,0,1,0,25,1,0,0,'a:2:{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\";}'),
- (100,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:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (101,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:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (102,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (103,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:1:{i:0;s:23:\"administer CiviCRM data\";}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,1,0,1,1,10,1,0,0,'a:2:{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\";}'),
- (104,1,'civicrm/admin/custom/group/edit',NULL,'Configure 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:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_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:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
- (105,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','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 CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',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,1,0,1,1,1,1,0,0,'a:0:{}'),
- (106,1,'civicrm/admin/custom/group/delete',NULL,'Delete 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:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',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,1,0,1,1,1,1,0,0,'a:0:{}'),
- (107,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:1:{i:0;s:23:\"administer CiviCRM data\";}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,1,0,1,1,11,1,0,0,'a:0:{}'),
- (108,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','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 CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',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,1,0,1,1,1,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:1:{i:0;s:23:\"administer CiviCRM data\";}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,1,0,1,1,1,1,0,0,'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:1:{i:0;s:23:\"administer CiviCRM data\";}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,1,0,1,1,1,1,0,0,'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:1:{i:0;s:23:\"administer CiviCRM data\";}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,1,0,1,1,1,1,0,0,'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:1:{i:0;s:23:\"administer CiviCRM data\";}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,1,0,1,1,1,1,0,0,'a:0:{}'),
- (113,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,20,1,0,0,'a:2:{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\";}'),
- (114,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,21,1,0,0,'a:0:{}'),
- (115,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,22,1,0,0,'a:0:{}'),
- (116,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,23,1,0,0,'a:0:{}'),
- (117,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,24,1,0,0,'a:0:{}'),
- (118,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,25,1,0,0,'a:0:{}'),
- (119,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,0,1,0,0,'a:0:{}'),
- (120,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,30,1,0,0,'a:2:{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\";}'),
- (121,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,35,1,0,0,'a:2:{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\";}'),
- (122,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (123,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,45,1,0,0,'a:2:{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\";}'),
- (124,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,50,1,0,0,'a:2:{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\";}'),
- (125,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (126,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,60,1,0,0,'a:2:{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\";}'),
- (127,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (128,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,70,1,0,0,'a:2:{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\";}'),
- (129,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,75,1,0,0,'a:2:{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\";}'),
- (130,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,80,1,0,0,'a:2:{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\";}'),
- (131,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (132,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (133,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,1,1,0,0,'a:0:{}'),
- (134,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,100,1,0,0,'a:2:{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\";}'),
- (135,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
- (136,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,110,1,0,0,'a:2:{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\";}'),
- (137,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,10,1,0,0,'a:2:{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\";}'),
- (138,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (139,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,1,0,1,1,30,1,0,0,'a:2:{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\";}'),
- (140,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,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),
- (141,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";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,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (142,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,1,1,0,0,'a:0:{}'),
- (143,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,50,1,0,0,'a:2:{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\";}'),
- (144,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (145,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,70,1,0,0,'a:2:{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\";}'),
- (146,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (147,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (148,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (149,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
- (150,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (151,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (152,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (153,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'),
- (154,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
- (155,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),
- (156,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
- (157,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (158,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,10,1,0,0,'a:2:{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\";}'),
- (159,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:25:\"administer CiviCRM system\";}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,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (160,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:25:\"administer CiviCRM system\";}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,1,0,1,1,1,1,0,0,'a:0:{}'),
- (161,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:1:{i:0;s:25:\"administer CiviCRM system\";}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,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (162,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,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (163,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (164,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (165,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (166,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (167,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,80,1,0,0,'a:2:{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\";}'),
- (168,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (169,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (170,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (171,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,110,1,0,0,'a:2:{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\";}'),
- (172,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (173,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (174,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (175,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,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (176,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,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (177,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,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
- (178,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:25:\"administer CiviCRM system\";}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,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),
- (179,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:25:\"administer CiviCRM system\";}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,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (180,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:25:\"administer CiviCRM system\";}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,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
- (181,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,385,1,0,0,'a:2:{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\";}'),
- (182,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),
- (183,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,9000,1,1,0,'a:0:{}'),
- (184,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (185,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,1,0,1,0,1,1,3,0,'a:0:{}'),
- (186,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (187,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,1,0,1,1,380,1,0,0,'a:2:{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\";}'),
- (188,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,1,0,1,1,1,1,0,0,'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.\";}'),
- (189,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,1,0,1,1,1,1,0,0,'a:0:{}'),
- (190,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,1,0,1,1,1,1,0,0,'a:0:{}'),
- (191,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (192,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:16:\"access CiviEvent\";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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (193,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,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (194,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,1,0,1,0,610,1,1,0,'a:0:{}'),
- (195,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (196,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,399,1,0,0,'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\";}'),
- (197,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,1,0,1,1,1,1,0,0,'a:0:{}'),
- (198,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,1,1,1,0,0,1,0,0,'a:0:{}'),
- (199,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
- (200,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (201,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (202,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,1,0,1,0,0,1,0,0,'a:0:{}'),
- (203,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (204,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,1,0,1,1,1,1,0,0,'a:0:{}'),
- (205,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (206,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (207,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (208,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (209,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (210,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (211,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,1,0,1,0,9999,1,1,0,'a:0:{}'),
- (212,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (213,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (214,1,'civicrm/api',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:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (215,1,'civicrm/api3',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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (216,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (217,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (218,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (219,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\";}','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (220,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (221,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (222,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (223,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (224,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (225,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (226,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (227,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (228,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (229,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (230,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (231,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (232,1,'civicrm/dev/fake-error',NULL,'Fake Error','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:23:\"CRM_Core_Page_FakeError\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (238,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (239,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (240,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (241,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (242,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (243,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (244,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (245,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (246,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (247,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (248,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (249,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (250,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (251,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (252,1,'civicrm/ajax/api4',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Api4_Permission\";i:1;s:5:\"check\";}','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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (253,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (254,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,1,0,1,1,540,1,1,0,'a:0:{}'),
- (255,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (256,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,1,1,1,0,0,1,0,0,'a:0:{}'),
- (257,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,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
- (258,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
- (259,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (260,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,1,1,1,1,1,1,0,0,'a:0:{}'),
- (261,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,1,1,1,1,1,1,0,0,'a:0:{}'),
- (262,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\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;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,1,1,1,0,0,1,0,0,'a:0:{}'),
- (263,1,'civicrm/event/list',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:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;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,1,1,1,0,0,1,0,0,'a:0:{}'),
- (264,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,1,1,1,0,0,1,0,0,'a:0:{}'),
- (265,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,1,0,1,1,370,1,0,0,'a:2:{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\";}'),
- (266,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,1,0,1,1,375,1,0,0,'a:2:{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\";}'),
- (267,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,1,0,1,1,385,1,0,0,'a:2:{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\";}'),
- (268,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,1,0,1,1,390,1,0,0,'a:2:{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\";}'),
- (269,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,1,0,1,1,395,1,0,0,'a:2:{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\";}'),
- (270,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (271,1,'civicrm/admin/options/conference_slot',NULL,'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: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,1,0,1,1,415,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
- (272,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,1,0,1,0,810,1,1,0,'a:0:{}'),
- (273,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,1,0,1,1,820,1,1,0,'a:0:{}'),
- (274,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (275,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,1,0,1,1,910,1,0,0,'a:0:{}'),
- (276,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,1,0,1,1,930,1,0,0,'a:0:{}'),
- (277,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,1,0,1,1,920,1,0,0,'a:0:{}'),
- (278,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,1,0,1,1,930,1,0,0,'a:0:{}'),
- (279,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,1,0,1,1,940,1,0,0,'a:0:{}'),
- (280,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,1,0,1,1,950,1,0,0,'a:0:{}'),
- (281,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,1,0,1,1,960,1,0,0,'a:0:{}'),
- (282,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,1,0,1,1,950,1,0,0,'a:0:{}'),
- (283,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,1,0,1,0,830,1,0,0,'a:0:{}'),
- (284,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,1,0,1,0,840,1,1,0,'a:0:{}'),
- (285,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,1,0,1,0,850,1,1,0,'a:0:{}'),
- (286,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,1,1,1,0,880,1,1,0,'a:0:{}'),
- (287,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,1,1,1,0,890,1,1,0,'a:0:{}'),
- (288,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,1,0,1,0,4,1,0,0,'a:0:{}'),
- (289,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (290,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (291,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (292,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,450,1,0,0,'a:0:{}'),
- (293,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,1,1,1,0,0,1,0,0,'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,1,0,1,0,500,1,1,0,'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,1,0,1,0,1,1,1,0,'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,1,0,1,0,1,1,0,0,'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,1,1,1,1,0,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,360,1,0,0,'a:2:{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\";}'),
- (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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,400,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,410,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,420,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,430,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,430,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,440,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,460,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,470,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,480,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,1,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,365,1,0,0,'a:2:{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\";}'),
- (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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,580,1,0,0,'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,1,0,1,0,1,1,1,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,370,1,0,0,'a:2:{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\";}'),
- (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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,380,1,0,0,'a:2:{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\";}'),
- (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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,395,1,0,0,'a:2:{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\";}'),
- (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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
- (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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,510,1,1,0,'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,1,0,1,0,588,1,1,0,'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,1,0,1,0,520,1,1,0,'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,1,0,1,0,530,1,1,0,'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,1,0,1,0,0,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,581,1,0,0,'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,1,0,1,0,585,1,0,0,'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,1,0,1,0,586,1,0,0,'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,1,0,1,0,600,1,0,0,'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,1,0,1,0,610,1,0,0,'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,1,0,1,0,1,1,1,0,'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,1,0,1,1,1,1,0,0,'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,1,0,1,0,620,1,1,0,'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,1,0,1,0,630,1,1,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (342,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;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,1,1,1,0,0,1,0,0,'a:0:{}'),
- (343,1,'civicrm/contribute/task',NULL,'Contribution Task','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_Contribute_Controller_Task\";',NULL,'a:2:{i:0;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,1,0,1,0,1,1,0,0,'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,1,0,1,0,700,1,1,0,'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,1,0,1,0,1,1,0,0,'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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,370,1,0,0,'a:2:{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\";}'),
- (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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,380,1,0,0,'a:2:{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\";}'),
- (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,1,0,1,0,2,1,0,0,'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,1,0,1,0,390,1,0,0,'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,1,0,1,0,710,1,1,0,'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,1,0,1,0,720,1,1,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,1,1,1,0,0,'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,1,0,1,0,600,1,1,0,'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,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (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,1,0,1,1,410,1,0,0,'a:2:{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\";}'),
- (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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,415,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (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,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Configure email account setting.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
- (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,1,0,1,0,610,1,1,0,'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,1,0,1,0,620,1,1,0,'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,1,0,1,0,620,1,1,0,'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,1,0,1,0,625,1,1,0,'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,1,0,1,0,630,1,1,0,'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,1,1,1,0,640,1,0,0,'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,1,1,1,0,645,1,0,0,'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,1,1,1,0,650,1,0,0,'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,1,1,1,0,660,1,0,0,'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,1,1,1,0,660,1,0,0,'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,1,0,1,0,670,1,0,0,'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,1,0,1,0,680,1,0,0,'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,1,1,1,0,685,1,0,0,'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,1,0,1,0,690,1,0,0,'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,1,0,1,0,695,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,1,1,0,800,1,0,0,'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,1,0,1,0,850,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (379,1,'civicrm/ajax/setupMailAccount',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 CiviMail\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:5:\"setup\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
- (380,1,'civicrm/mailing/url',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:20:\"CRM_Mailing_Page_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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
- (381,1,'civicrm/mailing/open',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:21:\"CRM_Mailing_Page_Open\";',NULL,'a:2:{i:0;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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (382,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,1,0,1,0,550,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
- (383,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,1,0,1,0,560,1,1,0,'a:0:{}'),
- (384,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,1,0,1,0,570,1,0,0,'a:0:{}'),
- (385,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,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
- (386,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,1,0,1,0,580,1,0,0,'a:0:{}'),
- (387,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (388,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,1,0,1,0,900,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
- (389,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,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
- (390,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,1,0,1,0,910,1,1,0,'a:0:{}'),
- (391,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (392,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (393,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (394,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (395,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (396,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (397,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (398,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (399,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,380,1,0,0,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (400,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,1,0,1,1,390,1,0,0,'a:2:{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\";}'),
- (401,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,1,0,1,1,400,1,0,0,'a:2:{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\";}'),
- (402,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,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (403,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,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
- (404,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (405,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (406,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,1,0,1,0,1,1,3,0,'a:0:{}'),
- (407,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (408,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (409,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (410,1,'civicrm/case/email/add','action=add,task=email','Email','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_Task_Email\";',NULL,'a:2:{i:0;a: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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (411,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,1,0,1,0,1200,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'),
- (412,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (413,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,1,0,1,0,1220,1,1,0,'a:0:{}'),
- (414,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,1,0,1,0,1241,1,1,0,'a:0:{}'),
- (415,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,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:30:\"Register the Report templates.\";}'),
- (416,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (417,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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
- (418,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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
- (419,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
- (420,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (421,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (422,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (423,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (424,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,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (425,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,2,1,0,0,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (426,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,3,1,0,0,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (427,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,4,1,0,0,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (428,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (429,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
- (430,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (431,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (432,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (433,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (434,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (435,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (436,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (437,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (438,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (439,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,1,0,1,0,1,1,0,0,'a:0:{}'),
- (440,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor 4','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:33:\"CRM_Ckeditor4_Form_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,1,0,1,1,1,1,0,0,'a:0:{}'),
- (441,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (442,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (443,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (444,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,1,1,1,1,1,1,0,0,'a:0:{}'),
- (445,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (446,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,1,1,1,0,1,1,0,0,'a:0:{}'),
- (447,1,'civicrm/contact/search/custom',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:42:\"CRM_Legacycustomsearches_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,1,0,1,0,10,1,1,0,'a:0:{}'),
- (448,1,'civicrm/admin/setting/flexmailer',NULL,'Flexmailer Settings','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: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,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";}'),
- (449,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','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: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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:43:\"Configure anti-abuse/bot-prevention service\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
- (450,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:6:\"Manage\";a:2:{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\";N;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\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";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:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{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\";N;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\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:43:\"Configure anti-abuse/bot-prevention service\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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:46:\"/civicrm/admin/options/conference_slot?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:6:{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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}s:28:\"{weight}.Flexmailer Settings\";a:6:{s:5:\"title\";s:19:\"Flexmailer Settings\";s:4:\"desc\";N;s:2:\"id\";s:18:\"FlexmailerSettings\";s:3:\"url\";s:41:\"/civicrm/admin/setting/flexmailer?reset=1\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{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\";N;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\";N;s:5:\"extra\";N;}}}s:12:\"Option Lists\";a:2:{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\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{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\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{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\";N;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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{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\";N;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\";N;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\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}');
+ (1,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (2,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (3,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,1,0,1,0,0,1,0,0,'a:0:{}'),
+ (4,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (5,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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (6,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (7,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (8,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (9,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (10,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (11,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (12,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,1,0,1,0,9999,1,1,0,'a:0:{}'),
+ (13,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (14,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (15,1,'civicrm/api',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:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (16,1,'civicrm/api3',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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (17,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (18,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (19,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (20,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\";}','s:16:\"url=civicrm/api3\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (21,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (22,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (23,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (24,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (25,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (26,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (27,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (28,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (29,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (30,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (31,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (32,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (33,1,'civicrm/dev/fake-error',NULL,'Fake Error','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:23:\"CRM_Core_Page_FakeError\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (34,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (35,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (36,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (37,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (38,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (39,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (40,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (41,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (42,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (43,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (44,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (45,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (46,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (47,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (48,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (49,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (50,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (51,1,'civicrm/task/add-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\";}','s:26:\"CRM_Activity_Form_Activity\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (52,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:1:{i:0;s:23:\"administer CiviCRM data\";}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,1,0,1,1,10,1,0,0,'a:2:{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\";}'),
+ (53,1,'civicrm/admin/custom/group/edit',NULL,'Configure 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:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:21:\"CRM_Custom_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:11:\"Custom Data\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (54,1,'civicrm/admin/custom/group/preview',NULL,'Custom Field Preview','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 CiviCRM data\";}i:1;s:3:\"and\";}','s:23:\"CRM_Custom_Form_Preview\";',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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (55,1,'civicrm/admin/custom/group/delete',NULL,'Delete 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:23:\"administer CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteGroup\";',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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (56,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:1:{i:0;s:23:\"administer CiviCRM data\";}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,1,0,1,1,11,1,0,0,'a:0:{}'),
+ (57,1,'civicrm/admin/custom/group/field/delete',NULL,'Delete Custom Field','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 CiviCRM data\";}i:1;s:3:\"and\";}','s:27:\"CRM_Custom_Form_DeleteField\";',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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (58,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:1:{i:0;s:23:\"administer CiviCRM data\";}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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (59,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:1:{i:0;s:23:\"administer CiviCRM data\";}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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (60,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:1:{i:0;s:23:\"administer CiviCRM data\";}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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (61,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:1:{i:0;s:23:\"administer CiviCRM data\";}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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (62,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,20,1,0,0,'a:2:{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\";}'),
+ (63,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,21,1,0,0,'a:0:{}'),
+ (64,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,22,1,0,0,'a:0:{}'),
+ (65,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,23,1,0,0,'a:0:{}'),
+ (66,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,24,1,0,0,'a:0:{}'),
+ (67,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,25,1,0,0,'a:0:{}'),
+ (68,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,0,1,0,0,'a:0:{}'),
+ (69,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,30,1,0,0,'a:2:{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\";}'),
+ (70,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,35,1,0,0,'a:2:{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\";}'),
+ (71,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (72,1,'civicrm/admin/options/subtype/edit',NULL,'Edit Contact Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Admin_Form_ContactType\";',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:13:\"Contact Types\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (73,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,45,1,0,0,'a:2:{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\";}'),
+ (74,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,50,1,0,0,'a:2:{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\";}'),
+ (75,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,55,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (76,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,60,1,0,0,'a:2:{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\";}'),
+ (77,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,65,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (78,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,70,1,0,0,'a:2:{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\";}'),
+ (79,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,75,1,0,0,'a:2:{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\";}'),
+ (80,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,80,1,0,0,'a:2:{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\";}'),
+ (81,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (82,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,95,1,0,0,'a:1:{s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (83,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (84,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,100,1,0,0,'a:2:{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\";}'),
+ (85,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:18:\"Word Replacements.\";s:10:\"adminGroup\";s:26:\"Customize Data and Screens\";}'),
+ (86,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,110,1,0,0,'a:2:{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\";}'),
+ (87,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,10,1,0,0,'a:2:{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\";}'),
+ (88,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (89,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,1,0,1,1,30,1,0,0,'a:2:{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\";}'),
+ (90,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,1,0,1,1,262,1,0,0,'a:1:{s:4:\"desc\";s:26:\"Add/Edit Message Templates\";}'),
+ (91,1,'civicrm/admin/scheduleReminders',NULL,'Schedule Reminders','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:23:\"administer CiviCRM data\";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,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:19:\"Schedule Reminders.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (92,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (93,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,50,1,0,0,'a:2:{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\";}'),
+ (94,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,60,1,0,0,'a:2:{s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (95,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,70,1,0,0,'a:2:{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\";}'),
+ (96,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,75,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Options for Communication Style selection.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (97,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,80,1,0,0,'a:2:{s:4:\"desc\";s:75:\"Options for assigning email greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (98,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,90,1,0,0,'a:2:{s:4:\"desc\";s:76:\"Options for assigning postal greetings to individual and household contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (99,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:83:\"Options for assigning addressee to individual, household and organization contacts.\";s:10:\"adminGroup\";s:14:\"Communications\";}'),
+ (100,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,10,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (101,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (102,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,30,1,0,0,'a:1:{s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (103,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,40,1,0,0,'a:2:{s:4:\"desc\";s:30:\"Options for contact languages.\";s:10:\"adminGroup\";s:12:\"Localization\";}'),
+ (104,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,10,1,0,0,'a:2:{s:4:\"desc\";s:73:\"Grant or deny access to actions (view, edit...), features and components.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
+ (105,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,10,1,0,0,'a:1:{s:4:\"desc\";s:65:\"Grant access to CiviCRM components and other CiviCRM permissions.\";}'),
+ (106,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,20,1,0,0,'a:2:{s:4:\"desc\";s:71:\"Automatically create a CiviCRM contact record for each CMS user record.\";s:10:\"adminGroup\";s:21:\"Users and Permissions\";}'),
+ (107,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:55:\"List of configuration tasks with links to each setting.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (108,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,10,1,0,0,'a:2:{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\";}'),
+ (109,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:25:\"administer CiviCRM system\";}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,1,0,1,1,120,1,0,0,'a:2:{s:4:\"desc\";s:0:\"\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (110,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:25:\"administer CiviCRM system\";}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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (111,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:1:{i:0;s:25:\"administer CiviCRM system\";}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,1,0,1,1,20,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (112,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,1,0,1,1,30,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Payment Processor setup for CiviCRM transactions\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (113,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,40,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (114,1,'civicrm/admin/setting/misc',NULL,'Misc (Undelete, PDFs, Limits, Logging, etc.)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,50,1,0,0,'a:2:{s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (115,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,60,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (116,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,70,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (117,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,80,1,0,0,'a:2:{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\";}'),
+ (118,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,90,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (119,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,100,1,0,0,'a:2:{s:4:\"desc\";s:44:\"File Extensions that can be considered safe.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (120,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,105,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Access all meta-data option groups.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (121,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,110,1,0,0,'a:2:{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\";}'),
+ (122,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,120,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (123,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,130,1,0,0,'a:1:{s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (124,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,10,1,0,0,'a:3:{s:4:\"desc\";s:40:\"Configure global CiviCampaign behaviors.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (125,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,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:37:\"Configure global CiviEvent behaviors.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (126,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,1,0,1,1,430,1,0,0,'a:2:{s:4:\"desc\";s:36:\"Configure global CiviMail behaviors.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (127,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,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:38:\"Configure global CiviMember behaviors.\";s:10:\"adminGroup\";s:10:\"CiviMember\";}'),
+ (128,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:25:\"administer CiviCRM system\";}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,1,0,1,1,1,1,0,0,'a:1:{s:4:\"desc\";s:36:\"URL used for running scheduled jobs.\";}'),
+ (129,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:25:\"administer CiviCRM system\";}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,1,0,1,1,1370,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Managing periodially running tasks.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (130,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:25:\"administer CiviCRM system\";}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,1,0,1,1,1380,1,0,0,'a:2:{s:4:\"desc\";s:46:\"Browsing the log of periodially running tasks.\";s:10:\"adminGroup\";s:6:\"Manage\";}'),
+ (131,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,385,1,0,0,'a:2:{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\";}'),
+ (132,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,390,1,0,0,'a:1:{s:4:\"desc\";s:34:\"Payment Processor type information\";}'),
+ (133,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,9000,1,1,0,'a:0:{}'),
+ (134,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (135,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,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (136,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (137,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,1,0,1,1,380,1,0,0,'a:2:{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\";}'),
+ (138,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,1,0,1,1,1,1,0,0,'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.\";}'),
+ (139,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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (140,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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (141,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (142,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:16:\"access CiviEvent\";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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (143,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,1,0,1,1,500,1,0,0,'a:2:{s:4:\"desc\";s:27:\"To configure a sms provider\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (144,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,1,0,1,0,610,1,1,0,'a:0:{}'),
+ (145,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (146,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,399,1,0,0,'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\";}'),
+ (147,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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (148,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (149,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (150,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (151,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (152,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (153,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (154,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (155,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,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (156,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (157,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,1,0,1,0,0,1,0,0,'a:0:{}'),
+ (158,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,1,0,1,0,0,1,1,0,'a:0:{}'),
+ (159,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,1,0,1,0,10,1,1,0,'a:0:{}'),
+ (160,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (161,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (162,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (163,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,1,0,1,0,12,1,1,0,'a:0:{}'),
+ (164,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,1,0,1,0,14,1,1,0,'a:0:{}'),
+ (165,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (166,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (167,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (168,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (169,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (170,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (171,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (172,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (173,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (174,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (175,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (176,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (177,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (178,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (179,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (180,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (181,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (182,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (183,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (184,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (185,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (186,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (187,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (188,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (189,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (190,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,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (191,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (192,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (193,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (194,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,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (195,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (196,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (197,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,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (198,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (199,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (200,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (201,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (202,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (203,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (204,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (205,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (206,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (207,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (208,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:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (209,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,1,0,1,0,105,1,0,0,'a:2:{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\";}'),
+ (210,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (211,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (212,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (213,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,1,0,1,0,110,1,0,0,'a:1:{s:10:\"adminGroup\";s:6:\"Manage\";}'),
+ (214,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (215,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (216,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (217,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (218,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (219,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (220,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (221,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,1,0,1,0,30,1,1,0,'a:0:{}'),
+ (222,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,1,0,1,0,1,1,0,0,'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\";}'),
+ (223,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (224,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (225,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (226,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (227,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (228,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (229,1,'civicrm/ajax/api4',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Api4_Permission\";i:1;s:5:\"check\";}','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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (230,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (231,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,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (232,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (233,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,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (234,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,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (235,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (236,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (237,1,'civicrm/tag',NULL,'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: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,1,0,1,0,25,1,0,0,'a:2:{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\";}'),
+ (238,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:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (239,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:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (240,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (241,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,1,0,1,0,400,1,1,0,'a:0:{}'),
+ (242,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,1,0,1,0,410,1,1,0,'a:0:{}'),
+ (243,1,'civicrm/import/contact/summary',NULL,'Import 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:31:\"CRM_Contact_Import_Form_Summary\";',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:6:\"Import\";s:3:\"url\";s:23:\"/civicrm/import?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Import Contacts\";s:3:\"url\";s:31:\"/civicrm/import/contact?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,410,1,1,0,'a:0:{}'),
+ (244,1,'civicrm/import/outcome',NULL,'Import results','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_Import_Forms\";i:1;s:9:\"outputCSV\";}',NULL,'a:2:{i:0;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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (245,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,1,0,1,0,420,1,1,0,'a:0:{}'),
+ (246,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,1,0,1,0,420,1,1,0,'a:0:{}'),
+ (247,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (248,1,'civicrm/import/datasource',NULL,'Import','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_Import_Form_DataSourceConfig\";',NULL,'a:2:{i:0;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,1,0,1,0,450,1,1,0,'a:0:{}'),
+ (249,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (250,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (251,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (252,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,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (253,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (254,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (255,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,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
+ (256,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'),
+ (257,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (258,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,1,1,1,1,1,1,0,0,'a:0:{}'),
+ (259,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,1,1,1,1,1,1,0,0,'a:0:{}'),
+ (260,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\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;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,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (261,1,'civicrm/event/list',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:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;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,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (262,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,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (263,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,1,0,1,1,370,1,0,0,'a:2:{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\";}'),
+ (264,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,1,0,1,1,375,1,0,0,'a:2:{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\";}'),
+ (265,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,1,0,1,1,385,1,0,0,'a:2:{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\";}'),
+ (266,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,1,0,1,1,390,1,0,0,'a:2:{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\";}'),
+ (267,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,1,0,1,1,395,1,0,0,'a:2:{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\";}'),
+ (268,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (269,1,'civicrm/admin/options/conference_slot',NULL,'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: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,1,0,1,1,415,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'),
+ (270,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,1,0,1,0,810,1,1,0,'a:0:{}'),
+ (271,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,1,0,1,1,820,1,1,0,'a:0:{}'),
+ (272,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (273,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,1,0,1,1,910,1,0,0,'a:0:{}'),
+ (274,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,1,0,1,1,930,1,0,0,'a:0:{}'),
+ (275,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,1,0,1,1,920,1,0,0,'a:0:{}'),
+ (276,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,1,0,1,1,930,1,0,0,'a:0:{}'),
+ (277,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,1,0,1,1,940,1,0,0,'a:0:{}'),
+ (278,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,1,0,1,1,950,1,0,0,'a:0:{}'),
+ (279,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,1,0,1,1,960,1,0,0,'a:0:{}'),
+ (280,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,1,0,1,1,950,1,0,0,'a:0:{}'),
+ (281,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,1,0,1,0,830,1,0,0,'a:0:{}'),
+ (282,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,1,0,1,0,840,1,1,0,'a:0:{}'),
+ (283,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,1,0,1,0,850,1,1,0,'a:0:{}'),
+ (284,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,1,1,1,0,880,1,1,0,'a:0:{}'),
+ (285,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,1,1,1,0,890,1,1,0,'a:0:{}'),
+ (286,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,1,0,1,0,4,1,0,0,'a:0:{}'),
+ (287,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (288,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (289,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (290,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,1,0,1,1,540,1,1,0,'a:0:{}'),
+ (291,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (292,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,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (293,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,1,0,1,0,500,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (294,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,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (295,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (296,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,1,1,1,1,0,1,0,0,'a:0:{}'),
+ (297,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,360,1,0,0,'a:2:{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\";}'),
+ (298,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,400,1,0,0,'a:0:{}'),
+ (299,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,410,1,0,0,'a:0:{}'),
+ (300,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,420,1,0,0,'a:0:{}'),
+ (301,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,430,1,0,0,'a:0:{}'),
+ (302,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,430,1,0,0,'a:0:{}'),
+ (303,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,440,1,0,0,'a:0:{}'),
+ (304,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,460,1,0,0,'a:0:{}'),
+ (305,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,470,1,0,0,'a:0:{}'),
+ (306,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,480,1,0,0,'a:0:{}'),
+ (307,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (308,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,365,1,0,0,'a:2:{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\";}'),
+ (309,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (310,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,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (311,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,370,1,0,0,'a:2:{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\";}'),
+ (312,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,380,1,0,0,'a:2:{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\";}'),
+ (313,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,395,1,0,0,'a:2:{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\";}'),
+ (314,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (315,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (316,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (317,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (318,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,1,0,1,0,510,1,1,0,'a:0:{}'),
+ (319,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,1,0,1,0,588,1,1,0,'a:0:{}'),
+ (320,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,1,0,1,0,520,1,1,0,'a:0:{}'),
+ (321,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,1,0,1,0,530,1,1,0,'a:0:{}'),
+ (322,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,1,0,1,0,0,1,0,0,'a:0:{}'),
+ (323,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (324,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (325,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (326,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (327,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (328,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (329,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,581,1,0,0,'a:0:{}'),
+ (330,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,1,0,1,0,585,1,0,0,'a:0:{}'),
+ (331,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,1,0,1,0,586,1,0,0,'a:0:{}'),
+ (332,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,1,0,1,0,600,1,0,0,'a:0:{}'),
+ (333,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,1,0,1,0,610,1,0,0,'a:0:{}'),
+ (334,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,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (335,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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'),
+ (336,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,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (337,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,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'),
+ (338,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (339,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (340,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (341,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;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,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (342,1,'civicrm/contribute/task',NULL,'Contribution Task','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_Contribute_Controller_Task\";',NULL,'a:2:{i:0;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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (343,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,450,1,0,0,'a:0:{}'),
+ (344,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,1,1,1,0,0,1,0,0,'a:0:{}'),
+ (345,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,1,0,1,0,700,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
+ (346,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:10:\"CiviMember\";}'),
+ (347,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,370,1,0,0,'a:2:{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\";}'),
+ (348,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,380,1,0,0,'a:2:{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\";}'),
+ (349,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,1,0,1,0,2,1,0,0,'a:0:{}'),
+ (350,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,1,0,1,0,390,1,0,0,'a:0:{}'),
+ (351,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,1,0,1,0,710,1,1,0,'a:0:{}'),
+ (352,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,1,0,1,0,720,1,1,0,'a:0:{}'),
+ (353,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (354,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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (355,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,1,0,1,0,600,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'),
+ (356,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,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (357,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,1,0,1,1,410,1,0,0,'a:2:{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\";}'),
+ (358,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,415,1,0,0,'a:2:{s:4:\"desc\";s:74:\"List of Email Addresses which can be used when sending emails to contacts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (359,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,1,0,1,1,420,1,0,0,'a:2:{s:4:\"desc\";s:32:\"Configure email account setting.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'),
+ (360,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,1,0,1,0,610,1,1,0,'a:0:{}'),
+ (361,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,1,0,1,0,620,1,1,0,'a:0:{}'),
+ (362,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,1,0,1,0,620,1,1,0,'a:0:{}'),
+ (363,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,1,0,1,0,625,1,1,0,'a:0:{}'),
+ (364,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,1,0,1,0,630,1,1,0,'a:0:{}'),
+ (365,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,1,1,1,0,640,1,0,0,'a:0:{}'),
+ (366,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,1,1,1,0,645,1,0,0,'a:0:{}'),
+ (367,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,1,1,1,0,650,1,0,0,'a:0:{}'),
+ (368,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,1,1,1,0,660,1,0,0,'a:0:{}'),
+ (369,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,1,1,1,0,660,1,0,0,'a:0:{}'),
+ (370,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,1,0,1,0,670,1,0,0,'a:0:{}'),
+ (371,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,1,0,1,0,680,1,0,0,'a:0:{}'),
+ (372,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,1,1,1,0,685,1,0,0,'a:0:{}'),
+ (373,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,1,0,1,0,690,1,0,0,'a:0:{}'),
+ (374,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,1,0,1,0,695,1,0,0,'a:0:{}'),
+ (375,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (376,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,1,1,1,0,800,1,0,0,'a:0:{}'),
+ (377,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,1,0,1,0,850,1,0,0,'a:0:{}'),
+ (378,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (379,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (380,1,'civicrm/ajax/setupMailAccount',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 CiviMail\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:5:\"setup\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (381,1,'civicrm/mailing/url',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:20:\"CRM_Mailing_Page_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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (382,1,'civicrm/mailing/open',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:21:\"CRM_Mailing_Page_Open\";',NULL,'a:2:{i:0;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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (383,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,1,0,1,0,550,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
+ (384,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,1,0,1,0,560,1,1,0,'a:0:{}'),
+ (385,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,1,0,1,0,570,1,0,0,'a:0:{}'),
+ (386,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,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'),
+ (387,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,1,0,1,0,580,1,0,0,'a:0:{}'),
+ (388,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (389,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,1,0,1,0,900,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
+ (390,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,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'),
+ (391,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,1,0,1,0,910,1,1,0,'a:0:{}'),
+ (392,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (393,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (394,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (395,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (396,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (397,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (398,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (399,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (400,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,380,1,0,0,'a:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (401,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,1,0,1,1,390,1,0,0,'a:2:{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\";}'),
+ (402,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,1,0,1,1,400,1,0,0,'a:2:{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\";}'),
+ (403,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,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (404,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,1,0,1,1,400,1,0,0,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'),
+ (405,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (406,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (407,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,1,0,1,0,1,1,3,0,'a:0:{}'),
+ (408,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (409,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (410,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (411,1,'civicrm/case/email/add','action=add,task=email','Email','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_Task_Email\";',NULL,'a:2:{i:0;a: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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1200,1,1,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,0,1220,1,1,0,'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,1,0,1,0,1241,1,1,0,'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,1,0,1,1,1,1,0,0,'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,1,0,1,0,1,1,0,0,'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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
+ (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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
+ (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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'),
+ (421,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (422,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (423,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (424,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (425,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,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (426,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,2,1,0,0,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (427,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,3,1,0,0,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (428,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:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;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,1,0,1,1,4,1,0,0,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (429,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (430,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,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'),
+ (431,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (432,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (433,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (434,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (435,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (436,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (437,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (438,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (439,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (440,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,1,0,1,0,1,1,0,0,'a:0:{}'),
+ (441,1,'civicrm/admin/ckeditor',NULL,'Configure CKEditor 4','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:33:\"CRM_Ckeditor4_Form_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,1,0,1,1,1,1,0,0,'a:0:{}'),
+ (442,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (443,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (444,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (445,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,1,1,1,1,1,1,0,0,'a:0:{}'),
+ (446,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (447,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,1,1,1,0,1,1,0,0,'a:0:{}'),
+ (448,1,'civicrm/contact/search/custom',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:42:\"CRM_Legacycustomsearches_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,1,0,1,0,10,1,1,0,'a:0:{}'),
+ (449,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: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:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:38:\"/civicrm/contact/search/custom?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,16,1,1,0,'a:0:{}'),
+ (450,1,'civicrm/admin/setting/flexmailer',NULL,'Flexmailer Settings','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: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,1,0,1,1,1,1,0,0,'a:2:{s:10:\"adminGroup\";s:8:\"CiviMail\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";}'),
+ (451,1,'civicrm/admin/setting/recaptcha',NULL,'reCAPTCHA Settings','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: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,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:43:\"Configure anti-abuse/bot-prevention service\";s:10:\"adminGroup\";s:15:\"System Settings\";}'),
+ (452,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";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:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"Communications\";a:2:{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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}}}s:12:\"Localization\";a:2:{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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}}}s:21:\"Users and Permissions\";a:2:{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\";N;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\";N;s:5:\"extra\";N;}}}s:15:\"System Settings\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}s:53:\"{weight}.Misc (Undelete, PDFs, Limits, Logging, etc.)\";a:6:{s:5:\"title\";s:44:\"Misc (Undelete, PDFs, Limits, Logging, etc.)\";s:4:\"desc\";s:63:\"Enable undelete/move to trash feature, detailed change logging.\";s:2:\"id\";s:38:\"Misc_Undelete_PDFs_Limits_Logging_etc.\";s:3:\"url\";s:35:\"/civicrm/admin/setting/misc?reset=1\";s:4:\"icon\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}s:27:\"{weight}.reCAPTCHA Settings\";a:6:{s:5:\"title\";s:18:\"reCAPTCHA Settings\";s:4:\"desc\";s:43:\"Configure anti-abuse/bot-prevention service\";s:2:\"id\";s:17:\"reCAPTCHASettings\";s:3:\"url\";s:40:\"/civicrm/admin/setting/recaptcha?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:12:\"CiviCampaign\";a:2:{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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}}}s:9:\"CiviEvent\";a:2:{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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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:46:\"/civicrm/admin/options/conference_slot?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviMail\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:6:{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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}s:28:\"{weight}.Flexmailer Settings\";a:6:{s:5:\"title\";s:19:\"Flexmailer Settings\";s:4:\"desc\";N;s:2:\"id\";s:18:\"FlexmailerSettings\";s:3:\"url\";s:41:\"/civicrm/admin/setting/flexmailer?reset=1\";s:4:\"icon\";s:23:\"admin/small/Profile.png\";s:5:\"extra\";N;}}}s:10:\"CiviMember\";a:2:{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\";N;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\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{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\";N;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\";N;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:12:\"Option Lists\";a:2:{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\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{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\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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\";N;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:8:\"CiviCase\";a:2:{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\";N;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\";N;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\";N;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\";N;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\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{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\";N;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\";N;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\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}');
 /*!40000 ALTER TABLE `civicrm_menu` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -5225,54 +5483,54 @@ INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`
  (2,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n  {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n  {capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n  {capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n    <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Activity Summary{/ts} - {$activityTypeName}\n              </th>\n            </tr>\n            {if !empty($isCaseActivity)}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Your Case Role(s){/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$contact.role|default:\'\'}\n                </td>\n              </tr>\n              {if !empty($manageCaseURL)}\n                <tr>\n                  <td colspan=\"2\" {$valueStyle}>\n                    <a href=\"{$manageCaseURL}\" title=\"{ts}Manage Case{/ts}\">{ts}Manage Case{/ts}</a>\n                  </td>\n                </tr>\n              {/if}\n            {/if}\n            {if !empty($editActURL)}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <a href=\"{$editActURL}\" title=\"{ts}Edit activity{/ts}\">{ts}Edit activity{/ts}</a>\n                </td>\n              </tr>\n            {/if}\n            {if !empty($viewActURL)}\n              <tr>\n                <td colspan=\"2\" {$valueStyle}>\n                  <a href=\"{$viewActURL}\" title=\"{ts}View activity{/ts}\">{ts}View activity{/ts}</a>\n                </td>\n              </tr>\n            {/if}\n            {foreach from=$activity.fields item=field}\n              <tr>\n                <td {$labelStyle}>\n                  {$field.label}\n                </td>\n                <td {$valueStyle}>\n                  {if $field.type eq \'Date\'}\n                    {$field.value|crmDate:$config->dateformatDatetime}\n                  {else}\n                    {$field.value}\n                  {/if}\n                </td>\n              </tr>\n            {/foreach}\n\n            {if !empty($activity.customGroups)}\n              {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n                <tr>\n                  <th {$headerStyle}>\n                    {$customGroupName}\n                  </th>\n                </tr>\n                {foreach from=$customGroup item=field}\n                  <tr>\n                    <td {$labelStyle}>\n                      {$field.label}\n                    </td>\n                    <td {$valueStyle}>\n                      {if $field.type eq \'Date\'}\n                        {$field.value|crmDate:$config->dateformatDatetime}\n                      {else}\n                        {$field.value}\n                      {/if}\n                    </td>\n                  </tr>\n                {/foreach}\n              {/foreach}\n            {/if}\n          </table>\n        </td>\n      </tr>\n    </table>\n</body>\n</html>\n',1,813,'case_activity',0,1,0,NULL),
  (3,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n    <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfName}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Email{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfEmail}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Contact ID{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfID}\n      </td>\n     </tr>\n    </table>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n   </td>\n  </tr>\n  {if $receiptMessage}\n   <tr>\n    <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts}Copy of Contribution Receipt{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {* FIXME: the below is most probably not HTML-ised *}\n        {$receiptMessage}\n       </td>\n      </tr>\n     </table>\n    </td>\n   </tr>\n  {/if}\n </table>\n</body>\n</html>\n',1,814,'contribution_dupalert',1,0,0,NULL),
  (4,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n    <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfName}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Email{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfEmail}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Organization Contact ID{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$onBehalfID}\n      </td>\n     </tr>\n    </table>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n   </td>\n  </tr>\n  {if $receiptMessage}\n   <tr>\n    <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts}Copy of Contribution Receipt{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {* FIXME: the below is most probably not HTML-ised *}\n        {$receiptMessage}\n       </td>\n      </tr>\n     </table>\n    </td>\n   </tr>\n  {/if}\n </table>\n</body>\n</html>\n',1,814,'contribution_dupalert',0,1,0,NULL),
- (5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{if !empty($formValues.receipt_text)}\n{$formValues.receipt_text}\n{else}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else}                  {/if} {/if}   {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n{ts}Amount before Tax{/ts} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Date Received{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($formValues.receipt_text)}\n     <p>{$formValues.receipt_text|htmlize}</p>\n    {else}\n     <p>{ts}Below you will find a receipt for this contribution.{/ts}</p>\n    {/if}\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Contribution Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contributor Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {contact.display_name}\n      </td>\n     </tr>\n     <tr>\n      {if \'{contribution.financial_type_id}\'}\n        <td {$labelStyle}>\n         {ts}Financial Type{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.financial_type_id:label}\n        </td>\n      {/if}\n     </tr>\n\n     {if $isShowLineItems}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <table>\n          <tr>\n           <th>{ts}Item{/ts}</th>\n           <th>{ts}Qty{/ts}</th>\n           <th>{ts}Each{/ts}</th>\n           {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n           {/if}\n           <th>{ts}Total{/ts}</th>\n          </tr>\n          {foreach from=$lineItems item=line}\n           <tr>\n            <td>\n              {$line.title}\n            </td>\n            <td>\n             {$line.qty}\n            </td>\n            <td>\n             {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n            </td>\n            {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n              <td>\n                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                  {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                </td>\n              {else}\n                <td></td>\n                <td></td>\n              {/if}\n            {/if}\n            <td>\n             {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n            </td>\n           </tr>\n          {/foreach}\n         </table>\n        </td>\n       </tr>\n\n     {/if}\n     {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n       <tr>\n         <td {$labelStyle}>\n           {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n           {$formValues.total_amount-$totalTaxAmount|crmMoney:\'{contribution.currency}\'}\n         </td>\n       </tr>\n\n       {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n         <tr>\n          <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n          <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if $isShowTax}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.tax_amount}\n        </td>\n      </tr>\n     {/if}\n\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n        {contribution.total_amount}\n      </td>\n     </tr>\n\n     {if \'{contribution.receive_date}\'}\n       <tr>\n       <td {$labelStyle}>\n        {ts}Date Received{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receive_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n      {if \'{contribution.receipt_date}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Receipt Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receipt_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n     {if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Paid By{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.payment_instrument_id:label}\n       </td>\n      </tr>\n      {if \'{contribution.check_number}\'}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.check_number}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if \'{contribution.trxn_id}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction ID{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($ccContribution)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$billingName}<br />\n        {$address|nl2br}\n       </td>\n      </tr>\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($formValues.product_name)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$formValues.product_name}\n       </td>\n      </tr>\n      {if $formValues.product_option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_option}\n        </td>\n       </tr>\n      {/if}\n      {if $formValues.product_sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_sku}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($fulfilled_date)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Sent{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$fulfilled_date|truncate:10:\'\'|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,815,'contribution_offline_receipt',1,0,0,NULL),
- (6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{if !empty($formValues.receipt_text)}\n{$formValues.receipt_text}\n{else}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else}                  {/if} {/if}   {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n{ts}Amount before Tax{/ts} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Date Received{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($formValues.receipt_text)}\n     <p>{$formValues.receipt_text|htmlize}</p>\n    {else}\n     <p>{ts}Below you will find a receipt for this contribution.{/ts}</p>\n    {/if}\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Contribution Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contributor Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {contact.display_name}\n      </td>\n     </tr>\n     <tr>\n      {if \'{contribution.financial_type_id}\'}\n        <td {$labelStyle}>\n         {ts}Financial Type{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.financial_type_id:label}\n        </td>\n      {/if}\n     </tr>\n\n     {if $isShowLineItems}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <table>\n          <tr>\n           <th>{ts}Item{/ts}</th>\n           <th>{ts}Qty{/ts}</th>\n           <th>{ts}Each{/ts}</th>\n           {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n           {/if}\n           <th>{ts}Total{/ts}</th>\n          </tr>\n          {foreach from=$lineItems item=line}\n           <tr>\n            <td>\n              {$line.title}\n            </td>\n            <td>\n             {$line.qty}\n            </td>\n            <td>\n             {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n            </td>\n            {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n              <td>\n                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                  {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                </td>\n              {else}\n                <td></td>\n                <td></td>\n              {/if}\n            {/if}\n            <td>\n             {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n            </td>\n           </tr>\n          {/foreach}\n         </table>\n        </td>\n       </tr>\n\n     {/if}\n     {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n       <tr>\n         <td {$labelStyle}>\n           {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n           {$formValues.total_amount-$totalTaxAmount|crmMoney:\'{contribution.currency}\'}\n         </td>\n       </tr>\n\n       {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n         <tr>\n          <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n          <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if $isShowTax}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.tax_amount}\n        </td>\n      </tr>\n     {/if}\n\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n        {contribution.total_amount}\n      </td>\n     </tr>\n\n     {if \'{contribution.receive_date}\'}\n       <tr>\n       <td {$labelStyle}>\n        {ts}Date Received{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receive_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n      {if \'{contribution.receipt_date}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Receipt Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receipt_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n     {if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Paid By{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.payment_instrument_id:label}\n       </td>\n      </tr>\n      {if \'{contribution.check_number}\'}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.check_number}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if \'{contribution.trxn_id}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction ID{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($ccContribution)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$billingName}<br />\n        {$address|nl2br}\n       </td>\n      </tr>\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($formValues.product_name)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$formValues.product_name}\n       </td>\n      </tr>\n      {if $formValues.product_option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_option}\n        </td>\n       </tr>\n      {/if}\n      {if $formValues.product_sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_sku}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($fulfilled_date)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Sent{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$fulfilled_date|truncate:10:\'\'|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,815,'contribution_offline_receipt',0,1,0,NULL),
- (7,'Contributions - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $amount}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if !empty($dataArray)}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax{/ts}: {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney:$currency}\n{else}\n{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or Email*}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium )}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if !empty($is_deductible) AND !empty($price)}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n     {if $amount}\n\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Contribution Information{/ts}\n       </th>\n      </tr>\n\n      {if $isShowLineItems}\n\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Qty{/ts}</th>\n            <th>{ts}Each{/ts}</th>\n            {if !empty($dataArray)}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n            {/if}\n            <th>{ts}Total{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n             </td>\n             <td>\n              {$line.qty}\n             </td>\n             <td>\n              {$line.unit_price|crmMoney:$currency}\n             </td>\n             {if !empty($getTaxDetails)}\n              <td>\n               {$line.unit_price*$line.qty|crmMoney:$currency}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n               <td>\n                {$line.tax_rate|string_format:\"%.2f\"}%\n               </td>\n               <td>\n                {$line.tax_amount|crmMoney:$currency}\n               </td>\n              {else}\n               <td></td>\n               <td></td>\n              {/if}\n             {/if}\n             <td>\n              {$line.line_total+$line.tax_amount|crmMoney:$currency}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       {if !empty($dataArray)}\n        <tr>\n         <td {$labelStyle}>\n          {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n          {$amount-$totalTaxAmount|crmMoney:$currency}\n         </td>\n        </tr>\n\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n          {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n          {else}\n           <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n          {/if}\n         </tr>\n        {/foreach}\n\n       {/if}\n       {if $isShowTax}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Total Tax{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalTaxAmount|crmMoney:$currency}\n         </td>\n        </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney:$currency}\n        </td>\n       </tr>\n\n      {else}\n\n      {if !empty($totalTaxAmount)}\n         <tr>\n           <td {$labelStyle}>\n             {ts}Total Tax Amount{/ts}\n           </td>\n           <td {$valueStyle}>\n             {contribution.tax_amount|crmMoney}\n           </td>\n         </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney:$currency} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n     {/if}\n\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($is_monetary) and !empty($trxn_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($is_recur)}\n      <tr>\n        <td  colspan=\"2\" {$labelStyle}>\n          {ts}This is a recurring contribution.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n      {elseif !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($isShare)}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n            {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n            {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n        </td>\n      </tr>\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n     {elseif !empty($email)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Registered Email{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$email}\n        </td>\n       </tr>\n     {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($is_deductible) AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,816,'contribution_online_receipt',1,0,0,NULL),
- (8,'Contributions - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $amount}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if !empty($dataArray)}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax{/ts}: {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney:$currency}\n{else}\n{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or Email*}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium )}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if !empty($is_deductible) AND !empty($price)}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n     {if $amount}\n\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Contribution Information{/ts}\n       </th>\n      </tr>\n\n      {if $isShowLineItems}\n\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Qty{/ts}</th>\n            <th>{ts}Each{/ts}</th>\n            {if !empty($dataArray)}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n            {/if}\n            <th>{ts}Total{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n             </td>\n             <td>\n              {$line.qty}\n             </td>\n             <td>\n              {$line.unit_price|crmMoney:$currency}\n             </td>\n             {if !empty($getTaxDetails)}\n              <td>\n               {$line.unit_price*$line.qty|crmMoney:$currency}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n               <td>\n                {$line.tax_rate|string_format:\"%.2f\"}%\n               </td>\n               <td>\n                {$line.tax_amount|crmMoney:$currency}\n               </td>\n              {else}\n               <td></td>\n               <td></td>\n              {/if}\n             {/if}\n             <td>\n              {$line.line_total+$line.tax_amount|crmMoney:$currency}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       {if !empty($dataArray)}\n        <tr>\n         <td {$labelStyle}>\n          {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n          {$amount-$totalTaxAmount|crmMoney:$currency}\n         </td>\n        </tr>\n\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n          {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n          {else}\n           <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n          {/if}\n         </tr>\n        {/foreach}\n\n       {/if}\n       {if $isShowTax}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Total Tax{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalTaxAmount|crmMoney:$currency}\n         </td>\n        </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney:$currency}\n        </td>\n       </tr>\n\n      {else}\n\n      {if !empty($totalTaxAmount)}\n         <tr>\n           <td {$labelStyle}>\n             {ts}Total Tax Amount{/ts}\n           </td>\n           <td {$valueStyle}>\n             {contribution.tax_amount|crmMoney}\n           </td>\n         </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney:$currency} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n     {/if}\n\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($is_monetary) and !empty($trxn_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($is_recur)}\n      <tr>\n        <td  colspan=\"2\" {$labelStyle}>\n          {ts}This is a recurring contribution.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n      {elseif !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($isShare)}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n            {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n            {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n        </td>\n      </tr>\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n     {elseif !empty($email)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Registered Email{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$email}\n        </td>\n       </tr>\n     {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($is_deductible) AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,816,'contribution_online_receipt',0,1,0,NULL),
- (9,'Contributions - Invoice','{if $title}\n  {if $component}\n    {if $component == \'event\'}\n      {ts 1=$title}Event Registration Invoice: %1{/ts}\n    {else}\n      {ts 1=$title}Contribution Invoice: %1{/ts}\n    {/if}\n  {/if}\n{else}\n  {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <title></title>\n  </head>\n  <body>\n  <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n    {if $config->empoweredBy}\n      <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n    <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n        <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n        <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n        <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n      </tr>\n    </table>\n\n    <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n      </tr>\n      {foreach from=$lineItem item=value key=priceset name=taxpricevalue}\n        <tr>\n          <td style=\"text-align:left;nowrap\"><font size=\"1\">\n            {if $value.html_type eq \'Text\'}\n              {$value.label}\n            {else}\n              {$value.field_title} - {$value.label}\n            {/if}\n            {if $value.description}\n              <div>{$value.description|truncate:30:\"...\"}</div>\n            {/if}\n          </font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$value.qty}</font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$value.unit_price|crmMoney:$currency}</font></td>\n          {if $value.tax_amount != \'\'}\n            <td style=\"text-align:right;\"><font size=\"1\">{if $value.tax_rate}{$value.tax_rate}%{/if}</font></td>\n          {else}\n            <td style=\"text-align:right;\"><font size=\"1\">{if $taxTerm}{ts 1=$taxTerm}-{/ts}{/if}</font></td>\n          {/if}\n          <td style=\"text-align:right;\"><font size=\"1\">{$value.subTotal|crmMoney:$currency}</font></td>\n        </tr>\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n      </tr>\n      {if !empty($dataArray)}\n        {foreach from=$dataArray item=value key=priceset}\n          <tr>\n            <td colspan=\"3\"></td>\n            {if $priceset}\n              <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if $taxTerm}{ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}{/if}</font></td>\n              <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$value|crmMoney:$currency}</font> </td>\n            {elseif $priceset == 0}\n              <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if $taxTerm}{ts 1=$taxTerm}TOTAL %1{/ts}{/if}</font></td>\n              <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$value|crmMoney:$currency}</font> </td>\n            {/if}\n          </tr>\n        {/foreach}\n      {/if}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n          {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n            {ts}Amount Credited{/ts}\n          {else}\n            {ts}Amount Paid{/ts}\n          {/if}\n        </font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td colspan=\"2\"><hr></hr></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n      </tr>\n      <tr>\n        <td colspan=\"5\"></td>\n      </tr>\n      {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n        <tr>\n          <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n          <td colspan=\"2\"></td>\n        </tr>\n      {/if}\n    </table>\n\n    {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n      <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n        </tr>\n      </table>\n\n      <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n        <tr>\n          <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n            <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n              {domain.name}<br />\n              {domain.street_address} {domain.supplemental_address_1}<br />\n              {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n              {domain.city} {domain.postal_code}<br />\n              {domain.country_id:label}<br />\n              {domain.email}</div>\n              {domain.phone}<br />\n            </font>\n            <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n          </td>\n          <td width=\"40%\">\n            <table cellpadding=\"5\" cellspacing=\"0\"  width=\"100%\" border=\"0\">\n              <tr>\n                <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n                <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n              </tr>\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n              </tr>\n              <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n              {if $is_pay_later == 1}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n                </tr>\n              {else}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n                </tr>\n              {/if}\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n              </tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    {/if}\n\n    {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n    {if $config->empoweredBy}\n      <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n\n    <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n      <tr>\n        <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n         </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address}   {$supplemental_address_1}</font></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2}  {$stateProvinceAbbreviation}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.country_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.email}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.phone}\n        </font></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td colspan=\"2\">\n          <table>\n            <tr>\n              <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n            </tr>\n            {foreach from=$lineItem item=value key=priceset name=pricevalue}\n              {if $smarty.foreach.pricevalue.index eq 0}\n                <tr><td colspan=\"5\"><hr size=\"3\" style=\"color:#000;\"></hr></td></tr>\n              {else}\n                <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n              {/if}\n              <tr>\n                <td style =\"text-align:left;\"  ><font size=\"1\">\n                  {if $value.html_type eq \'Text\'}\n                    {$value.label}\n                  {else}\n                    {$value.field_title} - {$value.label}\n                  {/if}\n                  {if $value.description}\n                    <div>{$value.description|truncate:30:\"...\"}</div>\n                  {/if}\n                </font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$value.qty}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$value.unit_price|crmMoney:$currency}</font></td>\n                {if $value.tax_amount != \'\'}\n                  <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $value.tax_rate}{$value.tax_rate}%{/if}</font></td>\n                {else}\n                  <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if $taxTerm}{ts 1=$taxTerm}No %1{/ts}{/if}</font></td>\n                {/if}\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$value.subTotal|crmMoney:$currency}</font></td>\n              </tr>\n            {/foreach}\n            <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n            </tr>\n            {if !empty($dataArray)}\n              {foreach from=$dataArray item=value key=priceset}\n                <tr>\n                  <td colspan=\"3\"></td>\n                  {if $priceset}\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $taxTerm}{ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$value|crmMoney:$currency}</font> </td>\n                  {elseif $priceset == 0}\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $taxTerm}{ts 1=$taxTerm}TOTAL NO %1{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$value|crmMoney:$currency}</font> </td>\n                  {/if}\n                </tr>\n              {/foreach}\n            {/if}\n            <tr>\n              <td colspan=\"3\"></td>\n              <td colspan=\"2\"><hr></hr></td>\n            </tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n            {if \'{contribution.is_pay_later}\' == 0}\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td colspan=\"2\"><hr></hr></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n                <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n              </tr>\n            {/if}\n            <br/><br/><br/>\n            <tr>\n              <td colspan=\"3\"></td>\n            </tr>\n            <tr>\n              <td></td>\n              <td colspan=\"3\"></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n\n    <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n      <tr>\n        <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n        <td width=\"40%\">\n          <table align=\"right\">\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n            </tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n            </tr>\n            <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n              <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n  {/if}\n\n  </div>\n  </body>\n</html>\n',1,817,'contribution_invoice_receipt',1,0,0,NULL),
- (10,'Contributions - Invoice','{if $title}\n  {if $component}\n    {if $component == \'event\'}\n      {ts 1=$title}Event Registration Invoice: %1{/ts}\n    {else}\n      {ts 1=$title}Contribution Invoice: %1{/ts}\n    {/if}\n  {/if}\n{else}\n  {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <title></title>\n  </head>\n  <body>\n  <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n    {if $config->empoweredBy}\n      <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n    <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n        <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n        <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n        <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n      </tr>\n    </table>\n\n    <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n      </tr>\n      {foreach from=$lineItem item=value key=priceset name=taxpricevalue}\n        <tr>\n          <td style=\"text-align:left;nowrap\"><font size=\"1\">\n            {if $value.html_type eq \'Text\'}\n              {$value.label}\n            {else}\n              {$value.field_title} - {$value.label}\n            {/if}\n            {if $value.description}\n              <div>{$value.description|truncate:30:\"...\"}</div>\n            {/if}\n          </font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$value.qty}</font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$value.unit_price|crmMoney:$currency}</font></td>\n          {if $value.tax_amount != \'\'}\n            <td style=\"text-align:right;\"><font size=\"1\">{if $value.tax_rate}{$value.tax_rate}%{/if}</font></td>\n          {else}\n            <td style=\"text-align:right;\"><font size=\"1\">{if $taxTerm}{ts 1=$taxTerm}-{/ts}{/if}</font></td>\n          {/if}\n          <td style=\"text-align:right;\"><font size=\"1\">{$value.subTotal|crmMoney:$currency}</font></td>\n        </tr>\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n      </tr>\n      {if !empty($dataArray)}\n        {foreach from=$dataArray item=value key=priceset}\n          <tr>\n            <td colspan=\"3\"></td>\n            {if $priceset}\n              <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if $taxTerm}{ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}{/if}</font></td>\n              <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$value|crmMoney:$currency}</font> </td>\n            {elseif $priceset == 0}\n              <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if $taxTerm}{ts 1=$taxTerm}TOTAL %1{/ts}{/if}</font></td>\n              <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$value|crmMoney:$currency}</font> </td>\n            {/if}\n          </tr>\n        {/foreach}\n      {/if}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n          {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n            {ts}Amount Credited{/ts}\n          {else}\n            {ts}Amount Paid{/ts}\n          {/if}\n        </font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td colspan=\"2\"><hr></hr></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n      </tr>\n      <tr>\n        <td colspan=\"5\"></td>\n      </tr>\n      {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n        <tr>\n          <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n          <td colspan=\"2\"></td>\n        </tr>\n      {/if}\n    </table>\n\n    {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n      <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n        </tr>\n      </table>\n\n      <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n        <tr>\n          <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n            <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n              {domain.name}<br />\n              {domain.street_address} {domain.supplemental_address_1}<br />\n              {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n              {domain.city} {domain.postal_code}<br />\n              {domain.country_id:label}<br />\n              {domain.email}</div>\n              {domain.phone}<br />\n            </font>\n            <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n          </td>\n          <td width=\"40%\">\n            <table cellpadding=\"5\" cellspacing=\"0\"  width=\"100%\" border=\"0\">\n              <tr>\n                <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n                <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n              </tr>\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n              </tr>\n              <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n              {if $is_pay_later == 1}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n                </tr>\n              {else}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n                </tr>\n              {/if}\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n              </tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    {/if}\n\n    {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n    {if $config->empoweredBy}\n      <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n\n    <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n      <tr>\n        <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n         </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address}   {$supplemental_address_1}</font></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2}  {$stateProvinceAbbreviation}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.country_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.email}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.phone}\n        </font></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td colspan=\"2\">\n          <table>\n            <tr>\n              <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n            </tr>\n            {foreach from=$lineItem item=value key=priceset name=pricevalue}\n              {if $smarty.foreach.pricevalue.index eq 0}\n                <tr><td colspan=\"5\"><hr size=\"3\" style=\"color:#000;\"></hr></td></tr>\n              {else}\n                <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n              {/if}\n              <tr>\n                <td style =\"text-align:left;\"  ><font size=\"1\">\n                  {if $value.html_type eq \'Text\'}\n                    {$value.label}\n                  {else}\n                    {$value.field_title} - {$value.label}\n                  {/if}\n                  {if $value.description}\n                    <div>{$value.description|truncate:30:\"...\"}</div>\n                  {/if}\n                </font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$value.qty}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$value.unit_price|crmMoney:$currency}</font></td>\n                {if $value.tax_amount != \'\'}\n                  <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $value.tax_rate}{$value.tax_rate}%{/if}</font></td>\n                {else}\n                  <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if $taxTerm}{ts 1=$taxTerm}No %1{/ts}{/if}</font></td>\n                {/if}\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$value.subTotal|crmMoney:$currency}</font></td>\n              </tr>\n            {/foreach}\n            <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n            </tr>\n            {if !empty($dataArray)}\n              {foreach from=$dataArray item=value key=priceset}\n                <tr>\n                  <td colspan=\"3\"></td>\n                  {if $priceset}\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $taxTerm}{ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$value|crmMoney:$currency}</font> </td>\n                  {elseif $priceset == 0}\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $taxTerm}{ts 1=$taxTerm}TOTAL NO %1{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$value|crmMoney:$currency}</font> </td>\n                  {/if}\n                </tr>\n              {/foreach}\n            {/if}\n            <tr>\n              <td colspan=\"3\"></td>\n              <td colspan=\"2\"><hr></hr></td>\n            </tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n            {if \'{contribution.is_pay_later}\' == 0}\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td colspan=\"2\"><hr></hr></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n                <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n              </tr>\n            {/if}\n            <br/><br/><br/>\n            <tr>\n              <td colspan=\"3\"></td>\n            </tr>\n            <tr>\n              <td></td>\n              <td colspan=\"3\"></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n\n    <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n      <tr>\n        <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n        <td width=\"40%\">\n          <table align=\"right\">\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n            </tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n            </tr>\n            <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n              <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n  {/if}\n\n  </div>\n  </body>\n</html>\n',1,817,'contribution_invoice_receipt',0,1,0,NULL),
- (11,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}:  {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n   </td>\n  </tr>\n\n  <tr>\n   <td>&nbsp;</td>\n  </tr>\n\n    {if $recur_txnType eq \'START\'}\n     {if $auto_renew_membership}\n       <tr>\n        <td>\n         <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n         <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n        </td>\n       </tr>\n       {if $cancelSubscriptionUrl}\n       <tr>\n         <td {$labelStyle}>\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         </td>\n       </tr>\n       {/if}\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n        <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n        <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n       </td>\n      </tr>\n      {if $cancelSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n     {/if}\n\n    {elseif $recur_txnType eq \'END\'}\n\n     {if $auto_renew_membership}\n      <tr>\n       <td>\n        <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n       </td>\n      </tr>\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n        <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}</p>\n       </td>\n      </tr>\n      <tr>\n       <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Start Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_start_date|crmDate}\n       </td>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}End Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_end_date|crmDate}\n       </td>\n      </tr>\n     </table>\n       </td>\n      </tr>\n\n     {/if}\n    {/if}\n\n </table>\n\n</body>\n</html>\n',1,818,'contribution_recurring_notify',1,0,0,NULL),
- (12,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}:  {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n   </td>\n  </tr>\n\n  <tr>\n   <td>&nbsp;</td>\n  </tr>\n\n    {if $recur_txnType eq \'START\'}\n     {if $auto_renew_membership}\n       <tr>\n        <td>\n         <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n         <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n        </td>\n       </tr>\n       {if $cancelSubscriptionUrl}\n       <tr>\n         <td {$labelStyle}>\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         </td>\n       </tr>\n       {/if}\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n        <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n        <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n       </td>\n      </tr>\n      {if $cancelSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n     {/if}\n\n    {elseif $recur_txnType eq \'END\'}\n\n     {if $auto_renew_membership}\n      <tr>\n       <td>\n        <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n       </td>\n      </tr>\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n        <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}</p>\n       </td>\n      </tr>\n      <tr>\n       <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Start Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_start_date|crmDate}\n       </td>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}End Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_end_date|crmDate}\n       </td>\n      </tr>\n     </table>\n       </td>\n      </tr>\n\n     {/if}\n    {/if}\n\n </table>\n\n</body>\n</html>\n',1,818,'contribution_recurring_notify',0,1,0,NULL),
- (13,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n</body>\n</html>\n',1,819,'contribution_recurring_cancelled',1,0,0,NULL),
- (14,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n</body>\n</html>\n',1,819,'contribution_recurring_cancelled',0,1,0,NULL),
- (15,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n    <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n        <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n            {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n        </td>\n       </tr>\n  </table>\n\n</body>\n</html>\n',1,820,'contribution_recurring_billing',1,0,0,NULL),
- (16,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n    <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n        <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n            {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n        </td>\n       </tr>\n  </table>\n\n</body>\n</html>\n',1,820,'contribution_recurring_billing',0,1,0,NULL),
- (17,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts}Your recurring contribution has been updated as requested:{/ts}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>\n\n    <p>{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n</body>\n</html>\n',1,821,'contribution_recurring_edit',1,0,0,NULL),
- (18,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts}Your recurring contribution has been updated as requested:{/ts}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>\n\n    <p>{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n</body>\n</html>\n',1,821,'contribution_recurring_edit',0,1,0,NULL),
+ (5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if !empty($formValues.receipt_text)}\n{$formValues.receipt_text}\n{else}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else}                  {/if} {/if}   {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n{ts}Amount before Tax{/ts} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Date Received{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($formValues.receipt_text)}\n     <p>{$formValues.receipt_text|htmlize}</p>\n    {else}\n     <p>{ts}Below you will find a receipt for this contribution.{/ts}</p>\n    {/if}\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Contribution Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contributor Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {contact.display_name}\n      </td>\n     </tr>\n     <tr>\n      {if \'{contribution.financial_type_id}\'}\n        <td {$labelStyle}>\n         {ts}Financial Type{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.financial_type_id:label}\n        </td>\n      {/if}\n     </tr>\n\n     {if $isShowLineItems}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <table>\n          <tr>\n           <th>{ts}Item{/ts}</th>\n           <th>{ts}Qty{/ts}</th>\n           <th>{ts}Each{/ts}</th>\n           {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n           {/if}\n           <th>{ts}Total{/ts}</th>\n          </tr>\n          {foreach from=$lineItems item=line}\n           <tr>\n            <td>\n              {$line.title}\n            </td>\n            <td>\n             {$line.qty}\n            </td>\n            <td>\n             {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n            </td>\n            {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n              <td>\n                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                  {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                </td>\n              {else}\n                <td></td>\n                <td></td>\n              {/if}\n            {/if}\n            <td>\n             {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n            </td>\n           </tr>\n          {/foreach}\n         </table>\n        </td>\n       </tr>\n\n     {/if}\n     {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n       <tr>\n         <td {$labelStyle}>\n           {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n           {$formValues.total_amount-$totalTaxAmount|crmMoney:\'{contribution.currency}\'}\n         </td>\n       </tr>\n\n       {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n         <tr>\n          <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n          <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if $isShowTax}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.tax_amount}\n        </td>\n      </tr>\n     {/if}\n\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n        {contribution.total_amount}\n      </td>\n     </tr>\n\n     {if \'{contribution.receive_date}\'}\n       <tr>\n       <td {$labelStyle}>\n        {ts}Date Received{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receive_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n      {if \'{contribution.receipt_date}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Receipt Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receipt_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n     {if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Paid By{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.payment_instrument_id:label}\n       </td>\n      </tr>\n      {if \'{contribution.check_number}\'}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.check_number}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if \'{contribution.trxn_id}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction ID{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($ccContribution)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$billingName}<br />\n        {$address|nl2br}\n       </td>\n      </tr>\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($formValues.product_name)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$formValues.product_name}\n       </td>\n      </tr>\n      {if $formValues.product_option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_option}\n        </td>\n       </tr>\n      {/if}\n      {if $formValues.product_sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_sku}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($fulfilled_date)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Sent{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$fulfilled_date|truncate:10:\'\'|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,815,'contribution_offline_receipt',1,0,0,NULL),
+ (6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if !empty($formValues.receipt_text)}\n{$formValues.receipt_text}\n{else}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}{$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} %   {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else}                  {/if} {/if}   {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n{ts}Amount before Tax{/ts} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n{foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n{/foreach}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Date Received{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($formValues.receipt_text)}\n     <p>{$formValues.receipt_text|htmlize}</p>\n    {else}\n     <p>{ts}Below you will find a receipt for this contribution.{/ts}</p>\n    {/if}\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Contribution Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contributor Name{/ts}\n      </td>\n      <td {$valueStyle}>\n       {contact.display_name}\n      </td>\n     </tr>\n     <tr>\n      {if \'{contribution.financial_type_id}\'}\n        <td {$labelStyle}>\n         {ts}Financial Type{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.financial_type_id:label}\n        </td>\n      {/if}\n     </tr>\n\n     {if $isShowLineItems}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <table>\n          <tr>\n           <th>{ts}Item{/ts}</th>\n           <th>{ts}Qty{/ts}</th>\n           <th>{ts}Each{/ts}</th>\n           {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n             <th>{ts}Subtotal{/ts}</th>\n             <th>{ts}Tax Rate{/ts}</th>\n             <th>{ts}Tax Amount{/ts}</th>\n           {/if}\n           <th>{ts}Total{/ts}</th>\n          </tr>\n          {foreach from=$lineItems item=line}\n           <tr>\n            <td>\n              {$line.title}\n            </td>\n            <td>\n             {$line.qty}\n            </td>\n            <td>\n             {$line.unit_price|crmMoney:\'{contribution.currency}\'}\n            </td>\n            {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n              <td>\n                {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'}\n              </td>\n              {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                  {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                  {$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n                </td>\n              {else}\n                <td></td>\n                <td></td>\n              {/if}\n            {/if}\n            <td>\n             {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n            </td>\n           </tr>\n          {/foreach}\n         </table>\n        </td>\n       </tr>\n\n     {/if}\n     {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n       <tr>\n         <td {$labelStyle}>\n           {ts} Amount before Tax : {/ts}\n         </td>\n         <td {$valueStyle}>\n           {$formValues.total_amount-$totalTaxAmount|crmMoney:\'{contribution.currency}\'}\n         </td>\n       </tr>\n\n       {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n         <tr>\n          <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n          <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if $isShowTax}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.tax_amount}\n        </td>\n      </tr>\n     {/if}\n\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n        {contribution.total_amount}\n      </td>\n     </tr>\n\n     {if \'{contribution.receive_date}\'}\n       <tr>\n       <td {$labelStyle}>\n        {ts}Date Received{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receive_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n      {if \'{contribution.receipt_date}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Receipt Date{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.receipt_date|crmDate:\"shortdate\"}\n       </td>\n      </tr>\n     {/if}\n\n     {if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Paid By{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.payment_instrument_id:label}\n       </td>\n      </tr>\n      {if \'{contribution.check_number}\'}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.check_number}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if \'{contribution.trxn_id}\'}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction ID{/ts}\n       </td>\n       <td {$valueStyle}>\n         {contribution.trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($ccContribution)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$billingName}<br />\n        {$address|nl2br}\n       </td>\n      </tr>\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($formValues.product_name)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$formValues.product_name}\n       </td>\n      </tr>\n      {if $formValues.product_option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_option}\n        </td>\n       </tr>\n      {/if}\n      {if $formValues.product_sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$formValues.product_sku}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($fulfilled_date)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Sent{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$fulfilled_date|truncate:10:\'\'|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,815,'contribution_offline_receipt',0,1,0,NULL),
+ (7,'Contributions - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if \'{contribution.total_amount|raw}\' !== \'0.00\'}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\n\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if !empty($dataArray)}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n\n{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n{ts}Amount before Tax{/ts}: {$amount-$totalTaxAmount|crmMoney:$currency}\n  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n  {/foreach}\n{/if}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or Email*}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium )}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if !empty($is_deductible) AND !empty($price)}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n</table>\n<table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n  {if \'{contribution.total_amount|raw}\' !== \'0.00\'}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Contribution Information{/ts}\n      </th>\n    </tr>\n\n    {if $isShowLineItems}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          <table>\n            <tr>\n              <th>{ts}Item{/ts}</th>\n              <th>{ts}Qty{/ts}</th>\n              <th>{ts}Each{/ts}</th>\n              {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n                <th>{ts}Subtotal{/ts}</th>\n                <th>{ts}Tax Rate{/ts}</th>\n                <th>{ts}Tax Amount{/ts}</th>\n              {/if}\n              <th>{ts}Total{/ts}</th>\n            </tr>\n            {foreach from=$lineItems item=line}\n              <tr>\n                <td>{$line.title}</td>\n                <td>{$line.qty}</td>\n                <td>{$line.unit_price|crmMoney:$currency}</td>\n                {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>\n                  {if $line.tax_rate || $line.tax_amount != \"\"}\n                    <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                    <td>{$line.tax_amount|crmMoney:$currency}</td>\n                  {else}\n                    <td></td>\n                    <td></td>\n                  {/if}\n                {/if}\n                <td>\n                  {$line.line_total+$line.tax_amount|crmMoney:$currency}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n\n      {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n        <tr>\n          <td {$labelStyle}>\n            {ts} Amount before Tax : {/ts}\n          </td>\n          <td {$valueStyle}>\n            {$amount-$totalTaxAmount|crmMoney:$currency}\n          </td>\n        </tr>\n\n        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n          <tr>\n            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n            <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n          </tr>\n        {/foreach}\n\n      {/if}\n      {if $isShowTax}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n        </tr>\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.total_amount}\n        </td>\n      </tr>\n    {else}\n      {if \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n         </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n  {/if}\n\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($is_monetary) and !empty($trxn_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($is_recur)}\n      <tr>\n        <td  colspan=\"2\" {$labelStyle}>\n          {ts}This is a recurring contribution.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n      {elseif !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($isShare)}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n            {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n            {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n        </td>\n      </tr>\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n     {elseif !empty($email)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Registered Email{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$email}\n        </td>\n       </tr>\n     {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($is_deductible) AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,816,'contribution_online_receipt',1,0,0,NULL),
+ (8,'Contributions - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if \'{contribution.total_amount|raw}\' !== \'0.00\'}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\n\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if !empty($dataArray)}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n\n{if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n{ts}Amount before Tax{/ts}: {$amount-$totalTaxAmount|crmMoney:$currency}\n  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'}\n  {/foreach}\n{/if}\n\n{if $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\n{/if}\n{/if}\n\n{if $honor_block_is_active}\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or Email*}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium )}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if !empty($is_deductible) AND !empty($price)}\n\n{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n<table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n</table>\n<table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n  {if \'{contribution.total_amount|raw}\' !== \'0.00\'}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Contribution Information{/ts}\n      </th>\n    </tr>\n\n    {if $isShowLineItems}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          <table>\n            <tr>\n              <th>{ts}Item{/ts}</th>\n              <th>{ts}Qty{/ts}</th>\n              <th>{ts}Each{/ts}</th>\n              {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n                <th>{ts}Subtotal{/ts}</th>\n                <th>{ts}Tax Rate{/ts}</th>\n                <th>{ts}Tax Amount{/ts}</th>\n              {/if}\n              <th>{ts}Total{/ts}</th>\n            </tr>\n            {foreach from=$lineItems item=line}\n              <tr>\n                <td>{$line.title}</td>\n                <td>{$line.qty}</td>\n                <td>{$line.unit_price|crmMoney:$currency}</td>\n                {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>\n                  {if $line.tax_rate || $line.tax_amount != \"\"}\n                    <td>{$line.tax_rate|string_format:\"%.2f\"}%</td>\n                    <td>{$line.tax_amount|crmMoney:$currency}</td>\n                  {else}\n                    <td></td>\n                    <td></td>\n                  {/if}\n                {/if}\n                <td>\n                  {$line.line_total+$line.tax_amount|crmMoney:$currency}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n\n      {if $isShowTax && \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n        <tr>\n          <td {$labelStyle}>\n            {ts} Amount before Tax : {/ts}\n          </td>\n          <td {$valueStyle}>\n            {$amount-$totalTaxAmount|crmMoney:$currency}\n          </td>\n        </tr>\n\n        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n          <tr>\n            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n            <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n          </tr>\n        {/foreach}\n\n      {/if}\n      {if $isShowTax}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n        </tr>\n      {/if}\n      <tr>\n        <td {$labelStyle}>\n          {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n          {contribution.total_amount}\n        </td>\n      </tr>\n    {else}\n      {if \'{contribution.tax_amount|raw}\' !== \'0.00\'}\n        <tr>\n          <td {$labelStyle}>\n            {ts}Total Tax Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n            {contribution.tax_amount}\n          </td>\n         </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n  {/if}\n\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($is_monetary) and !empty($trxn_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($is_recur)}\n      <tr>\n        <td  colspan=\"2\" {$labelStyle}>\n          {ts}This is a recurring contribution.{/ts}\n          {if $cancelSubscriptionUrl}\n            {ts 1=$cancelSubscriptionUrl}You can cancel future contributions by <a href=\"%1\">visiting this web page</a>.{/ts}\n          {/if}\n        </td>\n      </tr>\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n        <tr>\n          <td colspan=\"2\" {$labelStyle}>\n            {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n    {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n      {elseif !empty($softCreditTypes) and !empty($softCredits)}\n      {foreach from=$softCreditTypes item=softCreditType key=n}\n       <tr>\n        <th {$headerStyle}>\n         {$softCreditType}\n        </th>\n       </tr>\n       {foreach from=$softCredits.$n item=value key=label}\n         <tr>\n          <td {$labelStyle}>\n           {$label}\n          </td>\n          <td {$valueStyle}>\n           {$value}\n          </td>\n         </tr>\n        {/foreach}\n       {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($isShare)}\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n            {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n            {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\n        </td>\n      </tr>\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n     {elseif !empty($email)}\n       <tr>\n        <th {$headerStyle}>\n         {ts}Registered Email{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$email}\n        </td>\n       </tr>\n     {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($is_deductible) AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney:$currency}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,816,'contribution_online_receipt',0,1,0,NULL),
+ (9,'Contributions - Invoice','{if $title}\n  {if $component}\n    {if $component == \'event\'}\n      {ts 1=$title}Event Registration Invoice: %1{/ts}\n    {else}\n      {ts 1=$title}Contribution Invoice: %1{/ts}\n    {/if}\n  {/if}\n{else}\n  {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <title></title>\n  </head>\n  <body>\n  <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n    {if $config->empoweredBy}\n      <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n    <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n        <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n        <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n        <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n      </tr>\n    </table>\n\n    <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n      </tr>\n      {foreach from=$lineItems item=line}\n        <tr>\n          <td style=\"text-align:left;nowrap\"><font size=\"1\">\n            {$line.title}\n          </font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n            {if $line.tax_amount != \'\'}\n              <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n            {else}\n              <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n            {/if}\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n        </tr>\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n      </tr>\n      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n        {if $taxRate != 0}\n          <tr>\n            <td colspan=\"3\"></td>\n            <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n            <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n          </tr>\n        {/if}\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n          {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n            {ts}Amount Credited{/ts}\n          {else}\n            {ts}Amount Paid{/ts}\n          {/if}\n        </font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td colspan=\"2\"><hr></hr></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n      </tr>\n      <tr>\n        <td colspan=\"5\"></td>\n      </tr>\n      {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n        <tr>\n          <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n          <td colspan=\"2\"></td>\n        </tr>\n      {/if}\n    </table>\n\n    {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n      <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n        </tr>\n      </table>\n\n      <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n        <tr>\n          <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n            <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n              {domain.name}<br />\n              {domain.street_address} {domain.supplemental_address_1}<br />\n              {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n              {domain.city} {domain.postal_code}<br />\n              {domain.country_id:label}<br />\n              {domain.email}</div>\n              {domain.phone}<br />\n            </font>\n            <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n          </td>\n          <td width=\"40%\">\n            <table cellpadding=\"5\" cellspacing=\"0\"  width=\"100%\" border=\"0\">\n              <tr>\n                <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n                <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n              </tr>\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n              </tr>\n              <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n              {if $is_pay_later == 1}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n                </tr>\n              {else}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n                </tr>\n              {/if}\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n              </tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    {/if}\n\n    {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n    {if $config->empoweredBy}\n      <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n\n    <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n      <tr>\n        <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n         </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address}   {$supplemental_address_1}</font></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2}  {$stateProvinceAbbreviation}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.country_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.email}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.phone}\n        </font></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td colspan=\"2\">\n          <table>\n            <tr>\n              <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n            </tr>\n            {foreach from=$lineItems item=line key=index}\n              <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n              <tr>\n                <td style =\"text-align:left;\"  ><font size=\"1\">\n                  {$line.title}\n                </font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n                {if $line.tax_amount != \'\'}\n                  <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n                {else}\n                  <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n                {/if}\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n              </tr>\n            {/foreach}\n            <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n            </tr>\n            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                {if $taxRate != 0}\n                  <tr>\n                    <td colspan=\"3\"></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            <tr>\n              <td colspan=\"3\"></td>\n              <td colspan=\"2\"><hr></hr></td>\n            </tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n            {if \'{contribution.is_pay_later}\' == 0}\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td colspan=\"2\"><hr></hr></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n                <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n              </tr>\n            {/if}\n            <br/><br/><br/>\n            <tr>\n              <td colspan=\"3\"></td>\n            </tr>\n            <tr>\n              <td></td>\n              <td colspan=\"3\"></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n\n    <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n      <tr>\n        <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n        <td width=\"40%\">\n          <table align=\"right\">\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n            </tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n            </tr>\n            <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n              <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n  {/if}\n\n  </div>\n  </body>\n</html>\n',1,817,'contribution_invoice_receipt',1,0,0,NULL),
+ (10,'Contributions - Invoice','{if $title}\n  {if $component}\n    {if $component == \'event\'}\n      {ts 1=$title}Event Registration Invoice: %1{/ts}\n    {else}\n      {ts 1=$title}Contribution Invoice: %1{/ts}\n    {/if}\n  {/if}\n{else}\n  {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n      <title></title>\n  </head>\n  <body>\n  <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n    {if $config->empoweredBy}\n      <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n    <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n        <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n        <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n        <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n        <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n      </tr>\n      <tr>\n        <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n        <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n      </tr>\n    </table>\n\n    <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n      <tr>\n        <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n        <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n      </tr>\n      {foreach from=$lineItems item=line}\n        <tr>\n          <td style=\"text-align:left;nowrap\"><font size=\"1\">\n            {$line.title}\n          </font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n            {if $line.tax_amount != \'\'}\n              <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n            {else}\n              <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n            {/if}\n          <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n        </tr>\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n      </tr>\n      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n        {if $taxRate != 0}\n          <tr>\n            <td colspan=\"3\"></td>\n            <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n            <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n          </tr>\n        {/if}\n      {/foreach}\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n          {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n            {ts}Amount Credited{/ts}\n          {else}\n            {ts}Amount Paid{/ts}\n          {/if}\n        </font></td>\n        <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td colspan=\"2\"><hr></hr></td>\n      </tr>\n      <tr>\n        <td colspan=\"3\"></td>\n        <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n        <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n      </tr>\n      <tr>\n        <td colspan=\"5\"></td>\n      </tr>\n      {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n        <tr>\n          <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n          <td colspan=\"2\"></td>\n        </tr>\n      {/if}\n    </table>\n\n    {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n      <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n        </tr>\n      </table>\n\n      <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n        <tr>\n          <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n            <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n              {domain.name}<br />\n              {domain.street_address} {domain.supplemental_address_1}<br />\n              {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n              {domain.city} {domain.postal_code}<br />\n              {domain.country_id:label}<br />\n              {domain.email}</div>\n              {domain.phone}<br />\n            </font>\n            <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n          </td>\n          <td width=\"40%\">\n            <table cellpadding=\"5\" cellspacing=\"0\"  width=\"100%\" border=\"0\">\n              <tr>\n                <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n                <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n              </tr>\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n              </tr>\n              <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n              {if $is_pay_later == 1}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n                </tr>\n              {else}\n                <tr>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n                  <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n                </tr>\n              {/if}\n              <tr>\n                <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n                <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n              </tr>\n            </table>\n          </td>\n        </tr>\n      </table>\n    {/if}\n\n    {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n    {if $config->empoweredBy}\n      <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n        <tr>\n          <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n        </tr>\n      </table>\n    {/if}\n\n    <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n      <tr>\n        <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.street_address}\n          {domain.supplemental_address_1}\n         </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address}   {$supplemental_address_1}</font></td>\n        <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.supplemental_address_2}\n          {domain.state_province_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2}  {$stateProvinceAbbreviation}</font></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.city}\n          {domain.postal_code}\n        </font></td>\n      </tr>\n      <tr>\n        <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city}  {$postal_code}</font></td>\n        <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.country_id:label}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.email}\n        </font></td>\n      </tr>\n      <tr>\n        <td></td>\n        <td></td>\n        <td><font size=\"1\" align=\"right\">\n          {domain.phone}\n        </font></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td colspan=\"2\">\n          <table>\n            <tr>\n              <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n              <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n            </tr>\n            {foreach from=$lineItems item=line key=index}\n              <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n              <tr>\n                <td style =\"text-align:left;\"  ><font size=\"1\">\n                  {$line.title}\n                </font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n                {if $line.tax_amount != \'\'}\n                  <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n                {else}\n                  <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n                {/if}\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n              </tr>\n            {/foreach}\n            <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n            </tr>\n            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n                {if $taxRate != 0}\n                  <tr>\n                    <td colspan=\"3\"></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n                    <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n                  </tr>\n                {/if}\n              {/foreach}\n            <tr>\n              <td colspan=\"3\"></td>\n              <td colspan=\"2\"><hr></hr></td>\n            </tr>\n            <tr>\n              <td colspan=\"3\"></td>\n              <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n              <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n            {if \'{contribution.is_pay_later}\' == 0}\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n                <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td colspan=\"2\"><hr></hr></td>\n              </tr>\n              <tr>\n                <td colspan=\"3\"></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n                <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n                <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n              </tr>\n            {/if}\n            <br/><br/><br/>\n            <tr>\n              <td colspan=\"3\"></td>\n            </tr>\n            <tr>\n              <td></td>\n              <td colspan=\"3\"></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n\n    <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n      <tr>\n        <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n      </tr>\n    </table>\n\n    <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n      <tr>\n        <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n        <td width=\"40%\">\n          <table align=\"right\">\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n            </tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n              <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n            </tr>\n            <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n            <tr>\n              <td colspan=\"2\"></td>\n              <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n              <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n            </tr>\n          </table>\n        </td>\n      </tr>\n    </table>\n  {/if}\n\n  </div>\n  </body>\n</html>\n',1,817,'contribution_invoice_receipt',0,1,0,NULL),
+ (11,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}:  {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n   </td>\n  </tr>\n\n  <tr>\n   <td>&nbsp;</td>\n  </tr>\n\n    {if $recur_txnType eq \'START\'}\n     {if $auto_renew_membership}\n       <tr>\n        <td>\n         <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n         <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n        </td>\n       </tr>\n       {if $cancelSubscriptionUrl}\n       <tr>\n         <td {$labelStyle}>\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         </td>\n       </tr>\n       {/if}\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n        <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n        <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n       </td>\n      </tr>\n      {if $cancelSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n     {/if}\n\n    {elseif $recur_txnType eq \'END\'}\n\n     {if $auto_renew_membership}\n      <tr>\n       <td>\n        <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n       </td>\n      </tr>\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n        <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}</p>\n       </td>\n      </tr>\n      <tr>\n       <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Start Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_start_date|crmDate}\n       </td>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}End Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_end_date|crmDate}\n       </td>\n      </tr>\n     </table>\n       </td>\n      </tr>\n\n     {/if}\n    {/if}\n\n </table>\n\n</body>\n</html>\n',1,818,'contribution_recurring_notify',1,0,0,NULL),
+ (12,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}:  {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n   </td>\n  </tr>\n\n  <tr>\n   <td>&nbsp;</td>\n  </tr>\n\n    {if $recur_txnType eq \'START\'}\n     {if $auto_renew_membership}\n       <tr>\n        <td>\n         <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n         <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n        </td>\n       </tr>\n       {if $cancelSubscriptionUrl}\n       <tr>\n         <td {$labelStyle}>\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         </td>\n       </tr>\n       {/if}\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n        <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n        <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n       </td>\n      </tr>\n      {if $cancelSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n      {if $updateSubscriptionBillingUrl}\n        <tr>\n          <td {$labelStyle}>\n            {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n        </tr>\n      {/if}\n      {if $updateSubscriptionUrl}\n      <tr>\n        <td {$labelStyle}>\n          {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n        </td>\n      </tr>\n      {/if}\n     {/if}\n\n    {elseif $recur_txnType eq \'END\'}\n\n     {if $auto_renew_membership}\n      <tr>\n       <td>\n        <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n       </td>\n      </tr>\n     {else}\n      <tr>\n       <td>\n        <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n        <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}</p>\n       </td>\n      </tr>\n      <tr>\n       <td>\n     <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n      <tr>\n       <th {$headerStyle}>\n        {ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Start Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_start_date|crmDate}\n       </td>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}End Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$recur_end_date|crmDate}\n       </td>\n      </tr>\n     </table>\n       </td>\n      </tr>\n\n     {/if}\n    {/if}\n\n </table>\n\n</body>\n</html>\n',1,818,'contribution_recurring_notify',0,1,0,NULL),
+ (13,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n</body>\n</html>\n',1,819,'contribution_recurring_cancelled',1,0,0,NULL),
+ (14,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n</body>\n</html>\n',1,819,'contribution_recurring_cancelled',0,1,0,NULL),
+ (15,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n    <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n        <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n            {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n        </td>\n       </tr>\n  </table>\n\n</body>\n</html>\n',1,820,'contribution_recurring_billing',1,0,0,NULL),
+ (16,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n    <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n        <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n            {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n        </td>\n       </tr>\n  </table>\n\n</body>\n</html>\n',1,820,'contribution_recurring_billing',0,1,0,NULL),
+ (17,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts}Your recurring contribution has been updated as requested:{/ts}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>\n\n    <p>{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n</body>\n</html>\n',1,821,'contribution_recurring_edit',1,0,0,NULL),
+ (18,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts}Your recurring contribution has been updated as requested:{/ts}\n    <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>\n\n    <p>{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n</body>\n</html>\n',1,821,'contribution_recurring_edit',0,1,0,NULL),
  (19,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=pcpURL     }{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Personal Campaign Page Notification{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Action{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {if $mode EQ \'Update\'}\n        {ts}Updated personal campaign page{/ts}\n       {else}\n        {ts}New personal campaign page{/ts}\n       {/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Personal Campaign Page Title{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$pcpTitle}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Current Status{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$pcpStatus}\n      </td>\n     </tr>\n\n     <tr>\n      <td {$labelStyle}>\n       <a href=\"{$pcpURL}\">{ts}View Page{/ts}</a>\n      </td>\n      <td></td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Supporter{/ts}\n      </td>\n      <td {$valueStyle}>\n       <a href=\"{$supporterUrl}\">{$supporterName}</a>\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Linked to Contribution Page{/ts}\n      </td>\n      <td {$valueStyle}>\n       <a href=\"{$contribPageUrl}\">{$contribPageTitle}</a>\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       <a href=\"{$managePCPUrl}\">{ts}Manage Personal Campaign Pages{/ts}</a>\n      </td>\n      <td></td>\n     </tr>\n\n    </table>\n   </td>\n  </tr>\n </table>\n\n</body>\n</html>\n',1,822,'pcp_notify',1,0,0,NULL),
  (20,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=pcpURL     }{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Personal Campaign Page Notification{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Action{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {if $mode EQ \'Update\'}\n        {ts}Updated personal campaign page{/ts}\n       {else}\n        {ts}New personal campaign page{/ts}\n       {/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Personal Campaign Page Title{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$pcpTitle}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Current Status{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$pcpStatus}\n      </td>\n     </tr>\n\n     <tr>\n      <td {$labelStyle}>\n       <a href=\"{$pcpURL}\">{ts}View Page{/ts}</a>\n      </td>\n      <td></td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Supporter{/ts}\n      </td>\n      <td {$valueStyle}>\n       <a href=\"{$supporterUrl}\">{$supporterName}</a>\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Linked to Contribution Page{/ts}\n      </td>\n      <td {$valueStyle}>\n       <a href=\"{$contribPageUrl}\">{$contribPageTitle}</a>\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       <a href=\"{$managePCPUrl}\">{ts}Manage Personal Campaign Pages{/ts}</a>\n      </td>\n      <td></td>\n     </tr>\n\n    </table>\n   </td>\n  </tr>\n </table>\n\n</body>\n</html>\n',1,822,'pcp_notify',0,1,0,NULL),
  (21,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{if $pcpStatus eq \'Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been approved and is now live.{/ts}\n\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n{if $isTellFriendEnabled}\n\n{ts}After logging in, you can use this form to promote your fundraising page{/ts}:\n{$pcpTellFriendURL}\n\n{/if}\n\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{* Rejected message *}\n{elseif $pcpStatus eq \'Not Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}\n\n{if $pcpNotifyEmailAddress}\n\n{ts}Please contact our site administrator for more information{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n\n    <h1>{ts}Your Personal Campaign Page{/ts}</h1>\n\n    {if $pcpStatus eq \'Approved\'}\n\n     <p>{ts}Your personal campaign page has been approved and is now live.{/ts}</p>\n     <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n     <ol>\n      <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n      <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n     </ol>\n     <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n\n     {if $isTellFriendEnabled}\n      <p><a href=\"{$pcpTellFriendURL}\">{ts}After logging in, you can use this form to promote your fundraising page{/ts}</a></p>\n     {/if}\n\n     {if $pcpNotifyEmailAddress}\n      <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n     {/if}\n\n    {elseif $pcpStatus eq \'Not Approved\'}\n\n     <p>{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}</p>\n     {if $pcpNotifyEmailAddress}\n      <p>{ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}</p>\n     {/if}\n\n    {/if}\n\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,823,'pcp_status_change',1,0,0,NULL),
  (22,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{if $pcpStatus eq \'Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been approved and is now live.{/ts}\n\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n{if $isTellFriendEnabled}\n\n{ts}After logging in, you can use this form to promote your fundraising page{/ts}:\n{$pcpTellFriendURL}\n\n{/if}\n\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{* Rejected message *}\n{elseif $pcpStatus eq \'Not Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}\n\n{if $pcpNotifyEmailAddress}\n\n{ts}Please contact our site administrator for more information{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n\n    <h1>{ts}Your Personal Campaign Page{/ts}</h1>\n\n    {if $pcpStatus eq \'Approved\'}\n\n     <p>{ts}Your personal campaign page has been approved and is now live.{/ts}</p>\n     <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n     <ol>\n      <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n      <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n     </ol>\n     <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n\n     {if $isTellFriendEnabled}\n      <p><a href=\"{$pcpTellFriendURL}\">{ts}After logging in, you can use this form to promote your fundraising page{/ts}</a></p>\n     {/if}\n\n     {if $pcpNotifyEmailAddress}\n      <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n     {/if}\n\n    {elseif $pcpStatus eq \'Not Approved\'}\n\n     <p>{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}</p>\n     {if $pcpNotifyEmailAddress}\n      <p>{ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}</p>\n     {/if}\n\n    {/if}\n\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,823,'pcp_status_change',0,1,0,NULL),
- (23,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n   </td>\n  </tr>\n\n  {if $pcpStatus eq \'Approved\'}\n\n    <tr>\n     <td>\n      <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n       <tr>\n        <th {$headerStyle}>\n         {ts}Promoting Your Page{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {if $isTellFriendEnabled}\n          <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n          <ol>\n           <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n           <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n          </ol>\n         {else}\n          <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n         {/if}\n        </td>\n       </tr>\n       <tr>\n        <th {$headerStyle}>\n         {ts}Managing Your Page{/ts}\n        </th>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n         <ol>\n          <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n          <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n         </ol>\n         <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n        </td>\n       </tr>\n       </tr>\n      </table>\n     </td>\n    </tr>\n\n   {elseif $pcpStatus EQ \'Waiting Review\'}\n\n    <tr>\n     <td>\n      <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n      <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n      <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n      <ol>\n       <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n       <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n      </ol>\n     </td>\n    </tr>\n\n   {/if}\n\n   {if $pcpNotifyEmailAddress}\n    <tr>\n     <td>\n      <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n     </td>\n    </tr>\n   {/if}\n\n </table>\n\n</body>\n</html>\n',1,824,'pcp_supporter_notify',1,0,0,NULL),
- (24,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n   </td>\n  </tr>\n\n  {if $pcpStatus eq \'Approved\'}\n\n    <tr>\n     <td>\n      <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n       <tr>\n        <th {$headerStyle}>\n         {ts}Promoting Your Page{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {if $isTellFriendEnabled}\n          <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n          <ol>\n           <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n           <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n          </ol>\n         {else}\n          <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n         {/if}\n        </td>\n       </tr>\n       <tr>\n        <th {$headerStyle}>\n         {ts}Managing Your Page{/ts}\n        </th>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n         <ol>\n          <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n          <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n         </ol>\n         <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n        </td>\n       </tr>\n       </tr>\n      </table>\n     </td>\n    </tr>\n\n   {elseif $pcpStatus EQ \'Waiting Review\'}\n\n    <tr>\n     <td>\n      <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n      <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n      <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n      <ol>\n       <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n       <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n      </ol>\n     </td>\n    </tr>\n\n   {/if}\n\n   {if $pcpNotifyEmailAddress}\n    <tr>\n     <td>\n      <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n     </td>\n    </tr>\n   {/if}\n\n </table>\n\n</body>\n</html>\n',1,824,'pcp_supporter_notify',0,1,0,NULL),
- (25,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n    {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Received{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n  <p>{ts}You have received a donation at your personal page{/ts}: <a href=\"{$pcpInfoURL}\">{$page_title}</a></p>\n  <p>{ts}Your fundraising total has been updated.{/ts}<br/>\n    {ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts} <br/>\n    {if $is_honor_roll_enabled}\n      {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}<br/>\n    {/if}\n  </p>\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n    <tr><td>{ts}Received{/ts}:</td><td> {$receive_date|crmDate}</td></tr>\n    <tr><td>{ts}Amount{/ts}:</td><td> {$total_amount|crmMoney:$currency}</td></tr>\n    <tr><td>{ts}Name{/ts}:</td><td> {$donors_display_name}</td></tr>\n    <tr><td>{ts}Email{/ts}:</td><td> {$donors_email}</td></tr>\n  </table>\n</body>\n</html>\n',1,825,'pcp_owner_notify',1,0,0,NULL),
- (26,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n    {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Received{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n  <p>{ts}You have received a donation at your personal page{/ts}: <a href=\"{$pcpInfoURL}\">{$page_title}</a></p>\n  <p>{ts}Your fundraising total has been updated.{/ts}<br/>\n    {ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts} <br/>\n    {if $is_honor_roll_enabled}\n      {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}<br/>\n    {/if}\n  </p>\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n    <tr><td>{ts}Received{/ts}:</td><td> {$receive_date|crmDate}</td></tr>\n    <tr><td>{ts}Amount{/ts}:</td><td> {$total_amount|crmMoney:$currency}</td></tr>\n    <tr><td>{ts}Name{/ts}:</td><td> {$donors_display_name}</td></tr>\n    <tr><td>{ts}Email{/ts}:</td><td> {$donors_email}</td></tr>\n  </table>\n</body>\n</html>\n',1,825,'pcp_owner_notify',0,1,0,NULL),
- (27,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle }style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle }style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if $isRefund}\n        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n      {else}\n        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n        {if $paymentsComplete}\n          <p>{ts}Thank you for completing this contribution.{/ts}</p>\n        {/if}\n      {/if}\n    </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if $isRefund}\n      <tr>\n        <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Refund Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$refundAmount|crmMoney}\n        </td>\n      </tr>\n    {else}\n      <tr>\n        <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Payment Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paymentAmount|crmMoney}\n        </td>\n      </tr>\n    {/if}\n    {if $receive_date}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction Date{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$receive_date|crmDate}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($trxn_id)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$trxn_id}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($paidBy)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Paid By{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paidBy}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($checkNumber)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$checkNumber}\n        </td>\n      </tr>\n    {/if}\n\n  <tr>\n    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n  </tr>\n  {if $totalAmount}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Fee{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalAmount|crmMoney}\n    </td>\n  </tr>\n  {/if}\n  {if $totalPaid}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Paid{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalPaid|crmMoney}\n    </td>\n  </tr>\n  {/if}\n  {if $amountOwed}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Balance Owed{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$amountOwed|crmMoney}\n    </td> {* This will be zero after final payment. *}\n  </tr>\n  {/if}\n  </table>\n\n  </td>\n  </tr>\n    <tr>\n      <td>\n  <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if !empty($billingName) || !empty($address)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {if !empty($billingName)}{$billingName}{/if}<br />\n        {if !empty($address)}{$address|nl2br}{/if}\n            </td>\n          </tr>\n    {/if}\n    {if !empty($credit_card_number)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n            </td>\n          </tr>\n    {/if}\n    {if $component eq \'event\'}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Event Information and Location{/ts}\n      </th>\n    </tr>\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n         {$event.event_title}<br />\n        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n    </tr>\n\n    {if !empty($event.participant_role)}\n    <tr>\n      <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n      </td>\n      <td {$valueStyle}>\n        {$event.participant_role}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($isShowLocation)}\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n    <tr>\n      <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n      </td>\n    </tr>\n    {foreach from=$location.phone item=phone}\n    {if $phone.phone}\n          <tr>\n            <td {$labelStyle}>\n        {if $phone.phone_type}\n        {$phone.phone_type_display}\n        {else}\n        {ts}Phone{/ts}\n        {/if}\n            </td>\n            <td {$valueStyle}>\n        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {foreach from=$location.email item=eventEmail}\n    {if $eventEmail.email}\n          <tr>\n            <td {$labelStyle}>\n        {ts}Email{/ts}\n            </td>\n            <td {$valueStyle}>\n        {$eventEmail.email}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {/if} {*phone block close*}\n    {/if}\n  </table>\n      </td>\n    </tr>\n\n    </table>\n\n </body>\n</html>\n',1,826,'payment_or_refund_notification',1,0,0,NULL),
- (28,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle }style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle }style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if $isRefund}\n        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n      {else}\n        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n        {if $paymentsComplete}\n          <p>{ts}Thank you for completing this contribution.{/ts}</p>\n        {/if}\n      {/if}\n    </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if $isRefund}\n      <tr>\n        <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Refund Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$refundAmount|crmMoney}\n        </td>\n      </tr>\n    {else}\n      <tr>\n        <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Payment Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paymentAmount|crmMoney}\n        </td>\n      </tr>\n    {/if}\n    {if $receive_date}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction Date{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$receive_date|crmDate}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($trxn_id)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$trxn_id}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($paidBy)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Paid By{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paidBy}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($checkNumber)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$checkNumber}\n        </td>\n      </tr>\n    {/if}\n\n  <tr>\n    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n  </tr>\n  {if $totalAmount}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Fee{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalAmount|crmMoney}\n    </td>\n  </tr>\n  {/if}\n  {if $totalPaid}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Paid{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalPaid|crmMoney}\n    </td>\n  </tr>\n  {/if}\n  {if $amountOwed}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Balance Owed{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$amountOwed|crmMoney}\n    </td> {* This will be zero after final payment. *}\n  </tr>\n  {/if}\n  </table>\n\n  </td>\n  </tr>\n    <tr>\n      <td>\n  <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if !empty($billingName) || !empty($address)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {if !empty($billingName)}{$billingName}{/if}<br />\n        {if !empty($address)}{$address|nl2br}{/if}\n            </td>\n          </tr>\n    {/if}\n    {if !empty($credit_card_number)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n            </td>\n          </tr>\n    {/if}\n    {if $component eq \'event\'}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Event Information and Location{/ts}\n      </th>\n    </tr>\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n         {$event.event_title}<br />\n        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n    </tr>\n\n    {if !empty($event.participant_role)}\n    <tr>\n      <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n      </td>\n      <td {$valueStyle}>\n        {$event.participant_role}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($isShowLocation)}\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n    <tr>\n      <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n      </td>\n    </tr>\n    {foreach from=$location.phone item=phone}\n    {if $phone.phone}\n          <tr>\n            <td {$labelStyle}>\n        {if $phone.phone_type}\n        {$phone.phone_type_display}\n        {else}\n        {ts}Phone{/ts}\n        {/if}\n            </td>\n            <td {$valueStyle}>\n        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {foreach from=$location.email item=eventEmail}\n    {if $eventEmail.email}\n          <tr>\n            <td {$labelStyle}>\n        {ts}Email{/ts}\n            </td>\n            <td {$valueStyle}>\n        {$eventEmail.email}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {/if} {*phone block close*}\n    {/if}\n  </table>\n      </td>\n    </tr>\n\n    </table>\n\n </body>\n</html>\n',1,826,'payment_or_refund_notification',0,1,0,NULL),
- (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {$event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if !empty($isPrimary)}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if !empty($isPrimary)}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and empty($defaultRole)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if !empty($event.is_public)}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($email)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$email}\n{/if}\n{if !empty($event.is_monetary)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if !empty($isPrimary)}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts}\n{/if}\n{/if}\n---------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount) }{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if}  {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n{/if}\n{/foreach}\n\n{if !empty($dataArray)}\n{if $totalAmount and $totalTaxAmount}\n{ts}Amount before Tax{/ts}: {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amount) && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if !empty($isPrimary)}\n\n{if !empty($balanceAmount)}{ts}Total Paid{/ts}{else}{ts}Total Amount{/ts}{/if}: {if !empty($totalAmount)}{$totalAmount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($balanceAmount)}\n{ts}Balance{/ts}: {$balanceAmount|crmMoney}\n{/if}\n\n{if !empty($pricesetFieldsCount) }\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n        {if $lineItemCount < 1 }\n        {assign var=\"lineItemCount\" value=1}\n        {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customPre_grouptitle}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$customPre item=value key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customPost_grouptitle}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$customPost item=value key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile item=value key=customName}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts 1=$customName+1}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$value item=val key=field}\n{if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\' }\n{if $field eq \'additionalCustomPre\' }\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{$additionalCustomPre_grouptitle}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{else}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{$additionalCustomPost_grouptitle}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{/if}\n{foreach from=$val item=v key=f}\n{$f}: {$v}\n{/foreach}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n     <p>{$event.confirm_email_text|htmlize}</p>\n    {/if}\n\n    {if !empty($isOnWaitlist)}\n     <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n     {if !empty($isPrimary)}\n       <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n     {/if}\n    {elseif !empty($isRequireApproval)}\n     <p>{ts}Your registration has been submitted.{/ts}</p>\n     {if !empty($isPrimary)}\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n     {/if}\n    {elseif $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n\n     {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$event.participant_role}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($isShowLocation)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}\n           {$phone.phone_type_display}\n          {else}\n           {ts}Phone{/ts}\n          {/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($event.is_public)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n     {if $email}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$email}\n       </td>\n      </tr>\n     {/if}\n\n\n     {if !empty($event.is_monetary)}\n\n      <tr>\n       <th {$headerStyle}>\n        {if !empty($event.fee_label)}{$event.fee_label}{/if}\n       </th>\n      </tr>\n\n      {if !empty($lineItem)}\n       {foreach from=$lineItem item=value key=priceset}\n        {if $value neq \'skip\'}\n         {if !empty($isPrimary)}\n          {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n           <tr>\n            <td colspan=\"2\" {$labelStyle}>\n             {ts 1=$priceset+1}Participant %1{/ts}\n            </td>\n           </tr>\n          {/if}\n         {/if}\n         <tr>\n          <td colspan=\"2\" {$valueStyle}>\n           <table>\n            <tr>\n             <th>{ts}Item{/ts}</th>\n             <th>{ts}Qty{/ts}</th>\n             <th>{ts}Each{/ts}</th>\n             {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n             {/if}\n             <th>{ts}Total{/ts}</th>\n       {if !empty($pricesetFieldsCount) }<th>{ts}Total Participants{/ts}</th>{/if}\n            </tr>\n            {foreach from=$value item=line}\n             <tr>\n              <td>\n        {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n              </td>\n              <td>\n               {$line.qty}\n              </td>\n              <td>\n               {$line.unit_price|crmMoney}\n              </td>\n              {if !empty($dataArray)}\n               <td>\n                {$line.unit_price*$line.qty|crmMoney}\n               </td>\n               {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                 {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                 {$line.tax_amount|crmMoney}\n                </td>\n               {else}\n                <td></td>\n                <td></td>\n               {/if}\n              {/if}\n              <td>\n               {$line.line_total+$line.tax_amount|crmMoney}\n              </td>\n        {if  !empty($pricesetFieldsCount) }\n        <td>\n    {$line.participant_count}\n              </td>\n        {/if}\n             </tr>\n            {/foreach}\n           </table>\n          </td>\n         </tr>\n        {/if}\n       {/foreach}\n       {if !empty($dataArray)}\n        {if $totalAmount and $totalTaxAmount}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Amount Before Tax:{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalAmount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {/if}\n        {foreach from=$dataArray item=value key=priceset}\n          <tr>\n           {if $priceset || $priceset == 0}\n            <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n            <td>&nbsp;{$value|crmMoney:$currency}</td>\n           {else}\n            <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n            <td>&nbsp;{$value|crmMoney:$currency}</td>\n           {/if}\n          </tr>\n        {/foreach}\n       {/if}\n      {/if}\n\n      {if !empty($amount) && !$lineItem}\n       {foreach from=$amount item=amnt key=level}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$amnt.amount|crmMoney} {$amnt.label}\n         </td>\n        </tr>\n       {/foreach}\n      {/if}\n      {if $totalTaxAmount}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$totalTaxAmount|crmMoney:$currency}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($isPrimary)}\n       <tr>\n        <td {$labelStyle}>\n        {if isset($balanceAmount)}\n           {ts}Total Paid{/ts}\n        {else}\n           {ts}Total Amount{/ts}\n         {/if}\n        </td>\n        <td {$valueStyle}>\n         {if !empty($totalAmount)}{$totalAmount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n        </td>\n       </tr>\n      {if isset($balanceAmount)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Balance{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$balanceAmount|crmMoney}\n        </td>\n       </tr>\n      {/if}\n       {if !empty($pricesetFieldsCount) }\n     <tr>\n       <td {$labelStyle}>\n   {ts}Total Participants{/ts}</td>\n       <td {$valueStyle}>\n   {assign var=\"count\" value= 0}\n         {foreach from=$lineItem item=pcount}\n         {assign var=\"lineItemCount\" value=0}\n         {if $pcount neq \'skip\'}\n           {foreach from=$pcount item=p_count}\n           {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n           {/foreach}\n           {if $lineItemCount < 1 }\n           assign var=\"lineItemCount\" value=1}\n           {/if}\n           {assign var=\"count\" value=$count+$lineItemCount}\n         {/if}\n         {/foreach}\n   {$count}\n       </td>\n     </tr>\n     {/if}\n       {if $is_pay_later}\n        <tr>\n         <td colspan=\"2\" {$labelStyle}>\n          {$pay_later_receipt}\n         </td>\n        </tr>\n       {/if}\n\n       {if $register_date}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Registration Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$register_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($receive_date)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$receive_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($financialTypeName)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Financial Type{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$financialTypeName}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($trxn_id)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction #{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$trxn_id}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($paidBy)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Paid By{/ts}\n         </td>\n         <td {$valueStyle}>\n         {$paidBy}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($checkNumber)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Check Number{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$checkNumber}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($billingName)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Billing Name and Address{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($credit_card_type)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$credit_card_type}<br />\n          {$credit_card_number}<br />\n          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n      {/if}\n\n     {/if} {* End of conditional section for Paid events *}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=value key=customName}\n       {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=value key=customName}\n       {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customProfile)}\n      {foreach from=$customProfile item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {ts 1=$customName+1}Participant Information - Participant %1{/ts}\n        </th>\n       </tr>\n       {foreach from=$value item=val key=field}\n        {if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\'}\n         <tr>\n          <td colspan=\"2\" {$labelStyle}>\n           {if $field eq \'additionalCustomPre\'}\n            {$additionalCustomPre_grouptitle}\n           {else}\n            {$additionalCustomPost_grouptitle}\n           {/if}\n          </td>\n         </tr>\n         {foreach from=$val item=v key=f}\n          <tr>\n           <td {$labelStyle}>\n            {$f}\n           </td>\n           <td {$valueStyle}>\n            {$v}\n           </td>\n          </tr>\n         {/foreach}\n        {/if}\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,827,'event_offline_receipt',1,0,0,NULL),
- (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {$event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if !empty($isPrimary)}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if !empty($isPrimary)}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and empty($defaultRole)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if !empty($event.is_public)}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($email)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$email}\n{/if}\n{if !empty($event.is_monetary)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if !empty($isPrimary)}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts}\n{/if}\n{/if}\n---------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount) }{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if}  {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n{/if}\n{/foreach}\n\n{if !empty($dataArray)}\n{if $totalAmount and $totalTaxAmount}\n{ts}Amount before Tax{/ts}: {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amount) && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if !empty($isPrimary)}\n\n{if !empty($balanceAmount)}{ts}Total Paid{/ts}{else}{ts}Total Amount{/ts}{/if}: {if !empty($totalAmount)}{$totalAmount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($balanceAmount)}\n{ts}Balance{/ts}: {$balanceAmount|crmMoney}\n{/if}\n\n{if !empty($pricesetFieldsCount) }\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n        {if $lineItemCount < 1 }\n        {assign var=\"lineItemCount\" value=1}\n        {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customPre_grouptitle}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$customPre item=value key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customPost_grouptitle}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$customPost item=value key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile item=value key=customName}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts 1=$customName+1}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$value item=val key=field}\n{if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\' }\n{if $field eq \'additionalCustomPre\' }\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{$additionalCustomPre_grouptitle}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{else}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{$additionalCustomPost_grouptitle}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{/if}\n{foreach from=$val item=v key=f}\n{$f}: {$v}\n{/foreach}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n     <p>{$event.confirm_email_text|htmlize}</p>\n    {/if}\n\n    {if !empty($isOnWaitlist)}\n     <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n     {if !empty($isPrimary)}\n       <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n     {/if}\n    {elseif !empty($isRequireApproval)}\n     <p>{ts}Your registration has been submitted.{/ts}</p>\n     {if !empty($isPrimary)}\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n     {/if}\n    {elseif $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n\n     {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$event.participant_role}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($isShowLocation)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}\n           {$phone.phone_type_display}\n          {else}\n           {ts}Phone{/ts}\n          {/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($event.is_public)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n     {if $email}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$email}\n       </td>\n      </tr>\n     {/if}\n\n\n     {if !empty($event.is_monetary)}\n\n      <tr>\n       <th {$headerStyle}>\n        {if !empty($event.fee_label)}{$event.fee_label}{/if}\n       </th>\n      </tr>\n\n      {if !empty($lineItem)}\n       {foreach from=$lineItem item=value key=priceset}\n        {if $value neq \'skip\'}\n         {if !empty($isPrimary)}\n          {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n           <tr>\n            <td colspan=\"2\" {$labelStyle}>\n             {ts 1=$priceset+1}Participant %1{/ts}\n            </td>\n           </tr>\n          {/if}\n         {/if}\n         <tr>\n          <td colspan=\"2\" {$valueStyle}>\n           <table>\n            <tr>\n             <th>{ts}Item{/ts}</th>\n             <th>{ts}Qty{/ts}</th>\n             <th>{ts}Each{/ts}</th>\n             {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n             {/if}\n             <th>{ts}Total{/ts}</th>\n       {if !empty($pricesetFieldsCount) }<th>{ts}Total Participants{/ts}</th>{/if}\n            </tr>\n            {foreach from=$value item=line}\n             <tr>\n              <td>\n        {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n              </td>\n              <td>\n               {$line.qty}\n              </td>\n              <td>\n               {$line.unit_price|crmMoney}\n              </td>\n              {if !empty($dataArray)}\n               <td>\n                {$line.unit_price*$line.qty|crmMoney}\n               </td>\n               {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                 {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                 {$line.tax_amount|crmMoney}\n                </td>\n               {else}\n                <td></td>\n                <td></td>\n               {/if}\n              {/if}\n              <td>\n               {$line.line_total+$line.tax_amount|crmMoney}\n              </td>\n        {if  !empty($pricesetFieldsCount) }\n        <td>\n    {$line.participant_count}\n              </td>\n        {/if}\n             </tr>\n            {/foreach}\n           </table>\n          </td>\n         </tr>\n        {/if}\n       {/foreach}\n       {if !empty($dataArray)}\n        {if $totalAmount and $totalTaxAmount}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Amount Before Tax:{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalAmount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {/if}\n        {foreach from=$dataArray item=value key=priceset}\n          <tr>\n           {if $priceset || $priceset == 0}\n            <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n            <td>&nbsp;{$value|crmMoney:$currency}</td>\n           {else}\n            <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n            <td>&nbsp;{$value|crmMoney:$currency}</td>\n           {/if}\n          </tr>\n        {/foreach}\n       {/if}\n      {/if}\n\n      {if !empty($amount) && !$lineItem}\n       {foreach from=$amount item=amnt key=level}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$amnt.amount|crmMoney} {$amnt.label}\n         </td>\n        </tr>\n       {/foreach}\n      {/if}\n      {if $totalTaxAmount}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$totalTaxAmount|crmMoney:$currency}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($isPrimary)}\n       <tr>\n        <td {$labelStyle}>\n        {if isset($balanceAmount)}\n           {ts}Total Paid{/ts}\n        {else}\n           {ts}Total Amount{/ts}\n         {/if}\n        </td>\n        <td {$valueStyle}>\n         {if !empty($totalAmount)}{$totalAmount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n        </td>\n       </tr>\n      {if isset($balanceAmount)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Balance{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$balanceAmount|crmMoney}\n        </td>\n       </tr>\n      {/if}\n       {if !empty($pricesetFieldsCount) }\n     <tr>\n       <td {$labelStyle}>\n   {ts}Total Participants{/ts}</td>\n       <td {$valueStyle}>\n   {assign var=\"count\" value= 0}\n         {foreach from=$lineItem item=pcount}\n         {assign var=\"lineItemCount\" value=0}\n         {if $pcount neq \'skip\'}\n           {foreach from=$pcount item=p_count}\n           {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n           {/foreach}\n           {if $lineItemCount < 1 }\n           assign var=\"lineItemCount\" value=1}\n           {/if}\n           {assign var=\"count\" value=$count+$lineItemCount}\n         {/if}\n         {/foreach}\n   {$count}\n       </td>\n     </tr>\n     {/if}\n       {if $is_pay_later}\n        <tr>\n         <td colspan=\"2\" {$labelStyle}>\n          {$pay_later_receipt}\n         </td>\n        </tr>\n       {/if}\n\n       {if $register_date}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Registration Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$register_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($receive_date)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$receive_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($financialTypeName)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Financial Type{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$financialTypeName}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($trxn_id)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction #{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$trxn_id}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($paidBy)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Paid By{/ts}\n         </td>\n         <td {$valueStyle}>\n         {$paidBy}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($checkNumber)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Check Number{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$checkNumber}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($billingName)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Billing Name and Address{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($credit_card_type)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$credit_card_type}<br />\n          {$credit_card_number}<br />\n          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n      {/if}\n\n     {/if} {* End of conditional section for Paid events *}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=value key=customName}\n       {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=value key=customName}\n       {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customProfile)}\n      {foreach from=$customProfile item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {ts 1=$customName+1}Participant Information - Participant %1{/ts}\n        </th>\n       </tr>\n       {foreach from=$value item=val key=field}\n        {if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\'}\n         <tr>\n          <td colspan=\"2\" {$labelStyle}>\n           {if $field eq \'additionalCustomPre\'}\n            {$additionalCustomPre_grouptitle}\n           {else}\n            {$additionalCustomPost_grouptitle}\n           {/if}\n          </td>\n         </tr>\n         {foreach from=$val item=v key=f}\n          <tr>\n           <td {$labelStyle}>\n            {$f}\n           </td>\n           <td {$valueStyle}>\n            {$v}\n           </td>\n          </tr>\n         {/foreach}\n        {/if}\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,827,'event_offline_receipt',0,1,0,NULL),
- (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {$event.event_title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n  {ts}Thank you for your registration.{/ts}\n  {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n  {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n  {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if !empty($isPrimary)}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if !empty($isPrimary)}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if isset($pay_later_receipt)}{$pay_later_receipt}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$event.event_title}\n{$event.event_start_date|crmDate:\"%A\"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n{if !empty($conference_sessions)}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location}    {$session.location}{/if}\n{/foreach}\n{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if !empty($event.is_public)}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if !empty($event.is_monetary) and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty ($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if !empty($isPrimary)}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if !empty($dataArray)}\n{if isset($totalAmount) and isset($totalTaxAmount)}\n{ts}Amount before Tax{/ts}: {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amounts) && empty($lineItem)}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\n{/foreach}\n{/if}\n\n{if isset($totalTaxAmount)}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if !empty($isPrimary) }\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount) }\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1 }\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if !empty($receive_date)}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPr item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPos item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer) }\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotal}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n     <p>{$event.confirm_email_text|htmlize}</p>\n\n    {else}\n     <p>{ts}Thank you for your registration.{/ts}\n     {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to <strong> %1</strong>.{/ts}\n     {else}{if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>waitlisted</strong>.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}{/if}{/if}</p>\n\n    {/if}\n\n    <p>\n    {if !empty($isOnWaitlist)}\n     <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n     {if !empty($isPrimary)}\n       <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n     {/if}\n    {elseif !empty($isRequireApproval)}\n     <p>{ts}Your registration has been submitted.{/ts}</p>\n     {if !empty($isPrimary)}\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n     {/if}\n    {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n     <p>{if isset($pay_later_receipt)}{$pay_later_receipt}{/if}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate:\"%A\"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n\n\n     {if $conference_sessions}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n  {ts}Your schedule:{/ts}\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n  {assign var=\'group_by_day\' value=\'NA\'}\n  {foreach from=$conference_sessions item=session}\n   {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n    {assign var=\'group_by_day\' value=$session.start_date}\n          <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n   {/if}\n   {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n   {if $session.location}&nbsp;&nbsp;&nbsp;&nbsp;{$session.location}<br />{/if}\n  {/foreach}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$event.participant_role}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($isShowLocation)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}\n           {$phone.phone_type_display}\n          {else}\n           {ts}Phone{/ts}\n          {/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($event.is_public)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($event.is_share)}\n        <tr>\n            <td colspan=\"2\" {$valueStyle}>\n                {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id=`$event.id`&reset=1\" a=true fe=1 h=1}{/capture}\n                {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl}\n            </td>\n        </tr>\n    {/if}\n    {if !empty($payer.name)}\n     <tr>\n       <th {$headerStyle}>\n         {ts}You were registered by:{/ts}\n       </th>\n     </tr>\n     <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$payer.name}\n       </td>\n     </tr>\n    {/if}\n    {if !empty($event.is_monetary) and empty($isRequireApproval)}\n\n      <tr>\n       <th {$headerStyle}>\n        {if !empty($event.fee_label)}{$event.fee_label}{/if}\n       </th>\n      </tr>\n\n      {if !empty($lineItem)}\n       {foreach from=$lineItem item=value key=priceset}\n        {if $value neq \'skip\'}\n         {if !empty($isPrimary)}\n          {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n           <tr>\n            <td colspan=\"2\" {$labelStyle}>\n             {ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n            </td>\n           </tr>\n          {/if}\n         {/if}\n         <tr>\n          <td colspan=\"2\" {$valueStyle}>\n           <table>\n            <tr>\n             <th>{ts}Item{/ts}</th>\n             <th>{ts}Qty{/ts}</th>\n             <th>{ts}Each{/ts}</th>\n             {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n             {/if}\n             <th>{ts}Total{/ts}</th>\n       {if  !empty($pricesetFieldsCount) }<th>{ts}Total Participants{/ts}</th>{/if}\n            </tr>\n            {foreach from=$value item=line}\n             <tr>\n              <td {$tdfirstStyle}>\n              {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n              </td>\n              <td {$tdStyle} align=\"middle\">\n               {$line.qty}\n              </td>\n              <td {$tdStyle}>\n               {$line.unit_price|crmMoney:$currency}\n              </td>\n              {if !empty($dataArray)}\n               <td {$tdStyle}>\n                {$line.unit_price*$line.qty|crmMoney}\n               </td>\n               {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td {$tdStyle}>\n                 {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td {$tdStyle}>\n                 {$line.tax_amount|crmMoney}\n                </td>\n               {else}\n                <td></td>\n                <td></td>\n               {/if}\n              {/if}\n              <td {$tdStyle}>\n               {$line.line_total+$line.tax_amount|crmMoney:$currency}\n              </td>\n        {if !empty($pricesetFieldsCount) }<td {$tdStyle}>{$line.participant_count}</td> {/if}\n             </tr>\n            {/foreach}\n            {if !empty($individual)}\n              <tr {$participantTotal}>\n                <td colspan=3>{ts}Participant Total{/ts}</td>\n                <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td>\n                <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td>\n                <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td>\n              </tr>\n            {/if}\n           </table>\n          </td>\n         </tr>\n        {/if}\n       {/foreach}\n       {if !empty($dataArray)}\n        {if isset($totalAmount) and isset($totalTaxAmount)}\n        <tr>\n         <td {$labelStyle}>\n          {ts} Amount Before Tax: {/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalAmount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {/if}\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n          {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n          {else}\n           <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n          {/if}\n         </tr>\n        {/foreach}\n       {/if}\n      {/if}\n\n      {if !empty($amounts) && empty($lineItem)}\n       {foreach from=$amounts item=amnt key=level}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$amnt.amount|crmMoney:$currency} {$amnt.label}\n         </td>\n        </tr>\n       {/foreach}\n      {/if}\n\n    {if isset($totalTaxAmount)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$totalTaxAmount|crmMoney:$currency}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($isPrimary)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n        </td>\n       </tr>\n       {if !empty($pricesetFieldsCount) }\n     <tr>\n       <td {$labelStyle}>\n      {ts}Total Participants{/ts}</td>\n      <td {$valueStyle}>\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1 }\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n     {$count}\n     </td> </tr>\n      {/if}\n\n       {if $register_date}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Registration Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$register_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($receive_date)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$receive_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($financialTypeName)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Financial Type{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$financialTypeName}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($trxn_id)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction #{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$trxn_id}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($paidBy)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Paid By{/ts}\n         </td>\n         <td {$valueStyle}>\n         {$paidBy}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($checkNumber)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Check Number{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$checkNumber}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($billingName)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Billing Name and Address{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($credit_card_type)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$credit_card_type}<br />\n          {$credit_card_number}<br />\n          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n      {/if}\n\n     {/if} {* End of conditional section for Paid events *}\n\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n   <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr>\n   {foreach from=$customPr item=customValue key=customName}\n   {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n     <tr>\n         <td {$labelStyle}>{$customName}</td>\n         <td {$valueStyle}>{$customValue}</td>\n     </tr>\n   {/if}\n   {/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n   <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr>\n   {foreach from=$customPos item=customValue key=customName}\n   {if (!empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n     <tr>\n         <td {$labelStyle}>{$customName}</td>\n         <td {$valueStyle}>{$customValue}</td>\n     </tr>\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customProfile)}\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n     <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr>\n     {foreach from=$eachParticipant item=eachProfile key=pid}\n     <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr>\n     {foreach from=$eachProfile item=val key=field}\n     <tr>{foreach from=$val item=v key=f}\n         <td {$labelStyle}>{$field}</td>\n         <td {$valueStyle}>{$v}</td>\n         {/foreach}\n     </tr>\n     {/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n    </table>\n    {if !empty($event.allow_selfcancelxfer) }\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n        {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n        {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n        <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n      </td>\n     </tr>\n    {/if}\n </table>\n\n</body>\n</html>\n',1,828,'event_online_receipt',1,0,0,NULL),
- (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {$event.event_title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n  {ts}Thank you for your registration.{/ts}\n  {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n  {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n  {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if !empty($isPrimary)}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if !empty($isPrimary)}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if isset($pay_later_receipt)}{$pay_later_receipt}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$event.event_title}\n{$event.event_start_date|crmDate:\"%A\"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n{if !empty($conference_sessions)}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location}    {$session.location}{/if}\n{/foreach}\n{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if !empty($event.is_public)}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if !empty($event.is_monetary) and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty ($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if !empty($isPrimary)}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if !empty($dataArray)}\n{if isset($totalAmount) and isset($totalTaxAmount)}\n{ts}Amount before Tax{/ts}: {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amounts) && empty($lineItem)}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\n{/foreach}\n{/if}\n\n{if isset($totalTaxAmount)}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if !empty($isPrimary) }\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount) }\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1 }\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if !empty($receive_date)}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPr item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPos item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer) }\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotal}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n     <p>{$event.confirm_email_text|htmlize}</p>\n\n    {else}\n     <p>{ts}Thank you for your registration.{/ts}\n     {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to <strong> %1</strong>.{/ts}\n     {else}{if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>waitlisted</strong>.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}{/if}{/if}</p>\n\n    {/if}\n\n    <p>\n    {if !empty($isOnWaitlist)}\n     <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n     {if !empty($isPrimary)}\n       <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n     {/if}\n    {elseif !empty($isRequireApproval)}\n     <p>{ts}Your registration has been submitted.{/ts}</p>\n     {if !empty($isPrimary)}\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n     {/if}\n    {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n     <p>{if isset($pay_later_receipt)}{$pay_later_receipt}{/if}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate:\"%A\"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n\n\n     {if $conference_sessions}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n  {ts}Your schedule:{/ts}\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n  {assign var=\'group_by_day\' value=\'NA\'}\n  {foreach from=$conference_sessions item=session}\n   {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n    {assign var=\'group_by_day\' value=$session.start_date}\n          <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n   {/if}\n   {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n   {if $session.location}&nbsp;&nbsp;&nbsp;&nbsp;{$session.location}<br />{/if}\n  {/foreach}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$event.participant_role}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($isShowLocation)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}\n           {$phone.phone_type_display}\n          {else}\n           {ts}Phone{/ts}\n          {/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($event.is_public)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($event.is_share)}\n        <tr>\n            <td colspan=\"2\" {$valueStyle}>\n                {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id=`$event.id`&reset=1\" a=true fe=1 h=1}{/capture}\n                {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl}\n            </td>\n        </tr>\n    {/if}\n    {if !empty($payer.name)}\n     <tr>\n       <th {$headerStyle}>\n         {ts}You were registered by:{/ts}\n       </th>\n     </tr>\n     <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$payer.name}\n       </td>\n     </tr>\n    {/if}\n    {if !empty($event.is_monetary) and empty($isRequireApproval)}\n\n      <tr>\n       <th {$headerStyle}>\n        {if !empty($event.fee_label)}{$event.fee_label}{/if}\n       </th>\n      </tr>\n\n      {if !empty($lineItem)}\n       {foreach from=$lineItem item=value key=priceset}\n        {if $value neq \'skip\'}\n         {if !empty($isPrimary)}\n          {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n           <tr>\n            <td colspan=\"2\" {$labelStyle}>\n             {ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n            </td>\n           </tr>\n          {/if}\n         {/if}\n         <tr>\n          <td colspan=\"2\" {$valueStyle}>\n           <table>\n            <tr>\n             <th>{ts}Item{/ts}</th>\n             <th>{ts}Qty{/ts}</th>\n             <th>{ts}Each{/ts}</th>\n             {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n             {/if}\n             <th>{ts}Total{/ts}</th>\n       {if  !empty($pricesetFieldsCount) }<th>{ts}Total Participants{/ts}</th>{/if}\n            </tr>\n            {foreach from=$value item=line}\n             <tr>\n              <td {$tdfirstStyle}>\n              {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n              </td>\n              <td {$tdStyle} align=\"middle\">\n               {$line.qty}\n              </td>\n              <td {$tdStyle}>\n               {$line.unit_price|crmMoney:$currency}\n              </td>\n              {if !empty($dataArray)}\n               <td {$tdStyle}>\n                {$line.unit_price*$line.qty|crmMoney}\n               </td>\n               {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td {$tdStyle}>\n                 {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td {$tdStyle}>\n                 {$line.tax_amount|crmMoney}\n                </td>\n               {else}\n                <td></td>\n                <td></td>\n               {/if}\n              {/if}\n              <td {$tdStyle}>\n               {$line.line_total+$line.tax_amount|crmMoney:$currency}\n              </td>\n        {if !empty($pricesetFieldsCount) }<td {$tdStyle}>{$line.participant_count}</td> {/if}\n             </tr>\n            {/foreach}\n            {if !empty($individual)}\n              <tr {$participantTotal}>\n                <td colspan=3>{ts}Participant Total{/ts}</td>\n                <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td>\n                <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td>\n                <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td>\n              </tr>\n            {/if}\n           </table>\n          </td>\n         </tr>\n        {/if}\n       {/foreach}\n       {if !empty($dataArray)}\n        {if isset($totalAmount) and isset($totalTaxAmount)}\n        <tr>\n         <td {$labelStyle}>\n          {ts} Amount Before Tax: {/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalAmount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {/if}\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n          {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n          {else}\n           <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n          {/if}\n         </tr>\n        {/foreach}\n       {/if}\n      {/if}\n\n      {if !empty($amounts) && empty($lineItem)}\n       {foreach from=$amounts item=amnt key=level}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$amnt.amount|crmMoney:$currency} {$amnt.label}\n         </td>\n        </tr>\n       {/foreach}\n      {/if}\n\n    {if isset($totalTaxAmount)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$totalTaxAmount|crmMoney:$currency}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($isPrimary)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n        </td>\n       </tr>\n       {if !empty($pricesetFieldsCount) }\n     <tr>\n       <td {$labelStyle}>\n      {ts}Total Participants{/ts}</td>\n      <td {$valueStyle}>\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1 }\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n     {$count}\n     </td> </tr>\n      {/if}\n\n       {if $register_date}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Registration Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$register_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($receive_date)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$receive_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($financialTypeName)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Financial Type{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$financialTypeName}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($trxn_id)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction #{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$trxn_id}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($paidBy)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Paid By{/ts}\n         </td>\n         <td {$valueStyle}>\n         {$paidBy}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($checkNumber)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Check Number{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$checkNumber}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($billingName)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Billing Name and Address{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($credit_card_type)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$credit_card_type}<br />\n          {$credit_card_number}<br />\n          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n      {/if}\n\n     {/if} {* End of conditional section for Paid events *}\n\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n   <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr>\n   {foreach from=$customPr item=customValue key=customName}\n   {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n     <tr>\n         <td {$labelStyle}>{$customName}</td>\n         <td {$valueStyle}>{$customValue}</td>\n     </tr>\n   {/if}\n   {/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n   <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr>\n   {foreach from=$customPos item=customValue key=customName}\n   {if (!empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n     <tr>\n         <td {$labelStyle}>{$customName}</td>\n         <td {$valueStyle}>{$customValue}</td>\n     </tr>\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customProfile)}\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n     <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr>\n     {foreach from=$eachParticipant item=eachProfile key=pid}\n     <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr>\n     {foreach from=$eachProfile item=val key=field}\n     <tr>{foreach from=$val item=v key=f}\n         <td {$labelStyle}>{$field}</td>\n         <td {$valueStyle}>{$v}</td>\n         {/foreach}\n     </tr>\n     {/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n    </table>\n    {if !empty($event.allow_selfcancelxfer) }\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n        {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n        {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n        <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n      </td>\n     </tr>\n    {/if}\n </table>\n\n</body>\n</html>\n',1,828,'event_online_receipt',0,1,0,NULL),
- (33,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n  This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n  This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n  {$pay_later_receipt}\n{/if}\n\n  Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n  {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n  Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n  {foreach from=$line_item.participants item=participant}\n    {$participant.display_name}\n  {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n  Waitlisted:\n    {foreach from=$line_item.waiting_participants item=participant}\n      {$participant.display_name}\n    {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n  {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n  If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <title></title>\n  </head>\n  <body>\n    {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n    {capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n    {capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if $is_pay_later}\n      <p>\n        This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n      </p>\n    {else}\n      <p>\n        This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n      </p>\n    {/if}\n\n    {if $is_pay_later}\n      <p>{$pay_later_receipt}</p>\n    {/if}\n\n    <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n  Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Billing Name and Address{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$billing_name}<br />\n      {$billing_street_address}<br />\n      {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n      <br/>\n      {$email}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if $credit_card_type}\n  <p>&nbsp;</p>\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Credit Card Information{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$credit_card_type}<br />\n      {$credit_card_number}<br />\n      {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if !empty($source)}\n    <p>&nbsp;</p>\n    {$source}\n{/if}\n    <p>&nbsp;</p>\n    <table width=\"700\">\n      <thead>\n    <tr>\n{if $line_items}\n      <th style=\"text-align: left;\">\n      Event\n      </th>\n      <th style=\"text-align: left;\">\n      Participants\n      </th>\n{/if}\n      <th style=\"text-align: left;\">\n      Price\n      </th>\n      <th style=\"text-align: left;\">\n      Total\n      </th>\n    </tr>\n    </thead>\n      <tbody>\n  {foreach from=$line_items item=line_item}\n  <tr>\n    <td style=\"width: 220px\">\n      {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n      {if $line_item.event->is_show_location}\n        {$line_item.location.address.1.display|nl2br}\n      {/if}{*End of isShowLocation condition*}<br /><br />\n      {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n    </td>\n    <td style=\"width: 180px\">\n    {$line_item.num_participants}\n      {if $line_item.num_participants > 0}\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n      {if $line_item.num_waiting_participants > 0}\n      Waitlisted:<br/>\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.waiting_participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n    </td>\n    <td style=\"width: 100px\">\n      {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n    <td style=\"width: 100px\">\n      &nbsp;{$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {/foreach}\n      </tbody>\n      <tfoot>\n  {if $discounts}\n  <tr>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      Subtotal:\n    </td>\n    <td>\n      &nbsp;{$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {foreach from=$discounts key=myId item=i}\n  <tr>\n    <td>\n      {$i.title}\n    </td>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      -{$i.amount}\n    </td>\n  </tr>\n  {/foreach}\n  {/if}\n  <tr>\n{if $line_items}\n    <td>\n    </td>\n    <td>\n    </td>\n{/if}\n    <td>\n      <strong>Total:</strong>\n    </td>\n    <td>\n      <strong>&nbsp;{$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n    </td>\n  </tr>\n      </tfoot>\n    </table>\n\n    If you have questions about the status of your registration or purchase please feel free to contact us.\n  </body>\n</html>\n',1,829,'event_registration_receipt',1,0,0,NULL),
- (34,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n  This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n  This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n  {$pay_later_receipt}\n{/if}\n\n  Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n  {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n  Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n  {foreach from=$line_item.participants item=participant}\n    {$participant.display_name}\n  {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n  Waitlisted:\n    {foreach from=$line_item.waiting_participants item=participant}\n      {$participant.display_name}\n    {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n  {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n  If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <title></title>\n  </head>\n  <body>\n    {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n    {capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n    {capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if $is_pay_later}\n      <p>\n        This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n      </p>\n    {else}\n      <p>\n        This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n      </p>\n    {/if}\n\n    {if $is_pay_later}\n      <p>{$pay_later_receipt}</p>\n    {/if}\n\n    <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n  Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Billing Name and Address{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$billing_name}<br />\n      {$billing_street_address}<br />\n      {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n      <br/>\n      {$email}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if $credit_card_type}\n  <p>&nbsp;</p>\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Credit Card Information{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$credit_card_type}<br />\n      {$credit_card_number}<br />\n      {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if !empty($source)}\n    <p>&nbsp;</p>\n    {$source}\n{/if}\n    <p>&nbsp;</p>\n    <table width=\"700\">\n      <thead>\n    <tr>\n{if $line_items}\n      <th style=\"text-align: left;\">\n      Event\n      </th>\n      <th style=\"text-align: left;\">\n      Participants\n      </th>\n{/if}\n      <th style=\"text-align: left;\">\n      Price\n      </th>\n      <th style=\"text-align: left;\">\n      Total\n      </th>\n    </tr>\n    </thead>\n      <tbody>\n  {foreach from=$line_items item=line_item}\n  <tr>\n    <td style=\"width: 220px\">\n      {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n      {if $line_item.event->is_show_location}\n        {$line_item.location.address.1.display|nl2br}\n      {/if}{*End of isShowLocation condition*}<br /><br />\n      {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n    </td>\n    <td style=\"width: 180px\">\n    {$line_item.num_participants}\n      {if $line_item.num_participants > 0}\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n      {if $line_item.num_waiting_participants > 0}\n      Waitlisted:<br/>\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.waiting_participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n    </td>\n    <td style=\"width: 100px\">\n      {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n    <td style=\"width: 100px\">\n      &nbsp;{$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {/foreach}\n      </tbody>\n      <tfoot>\n  {if $discounts}\n  <tr>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      Subtotal:\n    </td>\n    <td>\n      &nbsp;{$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {foreach from=$discounts key=myId item=i}\n  <tr>\n    <td>\n      {$i.title}\n    </td>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      -{$i.amount}\n    </td>\n  </tr>\n  {/foreach}\n  {/if}\n  <tr>\n{if $line_items}\n    <td>\n    </td>\n    <td>\n    </td>\n{/if}\n    <td>\n      <strong>Total:</strong>\n    </td>\n    <td>\n      <strong>&nbsp;{$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n    </td>\n  </tr>\n      </tfoot>\n    </table>\n\n    If you have questions about the status of your registration or purchase please feel free to contact us.\n  </body>\n</html>\n',1,829,'event_registration_receipt',0,1,0,NULL),
+ (23,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n   </td>\n  </tr>\n\n  {if $pcpStatus eq \'Approved\'}\n\n    <tr>\n     <td>\n      <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n       <tr>\n        <th {$headerStyle}>\n         {ts}Promoting Your Page{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {if $isTellFriendEnabled}\n          <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n          <ol>\n           <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n           <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n          </ol>\n         {else}\n          <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n         {/if}\n        </td>\n       </tr>\n       <tr>\n        <th {$headerStyle}>\n         {ts}Managing Your Page{/ts}\n        </th>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n         <ol>\n          <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n          <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n         </ol>\n         <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n        </td>\n       </tr>\n       </tr>\n      </table>\n     </td>\n    </tr>\n\n   {elseif $pcpStatus EQ \'Waiting Review\'}\n\n    <tr>\n     <td>\n      <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n      <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n      <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n      <ol>\n       <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n       <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n      </ol>\n     </td>\n    </tr>\n\n   {/if}\n\n   {if $pcpNotifyEmailAddress}\n    <tr>\n     <td>\n      <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n     </td>\n    </tr>\n   {/if}\n\n </table>\n\n</body>\n</html>\n',1,824,'pcp_supporter_notify',1,0,0,NULL),
+ (24,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n   </td>\n  </tr>\n\n  {if $pcpStatus eq \'Approved\'}\n\n    <tr>\n     <td>\n      <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n       <tr>\n        <th {$headerStyle}>\n         {ts}Promoting Your Page{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {if $isTellFriendEnabled}\n          <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n          <ol>\n           <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n           <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n          </ol>\n         {else}\n          <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n         {/if}\n        </td>\n       </tr>\n       <tr>\n        <th {$headerStyle}>\n         {ts}Managing Your Page{/ts}\n        </th>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n         <ol>\n          <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n          <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n         </ol>\n         <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n        </td>\n       </tr>\n       </tr>\n      </table>\n     </td>\n    </tr>\n\n   {elseif $pcpStatus EQ \'Waiting Review\'}\n\n    <tr>\n     <td>\n      <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n      <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n      <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n      <ol>\n       <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n       <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n      </ol>\n     </td>\n    </tr>\n\n   {/if}\n\n   {if $pcpNotifyEmailAddress}\n    <tr>\n     <td>\n      <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n     </td>\n    </tr>\n   {/if}\n\n </table>\n\n</body>\n</html>\n',1,824,'pcp_supporter_notify',0,1,0,NULL),
+ (25,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n    {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Received{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n  <p>{ts}You have received a donation at your personal page{/ts}: <a href=\"{$pcpInfoURL}\">{$page_title}</a></p>\n  <p>{ts}Your fundraising total has been updated.{/ts}<br/>\n    {ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts} <br/>\n    {if $is_honor_roll_enabled}\n      {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}<br/>\n    {/if}\n  </p>\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n    <tr><td>{ts}Received{/ts}:</td><td> {$receive_date|crmDate}</td></tr>\n    <tr><td>{ts}Amount{/ts}:</td><td> {$total_amount|crmMoney:$currency}</td></tr>\n    <tr><td>{ts}Name{/ts}:</td><td> {$donors_display_name}</td></tr>\n    <tr><td>{ts}Email{/ts}:</td><td> {$donors_email}</td></tr>\n  </table>\n</body>\n</html>\n',1,825,'pcp_owner_notify',1,0,0,NULL),
+ (26,'Personal Campaign Pages - Owner Notification','{ts}Someone has just donated to your personal campaign page{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Owner Notification{/ts}\n\n===========================================================\n{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}You have received a donation at your personal page{/ts}: {$page_title}\n>> {$pcpInfoURL}\n\n{ts}Your fundraising total has been updated.{/ts}\n{ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts}\n{if $is_honor_roll_enabled}\n    {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}\n{/if}\n\n{ts}Received{/ts}: {$receive_date|crmDate}\n\n{ts}Amount{/ts}: {$total_amount|crmMoney:$currency}\n\n{ts}Name{/ts}: {$donors_display_name}\n\n{ts}Email{/ts}: {$donors_email}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n  <p>{ts}You have received a donation at your personal page{/ts}: <a href=\"{$pcpInfoURL}\">{$page_title}</a></p>\n  <p>{ts}Your fundraising total has been updated.{/ts}<br/>\n    {ts}The donor\'s information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts} <br/>\n    {if $is_honor_roll_enabled}\n      {ts}The donor\'s name has been added to your honor roll unless they asked not to be included.{/ts}<br/>\n    {/if}\n  </p>\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n    <tr><td>{ts}Received{/ts}:</td><td> {$receive_date|crmDate}</td></tr>\n    <tr><td>{ts}Amount{/ts}:</td><td> {$total_amount|crmMoney:$currency}</td></tr>\n    <tr><td>{ts}Name{/ts}:</td><td> {$donors_display_name}</td></tr>\n    <tr><td>{ts}Email{/ts}:</td><td> {$donors_email}</td></tr>\n  </table>\n</body>\n</html>\n',1,825,'pcp_owner_notify',0,1,0,NULL),
+ (27,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle }style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle }style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if $isRefund}\n        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n      {else}\n        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n        {if $paymentsComplete}\n          <p>{ts}Thank you for completing this contribution.{/ts}</p>\n        {/if}\n      {/if}\n    </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if $isRefund}\n      <tr>\n        <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Refund Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$refundAmount|crmMoney}\n        </td>\n      </tr>\n    {else}\n      <tr>\n        <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Payment Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paymentAmount|crmMoney}\n        </td>\n      </tr>\n    {/if}\n    {if $receive_date}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction Date{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$receive_date|crmDate}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($trxn_id)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$trxn_id}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($paidBy)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Paid By{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paidBy}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($checkNumber)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$checkNumber}\n        </td>\n      </tr>\n    {/if}\n\n  <tr>\n    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n  </tr>\n  {if $totalAmount}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Fee{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalAmount|crmMoney}\n    </td>\n  </tr>\n  {/if}\n  {if $totalPaid}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Paid{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalPaid|crmMoney}\n    </td>\n  </tr>\n  {/if}\n  {if $amountOwed}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Balance Owed{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$amountOwed|crmMoney}\n    </td> {* This will be zero after final payment. *}\n  </tr>\n  {/if}\n  </table>\n\n  </td>\n  </tr>\n    <tr>\n      <td>\n  <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if !empty($billingName) || !empty($address)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {if !empty($billingName)}{$billingName}{/if}<br />\n        {if !empty($address)}{$address|nl2br}{/if}\n            </td>\n          </tr>\n    {/if}\n    {if !empty($credit_card_number)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n            </td>\n          </tr>\n    {/if}\n    {if $component eq \'event\'}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Event Information and Location{/ts}\n      </th>\n    </tr>\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n         {$event.event_title}<br />\n        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n    </tr>\n\n    {if !empty($event.participant_role)}\n    <tr>\n      <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n      </td>\n      <td {$valueStyle}>\n        {$event.participant_role}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($isShowLocation)}\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n    <tr>\n      <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n      </td>\n    </tr>\n    {foreach from=$location.phone item=phone}\n    {if $phone.phone}\n          <tr>\n            <td {$labelStyle}>\n        {if $phone.phone_type}\n        {$phone.phone_type_display}\n        {else}\n        {ts}Phone{/ts}\n        {/if}\n            </td>\n            <td {$valueStyle}>\n        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {foreach from=$location.email item=eventEmail}\n    {if $eventEmail.email}\n          <tr>\n            <td {$labelStyle}>\n        {ts}Email{/ts}\n            </td>\n            <td {$valueStyle}>\n        {$eventEmail.email}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {/if} {*phone block close*}\n    {/if}\n  </table>\n      </td>\n    </tr>\n\n    </table>\n\n </body>\n</html>\n',1,826,'payment_or_refund_notification',1,0,0,NULL),
+ (28,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle }style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle }style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n  <tr>\n    <td>\n      {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n      {if $isRefund}\n        <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n      {else}\n        <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n        {if $paymentsComplete}\n          <p>{ts}Thank you for completing this contribution.{/ts}</p>\n        {/if}\n      {/if}\n    </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if $isRefund}\n      <tr>\n        <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Refund Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$refundAmount|crmMoney}\n        </td>\n      </tr>\n    {else}\n      <tr>\n        <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n        {ts}This Payment Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paymentAmount|crmMoney}\n        </td>\n      </tr>\n    {/if}\n    {if $receive_date}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction Date{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$receive_date|crmDate}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($trxn_id)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$trxn_id}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($paidBy)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Paid By{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$paidBy}\n        </td>\n      </tr>\n    {/if}\n    {if !empty($checkNumber)}\n      <tr>\n        <td {$labelStyle}>\n        {ts}Check Number{/ts}\n        </td>\n        <td {$valueStyle}>\n        {$checkNumber}\n        </td>\n      </tr>\n    {/if}\n\n  <tr>\n    <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n  </tr>\n  {if $totalAmount}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Fee{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalAmount|crmMoney}\n    </td>\n  </tr>\n  {/if}\n  {if $totalPaid}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Total Paid{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$totalPaid|crmMoney}\n    </td>\n  </tr>\n  {/if}\n  {if $amountOwed}\n  <tr>\n    <td {$labelStyle}>\n      {ts}Balance Owed{/ts}\n    </td>\n    <td {$valueStyle}>\n      {$amountOwed|crmMoney}\n    </td> {* This will be zero after final payment. *}\n  </tr>\n  {/if}\n  </table>\n\n  </td>\n  </tr>\n    <tr>\n      <td>\n  <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n    {if !empty($billingName) || !empty($address)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Billing Name and Address{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {if !empty($billingName)}{$billingName}{/if}<br />\n        {if !empty($address)}{$address|nl2br}{/if}\n            </td>\n          </tr>\n    {/if}\n    {if !empty($credit_card_number)}\n          <tr>\n            <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n            </th>\n          </tr>\n          <tr>\n            <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n            </td>\n          </tr>\n    {/if}\n    {if $component eq \'event\'}\n    <tr>\n      <th {$headerStyle}>\n        {ts}Event Information and Location{/ts}\n      </th>\n    </tr>\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n         {$event.event_title}<br />\n        {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n    </tr>\n\n    {if !empty($event.participant_role)}\n    <tr>\n      <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n      </td>\n      <td {$valueStyle}>\n        {$event.participant_role}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($isShowLocation)}\n    <tr>\n      <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n      </td>\n    </tr>\n    {/if}\n\n    {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n    <tr>\n      <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n      </td>\n    </tr>\n    {foreach from=$location.phone item=phone}\n    {if $phone.phone}\n          <tr>\n            <td {$labelStyle}>\n        {if $phone.phone_type}\n        {$phone.phone_type_display}\n        {else}\n        {ts}Phone{/ts}\n        {/if}\n            </td>\n            <td {$valueStyle}>\n        {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {foreach from=$location.email item=eventEmail}\n    {if $eventEmail.email}\n          <tr>\n            <td {$labelStyle}>\n        {ts}Email{/ts}\n            </td>\n            <td {$valueStyle}>\n        {$eventEmail.email}\n            </td>\n          </tr>\n    {/if}\n    {/foreach}\n    {/if} {*phone block close*}\n    {/if}\n  </table>\n      </td>\n    </tr>\n\n    </table>\n\n </body>\n</html>\n',1,826,'payment_or_refund_notification',0,1,0,NULL),
+ (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if !empty($isPrimary)}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if !empty($isPrimary)}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{event.title}\n{event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and empty($defaultRole)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if !empty($event.is_public)}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($email)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$email}\n{/if}\n{if !empty($event.is_monetary)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if !empty($isPrimary)}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts}\n{/if}\n{/if}\n---------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount) }{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if}  {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n{/if}\n{/foreach}\n\n{if !empty($dataArray)}\n{if $totalAmount and $totalTaxAmount}\n{ts}Amount before Tax{/ts}: {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amount) && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if !empty($isPrimary)}\n\n{if !empty($balanceAmount)}{ts}Total Paid{/ts}{else}{ts}Total Amount{/ts}{/if}: {if !empty($totalAmount)}{$totalAmount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($balanceAmount)}\n{ts}Balance{/ts}: {$balanceAmount|crmMoney}\n{/if}\n\n{if !empty($pricesetFieldsCount) }\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n        {if $lineItemCount < 1 }\n        {assign var=\"lineItemCount\" value=1}\n        {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customPre_grouptitle}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$customPre item=value key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customPost_grouptitle}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$customPost item=value key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile item=value key=customName}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts 1=$customName+1}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$value item=val key=field}\n{if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\' }\n{if $field eq \'additionalCustomPre\' }\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{$additionalCustomPre_grouptitle}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{else}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{$additionalCustomPost_grouptitle}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{/if}\n{foreach from=$val item=v key=f}\n{$f}: {$v}\n{/foreach}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n     <p>{$event.confirm_email_text|htmlize}</p>\n    {/if}\n\n    {if !empty($isOnWaitlist)}\n     <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n     {if !empty($isPrimary)}\n       <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n     {/if}\n    {elseif !empty($isRequireApproval)}\n     <p>{ts}Your registration has been submitted.{/ts}</p>\n     {if !empty($isPrimary)}\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n     {/if}\n    {elseif $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {event.title}<br />\n       {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n\n     {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$event.participant_role}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($isShowLocation)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}\n           {$phone.phone_type_display}\n          {else}\n           {ts}Phone{/ts}\n          {/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($event.is_public)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n     {if $email}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$email}\n       </td>\n      </tr>\n     {/if}\n\n\n     {if !empty($event.is_monetary)}\n\n      <tr>\n       <th {$headerStyle}>\n        {if !empty($event.fee_label)}{$event.fee_label}{/if}\n       </th>\n      </tr>\n\n      {if !empty($lineItem)}\n       {foreach from=$lineItem item=value key=priceset}\n        {if $value neq \'skip\'}\n         {if !empty($isPrimary)}\n          {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n           <tr>\n            <td colspan=\"2\" {$labelStyle}>\n             {ts 1=$priceset+1}Participant %1{/ts}\n            </td>\n           </tr>\n          {/if}\n         {/if}\n         <tr>\n          <td colspan=\"2\" {$valueStyle}>\n           <table>\n            <tr>\n             <th>{ts}Item{/ts}</th>\n             <th>{ts}Qty{/ts}</th>\n             <th>{ts}Each{/ts}</th>\n             {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n             {/if}\n             <th>{ts}Total{/ts}</th>\n       {if !empty($pricesetFieldsCount) }<th>{ts}Total Participants{/ts}</th>{/if}\n            </tr>\n            {foreach from=$value item=line}\n             <tr>\n              <td>\n        {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n              </td>\n              <td>\n               {$line.qty}\n              </td>\n              <td>\n               {$line.unit_price|crmMoney}\n              </td>\n              {if !empty($dataArray)}\n               <td>\n                {$line.unit_price*$line.qty|crmMoney}\n               </td>\n               {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                 {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                 {$line.tax_amount|crmMoney}\n                </td>\n               {else}\n                <td></td>\n                <td></td>\n               {/if}\n              {/if}\n              <td>\n               {$line.line_total+$line.tax_amount|crmMoney}\n              </td>\n        {if  !empty($pricesetFieldsCount) }\n        <td>\n    {$line.participant_count}\n              </td>\n        {/if}\n             </tr>\n            {/foreach}\n           </table>\n          </td>\n         </tr>\n        {/if}\n       {/foreach}\n       {if !empty($dataArray)}\n        {if $totalAmount and $totalTaxAmount}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Amount Before Tax:{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalAmount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {/if}\n        {foreach from=$dataArray item=value key=priceset}\n          <tr>\n           {if $priceset || $priceset == 0}\n            <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n            <td>&nbsp;{$value|crmMoney:$currency}</td>\n           {else}\n            <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n            <td>&nbsp;{$value|crmMoney:$currency}</td>\n           {/if}\n          </tr>\n        {/foreach}\n       {/if}\n      {/if}\n\n      {if !empty($amount) && !$lineItem}\n       {foreach from=$amount item=amnt key=level}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$amnt.amount|crmMoney} {$amnt.label}\n         </td>\n        </tr>\n       {/foreach}\n      {/if}\n      {if $totalTaxAmount}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$totalTaxAmount|crmMoney:$currency}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($isPrimary)}\n       <tr>\n        <td {$labelStyle}>\n        {if isset($balanceAmount)}\n           {ts}Total Paid{/ts}\n        {else}\n           {ts}Total Amount{/ts}\n         {/if}\n        </td>\n        <td {$valueStyle}>\n         {if !empty($totalAmount)}{$totalAmount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n        </td>\n       </tr>\n      {if isset($balanceAmount)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Balance{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$balanceAmount|crmMoney}\n        </td>\n       </tr>\n      {/if}\n       {if !empty($pricesetFieldsCount) }\n     <tr>\n       <td {$labelStyle}>\n   {ts}Total Participants{/ts}</td>\n       <td {$valueStyle}>\n   {assign var=\"count\" value= 0}\n         {foreach from=$lineItem item=pcount}\n         {assign var=\"lineItemCount\" value=0}\n         {if $pcount neq \'skip\'}\n           {foreach from=$pcount item=p_count}\n           {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n           {/foreach}\n           {if $lineItemCount < 1 }\n           assign var=\"lineItemCount\" value=1}\n           {/if}\n           {assign var=\"count\" value=$count+$lineItemCount}\n         {/if}\n         {/foreach}\n   {$count}\n       </td>\n     </tr>\n     {/if}\n       {if $is_pay_later}\n        <tr>\n         <td colspan=\"2\" {$labelStyle}>\n          {$pay_later_receipt}\n         </td>\n        </tr>\n       {/if}\n\n       {if $register_date}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Registration Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$register_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($receive_date)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$receive_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($financialTypeName)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Financial Type{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$financialTypeName}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($trxn_id)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction #{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$trxn_id}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($paidBy)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Paid By{/ts}\n         </td>\n         <td {$valueStyle}>\n         {$paidBy}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($checkNumber)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Check Number{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$checkNumber}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($billingName)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Billing Name and Address{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($credit_card_type)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$credit_card_type}<br />\n          {$credit_card_number}<br />\n          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n      {/if}\n\n     {/if} {* End of conditional section for Paid events *}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=value key=customName}\n       {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=value key=customName}\n       {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customProfile)}\n      {foreach from=$customProfile item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {ts 1=$customName+1}Participant Information - Participant %1{/ts}\n        </th>\n       </tr>\n       {foreach from=$value item=val key=field}\n        {if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\'}\n         <tr>\n          <td colspan=\"2\" {$labelStyle}>\n           {if $field eq \'additionalCustomPre\'}\n            {$additionalCustomPre_grouptitle}\n           {else}\n            {$additionalCustomPost_grouptitle}\n           {/if}\n          </td>\n         </tr>\n         {foreach from=$val item=v key=f}\n          <tr>\n           <td {$labelStyle}>\n            {$f}\n           </td>\n           <td {$valueStyle}>\n            {$v}\n           </td>\n          </tr>\n         {/foreach}\n        {/if}\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,827,'event_offline_receipt',1,0,0,NULL),
+ (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if !empty($isPrimary)}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if !empty($isPrimary)}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{event.title}\n{event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and empty($defaultRole)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if !empty($event.is_public)}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($email)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$email}\n{/if}\n{if !empty($event.is_monetary)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if !empty($isPrimary)}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts}\n{/if}\n{/if}\n---------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{capture assign=ts_participant_total}{if !empty($pricesetFieldsCount) }{ts}Total Participants{/ts}{/if}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if}  {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n{/if}\n{/foreach}\n\n{if !empty($dataArray)}\n{if $totalAmount and $totalTaxAmount}\n{ts}Amount before Tax{/ts}: {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amount) && !$lineItem}\n{foreach from=$amount item=amnt key=level}{$amnt.amount|crmMoney} {$amnt.label}\n{/foreach}\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if !empty($isPrimary)}\n\n{if !empty($balanceAmount)}{ts}Total Paid{/ts}{else}{ts}Total Amount{/ts}{/if}: {if !empty($totalAmount)}{$totalAmount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($balanceAmount)}\n{ts}Balance{/ts}: {$balanceAmount|crmMoney}\n{/if}\n\n{if !empty($pricesetFieldsCount) }\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n        {if $lineItemCount < 1 }\n        {assign var=\"lineItemCount\" value=1}\n        {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customPre_grouptitle}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$customPre item=value key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customPost_grouptitle}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$customPost item=value key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile item=value key=customName}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts 1=$customName+1}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$value item=val key=field}\n{if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\' }\n{if $field eq \'additionalCustomPre\' }\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{$additionalCustomPre_grouptitle}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{else}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{$additionalCustomPost_grouptitle}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{/if}\n{foreach from=$val item=v key=f}\n{$f}: {$v}\n{/foreach}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n     <p>{$event.confirm_email_text|htmlize}</p>\n    {/if}\n\n    {if !empty($isOnWaitlist)}\n     <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n     {if !empty($isPrimary)}\n       <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n     {/if}\n    {elseif !empty($isRequireApproval)}\n     <p>{ts}Your registration has been submitted.{/ts}</p>\n     {if !empty($isPrimary)}\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n     {/if}\n    {elseif $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {event.title}<br />\n       {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n\n     {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$event.participant_role}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($isShowLocation)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}\n           {$phone.phone_type_display}\n          {else}\n           {ts}Phone{/ts}\n          {/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($event.is_public)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n     {if $email}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$email}\n       </td>\n      </tr>\n     {/if}\n\n\n     {if !empty($event.is_monetary)}\n\n      <tr>\n       <th {$headerStyle}>\n        {if !empty($event.fee_label)}{$event.fee_label}{/if}\n       </th>\n      </tr>\n\n      {if !empty($lineItem)}\n       {foreach from=$lineItem item=value key=priceset}\n        {if $value neq \'skip\'}\n         {if !empty($isPrimary)}\n          {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n           <tr>\n            <td colspan=\"2\" {$labelStyle}>\n             {ts 1=$priceset+1}Participant %1{/ts}\n            </td>\n           </tr>\n          {/if}\n         {/if}\n         <tr>\n          <td colspan=\"2\" {$valueStyle}>\n           <table>\n            <tr>\n             <th>{ts}Item{/ts}</th>\n             <th>{ts}Qty{/ts}</th>\n             <th>{ts}Each{/ts}</th>\n             {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n             {/if}\n             <th>{ts}Total{/ts}</th>\n       {if !empty($pricesetFieldsCount) }<th>{ts}Total Participants{/ts}</th>{/if}\n            </tr>\n            {foreach from=$value item=line}\n             <tr>\n              <td>\n        {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n              </td>\n              <td>\n               {$line.qty}\n              </td>\n              <td>\n               {$line.unit_price|crmMoney}\n              </td>\n              {if !empty($dataArray)}\n               <td>\n                {$line.unit_price*$line.qty|crmMoney}\n               </td>\n               {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td>\n                 {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td>\n                 {$line.tax_amount|crmMoney}\n                </td>\n               {else}\n                <td></td>\n                <td></td>\n               {/if}\n              {/if}\n              <td>\n               {$line.line_total+$line.tax_amount|crmMoney}\n              </td>\n        {if  !empty($pricesetFieldsCount) }\n        <td>\n    {$line.participant_count}\n              </td>\n        {/if}\n             </tr>\n            {/foreach}\n           </table>\n          </td>\n         </tr>\n        {/if}\n       {/foreach}\n       {if !empty($dataArray)}\n        {if $totalAmount and $totalTaxAmount}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Amount Before Tax:{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalAmount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {/if}\n        {foreach from=$dataArray item=value key=priceset}\n          <tr>\n           {if $priceset || $priceset == 0}\n            <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n            <td>&nbsp;{$value|crmMoney:$currency}</td>\n           {else}\n            <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n            <td>&nbsp;{$value|crmMoney:$currency}</td>\n           {/if}\n          </tr>\n        {/foreach}\n       {/if}\n      {/if}\n\n      {if !empty($amount) && !$lineItem}\n       {foreach from=$amount item=amnt key=level}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$amnt.amount|crmMoney} {$amnt.label}\n         </td>\n        </tr>\n       {/foreach}\n      {/if}\n      {if $totalTaxAmount}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$totalTaxAmount|crmMoney:$currency}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($isPrimary)}\n       <tr>\n        <td {$labelStyle}>\n        {if isset($balanceAmount)}\n           {ts}Total Paid{/ts}\n        {else}\n           {ts}Total Amount{/ts}\n         {/if}\n        </td>\n        <td {$valueStyle}>\n         {if !empty($totalAmount)}{$totalAmount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n        </td>\n       </tr>\n      {if isset($balanceAmount)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Balance{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$balanceAmount|crmMoney}\n        </td>\n       </tr>\n      {/if}\n       {if !empty($pricesetFieldsCount) }\n     <tr>\n       <td {$labelStyle}>\n   {ts}Total Participants{/ts}</td>\n       <td {$valueStyle}>\n   {assign var=\"count\" value= 0}\n         {foreach from=$lineItem item=pcount}\n         {assign var=\"lineItemCount\" value=0}\n         {if $pcount neq \'skip\'}\n           {foreach from=$pcount item=p_count}\n           {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n           {/foreach}\n           {if $lineItemCount < 1 }\n           assign var=\"lineItemCount\" value=1}\n           {/if}\n           {assign var=\"count\" value=$count+$lineItemCount}\n         {/if}\n         {/foreach}\n   {$count}\n       </td>\n     </tr>\n     {/if}\n       {if $is_pay_later}\n        <tr>\n         <td colspan=\"2\" {$labelStyle}>\n          {$pay_later_receipt}\n         </td>\n        </tr>\n       {/if}\n\n       {if $register_date}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Registration Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$register_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($receive_date)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$receive_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($financialTypeName)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Financial Type{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$financialTypeName}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($trxn_id)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction #{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$trxn_id}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($paidBy)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Paid By{/ts}\n         </td>\n         <td {$valueStyle}>\n         {$paidBy}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($checkNumber)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Check Number{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$checkNumber}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($billingName)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Billing Name and Address{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($credit_card_type)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$credit_card_type}<br />\n          {$credit_card_number}<br />\n          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n      {/if}\n\n     {/if} {* End of conditional section for Paid events *}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=value key=customName}\n       {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=value key=customName}\n       {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customProfile)}\n      {foreach from=$customProfile item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {ts 1=$customName+1}Participant Information - Participant %1{/ts}\n        </th>\n       </tr>\n       {foreach from=$value item=val key=field}\n        {if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\'}\n         <tr>\n          <td colspan=\"2\" {$labelStyle}>\n           {if $field eq \'additionalCustomPre\'}\n            {$additionalCustomPre_grouptitle}\n           {else}\n            {$additionalCustomPost_grouptitle}\n           {/if}\n          </td>\n         </tr>\n         {foreach from=$val item=v key=f}\n          <tr>\n           <td {$labelStyle}>\n            {$f}\n           </td>\n           <td {$valueStyle}>\n            {$v}\n           </td>\n          </tr>\n         {/foreach}\n        {/if}\n       {/foreach}\n      {/foreach}\n     {/if}\n\n     {if !empty($customGroup)}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,827,'event_offline_receipt',0,1,0,NULL),
+ (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n  {ts}Thank you for your registration.{/ts}\n  {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n  {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n  {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if !empty($isPrimary)}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if !empty($isPrimary)}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if isset($pay_later_receipt)}{$pay_later_receipt}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n{if !empty($conference_sessions)}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location}    {$session.location}{/if}\n{/foreach}\n{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if !empty($event.is_public)}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if !empty($event.is_monetary) and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty ($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if !empty($isPrimary)}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if !empty($dataArray)}\n{if isset($totalAmount) and isset($totalTaxAmount)}\n{ts}Amount before Tax{/ts}: {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amounts) && empty($lineItem)}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\n{/foreach}\n{/if}\n\n{if isset($totalTaxAmount)}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if !empty($isPrimary) }\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount) }\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1 }\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if !empty($receive_date)}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPr item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPos item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer) }\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotal}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n     <p>{$event.confirm_email_text|htmlize}</p>\n\n    {else}\n     <p>{ts}Thank you for your registration.{/ts}\n     {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to <strong> %1</strong>.{/ts}\n     {else}{if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>waitlisted</strong>.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}{/if}{/if}</p>\n\n    {/if}\n\n    <p>\n    {if !empty($isOnWaitlist)}\n     <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n     {if !empty($isPrimary)}\n       <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n     {/if}\n    {elseif !empty($isRequireApproval)}\n     <p>{ts}Your registration has been submitted.{/ts}</p>\n     {if !empty($isPrimary)}\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n     {/if}\n    {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n     <p>{if isset($pay_later_receipt)}{$pay_later_receipt}{/if}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {event.title}<br />\n       {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n\n\n     {if $conference_sessions}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n  {ts}Your schedule:{/ts}\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n  {assign var=\'group_by_day\' value=\'NA\'}\n  {foreach from=$conference_sessions item=session}\n   {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n    {assign var=\'group_by_day\' value=$session.start_date}\n          <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n   {/if}\n   {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n   {if $session.location}&nbsp;&nbsp;&nbsp;&nbsp;{$session.location}<br />{/if}\n  {/foreach}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$event.participant_role}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($isShowLocation)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}\n           {$phone.phone_type_display}\n          {else}\n           {ts}Phone{/ts}\n          {/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($event.is_public)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($event.is_share)}\n        <tr>\n            <td colspan=\"2\" {$valueStyle}>\n                {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id=`$event.id`&reset=1\" a=true fe=1 h=1}{/capture}\n                {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl}\n            </td>\n        </tr>\n    {/if}\n    {if !empty($payer.name)}\n     <tr>\n       <th {$headerStyle}>\n         {ts}You were registered by:{/ts}\n       </th>\n     </tr>\n     <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$payer.name}\n       </td>\n     </tr>\n    {/if}\n    {if !empty($event.is_monetary) and empty($isRequireApproval)}\n\n      <tr>\n       <th {$headerStyle}>\n        {if !empty($event.fee_label)}{$event.fee_label}{/if}\n       </th>\n      </tr>\n\n      {if !empty($lineItem)}\n       {foreach from=$lineItem item=value key=priceset}\n        {if $value neq \'skip\'}\n         {if !empty($isPrimary)}\n          {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n           <tr>\n            <td colspan=\"2\" {$labelStyle}>\n             {ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n            </td>\n           </tr>\n          {/if}\n         {/if}\n         <tr>\n          <td colspan=\"2\" {$valueStyle}>\n           <table>\n            <tr>\n             <th>{ts}Item{/ts}</th>\n             <th>{ts}Qty{/ts}</th>\n             <th>{ts}Each{/ts}</th>\n             {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n             {/if}\n             <th>{ts}Total{/ts}</th>\n       {if  !empty($pricesetFieldsCount) }<th>{ts}Total Participants{/ts}</th>{/if}\n            </tr>\n            {foreach from=$value item=line}\n             <tr>\n              <td {$tdfirstStyle}>\n              {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n              </td>\n              <td {$tdStyle} align=\"middle\">\n               {$line.qty}\n              </td>\n              <td {$tdStyle}>\n               {$line.unit_price|crmMoney:$currency}\n              </td>\n              {if !empty($dataArray)}\n               <td {$tdStyle}>\n                {$line.unit_price*$line.qty|crmMoney}\n               </td>\n               {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td {$tdStyle}>\n                 {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td {$tdStyle}>\n                 {$line.tax_amount|crmMoney}\n                </td>\n               {else}\n                <td></td>\n                <td></td>\n               {/if}\n              {/if}\n              <td {$tdStyle}>\n               {$line.line_total+$line.tax_amount|crmMoney:$currency}\n              </td>\n        {if !empty($pricesetFieldsCount) }<td {$tdStyle}>{$line.participant_count}</td> {/if}\n             </tr>\n            {/foreach}\n            {if !empty($individual)}\n              <tr {$participantTotal}>\n                <td colspan=3>{ts}Participant Total{/ts}</td>\n                <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td>\n                <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td>\n                <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td>\n              </tr>\n            {/if}\n           </table>\n          </td>\n         </tr>\n        {/if}\n       {/foreach}\n       {if !empty($dataArray)}\n        {if isset($totalAmount) and isset($totalTaxAmount)}\n        <tr>\n         <td {$labelStyle}>\n          {ts} Amount Before Tax: {/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalAmount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {/if}\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n          {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n          {else}\n           <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n          {/if}\n         </tr>\n        {/foreach}\n       {/if}\n      {/if}\n\n      {if !empty($amounts) && empty($lineItem)}\n       {foreach from=$amounts item=amnt key=level}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$amnt.amount|crmMoney:$currency} {$amnt.label}\n         </td>\n        </tr>\n       {/foreach}\n      {/if}\n\n    {if isset($totalTaxAmount)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$totalTaxAmount|crmMoney:$currency}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($isPrimary)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n        </td>\n       </tr>\n       {if !empty($pricesetFieldsCount) }\n     <tr>\n       <td {$labelStyle}>\n      {ts}Total Participants{/ts}</td>\n      <td {$valueStyle}>\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1 }\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n     {$count}\n     </td> </tr>\n      {/if}\n\n       {if $register_date}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Registration Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$register_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($receive_date)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$receive_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($financialTypeName)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Financial Type{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$financialTypeName}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($trxn_id)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction #{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$trxn_id}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($paidBy)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Paid By{/ts}\n         </td>\n         <td {$valueStyle}>\n         {$paidBy}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($checkNumber)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Check Number{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$checkNumber}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($billingName)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Billing Name and Address{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($credit_card_type)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$credit_card_type}<br />\n          {$credit_card_number}<br />\n          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n      {/if}\n\n     {/if} {* End of conditional section for Paid events *}\n\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n   <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr>\n   {foreach from=$customPr item=customValue key=customName}\n   {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n     <tr>\n         <td {$labelStyle}>{$customName}</td>\n         <td {$valueStyle}>{$customValue}</td>\n     </tr>\n   {/if}\n   {/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n   <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr>\n   {foreach from=$customPos item=customValue key=customName}\n   {if (!empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n     <tr>\n         <td {$labelStyle}>{$customName}</td>\n         <td {$valueStyle}>{$customValue}</td>\n     </tr>\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customProfile)}\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n     <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr>\n     {foreach from=$eachParticipant item=eachProfile key=pid}\n     <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr>\n     {foreach from=$eachProfile item=val key=field}\n     <tr>{foreach from=$val item=v key=f}\n         <td {$labelStyle}>{$field}</td>\n         <td {$valueStyle}>{$v}</td>\n         {/foreach}\n     </tr>\n     {/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n    </table>\n    {if !empty($event.allow_selfcancelxfer) }\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n        {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n        {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n        <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n      </td>\n     </tr>\n    {/if}\n </table>\n\n</body>\n</html>\n',1,828,'event_online_receipt',1,0,0,NULL),
+ (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n  {ts}Thank you for your registration.{/ts}\n  {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n  {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n  {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}You have been added to the WAIT LIST for this event.{/ts}\n\n{if !empty($isPrimary)}\n{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}\n{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Your registration has been submitted.{/ts}\n\n{if !empty($isPrimary)}\n{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}\n\n{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if isset($pay_later_receipt)}{$pay_later_receipt}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n{if !empty($conference_sessions)}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location}    {$session.location}{/if}\n{/foreach}\n{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if !empty($event.is_public)}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if !empty($event.is_monetary) and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty ($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset}\n\n{if $value neq \'skip\'}\n{if !empty($isPrimary)}\n{if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n{ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n\n{/if}\n{/if}\n-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\n\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{/if}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"} {if !empty($ts_participant_total)}{$ts_participant_total|string_format:\"%10s\"}{/if}\n-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\n\n{foreach from=$value item=line}\n{if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:$currency|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:\"%10s\"}{/if}\n{/foreach}\n----------------------------------------------------------------------------------------------------------------\n{if !empty($individual)}{ts}Participant Total{/ts} {$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%29s\"} {$individual.$priceset.totalTaxAmt|crmMoney:$currency|string_format:\"%33s\"} {$individual.$priceset.totalAmtWithTax|crmMoney:$currency|string_format:\"%12s\"}{/if}\n{/if}\n{\"\"|string_format:\"%120s\"}\n{/foreach}\n{\"\"|string_format:\"%120s\"}\n\n{if !empty($dataArray)}\n{if isset($totalAmount) and isset($totalTaxAmount)}\n{ts}Amount before Tax{/ts}: {$totalAmount-$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n{/if}\n\n{if !empty($amounts) && empty($lineItem)}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\n{/foreach}\n{/if}\n\n{if isset($totalTaxAmount)}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if !empty($isPrimary) }\n\n{ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n\n{if !empty($pricesetFieldsCount) }\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1 }\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n\n{ts}Total Participants{/ts}: {$count}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if !empty($receive_date)}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($financialTypeName)}\n{ts}Financial Type{/ts}: {$financialTypeName}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n{/if} {* End of conditional section for Paid events *}\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPr item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPos item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{foreach from=$eachProfile item=val key=field}\n{foreach from=$val item=v key=f}\n{$field}: {$v}\n{/foreach}\n{/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($event.allow_selfcancelxfer) }\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=tdfirstStyle}style=\"width: 180px; padding-bottom: 15px;\"{/capture}\n{capture assign=tdStyle}style=\"width: 100px;\"{/capture}\n{capture assign=participantTotal}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n    {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n     <p>{$event.confirm_email_text|htmlize}</p>\n\n    {else}\n     <p>{ts}Thank you for your registration.{/ts}\n     {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to <strong> %1</strong>.{/ts}\n     {else}{if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>waitlisted</strong>.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}{/if}{/if}</p>\n\n    {/if}\n\n    <p>\n    {if !empty($isOnWaitlist)}\n     <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p>\n     {if !empty($isPrimary)}\n       <p>{ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts}</p>\n     {/if}\n    {elseif !empty($isRequireApproval)}\n     <p>{ts}Your registration has been submitted.{/ts}</p>\n     {if !empty($isPrimary)}\n      <p>{ts}Once your registration has been reviewed, you will receive an email with a link to a web page where you can complete the registration process.{/ts}</p>\n     {/if}\n    {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n     <p>{if isset($pay_later_receipt)}{$pay_later_receipt}{/if}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"width:100%; max-width:700px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {event.title}<br />\n       {event.start_date|crmDate:\"%A\"} {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n\n\n     {if $conference_sessions}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n  {ts}Your schedule:{/ts}\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n  {assign var=\'group_by_day\' value=\'NA\'}\n  {foreach from=$conference_sessions item=session}\n   {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n    {assign var=\'group_by_day\' value=$session.start_date}\n          <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n   {/if}\n   {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n   {if $session.location}&nbsp;&nbsp;&nbsp;&nbsp;{$session.location}<br />{/if}\n  {/foreach}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Participant Role{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$event.participant_role}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($isShowLocation)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}\n           {$phone.phone_type_display}\n          {else}\n           {ts}Phone{/ts}\n          {/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone} {if $phone.phone_ext}&nbsp;{ts}ext.{/ts} {$phone.phone_ext}{/if}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($event.is_public)}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n        <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n      </tr>\n     {/if}\n\n    {if !empty($event.is_share)}\n        <tr>\n            <td colspan=\"2\" {$valueStyle}>\n                {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q=\"id=`$event.id`&reset=1\" a=true fe=1 h=1}{/capture}\n                {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl}\n            </td>\n        </tr>\n    {/if}\n    {if !empty($payer.name)}\n     <tr>\n       <th {$headerStyle}>\n         {ts}You were registered by:{/ts}\n       </th>\n     </tr>\n     <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$payer.name}\n       </td>\n     </tr>\n    {/if}\n    {if !empty($event.is_monetary) and empty($isRequireApproval)}\n\n      <tr>\n       <th {$headerStyle}>\n        {if !empty($event.fee_label)}{$event.fee_label}{/if}\n       </th>\n      </tr>\n\n      {if !empty($lineItem)}\n       {foreach from=$lineItem item=value key=priceset}\n        {if $value neq \'skip\'}\n         {if !empty($isPrimary)}\n          {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n           <tr>\n            <td colspan=\"2\" {$labelStyle}>\n             {ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n            </td>\n           </tr>\n          {/if}\n         {/if}\n         <tr>\n          <td colspan=\"2\" {$valueStyle}>\n           <table>\n            <tr>\n             <th>{ts}Item{/ts}</th>\n             <th>{ts}Qty{/ts}</th>\n             <th>{ts}Each{/ts}</th>\n             {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n             {/if}\n             <th>{ts}Total{/ts}</th>\n       {if  !empty($pricesetFieldsCount) }<th>{ts}Total Participants{/ts}</th>{/if}\n            </tr>\n            {foreach from=$value item=line}\n             <tr>\n              <td {$tdfirstStyle}>\n              {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n              </td>\n              <td {$tdStyle} align=\"middle\">\n               {$line.qty}\n              </td>\n              <td {$tdStyle}>\n               {$line.unit_price|crmMoney:$currency}\n              </td>\n              {if !empty($dataArray)}\n               <td {$tdStyle}>\n                {$line.unit_price*$line.qty|crmMoney}\n               </td>\n               {if $line.tax_rate || $line.tax_amount != \"\"}\n                <td {$tdStyle}>\n                 {$line.tax_rate|string_format:\"%.2f\"}%\n                </td>\n                <td {$tdStyle}>\n                 {$line.tax_amount|crmMoney}\n                </td>\n               {else}\n                <td></td>\n                <td></td>\n               {/if}\n              {/if}\n              <td {$tdStyle}>\n               {$line.line_total+$line.tax_amount|crmMoney:$currency}\n              </td>\n        {if !empty($pricesetFieldsCount) }<td {$tdStyle}>{$line.participant_count}</td> {/if}\n             </tr>\n            {/foreach}\n            {if !empty($individual)}\n              <tr {$participantTotal}>\n                <td colspan=3>{ts}Participant Total{/ts}</td>\n                <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td>\n                <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td>\n                <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td>\n              </tr>\n            {/if}\n           </table>\n          </td>\n         </tr>\n        {/if}\n       {/foreach}\n       {if !empty($dataArray)}\n        {if isset($totalAmount) and isset($totalTaxAmount)}\n        <tr>\n         <td {$labelStyle}>\n          {ts} Amount Before Tax: {/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalAmount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {/if}\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n          {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n          {else}\n           <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n          {/if}\n         </tr>\n        {/foreach}\n       {/if}\n      {/if}\n\n      {if !empty($amounts) && empty($lineItem)}\n       {foreach from=$amounts item=amnt key=level}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$amnt.amount|crmMoney:$currency} {$amnt.label}\n         </td>\n        </tr>\n       {/foreach}\n      {/if}\n\n    {if isset($totalTaxAmount)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Tax Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$totalTaxAmount|crmMoney:$currency}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($isPrimary)}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n        </td>\n       </tr>\n       {if !empty($pricesetFieldsCount) }\n     <tr>\n       <td {$labelStyle}>\n      {ts}Total Participants{/ts}</td>\n      <td {$valueStyle}>\n      {assign var=\"count\" value= 0}\n      {foreach from=$lineItem item=pcount}\n      {assign var=\"lineItemCount\" value=0}\n      {if $pcount neq \'skip\'}\n        {foreach from=$pcount item=p_count}\n        {assign var=\"lineItemCount\" value=$lineItemCount+$p_count.participant_count}\n        {/foreach}\n      {if $lineItemCount < 1 }\n        {assign var=\"lineItemCount\" value=1}\n      {/if}\n      {assign var=\"count\" value=$count+$lineItemCount}\n      {/if}\n      {/foreach}\n     {$count}\n     </td> </tr>\n      {/if}\n\n       {if $register_date}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Registration Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$register_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($receive_date)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction Date{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$receive_date|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($financialTypeName)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Financial Type{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$financialTypeName}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($trxn_id)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Transaction #{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$trxn_id}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($paidBy)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Paid By{/ts}\n         </td>\n         <td {$valueStyle}>\n         {$paidBy}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($checkNumber)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Check Number{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$checkNumber}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($billingName)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Billing Name and Address{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}\n         </td>\n        </tr>\n       {/if}\n\n       {if !empty($credit_card_type)}\n        <tr>\n         <th {$headerStyle}>\n          {ts}Credit Card Information{/ts}\n         </th>\n        </tr>\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          {$credit_card_type}<br />\n          {$credit_card_number}<br />\n          {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n         </td>\n        </tr>\n       {/if}\n\n      {/if}\n\n     {/if} {* End of conditional section for Paid events *}\n\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n   <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr>\n   {foreach from=$customPr item=customValue key=customName}\n   {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n     <tr>\n         <td {$labelStyle}>{$customName}</td>\n         <td {$valueStyle}>{$customValue}</td>\n     </tr>\n   {/if}\n   {/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n   <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr>\n   {foreach from=$customPos item=customValue key=customName}\n   {if (!empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n     <tr>\n         <td {$labelStyle}>{$customName}</td>\n         <td {$valueStyle}>{$customValue}</td>\n     </tr>\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customProfile)}\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n     <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr>\n     {foreach from=$eachParticipant item=eachProfile key=pid}\n     <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr>\n     {foreach from=$eachProfile item=val key=field}\n     <tr>{foreach from=$val item=v key=f}\n         <td {$labelStyle}>{$field}</td>\n         <td {$valueStyle}>{$v}</td>\n         {/foreach}\n     </tr>\n     {/foreach}\n{/foreach}\n{/foreach}\n{/if}\n\n    </table>\n    {if !empty($event.allow_selfcancelxfer) }\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n        {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if !empty($totalAmount)}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n        {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n        <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n      </td>\n     </tr>\n    {/if}\n </table>\n\n</body>\n</html>\n',1,828,'event_online_receipt',0,1,0,NULL),
+ (33,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n  This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n  This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n  {$pay_later_receipt}\n{/if}\n\n  Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n  {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n  Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n  {foreach from=$line_item.participants item=participant}\n    {$participant.display_name}\n  {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n  Waitlisted:\n    {foreach from=$line_item.waiting_participants item=participant}\n      {$participant.display_name}\n    {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n  {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n  If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <title></title>\n  </head>\n  <body>\n    {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n    {capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n    {capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if $is_pay_later}\n      <p>\n        This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n      </p>\n    {else}\n      <p>\n        This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n      </p>\n    {/if}\n\n    {if $is_pay_later}\n      <p>{$pay_later_receipt}</p>\n    {/if}\n\n    <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n  Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Billing Name and Address{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$billing_name}<br />\n      {$billing_street_address}<br />\n      {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n      <br/>\n      {$email}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if $credit_card_type}\n  <p>&nbsp;</p>\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Credit Card Information{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$credit_card_type}<br />\n      {$credit_card_number}<br />\n      {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if !empty($source)}\n    <p>&nbsp;</p>\n    {$source}\n{/if}\n    <p>&nbsp;</p>\n    <table width=\"700\">\n      <thead>\n    <tr>\n{if $line_items}\n      <th style=\"text-align: left;\">\n      Event\n      </th>\n      <th style=\"text-align: left;\">\n      Participants\n      </th>\n{/if}\n      <th style=\"text-align: left;\">\n      Price\n      </th>\n      <th style=\"text-align: left;\">\n      Total\n      </th>\n    </tr>\n    </thead>\n      <tbody>\n  {foreach from=$line_items item=line_item}\n  <tr>\n    <td style=\"width: 220px\">\n      {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n      {if $line_item.event->is_show_location}\n        {$line_item.location.address.1.display|nl2br}\n      {/if}{*End of isShowLocation condition*}<br /><br />\n      {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n    </td>\n    <td style=\"width: 180px\">\n    {$line_item.num_participants}\n      {if $line_item.num_participants > 0}\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n      {if $line_item.num_waiting_participants > 0}\n      Waitlisted:<br/>\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.waiting_participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n    </td>\n    <td style=\"width: 100px\">\n      {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n    <td style=\"width: 100px\">\n      &nbsp;{$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {/foreach}\n      </tbody>\n      <tfoot>\n  {if $discounts}\n  <tr>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      Subtotal:\n    </td>\n    <td>\n      &nbsp;{$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {foreach from=$discounts key=myId item=i}\n  <tr>\n    <td>\n      {$i.title}\n    </td>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      -{$i.amount}\n    </td>\n  </tr>\n  {/foreach}\n  {/if}\n  <tr>\n{if $line_items}\n    <td>\n    </td>\n    <td>\n    </td>\n{/if}\n    <td>\n      <strong>Total:</strong>\n    </td>\n    <td>\n      <strong>&nbsp;{$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n    </td>\n  </tr>\n      </tfoot>\n    </table>\n\n    If you have questions about the status of your registration or purchase please feel free to contact us.\n  </body>\n</html>\n',1,829,'event_registration_receipt',1,0,0,NULL),
+ (34,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n  This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n  This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n  {$pay_later_receipt}\n{/if}\n\n  Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n  {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n  Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n  {foreach from=$line_item.participants item=participant}\n    {$participant.display_name}\n  {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n  Waitlisted:\n    {foreach from=$line_item.waiting_participants item=participant}\n      {$participant.display_name}\n    {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n  {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n  If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <head>\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n    <title></title>\n  </head>\n  <body>\n    {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n    {capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n    {capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if $is_pay_later}\n      <p>\n        This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n      </p>\n    {else}\n      <p>\n        This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n      </p>\n    {/if}\n\n    {if $is_pay_later}\n      <p>{$pay_later_receipt}</p>\n    {/if}\n\n    <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n  Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Billing Name and Address{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$billing_name}<br />\n      {$billing_street_address}<br />\n      {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n      <br/>\n      {$email}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if $credit_card_type}\n  <p>&nbsp;</p>\n  <table class=\"billing-info\">\n      <tr>\n    <th style=\"text-align: left;\">\n      {ts}Credit Card Information{/ts}\n    </th>\n      </tr>\n      <tr>\n    <td>\n      {$credit_card_type}<br />\n      {$credit_card_number}<br />\n      {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n    </td>\n    </tr>\n    </table>\n{/if}\n{if !empty($source)}\n    <p>&nbsp;</p>\n    {$source}\n{/if}\n    <p>&nbsp;</p>\n    <table width=\"700\">\n      <thead>\n    <tr>\n{if $line_items}\n      <th style=\"text-align: left;\">\n      Event\n      </th>\n      <th style=\"text-align: left;\">\n      Participants\n      </th>\n{/if}\n      <th style=\"text-align: left;\">\n      Price\n      </th>\n      <th style=\"text-align: left;\">\n      Total\n      </th>\n    </tr>\n    </thead>\n      <tbody>\n  {foreach from=$line_items item=line_item}\n  <tr>\n    <td style=\"width: 220px\">\n      {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n      {if $line_item.event->is_show_location}\n        {$line_item.location.address.1.display|nl2br}\n      {/if}{*End of isShowLocation condition*}<br /><br />\n      {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n    </td>\n    <td style=\"width: 180px\">\n    {$line_item.num_participants}\n      {if $line_item.num_participants > 0}\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n      {if $line_item.num_waiting_participants > 0}\n      Waitlisted:<br/>\n      <div class=\"participants\" style=\"padding-left: 10px;\">\n        {foreach from=$line_item.waiting_participants item=participant}\n        {$participant.display_name}<br />\n        {/foreach}\n      </div>\n      {/if}\n    </td>\n    <td style=\"width: 100px\">\n      {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n    <td style=\"width: 100px\">\n      &nbsp;{$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {/foreach}\n      </tbody>\n      <tfoot>\n  {if $discounts}\n  <tr>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      Subtotal:\n    </td>\n    <td>\n      &nbsp;{$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n    </td>\n  </tr>\n  {foreach from=$discounts key=myId item=i}\n  <tr>\n    <td>\n      {$i.title}\n    </td>\n    <td>\n    </td>\n    <td>\n    </td>\n    <td>\n      -{$i.amount}\n    </td>\n  </tr>\n  {/foreach}\n  {/if}\n  <tr>\n{if $line_items}\n    <td>\n    </td>\n    <td>\n    </td>\n{/if}\n    <td>\n      <strong>Total:</strong>\n    </td>\n    <td>\n      <strong>&nbsp;{$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n    </td>\n  </tr>\n      </tfoot>\n    </table>\n\n    If you have questions about the status of your registration or purchase please feel free to contact us.\n  </body>\n</html>\n',1,829,'event_registration_receipt',0,1,0,NULL),
  (35,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your Event Registration has been cancelled.{/ts}\n\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {participant.role_id:label}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if !empty(\'{participant.register_date}\')}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts}Your Event Registration has been cancelled.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {participant.role_id:label}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty(\'{participant.register_date}\')}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {participant.register_date}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,830,'participant_cancelled',1,0,0,NULL),
  (36,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your Event Registration has been cancelled.{/ts}\n\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {participant.role_id:label}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if !empty(\'{participant.register_date}\')}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts}Your Event Registration has been cancelled.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {participant.role_id:label}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty(\'{participant.register_date}\')}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {participant.register_date}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,830,'participant_cancelled',0,1,0,NULL),
  (37,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}\n\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $event.allow_selfcancelxfer }\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location}    {$session.location}{/if}\n{/foreach}\n{/if}\n\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}</p>\n   </td>\n  </tr>\n  {if !$isAdditional and $participant.id}\n   <tr>\n    <th {$headerStyle}>\n     {ts}Confirm Your Registration{/ts}\n    </th>\n   </tr>\n   <tr>\n    <td colspan=\"2\" {$valueStyle}>\n     {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n     <a href=\"{$confirmUrl}\">{ts}Click here to confirm and complete your registration{/ts}</a>\n    </td>\n   </tr>\n  {/if}\n  {if $event.allow_selfcancelxfer }\n  {ts}This event allows for{/ts}\n  {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n       <a href=\"{$selfService}\"> {ts}self service cancel or transfer{/ts}</a>\n  {/if}\n\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     {if $conference_sessions}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n  {ts}Your schedule:{/ts}\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n  {assign var=\'group_by_day\' value=\'NA\'}\n  {foreach from=$conference_sessions item=session}\n   {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n    {assign var=\'group_by_day\' value=$session.start_date}\n          <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n   {/if}\n   {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n   {if $session.location}&nbsp;&nbsp;&nbsp;&nbsp;{$session.location}<br />{/if}\n  {/foreach}\n       </td>\n      </tr>\n     {/if}\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {$participant.role}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if $event.location.phone.1.phone || $event.location.email.1.email}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if $event.is_public}\n     <tr>\n       <td colspan=\"2\" {$valueStyle}>\n           {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n     </tr>\n     <tr>\n       <td colspan=\"2\" {$valueStyle}>\n           {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n     </tr>\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if $register_date}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$participant.register_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n  {if $event.allow_selfcancelxfer }\n   <tr>\n     <td colspan=\"2\" {$valueStyle}>\n       {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n         {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n       <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n     </td>\n   </tr>\n  {/if}\n  <tr>\n   <td colspan=\"2\" {$valueStyle}>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,831,'participant_confirm',1,0,0,NULL),
  (38,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}\n\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $event.allow_selfcancelxfer }\n{ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}\n   {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n{ts}Transfer or cancel your registration:{/ts} {$selfService}\n{/if}\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location}    {$session.location}{/if}\n{/foreach}\n{/if}\n\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $event.location.email.1.email}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if $event.is_public}\n{capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Download iCalendar entry for this event.{/ts} {$icalFeed}\n{capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n{ts}Add event to Google Calendar{/ts} {$gCalendar}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}</p>\n   </td>\n  </tr>\n  {if !$isAdditional and $participant.id}\n   <tr>\n    <th {$headerStyle}>\n     {ts}Confirm Your Registration{/ts}\n    </th>\n   </tr>\n   <tr>\n    <td colspan=\"2\" {$valueStyle}>\n     {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n     <a href=\"{$confirmUrl}\">{ts}Click here to confirm and complete your registration{/ts}</a>\n    </td>\n   </tr>\n  {/if}\n  {if $event.allow_selfcancelxfer }\n  {ts}This event allows for{/ts}\n  {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\" h=0 a=1 fe=1}{/capture}\n       <a href=\"{$selfService}\"> {ts}self service cancel or transfer{/ts}</a>\n  {/if}\n\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     {if $conference_sessions}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n  {ts}Your schedule:{/ts}\n       </td>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n  {assign var=\'group_by_day\' value=\'NA\'}\n  {foreach from=$conference_sessions item=session}\n   {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n    {assign var=\'group_by_day\' value=$session.start_date}\n          <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n   {/if}\n   {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n   {if $session.location}&nbsp;&nbsp;&nbsp;&nbsp;{$session.location}<br />{/if}\n  {/foreach}\n       </td>\n      </tr>\n     {/if}\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {$participant.role}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if $event.location.phone.1.phone || $event.location.email.1.email}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if $event.is_public}\n     <tr>\n       <td colspan=\"2\" {$valueStyle}>\n           {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q=\"reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$icalFeed}\">{ts}Download iCalendar entry for this event.{/ts}</a>\n       </td>\n     </tr>\n     <tr>\n       <td colspan=\"2\" {$valueStyle}>\n           {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q=\"gCalendar=1&reset=1&id=`$event.id`\" h=0 a=1 fe=1}{/capture}\n         <a href=\"{$gCalendar}\">{ts}Add event to Google Calendar{/ts}</a>\n       </td>\n     </tr>\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if $register_date}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$participant.register_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n  {if $event.allow_selfcancelxfer }\n   <tr>\n     <td colspan=\"2\" {$valueStyle}>\n       {ts 1=$selfcancelxfer_time 2=$selfservice_preposition}You may transfer your registration to another participant or cancel your registration up to %1 hours %2 the event.{/ts} {if $totalAmount}{ts}Cancellations are not refundable.{/ts}{/if}<br />\n         {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q=\"reset=1&pid=`$participant.id`&{contact.checksum}\"  h=0 a=1 fe=1}{/capture}\n       <a href=\"{$selfService}\">{ts}Click here to transfer or cancel your registration.{/ts}</a>\n     </td>\n   </tr>\n  {/if}\n  <tr>\n   <td colspan=\"2\" {$valueStyle}>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,831,'participant_confirm',0,1,0,NULL),
  (39,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}</p>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {$participant.role}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if $register_date}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$participant.register_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,832,'participant_expired',1,0,0,NULL),
  (40,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}</p>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {$participant.role}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if $register_date}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$participant.register_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,832,'participant_expired',0,1,0,NULL),
- (41,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {$participant.role}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if $register_date}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$participant.register_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,833,'participant_transferred',1,0,0,NULL),
- (42,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {$participant.role}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if $register_date}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$participant.register_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,833,'participant_transferred',0,1,0,NULL),
+ (41,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {$participant.role}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if $register_date}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$participant.register_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,833,'participant_transferred',1,0,0,NULL),
+ (42,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Event Information and Location{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       {$event.event_title}<br />\n       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Participant Role{/ts}:\n      </td>\n      <td {$valueStyle}>\n       {$participant.role}\n      </td>\n     </tr>\n\n     {if $isShowLocation}\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$event.location.address.1.display|nl2br}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {ts}Event Contacts:{/ts}\n       </td>\n      </tr>\n      {foreach from=$event.location.phone item=phone}\n       {if $phone.phone}\n        <tr>\n         <td {$labelStyle}>\n          {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n         </td>\n         <td {$valueStyle}>\n          {$phone.phone}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n      {foreach from=$event.location.email item=eventEmail}\n       {if $eventEmail.email}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Email{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$eventEmail.email}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if \'{contact.email}\'}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Registered Email{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {contact.email}\n       </td>\n      </tr>\n     {/if}\n\n     {if $register_date}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Registration Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$participant.register_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,833,'participant_transferred',0,1,0,NULL),
  (43,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <p>{$senderMessage}</p>\n    {if $generalLink}\n     <p><a href=\"{$generalLink}\">{ts}More information{/ts}</a></p>\n    {/if}\n    {if $contribute}\n     <p><a href=\"{$pageURL}\">{ts}Make a contribution{/ts}</a></p>\n    {/if}\n    {if $event}\n     <p><a href=\"{$pageURL}\">{ts}Find out more about this event{/ts}</a></p>\n    {/if}\n   </td>\n  </tr>\n </table>\n\n</body>\n</html>\n',1,834,'friend',1,0,0,NULL),
  (44,'Tell-a-Friend Email','{ts 1=$senderContactName 2=$title}%1 wants you to know about %2{/ts}\n','{$senderMessage}\n\n{if $generalLink}{ts}For more information, visit:{/ts}\n>> {$generalLink}\n\n{/if}\n{if $contribute}{ts}To make a contribution, go to:{/ts}\n>> {$pageURL}\n\n{/if}\n{if $event}{ts}To find out more about this event, go to:{/ts}\n>> {$pageURL}\n{/if}\n\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <p>{$senderMessage}</p>\n    {if $generalLink}\n     <p><a href=\"{$generalLink}\">{ts}More information{/ts}</a></p>\n    {/if}\n    {if $contribute}\n     <p><a href=\"{$pageURL}\">{ts}Make a contribution{/ts}</a></p>\n    {/if}\n    {if $event}\n     <p><a href=\"{$pageURL}\">{ts}Find out more about this event{/ts}</a></p>\n    {/if}\n   </td>\n  </tr>\n </table>\n\n</body>\n</html>\n',1,834,'friend',0,1,0,NULL),
- (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if empty($lineItem)}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{/if}\n{if empty($cancelled)}\n{if empty($lineItem)}\n{ts}Membership Start Date{/ts}: {$mem_start_date}\n{ts}Membership End Date{/ts}: {$mem_end_date}\n{/if}\n\n{if $formValues.total_amount OR $formValues.total_amount eq 0 }\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !empty($formValues.contributionType_name)}\n{ts}Financial Type{/ts}: {$formValues.contributionType_name}\n{/if}\n{if !empty($lineItem)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}  {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax{/ts}: {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset}\n{$taxTerm} {$priceset|string_format:\"%.2f\"} %: {$value|crmMoney:$currency}\n{elseif  $priceset == 0}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$formValues.total_amount|crmMoney}\n{if !empty($receive_date)}\n{ts}Date Received{/ts}: {$receive_date|truncate:10:\'\'|crmDate}\n{/if}\n{if !empty($formValues.paidBy)}\n{ts}Paid By{/ts}: {$formValues.paidBy}\n{if !empty($formValues.check_number)}\n{ts}Check Number{/ts}: {$formValues.check_number}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary) }\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\"\n         style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n    <tr>\n      <td>\n        {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n        {if $receipt_text}\n          <p>{$receipt_text|htmlize}</p>\n          <p>{ts}Thank you for this contribution.{/ts}</p>\n        {/if}\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n          {if empty($lineItem)}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td {$labelStyle}>\n                {ts}Membership Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {$membership_name}\n              </td>\n            </tr>\n          {/if}\n          {if empty($cancelled)}\n            {if empty($lineItem)}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Start Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$mem_start_date}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership End Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$mem_end_date}\n                </td>\n              </tr>\n            {/if}\n            {if $formValues.total_amount OR $formValues.total_amount eq 0 }\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Membership Fee{/ts}\n                </th>\n              </tr>\n              {if !empty($formValues.contributionType_name)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$formValues.contributionType_name}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($lineItem)}\n                {foreach from=$lineItem item=value key=priceset}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Fee{/ts}</th>\n                          {if !empty($dataArray)}\n                            <th>{ts}SubTotal{/ts}</th>\n                            <th>{ts}Tax Rate{/ts}</th>\n                            <th>{ts}Tax Amount{/ts}</th>\n                            <th>{ts}Total{/ts}</th>\n                          {/if}\n                          <th>{ts}Membership Start Date{/ts}</th>\n                          <th>{ts}Membership End Date{/ts}</th>\n                        </tr>\n                        {foreach from=$value item=line}\n                          <tr>\n                            <td>\n                              {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}\n                                <div>{$line.description|truncate:30:\"...\"}</div>{/if}\n                            </td>\n                            <td>\n                              {$line.line_total|crmMoney}\n                            </td>\n                            {if !empty($dataArray)}\n                              <td>\n                                {$line.unit_price*$line.qty|crmMoney}\n                              </td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>\n                                  {$line.tax_rate|string_format:\"%.2f\"}%\n                                </td>\n                                <td>\n                                  {$line.tax_amount|crmMoney}\n                                </td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                              <td>\n                                {$line.line_total+$line.tax_amount|crmMoney}\n                              </td>\n                            {/if}\n                            <td>\n                              {$line.start_date}\n                            </td>\n                            <td>\n                              {$line.end_date}\n                            </td>\n                          </tr>\n                        {/foreach}\n                      </table>\n                    </td>\n                  </tr>\n                {/foreach}\n                {if !empty($dataArray)}\n                  {if $formValues.total_amount and $totalTaxAmount}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Amount Before Tax:{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {$formValues.total_amount-$totalTaxAmount|crmMoney}\n                    </td>\n                  </tr>\n                  {/if}\n                  {foreach from=$dataArray item=value key=priceset}\n                    <tr>\n                      {if $priceset}\n                        <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n                        <td>&nbsp;{$value|crmMoney:$currency}</td>\n                      {elseif  $priceset == 0}\n                        <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n                        <td>&nbsp;{$value|crmMoney:$currency}</td>\n                      {/if}\n                    </tr>\n                  {/foreach}\n                {/if}\n              {/if}\n              {if $totalTaxAmount}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$totalTaxAmount|crmMoney:$currency}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$formValues.total_amount|crmMoney}\n                </td>\n              </tr>\n              {if !empty($receive_date)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Date Received{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$receive_date|truncate:10:\'\'|crmDate}\n                  </td>\n                </tr>\n              {/if}\n              {if !empty($formValues.paidBy)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$formValues.paidBy}\n                  </td>\n                </tr>\n                {if !empty($formValues.check_number)}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Check Number{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {$formValues.check_number}\n                    </td>\n                  </tr>\n                {/if}\n              {/if}\n            {/if}\n          {/if}\n        </table>\n      </td>\n    </tr>\n\n    {if !empty($isPrimary)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n            {if !empty($billingName)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Billing Name and Address{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {$billingName}<br/>\n                  {$address}\n                </td>\n              </tr>\n            {/if}\n\n            {if !empty($credit_card_type)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Credit Card Information{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$valueStyle}>\n                  {$credit_card_type}<br/>\n                  {$credit_card_number}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Expires{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                </td>\n              </tr>\n            {/if}\n\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($customValues)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Options{/ts}\n              </th>\n            </tr>\n            {foreach from=$customValues item=value key=customName}\n              <tr>\n                <td {$labelStyle}>\n                  {$customName}\n                </td>\n                <td {$valueStyle}>\n                  {$value}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,835,'membership_offline_receipt',1,0,0,NULL),
- (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if empty($lineItem)}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{/if}\n{if empty($cancelled)}\n{if empty($lineItem)}\n{ts}Membership Start Date{/ts}: {$mem_start_date}\n{ts}Membership End Date{/ts}: {$mem_end_date}\n{/if}\n\n{if $formValues.total_amount OR $formValues.total_amount eq 0 }\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !empty($formValues.contributionType_name)}\n{ts}Financial Type{/ts}: {$formValues.contributionType_name}\n{/if}\n{if !empty($lineItem)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}  {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax{/ts}: {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset}\n{$taxTerm} {$priceset|string_format:\"%.2f\"} %: {$value|crmMoney:$currency}\n{elseif  $priceset == 0}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$formValues.total_amount|crmMoney}\n{if !empty($receive_date)}\n{ts}Date Received{/ts}: {$receive_date|truncate:10:\'\'|crmDate}\n{/if}\n{if !empty($formValues.paidBy)}\n{ts}Paid By{/ts}: {$formValues.paidBy}\n{if !empty($formValues.check_number)}\n{ts}Check Number{/ts}: {$formValues.check_number}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary) }\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\"\n         style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n    <tr>\n      <td>\n        {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n        {if $receipt_text}\n          <p>{$receipt_text|htmlize}</p>\n          <p>{ts}Thank you for this contribution.{/ts}</p>\n        {/if}\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n          {if empty($lineItem)}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td {$labelStyle}>\n                {ts}Membership Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {$membership_name}\n              </td>\n            </tr>\n          {/if}\n          {if empty($cancelled)}\n            {if empty($lineItem)}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Start Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$mem_start_date}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership End Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$mem_end_date}\n                </td>\n              </tr>\n            {/if}\n            {if $formValues.total_amount OR $formValues.total_amount eq 0 }\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Membership Fee{/ts}\n                </th>\n              </tr>\n              {if !empty($formValues.contributionType_name)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$formValues.contributionType_name}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($lineItem)}\n                {foreach from=$lineItem item=value key=priceset}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Fee{/ts}</th>\n                          {if !empty($dataArray)}\n                            <th>{ts}SubTotal{/ts}</th>\n                            <th>{ts}Tax Rate{/ts}</th>\n                            <th>{ts}Tax Amount{/ts}</th>\n                            <th>{ts}Total{/ts}</th>\n                          {/if}\n                          <th>{ts}Membership Start Date{/ts}</th>\n                          <th>{ts}Membership End Date{/ts}</th>\n                        </tr>\n                        {foreach from=$value item=line}\n                          <tr>\n                            <td>\n                              {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}\n                                <div>{$line.description|truncate:30:\"...\"}</div>{/if}\n                            </td>\n                            <td>\n                              {$line.line_total|crmMoney}\n                            </td>\n                            {if !empty($dataArray)}\n                              <td>\n                                {$line.unit_price*$line.qty|crmMoney}\n                              </td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>\n                                  {$line.tax_rate|string_format:\"%.2f\"}%\n                                </td>\n                                <td>\n                                  {$line.tax_amount|crmMoney}\n                                </td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                              <td>\n                                {$line.line_total+$line.tax_amount|crmMoney}\n                              </td>\n                            {/if}\n                            <td>\n                              {$line.start_date}\n                            </td>\n                            <td>\n                              {$line.end_date}\n                            </td>\n                          </tr>\n                        {/foreach}\n                      </table>\n                    </td>\n                  </tr>\n                {/foreach}\n                {if !empty($dataArray)}\n                  {if $formValues.total_amount and $totalTaxAmount}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Amount Before Tax:{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {$formValues.total_amount-$totalTaxAmount|crmMoney}\n                    </td>\n                  </tr>\n                  {/if}\n                  {foreach from=$dataArray item=value key=priceset}\n                    <tr>\n                      {if $priceset}\n                        <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n                        <td>&nbsp;{$value|crmMoney:$currency}</td>\n                      {elseif  $priceset == 0}\n                        <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n                        <td>&nbsp;{$value|crmMoney:$currency}</td>\n                      {/if}\n                    </tr>\n                  {/foreach}\n                {/if}\n              {/if}\n              {if $totalTaxAmount}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$totalTaxAmount|crmMoney:$currency}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$formValues.total_amount|crmMoney}\n                </td>\n              </tr>\n              {if !empty($receive_date)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Date Received{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$receive_date|truncate:10:\'\'|crmDate}\n                  </td>\n                </tr>\n              {/if}\n              {if !empty($formValues.paidBy)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$formValues.paidBy}\n                  </td>\n                </tr>\n                {if !empty($formValues.check_number)}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Check Number{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {$formValues.check_number}\n                    </td>\n                  </tr>\n                {/if}\n              {/if}\n            {/if}\n          {/if}\n        </table>\n      </td>\n    </tr>\n\n    {if !empty($isPrimary)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n            {if !empty($billingName)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Billing Name and Address{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {$billingName}<br/>\n                  {$address}\n                </td>\n              </tr>\n            {/if}\n\n            {if !empty($credit_card_type)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Credit Card Information{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$valueStyle}>\n                  {$credit_card_type}<br/>\n                  {$credit_card_number}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Expires{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                </td>\n              </tr>\n            {/if}\n\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($customValues)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Options{/ts}\n              </th>\n            </tr>\n            {foreach from=$customValues item=value key=customName}\n              <tr>\n                <td {$labelStyle}>\n                  {$customName}\n                </td>\n                <td {$valueStyle}>\n                  {$value}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,835,'membership_offline_receipt',0,1,0,NULL),
- (47,'Memberships - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership End Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment }\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax{/ts}: {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level) } - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active }\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if !empty($is_deductible) AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n     {if $membership_assign && !$useForMember}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Type{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_name}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n\n     {if $amount}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n\n      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n       <tr>\n        <td {$labelStyle}>\n         {ts 1=$membership_name}%1 Membership{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$membership_amount|crmMoney}\n        </td>\n       </tr>\n       {if $amount && !$is_separate_payment }\n         <tr>\n          <td {$labelStyle}>\n           {ts}Contribution Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n           {$amount|crmMoney}\n          </td>\n         </tr>\n         <tr>\n           <td {$labelStyle}>\n           {ts}Total{/ts}\n            </td>\n            <td {$valueStyle}>\n            {$amount+$membership_amount|crmMoney}\n           </td>\n         </tr>\n       {/if}\n\n      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Qty{/ts}</th>\n            <th>{ts}Each{/ts}</th>\n            <th>{ts}Total{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n              {$line.description|truncate:30:\"...\"}\n             </td>\n             <td>\n              {$line.qty}\n             </td>\n             <td>\n              {$line.unit_price|crmMoney}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney}\n        </td>\n       </tr>\n\n      {else}\n       {if $useForMember && $lineItem and empty($is_quick_config)}\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Fee{/ts}</th>\n            {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n              <th>{ts}Total{/ts}</th>\n            {/if}\n      <th>{ts}Membership Start Date{/ts}</th>\n      <th>{ts}Membership End Date{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n             {if !empty($dataArray)}\n              <td>\n               {$line.unit_price*$line.qty|crmMoney}\n              </td>\n              {if ($line.tax_rate || $line.tax_amount != \"\")}\n               <td>\n                {$line.tax_rate|string_format:\"%.2f\"}%\n               </td>\n               <td>\n                {$line.tax_amount|crmMoney}\n               </td>\n              {else}\n               <td></td>\n               <td></td>\n              {/if}\n              <td>\n               {$line.line_total+$line.tax_amount|crmMoney}\n              </td>\n             {/if}\n             <td>\n              {$line.start_date}\n             </td>\n       <td>\n              {$line.end_date}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       {if !empty($dataArray)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Amount Before Tax:{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$amount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n         {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {else}\n           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {/if}\n         </tr>\n        {/foreach}\n       {/if}\n       {/if}\n       {if $totalTaxAmount}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalTaxAmount|crmMoney:$currency}\n         </td>\n        </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n\n     {elseif isset($membership_amount)}\n\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts 1=$membership_name}%1 Membership{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_amount|crmMoney}\n       </td>\n      </tr>\n\n\n     {/if}\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($is_monetary) and !empty($trxn_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($membership_trx_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_trx_id}\n       </td>\n      </tr>\n     {/if}\n     {if !empty($is_recur)}\n       <tr>\n        <td colspan=\"2\" {$labelStyle}>\n         {ts}This membership will be renewed automatically.{/ts}\n         {if $cancelSubscriptionUrl}\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         {/if}\n        </td>\n       </tr>\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td colspan=\"2\" {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n         <th {$headerStyle}>\n           {ts}Billing Name and Address{/ts}\n         </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}<br />\n          {$email}\n        </td>\n      </tr>\n    {elseif !empty($email)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Registered Email{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$email}\n        </td>\n      </tr>\n    {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($is_deductible) AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,836,'membership_online_receipt',1,0,0,NULL),
- (48,'Memberships - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership End Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment }\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax{/ts}: {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level) } - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active }\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if !empty($is_deductible) AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n     {if $membership_assign && !$useForMember}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Type{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_name}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n\n     {if $amount}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n\n      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n       <tr>\n        <td {$labelStyle}>\n         {ts 1=$membership_name}%1 Membership{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$membership_amount|crmMoney}\n        </td>\n       </tr>\n       {if $amount && !$is_separate_payment }\n         <tr>\n          <td {$labelStyle}>\n           {ts}Contribution Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n           {$amount|crmMoney}\n          </td>\n         </tr>\n         <tr>\n           <td {$labelStyle}>\n           {ts}Total{/ts}\n            </td>\n            <td {$valueStyle}>\n            {$amount+$membership_amount|crmMoney}\n           </td>\n         </tr>\n       {/if}\n\n      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Qty{/ts}</th>\n            <th>{ts}Each{/ts}</th>\n            <th>{ts}Total{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n              {$line.description|truncate:30:\"...\"}\n             </td>\n             <td>\n              {$line.qty}\n             </td>\n             <td>\n              {$line.unit_price|crmMoney}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney}\n        </td>\n       </tr>\n\n      {else}\n       {if $useForMember && $lineItem and empty($is_quick_config)}\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Fee{/ts}</th>\n            {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n              <th>{ts}Total{/ts}</th>\n            {/if}\n      <th>{ts}Membership Start Date{/ts}</th>\n      <th>{ts}Membership End Date{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n             {if !empty($dataArray)}\n              <td>\n               {$line.unit_price*$line.qty|crmMoney}\n              </td>\n              {if ($line.tax_rate || $line.tax_amount != \"\")}\n               <td>\n                {$line.tax_rate|string_format:\"%.2f\"}%\n               </td>\n               <td>\n                {$line.tax_amount|crmMoney}\n               </td>\n              {else}\n               <td></td>\n               <td></td>\n              {/if}\n              <td>\n               {$line.line_total+$line.tax_amount|crmMoney}\n              </td>\n             {/if}\n             <td>\n              {$line.start_date}\n             </td>\n       <td>\n              {$line.end_date}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       {if !empty($dataArray)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Amount Before Tax:{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$amount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n         {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {else}\n           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {/if}\n         </tr>\n        {/foreach}\n       {/if}\n       {/if}\n       {if $totalTaxAmount}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalTaxAmount|crmMoney:$currency}\n         </td>\n        </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n\n     {elseif isset($membership_amount)}\n\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts 1=$membership_name}%1 Membership{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_amount|crmMoney}\n       </td>\n      </tr>\n\n\n     {/if}\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($is_monetary) and !empty($trxn_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($membership_trx_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_trx_id}\n       </td>\n      </tr>\n     {/if}\n     {if !empty($is_recur)}\n       <tr>\n        <td colspan=\"2\" {$labelStyle}>\n         {ts}This membership will be renewed automatically.{/ts}\n         {if $cancelSubscriptionUrl}\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         {/if}\n        </td>\n       </tr>\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td colspan=\"2\" {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n         <th {$headerStyle}>\n           {ts}Billing Name and Address{/ts}\n         </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}<br />\n          {$email}\n        </td>\n      </tr>\n    {elseif !empty($email)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Registered Email{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$email}\n        </td>\n      </tr>\n    {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($is_deductible) AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,836,'membership_online_receipt',0,1,0,NULL),
- (49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership End Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n   </td>\n  </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Status{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_status}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n\n </table>\n\n</body>\n</html>\n',1,837,'membership_autorenew_cancelled',1,0,0,NULL),
- (50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership End Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n   </td>\n  </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Status{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_status}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n\n </table>\n\n</body>\n</html>\n',1,837,'membership_autorenew_cancelled',0,1,0,NULL),
- (51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n   <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n        <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n         {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n        </td>\n      </tr>\n\n  </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_billing',1,0,0,NULL),
- (52,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n   <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n        <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n         {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n        </td>\n      </tr>\n\n  </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_billing',0,1,0,NULL),
+ (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if empty($lineItem)}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{/if}\n{if empty($cancelled)}\n{if empty($lineItem)}\n{ts}Membership Start Date{/ts}: {$mem_start_date}\n{ts}Membership End Date{/ts}: {$mem_end_date}\n{/if}\n\n{if $formValues.total_amount OR $formValues.total_amount eq 0 }\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !empty($formValues.contributionType_name)}\n{ts}Financial Type{/ts}: {$formValues.contributionType_name}\n{/if}\n{if !empty($lineItem)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}  {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax{/ts}: {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset}\n{$taxTerm} {$priceset|string_format:\"%.2f\"} %: {$value|crmMoney:$currency}\n{elseif  $priceset == 0}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$formValues.total_amount|crmMoney}\n{if !empty($receive_date)}\n{ts}Date Received{/ts}: {$receive_date|truncate:10:\'\'|crmDate}\n{/if}\n{if !empty($formValues.paidBy)}\n{ts}Paid By{/ts}: {$formValues.paidBy}\n{if !empty($formValues.check_number)}\n{ts}Check Number{/ts}: {$formValues.check_number}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary) }\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\"\n         style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n    <tr>\n      <td>\n        {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n        {if $receipt_text}\n          <p>{$receipt_text|htmlize}</p>\n          <p>{ts}Thank you for this contribution.{/ts}</p>\n        {/if}\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n          {if empty($lineItem)}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td {$labelStyle}>\n                {ts}Membership Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {$membership_name}\n              </td>\n            </tr>\n          {/if}\n          {if empty($cancelled)}\n            {if empty($lineItem)}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Start Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$mem_start_date}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership End Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$mem_end_date}\n                </td>\n              </tr>\n            {/if}\n            {if $formValues.total_amount OR $formValues.total_amount eq 0 }\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Membership Fee{/ts}\n                </th>\n              </tr>\n              {if !empty($formValues.contributionType_name)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$formValues.contributionType_name}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($lineItem)}\n                {foreach from=$lineItem item=value key=priceset}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Fee{/ts}</th>\n                          {if !empty($dataArray)}\n                            <th>{ts}SubTotal{/ts}</th>\n                            <th>{ts}Tax Rate{/ts}</th>\n                            <th>{ts}Tax Amount{/ts}</th>\n                            <th>{ts}Total{/ts}</th>\n                          {/if}\n                          <th>{ts}Membership Start Date{/ts}</th>\n                          <th>{ts}Membership End Date{/ts}</th>\n                        </tr>\n                        {foreach from=$value item=line}\n                          <tr>\n                            <td>\n                              {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}\n                                <div>{$line.description|truncate:30:\"...\"}</div>{/if}\n                            </td>\n                            <td>\n                              {$line.line_total|crmMoney}\n                            </td>\n                            {if !empty($dataArray)}\n                              <td>\n                                {$line.unit_price*$line.qty|crmMoney}\n                              </td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>\n                                  {$line.tax_rate|string_format:\"%.2f\"}%\n                                </td>\n                                <td>\n                                  {$line.tax_amount|crmMoney}\n                                </td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                              <td>\n                                {$line.line_total+$line.tax_amount|crmMoney}\n                              </td>\n                            {/if}\n                            <td>\n                              {$line.start_date}\n                            </td>\n                            <td>\n                              {$line.end_date}\n                            </td>\n                          </tr>\n                        {/foreach}\n                      </table>\n                    </td>\n                  </tr>\n                {/foreach}\n                {if !empty($dataArray)}\n                  {if $formValues.total_amount and $totalTaxAmount}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Amount Before Tax:{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {$formValues.total_amount-$totalTaxAmount|crmMoney}\n                    </td>\n                  </tr>\n                  {/if}\n                  {foreach from=$dataArray item=value key=priceset}\n                    <tr>\n                      {if $priceset}\n                        <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n                        <td>&nbsp;{$value|crmMoney:$currency}</td>\n                      {elseif  $priceset == 0}\n                        <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n                        <td>&nbsp;{$value|crmMoney:$currency}</td>\n                      {/if}\n                    </tr>\n                  {/foreach}\n                {/if}\n              {/if}\n              {if $totalTaxAmount}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$totalTaxAmount|crmMoney:$currency}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$formValues.total_amount|crmMoney}\n                </td>\n              </tr>\n              {if !empty($receive_date)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Date Received{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$receive_date|truncate:10:\'\'|crmDate}\n                  </td>\n                </tr>\n              {/if}\n              {if !empty($formValues.paidBy)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$formValues.paidBy}\n                  </td>\n                </tr>\n                {if !empty($formValues.check_number)}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Check Number{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {$formValues.check_number}\n                    </td>\n                  </tr>\n                {/if}\n              {/if}\n            {/if}\n          {/if}\n        </table>\n      </td>\n    </tr>\n\n    {if !empty($isPrimary)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n            {if !empty($billingName)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Billing Name and Address{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {$billingName}<br/>\n                  {$address}\n                </td>\n              </tr>\n            {/if}\n\n            {if !empty($credit_card_type)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Credit Card Information{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$valueStyle}>\n                  {$credit_card_type}<br/>\n                  {$credit_card_number}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Expires{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                </td>\n              </tr>\n            {/if}\n\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($customValues)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Options{/ts}\n              </th>\n            </tr>\n            {foreach from=$customValues item=value key=customName}\n              <tr>\n                <td {$labelStyle}>\n                  {$customName}\n                </td>\n                <td {$valueStyle}>\n                  {$value}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,835,'membership_offline_receipt',1,0,0,NULL),
+ (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if empty($lineItem)}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{/if}\n{if empty($cancelled)}\n{if empty($lineItem)}\n{ts}Membership Start Date{/ts}: {$mem_start_date}\n{ts}Membership End Date{/ts}: {$mem_end_date}\n{/if}\n\n{if $formValues.total_amount OR $formValues.total_amount eq 0 }\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !empty($formValues.contributionType_name)}\n{ts}Financial Type{/ts}: {$formValues.contributionType_name}\n{/if}\n{if !empty($lineItem)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"}  {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax{/ts}: {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset}\n{$taxTerm} {$priceset|string_format:\"%.2f\"} %: {$value|crmMoney:$currency}\n{elseif  $priceset == 0}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$formValues.total_amount|crmMoney}\n{if !empty($receive_date)}\n{ts}Date Received{/ts}: {$receive_date|truncate:10:\'\'|crmDate}\n{/if}\n{if !empty($formValues.paidBy)}\n{ts}Paid By{/ts}: {$formValues.paidBy}\n{if !empty($formValues.check_number)}\n{ts}Check Number{/ts}: {$formValues.check_number}\n{/if}\n{/if}\n{/if}\n{/if}\n\n{if !empty($isPrimary) }\n{if !empty($billingName)}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{/if}\n\n{if !empty($customValues)}\n===========================================================\n{ts}Membership Options{/ts}\n\n===========================================================\n{foreach from=$customValues item=value key=customName}\n {$customName} : {$value}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n        \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n  <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n  <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\"\n         style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n    <!-- BEGIN HEADER -->\n    <!-- You can add table row(s) here with logo or other header elements -->\n    <!-- END HEADER -->\n\n    <!-- BEGIN CONTENT -->\n\n    <tr>\n      <td>\n        {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n        {if $receipt_text}\n          <p>{$receipt_text|htmlize}</p>\n          <p>{ts}Thank you for this contribution.{/ts}</p>\n        {/if}\n      </td>\n    </tr>\n    <tr>\n      <td>\n        <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n          {if empty($lineItem)}\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Information{/ts}\n              </th>\n            </tr>\n            <tr>\n              <td {$labelStyle}>\n                {ts}Membership Type{/ts}\n              </td>\n              <td {$valueStyle}>\n                {$membership_name}\n              </td>\n            </tr>\n          {/if}\n          {if empty($cancelled)}\n            {if empty($lineItem)}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership Start Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$mem_start_date}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Membership End Date{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$mem_end_date}\n                </td>\n              </tr>\n            {/if}\n            {if $formValues.total_amount OR $formValues.total_amount eq 0 }\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Membership Fee{/ts}\n                </th>\n              </tr>\n              {if !empty($formValues.contributionType_name)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Financial Type{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$formValues.contributionType_name}\n                  </td>\n                </tr>\n              {/if}\n\n              {if !empty($lineItem)}\n                {foreach from=$lineItem item=value key=priceset}\n                  <tr>\n                    <td colspan=\"2\" {$valueStyle}>\n                      <table>\n                        <tr>\n                          <th>{ts}Item{/ts}</th>\n                          <th>{ts}Fee{/ts}</th>\n                          {if !empty($dataArray)}\n                            <th>{ts}SubTotal{/ts}</th>\n                            <th>{ts}Tax Rate{/ts}</th>\n                            <th>{ts}Tax Amount{/ts}</th>\n                            <th>{ts}Total{/ts}</th>\n                          {/if}\n                          <th>{ts}Membership Start Date{/ts}</th>\n                          <th>{ts}Membership End Date{/ts}</th>\n                        </tr>\n                        {foreach from=$value item=line}\n                          <tr>\n                            <td>\n                              {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}\n                                <div>{$line.description|truncate:30:\"...\"}</div>{/if}\n                            </td>\n                            <td>\n                              {$line.line_total|crmMoney}\n                            </td>\n                            {if !empty($dataArray)}\n                              <td>\n                                {$line.unit_price*$line.qty|crmMoney}\n                              </td>\n                              {if $line.tax_rate || $line.tax_amount != \"\"}\n                                <td>\n                                  {$line.tax_rate|string_format:\"%.2f\"}%\n                                </td>\n                                <td>\n                                  {$line.tax_amount|crmMoney}\n                                </td>\n                              {else}\n                                <td></td>\n                                <td></td>\n                              {/if}\n                              <td>\n                                {$line.line_total+$line.tax_amount|crmMoney}\n                              </td>\n                            {/if}\n                            <td>\n                              {$line.start_date}\n                            </td>\n                            <td>\n                              {$line.end_date}\n                            </td>\n                          </tr>\n                        {/foreach}\n                      </table>\n                    </td>\n                  </tr>\n                {/foreach}\n                {if !empty($dataArray)}\n                  {if $formValues.total_amount and $totalTaxAmount}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Amount Before Tax:{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {$formValues.total_amount-$totalTaxAmount|crmMoney}\n                    </td>\n                  </tr>\n                  {/if}\n                  {foreach from=$dataArray item=value key=priceset}\n                    <tr>\n                      {if $priceset}\n                        <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n                        <td>&nbsp;{$value|crmMoney:$currency}</td>\n                      {elseif  $priceset == 0}\n                        <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>\n                        <td>&nbsp;{$value|crmMoney:$currency}</td>\n                      {/if}\n                    </tr>\n                  {/foreach}\n                {/if}\n              {/if}\n              {if $totalTaxAmount}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Total Tax Amount{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$totalTaxAmount|crmMoney:$currency}\n                  </td>\n                </tr>\n              {/if}\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Amount{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$formValues.total_amount|crmMoney}\n                </td>\n              </tr>\n              {if !empty($receive_date)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Date Received{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$receive_date|truncate:10:\'\'|crmDate}\n                  </td>\n                </tr>\n              {/if}\n              {if !empty($formValues.paidBy)}\n                <tr>\n                  <td {$labelStyle}>\n                    {ts}Paid By{/ts}\n                  </td>\n                  <td {$valueStyle}>\n                    {$formValues.paidBy}\n                  </td>\n                </tr>\n                {if !empty($formValues.check_number)}\n                  <tr>\n                    <td {$labelStyle}>\n                      {ts}Check Number{/ts}\n                    </td>\n                    <td {$valueStyle}>\n                      {$formValues.check_number}\n                    </td>\n                  </tr>\n                {/if}\n              {/if}\n            {/if}\n          {/if}\n        </table>\n      </td>\n    </tr>\n\n    {if !empty($isPrimary)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n\n            {if !empty($billingName)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Billing Name and Address{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {$billingName}<br/>\n                  {$address}\n                </td>\n              </tr>\n            {/if}\n\n            {if !empty($credit_card_type)}\n              <tr>\n                <th {$headerStyle}>\n                  {ts}Credit Card Information{/ts}\n                </th>\n              </tr>\n              <tr>\n                <td {$valueStyle}>\n                  {$credit_card_type}<br/>\n                  {$credit_card_number}\n                </td>\n              </tr>\n              <tr>\n                <td {$labelStyle}>\n                  {ts}Expires{/ts}\n                </td>\n                <td {$valueStyle}>\n                  {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n                </td>\n              </tr>\n            {/if}\n\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n    {if !empty($customValues)}\n      <tr>\n        <td>\n          <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n            <tr>\n              <th {$headerStyle}>\n                {ts}Membership Options{/ts}\n              </th>\n            </tr>\n            {foreach from=$customValues item=value key=customName}\n              <tr>\n                <td {$labelStyle}>\n                  {$customName}\n                </td>\n                <td {$valueStyle}>\n                  {$value}\n                </td>\n              </tr>\n            {/foreach}\n          </table>\n        </td>\n      </tr>\n    {/if}\n\n  </table>\n\n</body>\n</html>\n',1,835,'membership_offline_receipt',0,1,0,NULL),
+ (47,'Memberships - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership End Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment }\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax{/ts}: {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level) } - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active }\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if !empty($is_deductible) AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n     {if $membership_assign && !$useForMember}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Type{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_name}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n\n     {if $amount}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n\n      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n       <tr>\n        <td {$labelStyle}>\n         {ts 1=$membership_name}%1 Membership{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$membership_amount|crmMoney}\n        </td>\n       </tr>\n       {if $amount && !$is_separate_payment }\n         <tr>\n          <td {$labelStyle}>\n           {ts}Contribution Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n           {$amount|crmMoney}\n          </td>\n         </tr>\n         <tr>\n           <td {$labelStyle}>\n           {ts}Total{/ts}\n            </td>\n            <td {$valueStyle}>\n            {$amount+$membership_amount|crmMoney}\n           </td>\n         </tr>\n       {/if}\n\n      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Qty{/ts}</th>\n            <th>{ts}Each{/ts}</th>\n            <th>{ts}Total{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n              {$line.description|truncate:30:\"...\"}\n             </td>\n             <td>\n              {$line.qty}\n             </td>\n             <td>\n              {$line.unit_price|crmMoney}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney}\n        </td>\n       </tr>\n\n      {else}\n       {if $useForMember && $lineItem and empty($is_quick_config)}\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Fee{/ts}</th>\n            {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n              <th>{ts}Total{/ts}</th>\n            {/if}\n      <th>{ts}Membership Start Date{/ts}</th>\n      <th>{ts}Membership End Date{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n             {if !empty($dataArray)}\n              <td>\n               {$line.unit_price*$line.qty|crmMoney}\n              </td>\n              {if ($line.tax_rate || $line.tax_amount != \"\")}\n               <td>\n                {$line.tax_rate|string_format:\"%.2f\"}%\n               </td>\n               <td>\n                {$line.tax_amount|crmMoney}\n               </td>\n              {else}\n               <td></td>\n               <td></td>\n              {/if}\n              <td>\n               {$line.line_total+$line.tax_amount|crmMoney}\n              </td>\n             {/if}\n             <td>\n              {$line.start_date}\n             </td>\n       <td>\n              {$line.end_date}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       {if !empty($dataArray)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Amount Before Tax:{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$amount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n         {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {else}\n           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {/if}\n         </tr>\n        {/foreach}\n       {/if}\n       {/if}\n       {if $totalTaxAmount}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalTaxAmount|crmMoney:$currency}\n         </td>\n        </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n\n     {elseif isset($membership_amount)}\n\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts 1=$membership_name}%1 Membership{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_amount|crmMoney}\n       </td>\n      </tr>\n\n\n     {/if}\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($is_monetary) and !empty($trxn_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($membership_trx_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_trx_id}\n       </td>\n      </tr>\n     {/if}\n     {if !empty($is_recur)}\n       <tr>\n        <td colspan=\"2\" {$labelStyle}>\n         {ts}This membership will be renewed automatically.{/ts}\n         {if $cancelSubscriptionUrl}\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         {/if}\n        </td>\n       </tr>\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td colspan=\"2\" {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n         <th {$headerStyle}>\n           {ts}Billing Name and Address{/ts}\n         </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}<br />\n          {$email}\n        </td>\n      </tr>\n    {elseif !empty($email)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Registered Email{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$email}\n        </td>\n      </tr>\n    {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($is_deductible) AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,836,'membership_online_receipt',1,0,0,NULL),
+ (48,'Memberships - Receipt (on-line)','{if $is_pay_later}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership End Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment }\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership End Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}  {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"}  {$line.tax_rate|string_format:\"%.2f\"} %  {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else}                  {/if}   {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax{/ts}: {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level) } - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active }\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n  {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n  {$contact_phone}\n{/if}\n{/if}\n{if !empty($is_deductible) AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n\n\n{if !empty($customPost)}\n===========================================================\n{$customPost_grouptitle}\n\n===========================================================\n{foreach from=$customPost item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n     {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    {if !empty($receipt_text)}\n     <p>{$receipt_text|htmlize}</p>\n    {/if}\n\n    {if $is_pay_later}\n     <p>{$pay_later_receipt}</p> {* FIXME: this might be text rather than HTML *}\n    {/if}\n\n   </td>\n  </tr>\n  </table>\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n     {if $membership_assign && !$useForMember}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Type{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_name}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n\n     {if $amount}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n\n      {if !$useForMember and isset($membership_amount) and !empty($is_quick_config)}\n\n       <tr>\n        <td {$labelStyle}>\n         {ts 1=$membership_name}%1 Membership{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$membership_amount|crmMoney}\n        </td>\n       </tr>\n       {if $amount && !$is_separate_payment }\n         <tr>\n          <td {$labelStyle}>\n           {ts}Contribution Amount{/ts}\n          </td>\n          <td {$valueStyle}>\n           {$amount|crmMoney}\n          </td>\n         </tr>\n         <tr>\n           <td {$labelStyle}>\n           {ts}Total{/ts}\n            </td>\n            <td {$valueStyle}>\n            {$amount+$membership_amount|crmMoney}\n           </td>\n         </tr>\n       {/if}\n\n      {elseif empty($useForMember) && !empty($lineItem) and $priceSetID and empty($is_quick_config)}\n\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Qty{/ts}</th>\n            <th>{ts}Each{/ts}</th>\n            <th>{ts}Total{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n              {$line.description|truncate:30:\"...\"}\n             </td>\n             <td>\n              {$line.qty}\n             </td>\n             <td>\n              {$line.unit_price|crmMoney}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Total Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney}\n        </td>\n       </tr>\n\n      {else}\n       {if $useForMember && $lineItem and empty($is_quick_config)}\n       {foreach from=$lineItem item=value key=priceset}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <table>\n           <tr>\n            <th>{ts}Item{/ts}</th>\n            <th>{ts}Fee{/ts}</th>\n            {if !empty($dataArray)}\n              <th>{ts}SubTotal{/ts}</th>\n              <th>{ts}Tax Rate{/ts}</th>\n              <th>{ts}Tax Amount{/ts}</th>\n              <th>{ts}Total{/ts}</th>\n            {/if}\n      <th>{ts}Membership Start Date{/ts}</th>\n      <th>{ts}Membership End Date{/ts}</th>\n           </tr>\n           {foreach from=$value item=line}\n            <tr>\n             <td>\n             {if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:\"...\"}</div>{/if}\n             </td>\n             <td>\n              {$line.line_total|crmMoney}\n             </td>\n             {if !empty($dataArray)}\n              <td>\n               {$line.unit_price*$line.qty|crmMoney}\n              </td>\n              {if ($line.tax_rate || $line.tax_amount != \"\")}\n               <td>\n                {$line.tax_rate|string_format:\"%.2f\"}%\n               </td>\n               <td>\n                {$line.tax_amount|crmMoney}\n               </td>\n              {else}\n               <td></td>\n               <td></td>\n              {/if}\n              <td>\n               {$line.line_total+$line.tax_amount|crmMoney}\n              </td>\n             {/if}\n             <td>\n              {$line.start_date}\n             </td>\n       <td>\n              {$line.end_date}\n             </td>\n            </tr>\n           {/foreach}\n          </table>\n         </td>\n        </tr>\n       {/foreach}\n       {if !empty($dataArray)}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Amount Before Tax:{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$amount-$totalTaxAmount|crmMoney}\n         </td>\n        </tr>\n        {foreach from=$dataArray item=value key=priceset}\n         <tr>\n         {if $priceset || $priceset == 0}\n           <td>&nbsp;{$taxTerm} {$priceset|string_format:\"%.2f\"}%</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {else}\n           <td>&nbsp;{ts}NO{/ts} {$taxTerm}</td>\n           <td>&nbsp;{$value|crmMoney:$currency}</td>\n         {/if}\n         </tr>\n        {/foreach}\n       {/if}\n       {/if}\n       {if $totalTaxAmount}\n        <tr>\n         <td {$labelStyle}>\n          {ts}Total Tax Amount{/ts}\n         </td>\n         <td {$valueStyle}>\n          {$totalTaxAmount|crmMoney:$currency}\n         </td>\n        </tr>\n       {/if}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Amount{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$amount|crmMoney} {if isset($amount_level)} - {$amount_level}{/if}\n        </td>\n       </tr>\n\n      {/if}\n\n\n     {elseif isset($membership_amount)}\n\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Fee{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts 1=$membership_name}%1 Membership{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_amount|crmMoney}\n       </td>\n      </tr>\n\n\n     {/if}\n\n     {if !empty($receive_date)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Date{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$receive_date|crmDate}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($is_monetary) and !empty($trxn_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$trxn_id}\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($membership_trx_id)}\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Transaction #{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_trx_id}\n       </td>\n      </tr>\n     {/if}\n     {if !empty($is_recur)}\n       <tr>\n        <td colspan=\"2\" {$labelStyle}>\n         {ts}This membership will be renewed automatically.{/ts}\n         {if $cancelSubscriptionUrl}\n           {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n         {/if}\n        </td>\n       </tr>\n       {if $updateSubscriptionBillingUrl}\n         <tr>\n          <td colspan=\"2\" {$labelStyle}>\n           {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n          </td>\n         </tr>\n       {/if}\n     {/if}\n\n     {if $honor_block_is_active}\n      <tr>\n       <th {$headerStyle}>\n        {$soft_credit_type}\n       </th>\n      </tr>\n      {foreach from=$honoreeProfile item=value key=label}\n        <tr>\n         <td {$labelStyle}>\n          {$label}\n         </td>\n         <td {$valueStyle}>\n          {$value}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($pcpBlock)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Personal Campaign Page{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Display In Honor Roll{/ts}\n       </td>\n       <td {$valueStyle}>\n        {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n       </td>\n      </tr>\n      {if $pcp_roll_nickname}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Nickname{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_roll_nickname}\n        </td>\n       </tr>\n      {/if}\n      {if $pcp_personal_note}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Personal Note{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$pcp_personal_note}\n        </td>\n       </tr>\n      {/if}\n     {/if}\n\n     {if !empty($onBehalfProfile)}\n      <tr>\n       <th {$headerStyle}>\n        {$onBehalfProfile_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n        <tr>\n         <td {$labelStyle}>\n          {$onBehalfName}\n         </td>\n         <td {$valueStyle}>\n          {$onBehalfValue}\n         </td>\n        </tr>\n      {/foreach}\n     {/if}\n\n     {if !empty($billingName)}\n       <tr>\n         <th {$headerStyle}>\n           {ts}Billing Name and Address{/ts}\n         </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$billingName}<br />\n          {$address|nl2br}<br />\n          {$email}\n        </td>\n      </tr>\n    {elseif !empty($email)}\n      <tr>\n        <th {$headerStyle}>\n          {ts}Registered Email{/ts}\n        </th>\n      </tr>\n      <tr>\n        <td colspan=\"2\" {$valueStyle}>\n          {$email}\n        </td>\n      </tr>\n    {/if}\n\n     {if !empty($credit_card_type)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n     {/if}\n\n     {if !empty($selectPremium)}\n      <tr>\n       <th {$headerStyle}>\n        {ts}Premium Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$labelStyle}>\n        {$product_name}\n       </td>\n      </tr>\n      {if $option}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Option{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$option}\n        </td>\n       </tr>\n      {/if}\n      {if $sku}\n       <tr>\n        <td {$labelStyle}>\n         {ts}SKU{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$sku}\n        </td>\n       </tr>\n      {/if}\n      {if $start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($contact_email) OR !empty($contact_phone)}\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         <p>{ts}For information about this premium, contact:{/ts}</p>\n         {if !empty($contact_email)}\n          <p>{$contact_email}</p>\n         {/if}\n         {if !empty($contact_phone)}\n          <p>{$contact_phone}</p>\n         {/if}\n        </td>\n       </tr>\n      {/if}\n      {if !empty($is_deductible) AND !empty($price)}\n        <tr>\n         <td colspan=\"2\" {$valueStyle}>\n          <p>{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}</p>\n         </td>\n        </tr>\n      {/if}\n     {/if}\n\n     {if !empty($customPre)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPre_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPre item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n     {if !empty($customPost)}\n      <tr>\n       <th {$headerStyle}>\n        {$customPost_grouptitle}\n       </th>\n      </tr>\n      {foreach from=$customPost item=customValue key=customName}\n       {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)}\n        <tr>\n         <td {$labelStyle}>\n          {$customName}\n         </td>\n         <td {$valueStyle}>\n          {$customValue}\n         </td>\n        </tr>\n       {/if}\n      {/foreach}\n     {/if}\n\n  </table>\n\n</body>\n</html>\n',1,836,'membership_online_receipt',0,1,0,NULL),
+ (49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership End Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n   </td>\n  </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Status{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_status}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n\n </table>\n\n</body>\n</html>\n',1,837,'membership_autorenew_cancelled',1,0,0,NULL),
+ (50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership End Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n   </td>\n  </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n      <tr>\n       <th {$headerStyle}>\n        {ts}Membership Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td {$labelStyle}>\n        {ts}Membership Status{/ts}\n       </td>\n       <td {$valueStyle}>\n        {$membership_status}\n       </td>\n      </tr>\n      {if $mem_start_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership Start Date{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$mem_start_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n      {if $mem_end_date}\n       <tr>\n        <td {$labelStyle}>\n         {ts}Membership End Date{/ts}\n        </td>\n        <td {$valueStyle}>\n          {$mem_end_date|crmDate}\n        </td>\n       </tr>\n      {/if}\n\n </table>\n\n</body>\n</html>\n',1,837,'membership_autorenew_cancelled',0,1,0,NULL),
+ (51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n   <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n        <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n         {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n        </td>\n      </tr>\n\n  </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_billing',1,0,0,NULL),
+ (52,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n </table>\n\n  <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n   <tr>\n        <th {$headerStyle}>\n         {ts}Billing Name and Address{/ts}\n        </th>\n       </tr>\n       <tr>\n        <td colspan=\"2\" {$valueStyle}>\n         {$billingName}<br />\n         {$address|nl2br}<br />\n         {$email}\n        </td>\n       </tr>\n        <tr>\n       <th {$headerStyle}>\n        {ts}Credit Card Information{/ts}\n       </th>\n      </tr>\n      <tr>\n       <td colspan=\"2\" {$valueStyle}>\n        {$credit_card_type}<br />\n        {$credit_card_number}<br />\n        {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n       </td>\n      </tr>\n      <tr>\n        <td {$labelStyle}>\n         {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n        </td>\n      </tr>\n\n  </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_billing',0,1,0,NULL),
  (53,'Test-drive - Receipt Header','[TEST]\n','***********************************************************\n\n{ts}Test-drive Email / Receipt{/ts}\n\n{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}\n\n***********************************************************\n',' <table id=\"crm-event_receipt_test\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n  <tr>\n   <td>\n    <p>{ts}Test-drive Email / Receipt{/ts}</p>\n    <p>{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}</p>\n   </td>\n  </tr>\n </table>\n',1,839,'test_preview',1,0,0,NULL),
  (54,'Test-drive - Receipt Header','[TEST]\n','***********************************************************\n\n{ts}Test-drive Email / Receipt{/ts}\n\n{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}\n\n***********************************************************\n',' <table id=\"crm-event_receipt_test\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n  <tr>\n   <td>\n    <p>{ts}Test-drive Email / Receipt{/ts}</p>\n    <p>{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}</p>\n   </td>\n  </tr>\n </table>\n',1,839,'test_preview',0,1,0,NULL),
  (55,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Thank you for your generous pledge.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=\"1\"}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=`$count+1`}\n{/foreach}\n{/if}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts}Thank you for your generous pledge.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Pledge Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Pledge Received{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$create_date|truncate:10:\'\'|crmDate}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Pledge Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$total_pledge_amount|crmMoney:$currency}\n      </td>\n     </tr>\n     <tr>\n      <th {$headerStyle}>\n       {ts}Payment Schedule{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       <p>{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}</p>\n\n       {if $frequency_day}\n        <p>{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}</p>\n       {/if}\n      </td>\n     </tr>\n\n     {if $payments}\n      {assign var=\"count\" value=\"1\"}\n      {foreach from=$payments item=payment}\n       <tr>\n        <td {$labelStyle}>\n         {ts 1=$count}Payment %1{/ts}\n        </td>\n        <td {$valueStyle}>\n         {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n        </td>\n       </tr>\n       {assign var=\"count\" value=`$count+1`}\n      {/foreach}\n     {/if}\n\n     <tr>\n      <td colspan=\"2\" {$valueStyle}>\n       <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n      </td>\n     </tr>\n\n     {if $customGroup}\n      {foreach from=$customGroup item=value key=customName}\n       <tr>\n        <th {$headerStyle}>\n         {$customName}\n        </th>\n       </tr>\n       {foreach from=$value item=v key=n}\n        <tr>\n         <td {$labelStyle}>\n          {$n}\n         </td>\n         <td {$valueStyle}>\n          {$v}\n         </td>\n        </tr>\n       {/foreach}\n      {/foreach}\n     {/if}\n\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,840,'pledge_acknowledge',1,0,0,NULL),
@@ -5281,12 +5539,12 @@ INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`
  (58,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'} Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank your for your generous support.{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n    <p>{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}</p>\n   </td>\n  </tr>\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Payment Due{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Amount Due{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$amount_due|crmMoney:$currency}\n      </td>\n     </tr>\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    {if $contribution_page_id}\n     {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n     <p><a href=\"{$contributionUrl}\">{ts}Go to a web page where you can make your payment online{/ts}</a></p>\n    {else}\n     <p>{ts}Please mail your payment to{/ts}: {domain.address}</p>\n    {/if}\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <th {$headerStyle}>\n       {ts}Pledge Information{/ts}\n      </th>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Pledge Received{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$create_date|truncate:10:\'\'|crmDate}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Pledge Amount{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$amount|crmMoney:$currency}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Total Paid{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$amount_paid|crmMoney:$currency}\n      </td>\n     </tr>\n    </table>\n   </td>\n  </tr>\n\n  <tr>\n   <td>\n    <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n    <p>{ts}Thank your for your generous support.{/ts}</p>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,841,'pledge_reminder',0,1,0,NULL),
  (59,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <td {$labelStyle}>\n       {ts}Submitted For{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$displayName}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Date{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$currentDate}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contact Summary{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$contactLink}\n      </td>\n     </tr>\n\n     <tr>\n      <th {$headerStyle}>\n       {$grouptitle}\n      </th>\n     </tr>\n\n     {foreach from=$values item=value key=valueName}\n      <tr>\n       <td {$labelStyle}>\n        {$valueName}\n       </td>\n       <td {$valueStyle}>\n        {$value}\n       </td>\n      </tr>\n     {/foreach}\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,842,'uf_notify',1,0,0,NULL),
  (60,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n  <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n  <!-- BEGIN HEADER -->\n  <!-- You can add table row(s) here with logo or other header elements -->\n  <!-- END HEADER -->\n\n  <!-- BEGIN CONTENT -->\n\n  <tr>\n   <td>\n    <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n     <tr>\n      <td {$labelStyle}>\n       {ts}Submitted For{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$displayName}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Date{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$currentDate}\n      </td>\n     </tr>\n     <tr>\n      <td {$labelStyle}>\n       {ts}Contact Summary{/ts}\n      </td>\n      <td {$valueStyle}>\n       {$contactLink}\n      </td>\n     </tr>\n\n     <tr>\n      <th {$headerStyle}>\n       {$grouptitle}\n      </th>\n     </tr>\n\n     {foreach from=$values item=value key=valueName}\n      <tr>\n       <td {$labelStyle}>\n        {$valueName}\n       </td>\n       <td {$valueStyle}>\n        {$value}\n       </td>\n      </tr>\n     {/foreach}\n    </table>\n   </td>\n  </tr>\n\n </table>\n\n</body>\n</html>\n',1,842,'uf_notify',0,1,0,NULL),
- (61,'Petition - signature added','Thank you for signing {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {$petition.title}.</p>\n\n{include file=\"CRM/Campaign/Page/Petition/SocialNetwork.tpl\" petition_id=$survey_id noscript=true emailMode=true}\n',1,843,'petition_sign',1,0,0,NULL),
- (62,'Petition - signature added','Thank you for signing {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {$petition.title}.</p>\n\n{include file=\"CRM/Campaign/Page/Petition/SocialNetwork.tpl\" petition_id=$survey_id noscript=true emailMode=true}\n',1,843,'petition_sign',0,1,0,NULL),
- (63,'Petition - need verification','Confirmation of signature needed for {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {$petition.title}.</p>\n\n<p>In order to <b>complete your signature</b>, we must confirm your e-mail.\n<br />\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n<br /><br />\nEmail confirmation page: <a href=\"{$petition.confirmUrl}\">{$petition.confirmUrl}</a></p>\n\n<p>If you did not sign this petition, please ignore this message.</p>\n',1,844,'petition_confirmation_needed',1,0,0,NULL),
- (64,'Petition - need verification','Confirmation of signature needed for {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','{assign var=\"greeting\" value=\"{contact.email_greeting}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {$petition.title}.</p>\n\n<p>In order to <b>complete your signature</b>, we must confirm your e-mail.\n<br />\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n<br /><br />\nEmail confirmation page: <a href=\"{$petition.confirmUrl}\">{$petition.confirmUrl}</a></p>\n\n<p>If you did not sign this petition, please ignore this message.</p>\n',1,844,'petition_confirmation_needed',0,1,0,NULL),
+ (61,'Petition - signature added','Thank you for signing {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {$petition.title}.</p>\n\n{include file=\"CRM/Campaign/Page/Petition/SocialNetwork.tpl\" petition_id=$survey_id noscript=true emailMode=true}\n',1,843,'petition_sign',1,0,0,NULL),
+ (62,'Petition - signature added','Thank you for signing {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {$petition.title}.</p>\n\n{include file=\"CRM/Campaign/Page/Petition/SocialNetwork.tpl\" petition_id=$survey_id noscript=true emailMode=true}\n',1,843,'petition_sign',0,1,0,NULL),
+ (63,'Petition - need verification','Confirmation of signature needed for {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {$petition.title}.</p>\n\n<p>In order to <b>complete your signature</b>, we must confirm your e-mail.\n<br />\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n<br /><br />\nEmail confirmation page: <a href=\"{$petition.confirmUrl}\">{$petition.confirmUrl}</a></p>\n\n<p>If you did not sign this petition, please ignore this message.</p>\n',1,844,'petition_confirmation_needed',1,0,0,NULL),
+ (64,'Petition - need verification','Confirmation of signature needed for {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {$petition.title}.</p>\n\n<p>In order to <b>complete your signature</b>, we must confirm your e-mail.\n<br />\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n<br /><br />\nEmail confirmation page: <a href=\"{$petition.confirmUrl}\">{$petition.confirmUrl}</a></p>\n\n<p>If you did not sign this petition, please ignore this message.</p>\n',1,844,'petition_confirmation_needed',0,1,0,NULL),
  (65,'Sample CiviMail Newsletter Template','Sample CiviMail Newsletter','','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n<table width=612 cellpadding=0 cellspacing=0 bgcolor=\"#ffffff\">\n  <tr>\n    <td colspan=\"2\" bgcolor=\"#ffffff\" valign=\"middle\" >\n      <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" >\n        <tr>\n          <td>\n          <a href=\"https://civicrm.org\"><img src=\"https://civicrm.org/sites/civicrm.org/files/top-logo_2.png\" border=0 alt=\"Replace this logo with the URL to your own\"></a>\n          </td>\n          <td>&nbsp; &nbsp;</td>\n          <td>\n          <a href=\"https://civicrm.org\" style=\"text-decoration: none;\"><font size=5 face=\"Arial, Verdana, sans-serif\" color=\"#8bc539\">Your Newsletter Title</font></a>\n          </td>\n        </tr>\n      </table>\n    </td>\n  </tr>\n  <tr>\n    <td valign=\"top\" width=\"70%\">\n      <!-- left column -->\n      <table cellpadding=\"10\" cellspacing=\"0\" border=\"0\">\n      <tr>\n        <td style=\"font-family: Arial, Verdana, sans-serif; font-size: 12px;\" >\n        <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n        Greetings {contact.display_name},\n        <br /><br />\n        This is a sample template designed to help you get started creating and sending your own CiviMail messages. This template uses an HTML layout that is generally compatible with the wide variety of email clients that your recipients might be using (e.g. Gmail, Outlook, Yahoo, etc.).\n        <br /><br />You can select this \"Sample CiviMail Newsletter Template\" from the \"Use Template\" drop-down in Step 3 of creating a mailing, and customize it to your needs. Then check the \"Save as New Template\" box on the bottom the page to save your customized version for use in future mailings.\n        <br /><br />The logo you use must be uploaded to your server.  Copy and paste the URL path to the logo into the &lt;img src= tag in the HTML at the top.  Click \"Source\" or the Image button if you are using the text editor.\n        <br /><br />\n        Edit the color of the links and headers using the color button or by editing the HTML.\n        <br /><br />\n        Your newsletter message and donation appeal can go here.  Click the link button to <a href=\"#\">create links</a> - remember to use a fully qualified URL starting with http:// in all your links!\n        <br /><br />\n        To use CiviMail:\n        <ul>\n          <li><a href=\"http://book.civicrm.org/user/advanced-configuration/email-system-configuration/\">Configure your Email System</a>.</li>\n          <li>Make sure your web hosting provider allows outgoing bulk mail, and see if they have a restriction on quantity.  If they don\'t allow bulk mail, consider <a href=\"https://civicrm.org/providers/hosting\">finding a new host</a>.</li>\n        </ul>\n        Sincerely,\n        <br /><br />\n        Your Team\n        <br /><br />\n        </font>\n        </td>\n      </tr>\n      </table>\n    </td>\n\n    <td valign=\"top\" width=\"30%\" bgcolor=\"#ffffff\" style=\"border: 1px solid #056085;\">\n      <!-- right column -->\n      <table cellpadding=10 cellspacing=0 border=0>\n      <tr>\n        <td bgcolor=\"#056085\"><font face=\"Arial, Verdana, sans-serif\" size=\"4\" color=\"#ffffff\">News and Events</font></td>\n      </tr>\n      <tr>\n        <td style=\"color: #000; font-family: Arial, Verdana, sans-serif; font-size: 12px;\" >\n        <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n        <font color=\"#056085\"><strong>Featured Events</strong> </font><br />\n        Fundraising Dinner<br />\n        Training Meeting<br />\n        Board of Directors Annual Meeting<br />\n\n        <br /><br />\n        <font color=\"#056085\"><strong>Community Events</strong></font><br />\n        Bake Sale<br />\n        Charity Auction<br />\n        Art Exhibit<br />\n\n        <br /><br />\n        <font color=\"#056085\"><strong>Important Dates</strong></font><br />\n        Tuesday August 27<br />\n        Wednesday September 8<br />\n        Thursday September 29<br />\n        Saturday October 1<br />\n        Sunday October 20<br />\n        </font>\n        </td>\n      </tr>\n      </table>\n    </td>\n  </tr>\n\n  <tr>\n    <td colspan=\"2\">\n      <table cellpadding=\"10\" cellspacing=\"0\" border=\"0\">\n      <tr>\n        <td>\n        <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n        <font color=\"#7dc857\"><strong>Helpful Tips</strong></font>\n        <br /><br />\n        <font color=\"#3b5187\">Tokens</font><br />\n        Click \"Insert Tokens\" to dynamically insert names, addresses, and other contact data of your recipients.\n        <br /><br />\n        <font color=\"#3b5187\">Plain Text Version</font><br />\n        Some people refuse HTML emails altogether.  We recommend sending a plain-text version of your important communications to accommodate them.  Luckily, CiviCRM accommodates for this!  Just click \"Plain Text\" and copy and paste in some text.  Line breaks (carriage returns) and fully qualified URLs like http://www.example.com are all you get, no HTML here!\n        <br /><br />\n        <font color=\"#3b5187\">Play by the Rules</font><br />\n        The address of the sender is required by the Can Spam Act law.  This is an available token called domain.address.  An unsubscribe or opt-out link is also required.  There are several available tokens for this. <em>{action.optOutUrl}</em> creates a link for recipients to click if they want to opt out of receiving  emails from your organization. <em>{action.unsubscribeUrl}</em> creates a link to unsubscribe from the specific mailing list used to send this message. Click on \"Insert Tokens\" to find these and look for tokens named \"Domain\" or \"Unsubscribe\".  This sample template includes both required tokens at the bottom of the message. You can also configure a default Mailing Footer containing these tokens.\n        <br /><br />\n        <font color=\"#3b5187\">Composing Offline</font><br />\n        If you prefer to compose an HTML email offline in your own text editor, you can upload this HTML content into CiviMail or simply click \"Source\" and then copy and paste the HTML in.\n        <br /><br />\n        <font color=\"#3b5187\">Images</font><br />\n        Most email clients these days (Outlook, Gmail, etc) block image loading by default.  This is to protect their users from annoying or harmful email.  Not much we can do about this, so encourage recipients to add you to their contacts or \"whitelist\".  Also use images sparingly, do not rely on images to convey vital information, and always use HTML \"alt\" tags which describe the image content.\n        </td>\n      </tr>\n      </table>\n    </td>\n  </tr>\n  <tr>\n    <td colspan=\"2\" style=\"color: #000; font-family: Arial, Verdana, sans-serif; font-size: 10px;\">\n      <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n      <hr />\n      <a href=\"{action.unsubscribeUrl}\" title=\"click to unsubscribe\">Click here</a> to unsubscribe from this mailing list.<br /><br />\n      Our mailing address is:<br />\n      {domain.address}\n    </td>\n  </tr>\n  </table>\n\n</body>\n</html>\n',1,NULL,NULL,1,0,0,NULL),
- (66,'Sample Responsive Design Newsletter - Single Column Template','Sample Responsive Design Newsletter - Single Column','','<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\" />\n  <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n  <title></title>\n\n  <style type=\"text/css\">\n    {literal}\n    /* Client-specific Styles */\n    #outlook a {padding:0;} /* Force Outlook to provide a \"view in browser\" menu link. */\n    body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}\n\n    /* Prevent Webkit and Windows Mobile platforms from changing default font sizes, while not breaking desktop design. */\n    .ExternalClass {width:100%;} /* Force Hotmail to display emails at full width */\n    .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /* Force Hotmail to display normal line spacing. */\n    #backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;}\n    img {outline:none; text-decoration:none;border:none; -ms-interpolation-mode: bicubic;}\n    a img {border:none;}\n    .image_fix {display:block;}\n    p {margin: 0px 0px !important;}\n    table td {border-collapse: collapse;}\n    table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }\n    a {text-decoration: none;text-decoration:none;}\n\n    /*STYLES*/\n    table[class=full] { width: 100%; clear: both; }\n\n    /*IPAD STYLES*/\n    @media only screen and (max-width: 640px) {\n    a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color:#136388;pointer-events: none;cursor: default;}\n    .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color:#136388;pointer-events: auto;cursor: default;}\n    table[class=devicewidth] {width: 440px!important;text-align:center!important;}\n    table[class=devicewidthmob] {width: 416px!important;text-align:center!important;}\n    table[class=devicewidthinner] {width: 416px!important;text-align:center!important;}\n    img[class=banner] {width: 440px!important;auto!important;}\n    img[class=col2img] {width: 440px!important;height:auto!important;}\n    table[class=\"cols3inner\"] {width: 100px!important;}\n    table[class=\"col3img\"] {width: 131px!important;}\n    img[class=\"col3img\"] {width: 131px!important;height: auto!important;}\n    table[class=\"removeMobile\"]{width:10px!important;}\n    img[class=\"blog\"] {width: 440px!important;height: auto!important;}\n    }\n\n    /*IPHONE STYLES*/\n    @media only screen and (max-width: 480px) {\n    a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #136388;pointer-events: none;cursor: default;}\n    .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: none;color:#136388;pointer-events: auto;cursor: default;}\n\n    table[class=devicewidth] {width: 280px!important;text-align:center!important;}\n    table[class=devicewidthmob] {width: 260px!important;text-align:center!important;}\n    table[class=devicewidthinner] {width: 260px!important;text-align:center!important;}\n    img[class=banner] {width: 280px!important;height:100px!important;}\n    img[class=col2img] {width: 280px!important;height:auto!important;}\n    table[class=\"cols3inner\"] {width: 260px!important;}\n    img[class=\"col3img\"] {width: 280px!important;height: auto!important;}\n    table[class=\"col3img\"] {width: 280px!important;}\n    img[class=\"blog\"] {width: 280px!important;auto!important;}\n    td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n    td[class=\"padding-right15\"]{padding-right:15px !important;}\n    }\n\n    @media only screen and (max-device-width: 800px)\n    {td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n    td[class=\"padding-right15\"]{padding-right:15px !important;}}\n    @media only screen and (max-device-width: 769px) {\n    .devicewidthmob {font-size:16px;}\n    }\n\n    @media only screen and (max-width: 640px) {\n    .desktop-spacer {display:none !important;}\n }\n  {/literal}\n  </style>\n\n<body>\n  <!-- Start of preheader --><!-- Start of preheader -->\n  <table bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" width=\"100%\">\n  	<tbody>\n  		<tr>\n  			<td>\n  			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  				<tbody>\n  					<tr>\n  						<td width=\"100%\">\n  						<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  							<tbody><!-- Spacing -->\n  								<tr>\n  									<td height=\"20\" width=\"100%\">&nbsp;</td>\n  								</tr>\n  								<!-- Spacing -->\n  								<tr>\n  									<td>\n  									<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"310\">\n  										<tbody>\n  											<tr>\n  												<td align=\"left\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; line-height:120%; color: #f8f8f8;padding-left:15px; padding-bottom:5px;\" valign=\"middle\">Organization or Program Name Here</td>\n  											</tr>\n  										</tbody>\n  									</table>\n\n  									<table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"emhide\" width=\"310\">\n  										<tbody>\n  											<tr>\n                          <td align=\"right\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px;color: #f8f8f8;padding-right:15px; text-align:right;\" valign=\"middle\">Month and Year</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									</td>\n  								</tr>\n  								<!-- Spacing -->\n  								<tr>\n  									<td height=\"20\" width=\"100%\">&nbsp;</td>\n  								</tr>\n  								<!-- Spacing -->\n  							</tbody>\n  						</table>\n  						</td>\n  					</tr>\n  				</tbody>\n  			</table>\n  			</td>\n  		</tr>\n  	</tbody>\n  </table>\n  <!-- End of main-banner-->\n\n  <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n  	<tbody>\n  		<tr>\n  			<td>\n  			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  				<tbody>\n  					<tr>\n  						<td width=\"100%\">\n  						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  							<tbody><!-- Spacing -->\n  								<tr>\n  									<td height=\"20\" width=\"100%\">\n  									<table align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"93%\">\n  										<tbody>\n  											<tr>\n                          <td rowspan=\"2\" style=\"padding-top:10px; padding-bottom:10px;\" width=\"38%\"><img src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/civicrm-logo-transparent.png\" alt=\"Replace with your own logo\" width=\"220\" border=\"0\" /></td>\n  												<td align=\"right\" width=\"62%\">\n  												<h6 class=\"collapse\">&nbsp;</h6>\n  												</td>\n  											</tr>\n  											<tr>\n  												<td align=\"right\">\n  												<h5 style=\"font-family: Gill Sans, Gill Sans MT, Myriad Pro, DejaVu Sans Condensed, Helvetica, Arial, sans-serif; color:#136388;\">&nbsp;</h5>\n  												</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									</td>\n  								</tr>\n  								<tr>\n  									<td>\n  									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  										<tbody>\n  											<tr>\n  												<td width=\"100%\">\n  												<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  													<tbody><!-- /Spacing -->\n  														<tr>\n  															<td style=\"font-family: Helvetica, arial, sans-serif; font-size: 23px; color:#f8f8f8; text-align:left; line-height: 32px; padding:5px 15px; background-color:#136388;\">Headline Here</td>\n  														</tr>\n  														<!-- Spacing -->\n  														<tr>\n  															<td>\n  															<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n  																<tbody><!-- hero story -->\n  																	<tr>\n  																		<td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n  																		<div class=\"imgpop\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/650x396.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n  																		</td>\n  																	</tr>\n  																	<!-- /hero image --><!-- Spacing -->\n  																	<tr>\n  																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n  																	</tr>\n  																	<!-- /Spacing -->\n  																	<tr>\n  																		<td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px;  text-align:left; line-height: 26px; padding:0 15px; color:#89c66b;\"><a href=\"#\" style=\"color:#89c66b;\">Your Heading Here</a></td>\n  																	</tr>\n  																	<!-- Spacing -->\n  																	<tr>\n  																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n  																	</tr>\n  																	<!-- /Spacing --><!-- content -->\n  																	<tr>\n  																		<td style=\"padding:0 15px;\">\n  																		<p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\">{contact.email_greeting},																		</p>\n  																		<p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Replace with your text and images, and remember to link the facebook and twitter links in the footer to your pages. Have fun!</span></p>\n  																		</td>\n  																	</tr>\n  																	<tr>\n  																		<td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#136388;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n  																	</tr>\n  																	<!-- /button --><!-- Spacing -->\n  																	<tr>\n  																		<td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n  																	</tr>\n  																	<!-- Spacing --><!-- end of content -->\n  																</tbody>\n  															</table>\n  															</td>\n  														</tr>\n  													</tbody>\n  												</table>\n  												</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									</td>\n  								</tr>\n  							</tbody>\n  						</table>\n  						</td>\n  					</tr>\n  				</tbody>\n  			</table>\n  			</td>\n  		</tr>\n  	</tbody>\n  </table>\n  <!-- end of hero image and story --><!-- story 1 -->\n\n  <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n  	<tbody>\n  		<tr>\n  			<td>\n  			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  				<tbody>\n  					<tr>\n  						<td width=\"100%\">\n  						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  							<tbody><!-- Spacing -->\n  								<tr>\n  									<td>\n  									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  										<tbody>\n  											<tr>\n  												<td width=\"100%\">\n  												<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  													<tbody>\n  														<tr>\n  															<td>\n  															<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n  																<tbody><!-- image -->\n  																	<tr>\n  																		<td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n  																		<div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"250\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n  																		</td>\n  																	</tr>\n  																	<!-- /image --><!-- Spacing -->\n  																	<tr>\n  																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n  																	</tr>\n  																	<!-- /Spacing -->\n  																	<tr>\n  																		<td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px;  text-align:left; line-height: 26px; padding:0 15px;\"><a href=\"#\" style=\"color:#89c66b;\">Your Heading  Here</a></td>\n  																	</tr>\n  																	<!-- Spacing -->\n  																	<tr>\n  																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n  																	</tr>\n  																	<!-- /Spacing --><!-- content -->\n  																	<tr>\n  																		<td style=\"padding:0 15px;\">\n  																		<p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna </p>\n  																		</td>\n  																	</tr>\n  																	<tr>\n  																		<td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#136388;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n  																	</tr>\n  																	<!-- /button --><!-- Spacing -->\n  																	<tr>\n  																		<td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n  																	</tr>\n  																	<!-- Spacing --><!-- end of content -->\n  																</tbody>\n  															</table>\n  															</td>\n  														</tr>\n  													</tbody>\n  												</table>\n  												</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									</td>\n  								</tr>\n  							</tbody>\n  						</table>\n  						</td>\n  					</tr>\n  				</tbody>\n  			</table>\n  			</td>\n  		</tr>\n  	</tbody>\n  </table>\n  <!-- /story 2--><!-- banner1 -->\n\n  <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n  	<tbody>\n  		<tr>\n  			<td>\n  			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  				<tbody>\n  					<tr>\n  						<td width=\"100%\">\n  						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  							<tbody><!-- Spacing -->\n  								<tr>\n  									<td>\n  									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  										<tbody>\n  											<tr>\n  												<td width=\"100%\">\n  												<table align=\"center\" bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  													<tbody>\n  														<tr>\n  															<td>\n  															<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n  																<tbody><!-- image -->\n  																	<tr>\n  																		<td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n  																		<div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n  																		</td>\n  																	</tr>\n  																	<!-- /image --><!-- content --><!-- Spacing -->\n  																	<tr>\n  																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n  																	</tr>\n  																	<!-- /Spacing -->\n  																	<tr>\n  																		<td style=\"padding:15px;\">\n  																		<p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #f0f0f0; text-align:left; line-height: 26px; padding-bottom:10px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna </p>\n  																		</td>\n  																	</tr>\n  																	<!-- /button --><!-- white button -->\n  																	<!-- /button --><!-- Spacing --><!-- end of content -->\n  																</tbody>\n  															</table>\n  															</td>\n  														</tr>\n  													</tbody>\n  												</table>\n  												</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									</td>\n  								</tr>\n  							</tbody>\n  						</table>\n  						</td>\n  					</tr>\n  				</tbody>\n  			</table>\n  			</td>\n  		</tr>\n  	</tbody>\n  </table>\n  <!-- /banner 1--><!-- banner 2 -->\n\n  <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n  	<tbody>\n  		<tr>\n  			<td>\n  			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  				<tbody>\n  					<tr>\n  						<td width=\"100%\">\n  						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  							<tbody><!-- Spacing -->\n  								<tr>\n  									<td>\n  									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  										<tbody>\n  											<tr>\n  												<td width=\"100%\">\n  												<table align=\"center\" bgcolor=\"#136388\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  													<tbody>\n  														<tr>\n  															<td>\n  															<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n  																<tbody><!-- image -->\n  																	<tr>\n  																		<td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n  																		<div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n  																		</td>\n  																	</tr>\n  																	<!-- /image --><!-- content --><!-- Spacing -->\n  																	<tr>\n  																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n  																	</tr>\n  																	<!-- /Spacing -->\n  																	<tr>\n  																		<td style=\"padding: 15px;\">\n  																		<p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #f0f0f0; text-align:left; line-height: 26px; padding-bottom:10px;\">Remember to link the facebook and twitter links below to your pages!</p>\n  																		</td>\n  																	</tr>\n  																	<!-- /button --><!-- white button -->\n  																	<tr>\n  																		<td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-bottom:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#ffffff;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n  																	</tr>\n  																	<!-- /button --><!-- Spacing --><!-- end of content -->\n  																</tbody>\n  															</table>\n  															</td>\n  														</tr>\n  													</tbody>\n  												</table>\n  												</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									</td>\n  								</tr>\n  							</tbody>\n  						</table>\n  						</td>\n  					</tr>\n  				</tbody>\n  			</table>\n  			</td>\n  		</tr>\n  	</tbody>\n  </table>\n  <!-- /banner2 --><!-- footer -->\n\n  <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"footer\" width=\"100%\">\n  	<tbody>\n  		<tr>\n  			<td>\n  			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  				<tbody>\n  					<tr>\n  						<td width=\"100%\">\n  						<table align=\"center\" bgcolor=\"#89c66b\"  border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  							<tbody><!-- Spacing -->\n  								<tr>\n  									<td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n  								</tr>\n  								<!-- Spacing -->\n  								<tr>\n  									<td><!-- logo -->\n  									<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"250\">\n  										<tbody>\n  											<tr>\n  												<td width=\"20\">&nbsp;</td>\n  												<td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px;\"><a href=\"{action.unsubscribeUrl}\" style=\"color: #f0f0f0; \">Unsubscribe | </a><a href=\"{action.subscribeUrl}\"  style=\"color: #f0f0f0;\">Subscribe |</a> <a href=\"{action.optOutUrl}\" style=\"color: #f0f0f0;\">Opt out</a></span></td>\n  											</tr>\n  											<tr>\n  												<td width=\"20\">&nbsp;</td>\n  												<td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px; color: #f0f0f0;\">{domain.address}</span></td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									<!-- end of logo --><!-- start of social icons -->\n\n  									<table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" height=\"40\" vaalign=\"middle\" width=\"60\">\n  										<tbody>\n  											<tr>\n  												<td align=\"left\" height=\"22\" width=\"22\">\n  												<div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/facebook.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n  												</td>\n  												<td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"10\">&nbsp;</td>\n  												<td align=\"right\" height=\"22\" width=\"22\">\n  												<div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/twitter.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n  												</td>\n  												<td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"20\">&nbsp;</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									<!-- end of social icons --></td>\n  								</tr>\n  								<!-- Spacing -->\n  								<tr>\n  									<td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n  								</tr>\n  								<!-- Spacing -->\n  							</tbody>\n  						</table>\n  						</td>\n  					</tr>\n  				</tbody>\n  			</table>\n  			</td>\n  		</tr>\n  	</tbody>\n  </table>\n\n</body>\n</html>\n',1,NULL,NULL,1,0,0,NULL),
+ (66,'Sample Responsive Design Newsletter - Single Column Template','Sample Responsive Design Newsletter - Single Column','','<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\" />\n  <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n  <title></title>\n\n  <style type=\"text/css\">\n    {literal}\n    /* Client-specific Styles */\n    #outlook a {padding:0;} /* Force Outlook to provide a \"view in browser\" menu link. */\n    body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}\n\n    /* Prevent Webkit and Windows Mobile platforms from changing default font sizes, while not breaking desktop design. */\n    .ExternalClass {width:100%;} /* Force Hotmail to display emails at full width */\n    .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /* Force Hotmail to display normal line spacing. */\n    #backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;}\n    img {outline:none; text-decoration:none;border:none; -ms-interpolation-mode: bicubic;}\n    a img {border:none;}\n    .image_fix {display:block;}\n    p {margin: 0px 0px !important;}\n    table td {border-collapse: collapse;}\n    table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }\n    a {text-decoration: none;text-decoration:none;}\n\n    /*STYLES*/\n    table[class=full] { width: 100%; clear: both; }\n\n    /*IPAD STYLES*/\n    @media only screen and (max-width: 640px) {\n    a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color:#136388;pointer-events: none;cursor: default;}\n    .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color:#136388;pointer-events: auto;cursor: default;}\n    table[class=devicewidth] {width: 440px!important;text-align:center!important;}\n    table[class=devicewidthmob] {width: 416px!important;text-align:center!important;}\n    table[class=devicewidthinner] {width: 416px!important;text-align:center!important;}\n    img[class=banner] {width: 440px!important;auto!important;}\n    img[class=col2img] {width: 440px!important;height:auto!important;}\n    table[class=\"cols3inner\"] {width: 100px!important;}\n    table[class=\"col3img\"] {width: 131px!important;}\n    img[class=\"col3img\"] {width: 131px!important;height: auto!important;}\n    table[class=\"removeMobile\"]{width:10px!important;}\n    img[class=\"blog\"] {width: 440px!important;height: auto!important;}\n    }\n\n    /*IPHONE STYLES*/\n    @media only screen and (max-width: 480px) {\n    a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #136388;pointer-events: none;cursor: default;}\n    .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: none;color:#136388;pointer-events: auto;cursor: default;}\n\n    table[class=devicewidth] {width: 280px!important;text-align:center!important;}\n    table[class=devicewidthmob] {width: 260px!important;text-align:center!important;}\n    table[class=devicewidthinner] {width: 260px!important;text-align:center!important;}\n    img[class=banner] {width: 280px!important;height:100px!important;}\n    img[class=col2img] {width: 280px!important;height:auto!important;}\n    table[class=\"cols3inner\"] {width: 260px!important;}\n    img[class=\"col3img\"] {width: 280px!important;height: auto!important;}\n    table[class=\"col3img\"] {width: 280px!important;}\n    img[class=\"blog\"] {width: 280px!important;auto!important;}\n    td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n    td[class=\"padding-right15\"]{padding-right:15px !important;}\n    }\n\n    @media only screen and (max-device-width: 800px)\n    {td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n    td[class=\"padding-right15\"]{padding-right:15px !important;}}\n    @media only screen and (max-device-width: 769px) {\n    .devicewidthmob {font-size:16px;}\n    }\n\n    @media only screen and (max-width: 640px) {\n    .desktop-spacer {display:none !important;}\n }\n  {/literal}\n  </style>\n\n<body>\n  <!-- Start of preheader --><!-- Start of preheader -->\n  <table bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" width=\"100%\">\n  	<tbody>\n  		<tr>\n  			<td>\n  			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  				<tbody>\n  					<tr>\n  						<td width=\"100%\">\n  						<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  							<tbody><!-- Spacing -->\n  								<tr>\n  									<td height=\"20\" width=\"100%\">&nbsp;</td>\n  								</tr>\n  								<!-- Spacing -->\n  								<tr>\n  									<td>\n  									<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"310\">\n  										<tbody>\n  											<tr>\n  												<td align=\"left\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; line-height:120%; color: #f8f8f8;padding-left:15px; padding-bottom:5px;\" valign=\"middle\">Organization or Program Name Here</td>\n  											</tr>\n  										</tbody>\n  									</table>\n\n  									<table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"emhide\" width=\"310\">\n  										<tbody>\n  											<tr>\n                          <td align=\"right\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px;color: #f8f8f8;padding-right:15px; text-align:right;\" valign=\"middle\">Month and Year</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									</td>\n  								</tr>\n  								<!-- Spacing -->\n  								<tr>\n  									<td height=\"20\" width=\"100%\">&nbsp;</td>\n  								</tr>\n  								<!-- Spacing -->\n  							</tbody>\n  						</table>\n  						</td>\n  					</tr>\n  				</tbody>\n  			</table>\n  			</td>\n  		</tr>\n  	</tbody>\n  </table>\n  <!-- End of main-banner-->\n\n  <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n  	<tbody>\n  		<tr>\n  			<td>\n  			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  				<tbody>\n  					<tr>\n  						<td width=\"100%\">\n  						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  							<tbody><!-- Spacing -->\n  								<tr>\n  									<td height=\"20\" width=\"100%\">\n  									<table align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"93%\">\n  										<tbody>\n  											<tr>\n                          <td rowspan=\"2\" style=\"padding-top:10px; padding-bottom:10px;\" width=\"38%\"><img src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/civicrm-logo-transparent.png\" alt=\"Replace with your own logo\" width=\"220\" border=\"0\" /></td>\n  												<td align=\"right\" width=\"62%\">\n  												<h6 class=\"collapse\">&nbsp;</h6>\n  												</td>\n  											</tr>\n  											<tr>\n  												<td align=\"right\">\n  												<h5 style=\"font-family: Gill Sans, Gill Sans MT, Myriad Pro, DejaVu Sans Condensed, Helvetica, Arial, sans-serif; color:#136388;\">&nbsp;</h5>\n  												</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									</td>\n  								</tr>\n  								<tr>\n  									<td>\n  									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  										<tbody>\n  											<tr>\n  												<td width=\"100%\">\n  												<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  													<tbody><!-- /Spacing -->\n  														<tr>\n  															<td style=\"font-family: Helvetica, arial, sans-serif; font-size: 23px; color:#f8f8f8; text-align:left; line-height: 32px; padding:5px 15px; background-color:#136388;\">Headline Here</td>\n  														</tr>\n  														<!-- Spacing -->\n  														<tr>\n  															<td>\n  															<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n  																<tbody><!-- hero story -->\n  																	<tr>\n  																		<td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n  																		<div class=\"imgpop\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/650x396.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n  																		</td>\n  																	</tr>\n  																	<!-- /hero image --><!-- Spacing -->\n  																	<tr>\n  																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n  																	</tr>\n  																	<!-- /Spacing -->\n  																	<tr>\n  																		<td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px;  text-align:left; line-height: 26px; padding:0 15px; color:#89c66b;\"><a href=\"#\" style=\"color:#89c66b;\">Your Heading Here</a></td>\n  																	</tr>\n  																	<!-- Spacing -->\n  																	<tr>\n  																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n  																	</tr>\n  																	<!-- /Spacing --><!-- content -->\n  																	<tr>\n  																		<td style=\"padding:0 15px;\">\n  																		<p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\">{contact.email_greeting_display},																		</p>\n  																		<p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Replace with your text and images, and remember to link the facebook and twitter links in the footer to your pages. Have fun!</span></p>\n  																		</td>\n  																	</tr>\n  																	<tr>\n  																		<td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#136388;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n  																	</tr>\n  																	<!-- /button --><!-- Spacing -->\n  																	<tr>\n  																		<td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n  																	</tr>\n  																	<!-- Spacing --><!-- end of content -->\n  																</tbody>\n  															</table>\n  															</td>\n  														</tr>\n  													</tbody>\n  												</table>\n  												</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									</td>\n  								</tr>\n  							</tbody>\n  						</table>\n  						</td>\n  					</tr>\n  				</tbody>\n  			</table>\n  			</td>\n  		</tr>\n  	</tbody>\n  </table>\n  <!-- end of hero image and story --><!-- story 1 -->\n\n  <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n  	<tbody>\n  		<tr>\n  			<td>\n  			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  				<tbody>\n  					<tr>\n  						<td width=\"100%\">\n  						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  							<tbody><!-- Spacing -->\n  								<tr>\n  									<td>\n  									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  										<tbody>\n  											<tr>\n  												<td width=\"100%\">\n  												<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  													<tbody>\n  														<tr>\n  															<td>\n  															<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n  																<tbody><!-- image -->\n  																	<tr>\n  																		<td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n  																		<div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"250\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n  																		</td>\n  																	</tr>\n  																	<!-- /image --><!-- Spacing -->\n  																	<tr>\n  																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n  																	</tr>\n  																	<!-- /Spacing -->\n  																	<tr>\n  																		<td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px;  text-align:left; line-height: 26px; padding:0 15px;\"><a href=\"#\" style=\"color:#89c66b;\">Your Heading  Here</a></td>\n  																	</tr>\n  																	<!-- Spacing -->\n  																	<tr>\n  																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n  																	</tr>\n  																	<!-- /Spacing --><!-- content -->\n  																	<tr>\n  																		<td style=\"padding:0 15px;\">\n  																		<p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna </p>\n  																		</td>\n  																	</tr>\n  																	<tr>\n  																		<td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#136388;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n  																	</tr>\n  																	<!-- /button --><!-- Spacing -->\n  																	<tr>\n  																		<td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n  																	</tr>\n  																	<!-- Spacing --><!-- end of content -->\n  																</tbody>\n  															</table>\n  															</td>\n  														</tr>\n  													</tbody>\n  												</table>\n  												</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									</td>\n  								</tr>\n  							</tbody>\n  						</table>\n  						</td>\n  					</tr>\n  				</tbody>\n  			</table>\n  			</td>\n  		</tr>\n  	</tbody>\n  </table>\n  <!-- /story 2--><!-- banner1 -->\n\n  <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n  	<tbody>\n  		<tr>\n  			<td>\n  			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  				<tbody>\n  					<tr>\n  						<td width=\"100%\">\n  						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  							<tbody><!-- Spacing -->\n  								<tr>\n  									<td>\n  									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  										<tbody>\n  											<tr>\n  												<td width=\"100%\">\n  												<table align=\"center\" bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  													<tbody>\n  														<tr>\n  															<td>\n  															<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n  																<tbody><!-- image -->\n  																	<tr>\n  																		<td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n  																		<div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n  																		</td>\n  																	</tr>\n  																	<!-- /image --><!-- content --><!-- Spacing -->\n  																	<tr>\n  																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n  																	</tr>\n  																	<!-- /Spacing -->\n  																	<tr>\n  																		<td style=\"padding:15px;\">\n  																		<p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #f0f0f0; text-align:left; line-height: 26px; padding-bottom:10px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna </p>\n  																		</td>\n  																	</tr>\n  																	<!-- /button --><!-- white button -->\n  																	<!-- /button --><!-- Spacing --><!-- end of content -->\n  																</tbody>\n  															</table>\n  															</td>\n  														</tr>\n  													</tbody>\n  												</table>\n  												</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									</td>\n  								</tr>\n  							</tbody>\n  						</table>\n  						</td>\n  					</tr>\n  				</tbody>\n  			</table>\n  			</td>\n  		</tr>\n  	</tbody>\n  </table>\n  <!-- /banner 1--><!-- banner 2 -->\n\n  <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n  	<tbody>\n  		<tr>\n  			<td>\n  			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  				<tbody>\n  					<tr>\n  						<td width=\"100%\">\n  						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  							<tbody><!-- Spacing -->\n  								<tr>\n  									<td>\n  									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  										<tbody>\n  											<tr>\n  												<td width=\"100%\">\n  												<table align=\"center\" bgcolor=\"#136388\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  													<tbody>\n  														<tr>\n  															<td>\n  															<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n  																<tbody><!-- image -->\n  																	<tr>\n  																		<td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n  																		<div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n  																		</td>\n  																	</tr>\n  																	<!-- /image --><!-- content --><!-- Spacing -->\n  																	<tr>\n  																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n  																	</tr>\n  																	<!-- /Spacing -->\n  																	<tr>\n  																		<td style=\"padding: 15px;\">\n  																		<p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #f0f0f0; text-align:left; line-height: 26px; padding-bottom:10px;\">Remember to link the facebook and twitter links below to your pages!</p>\n  																		</td>\n  																	</tr>\n  																	<!-- /button --><!-- white button -->\n  																	<tr>\n  																		<td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-bottom:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#ffffff;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n  																	</tr>\n  																	<!-- /button --><!-- Spacing --><!-- end of content -->\n  																</tbody>\n  															</table>\n  															</td>\n  														</tr>\n  													</tbody>\n  												</table>\n  												</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									</td>\n  								</tr>\n  							</tbody>\n  						</table>\n  						</td>\n  					</tr>\n  				</tbody>\n  			</table>\n  			</td>\n  		</tr>\n  	</tbody>\n  </table>\n  <!-- /banner2 --><!-- footer -->\n\n  <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"footer\" width=\"100%\">\n  	<tbody>\n  		<tr>\n  			<td>\n  			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  				<tbody>\n  					<tr>\n  						<td width=\"100%\">\n  						<table align=\"center\" bgcolor=\"#89c66b\"  border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n  							<tbody><!-- Spacing -->\n  								<tr>\n  									<td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n  								</tr>\n  								<!-- Spacing -->\n  								<tr>\n  									<td><!-- logo -->\n  									<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"250\">\n  										<tbody>\n  											<tr>\n  												<td width=\"20\">&nbsp;</td>\n  												<td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px;\"><a href=\"{action.unsubscribeUrl}\" style=\"color: #f0f0f0; \">Unsubscribe | </a><a href=\"{action.subscribeUrl}\"  style=\"color: #f0f0f0;\">Subscribe |</a> <a href=\"{action.optOutUrl}\" style=\"color: #f0f0f0;\">Opt out</a></span></td>\n  											</tr>\n  											<tr>\n  												<td width=\"20\">&nbsp;</td>\n  												<td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px; color: #f0f0f0;\">{domain.address}</span></td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									<!-- end of logo --><!-- start of social icons -->\n\n  									<table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" height=\"40\" vaalign=\"middle\" width=\"60\">\n  										<tbody>\n  											<tr>\n  												<td align=\"left\" height=\"22\" width=\"22\">\n  												<div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/facebook.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n  												</td>\n  												<td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"10\">&nbsp;</td>\n  												<td align=\"right\" height=\"22\" width=\"22\">\n  												<div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/twitter.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n  												</td>\n  												<td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"20\">&nbsp;</td>\n  											</tr>\n  										</tbody>\n  									</table>\n  									<!-- end of social icons --></td>\n  								</tr>\n  								<!-- Spacing -->\n  								<tr>\n  									<td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n  								</tr>\n  								<!-- Spacing -->\n  							</tbody>\n  						</table>\n  						</td>\n  					</tr>\n  				</tbody>\n  			</table>\n  			</td>\n  		</tr>\n  	</tbody>\n  </table>\n\n</body>\n</html>\n',1,NULL,NULL,1,0,0,NULL),
  (67,'Sample Responsive Design Newsletter - Two Column Template','Sample Responsive Design Newsletter - Two Column','','<html xmlns=\"http://www.w3.org/1999/xhtml\">\n  <meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\" />\n  <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n  <title></title>\n  <style type=\"text/css\">\n     {literal}\n     img {height: auto !important;}\n     /* Client-specific Styles */\n     #outlook a {padding:0;} /* Force Outlook to provide a \"view in browser\" menu link. */\n     body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}\n\n     /* Prevent Webkit and Windows Mobile platforms from changing default font sizes, while not breaking desktop design. */\n     .ExternalClass {width:100%;} /* Force Hotmail to display emails at full width */\n     .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /* Force Hotmail to display normal line spacing. */\n     #backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;}\n     img {outline:none; text-decoration:none;border:none; -ms-interpolation-mode: bicubic;}\n     a img {border:none;}\n     .image_fix {display:block;}\n     p {margin: 0px 0px !important;}\n     table td {border-collapse: collapse;}\n     table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }\n     a {/*color: #33b9ff;*/text-decoration: none;text-decoration:none!important;}\n\n\n     /*STYLES*/\n     table[class=full] { width: 100%; clear: both; }\n\n     /*IPAD STYLES*/\n     @media only screen and (max-width: 640px) {\n     a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #0a8cce;pointer-events: none;cursor: default;}\n     .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color: #0a8cce !important;pointer-events: auto;cursor: default;}\n     table[class=devicewidth] {width: 440px!important;text-align:center!important;}\n     table[class=devicewidthmob] {width: 414px!important;text-align:center!important;}\n     table[class=devicewidthinner] {width: 414px!important;text-align:center!important;}\n     img[class=banner] {width: 440px!important;auto!important;}\n     img[class=col2img] {width: 440px!important;height:auto!important;}\n     table[class=\"cols3inner\"] {width: 100px!important;}\n     table[class=\"col3img\"] {width: 131px!important;}\n     img[class=\"col3img\"] {width: 131px!important;height: auto!important;}\n     table[class=\"removeMobile\"]{width:10px!important;}\n     img[class=\"blog\"] {width: 440px!important;height: auto!important;}\n     }\n\n     /*IPHONE STYLES*/\n     @media only screen and (max-width: 480px) {\n     a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #0a8cce;pointer-events: none;cursor: default;}\n     .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color: #0a8cce !important; pointer-events: auto;cursor: default;}\n     table[class=devicewidth] {width: 280px!important;text-align:center!important;}\n     table[class=devicewidthmob] {width: 260px!important;text-align:center!important;}\n     table[class=devicewidthinner] {width: 260px!important;text-align:center!important;}\n     img[class=banner] {width: 280px!important;height:100px!important;}\n     img[class=col2img] {width: 280px!important;height:auto!important;}\n     table[class=\"cols3inner\"] {width: 260px!important;}\n     img[class=\"col3img\"] {width: 280px!important;height: auto!important;}\n     table[class=\"col3img\"] {width: 280px!important;}\n     img[class=\"blog\"] {width: 280px!important;auto!important;}\n     td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n     td[class=\"padding-right15\"]{padding-right:15px !important;}\n     }\n\n     @media only screen and (max-device-width: 800px)\n     {td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n     td[class=\"padding-right15\"]{padding-right:15px !important;}}\n     @media only screen and (max-device-width: 769px) {.devicewidthmob {font-size:14px;}}\n\n     @media only screen and (max-width: 640px) {.desktop-spacer {display:none !important;}\n	   }\n     {/literal}\n  </style>\n  <body>\n    <!-- Start of preheader --><!-- Start of preheader -->\n    <table bgcolor=\"#0B4151\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" width=\"100%\">\n    	<tbody>\n    		<tr>\n    			<td>\n    			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    				<tbody>\n    					<tr>\n    						<td width=\"100%\">\n    						<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    							<tbody><!-- Spacing -->\n    								<tr>\n    									<td height=\"20\" width=\"100%\">&nbsp;</td>\n    								</tr>\n    								<!-- Spacing -->\n    								<tr>\n    									<td>\n    									<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"360\">\n    										<tbody>\n    											<tr>\n    												<td align=\"left\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height:120%; color: #f8f8f8;padding-left:15px;\" valign=\"middle\">Organization or Program Name Here</td>\n    											</tr>\n    										</tbody>\n    									</table>\n\n    									<table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"emhide\" width=\"320\">\n    										<tbody>\n    											<tr>\n    												<td align=\"right\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px;color: #f8f8f8;padding-right:15px;\" valign=\"middle\">Month Year</td>\n    											</tr>\n    										</tbody>\n    									</table>\n    									</td>\n    								</tr>\n    								<!-- Spacing -->\n    								<tr>\n    									<td height=\"20\" width=\"100%\">&nbsp;</td>\n    								</tr>\n    								<!-- Spacing -->\n    							</tbody>\n    						</table>\n    						</td>\n    					</tr>\n    				</tbody>\n    			</table>\n    			</td>\n    		</tr>\n    	</tbody>\n    </table>\n    <!-- End of preheader --><!-- start of logo -->\n\n    <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n    	<tbody>\n    		<tr>\n    			<td>\n    			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"700\">\n    				<tbody>\n    					<tr>\n    						<td width=\"100%\">\n    						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    							<tbody><!-- Spacing -->\n    								<tr>\n    									<td height=\"20\" width=\"100%\">\n    									<table align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"93%\">\n    										<tbody>\n    											<tr>\n                             <td rowspan=\"2\" width=\"330\"><a href=\"#\"> <div class=\"imgpop\"><img src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/civicrm-logo-transparent.png\" alt=\"Replace with your own logo\" width=\"220\" border=\"0\" style=\"display:block;\"/></div></a></td>\n                            <td align=\"right\" >\n    												<h6 class=\"collapse\">&nbsp;</h6>\n    												</td>\n    											</tr>\n    											<tr>\n    												<td align=\"right\">\n\n    												</td>\n    											</tr>\n    										</tbody>\n    									</table>\n    									</td>\n    								</tr>\n\n    							</tbody>\n    						</table>\n    						</td>\n    					</tr>\n    				</tbody>\n    			</table>\n    			</td>\n    		</tr>\n    	</tbody>\n    </table>\n    <!-- end of logo --> <!-- hero story 1 -->\n\n    <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"101%\">\n    	<tbody>\n    		<tr>\n    			<td>\n    			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    				<tbody>\n    					<tr>\n    						<td width=\"100%\">\n    						<table align=\"center\" bgcolor=\"#f8f8f8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    							<tbody>\n    								<tr>\n    									<td>\n    									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    										<tbody>\n    											<tr>\n    												<td width=\"100%\">\n    												<table align=\"center\" bgcolor=\"#f8f8f8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    													<tbody><!-- /Spacing -->\n    														<tr>\n    															<td style=\"font-family: Helvetica, arial, sans-serif; font-size: 24px; color:#f8f8f8; text-align:left; line-height: 26px; padding:5px 15px; background-color: #80C457\">Hero Story Heading</td>\n    														</tr>\n    														<!-- Spacing -->\n    														<tr>\n    															<td>\n    															<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"700\">\n    																<tbody><!-- image -->\n    																	<tr>\n    																		<td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n    																		<div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"396\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/700x396.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"700\" /></a></div>\n    																		</td>\n    																	</tr>\n    																	<!-- /image --><!-- Spacing -->\n    																	<tr>\n    																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n    																	</tr>\n    																	<!-- /Spacing --><!-- hero story -->\n    																	<tr>\n    																		<td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px;  text-align:left; line-height: 26px; padding:0 15px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Subheading Here</a></td>\n    																	</tr>\n    																	<!-- Spacing -->\n    																	<tr>\n    																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n    																	</tr><!-- /Spacing -->\n    																	<tr>\n    																		<td style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 26px; padding:0 15px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Replace with your text and images, and remember to link the facebook and twitter links in the footer to your pages. Have fun!</span></td>\n    																	</tr>\n\n    <!-- Spacing -->\n    																	<tr>\n    																		<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n    																	</tr><!-- /Spacing -->\n\n              <!-- /Spacing --><!-- /hero story -->\n\n    																	<!-- Spacing -->                                                            <!-- Spacing -->\n\n\n\n    																	<!-- Spacing --><!-- end of content -->\n    																</tbody>\n    															</table>\n    															</td>\n    														</tr>\n    													</tbody>\n    												</table>\n    												</td>\n    											</tr>\n    										</tbody>\n    									</table>\n    									</td>\n    								</tr>\n    								<!-- Section Heading -->\n    								<tr>\n    									<td style=\"font-family: Helvetica, arial, sans-serif; font-size: 24px; color:#f8f8f8; text-align:left; line-height: 26px; padding:5px 15px; background-color: #80C457\">Section Heading Here</td>\n    								</tr>\n    								<!-- /Section Heading -->\n    							</tbody>\n    						</table>\n    						</td>\n    					</tr>\n    				</tbody>\n    			</table>\n    			</td>\n    		</tr>\n    	</tbody>\n    </table>\n    <!-- /hero story 1 --><!-- story one -->\n\n    <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n    	<tbody>\n    		<tr>\n    			<td>\n    			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    				<tbody>\n    					<tr>\n    						<td width=\"100%\">\n    						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    							<tbody><!-- Spacing -->\n    								<tr>\n    									<td class=\"desktop-spacer\" height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n    								</tr>\n    								<!-- Spacing -->\n    								<tr>\n    									<td>\n    									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n    										<tbody>\n    											<tr>\n    												<td><!-- Start of left column -->\n    												<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n    													<tbody><!-- image -->\n    														<tr>\n    															<td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n    														</tr>\n    														<!-- /image -->\n    													</tbody>\n    												</table>\n    												<!-- end of left column --><!-- spacing for mobile devices-->\n\n    												<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n    													<tbody>\n    														<tr>\n    															<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n    														</tr>\n    													</tbody>\n    												</table>\n    												<!-- end of for mobile devices--><!-- start of right column -->\n\n    												<table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n    													<tbody>\n    														<tr>\n    															<td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"CiviCRM helps keep the “City Beautiful” Movement”going strong\"></a></td>\n    														</tr>\n    														<!-- end of title --><!-- Spacing -->\n    														<tr>\n    															<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n    														</tr>\n    														<!-- /Spacing --><!-- content -->\n    														<tr>\n    															<td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n                                                                tempor incididunt ut labore et dolore magna </span></td>\n    														</tr>\n    														<tr>\n    															<td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"CiviCRM helps keep the “City Beautiful” Movement”going strong\">Read More</a></td>\n    														</tr>\n    														<!-- /button --><!-- end of content -->\n    													</tbody>\n    												</table>\n    												<!-- end of right column --></td>\n    											</tr>\n    										</tbody>\n    									</table>\n    									</td>\n    								</tr>\n    								<!-- Spacing -->\n    								<tr>\n    									<td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n    								</tr>\n    							</tbody>\n    						</table>\n    						</td>\n    					</tr>\n    				</tbody>\n    			</table>\n    			</td>\n    		</tr>\n    	</tbody>\n    </table>\n    <!-- /story one -->\n    <!-- story two -->\n\n    <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n    	<tbody>\n    		<tr>\n    			<td>\n    			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    				<tbody>\n    					<tr>\n    						<td width=\"100%\">\n    						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    							<tbody><!-- Spacing -->\n    								<tr>\n    									<td bgcolor=\"#076187\" height=\"0\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n    								</tr>\n    								<!-- Spacing --><!-- Spacing -->\n    								<tr>\n    									<td class=\"desktop-spacer\" height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n    								</tr>\n    								<!-- Spacing -->\n    								<tr>\n    									<td>\n    									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n    										<tbody>\n    											<tr>\n    												<td><!-- Start of left column -->\n    												<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n    													<tbody><!-- image -->\n    														<tr>\n    															<td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n    														</tr>\n    														<!-- /image -->\n    													</tbody>\n    												</table>\n    												<!-- end of left column --><!-- spacing for mobile devices-->\n\n    												<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n    													<tbody>\n    														<tr>\n    															<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n    														</tr>\n    													</tbody>\n    												</table>\n    												<!-- end of for mobile devices--><!-- start of right column -->\n\n    												<table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n    													<tbody>\n    														<tr>\n    															<td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"How CiviCRM will take Tribodar Eco Learning Center to another level\"></a></td>\n    														</tr>\n    														<!-- end of title --><!-- Spacing -->\n    														<tr>\n    															<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n    														</tr>\n    														<!-- /Spacing --><!-- content -->\n    														<tr>\n    															<td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n                                                                tempor incididunt ut labore et dolore magna </span></td>\n    														</tr>\n    														<tr>\n    															<td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"How CiviCRM will take Tribodar Eco Learning Center to another level\">Read More</a></td>\n    														</tr>\n    														<!-- /button --><!-- end of content -->\n    													</tbody>\n    												</table>\n    												<!-- end of right column --></td>\n    											</tr>\n    										</tbody>\n    									</table>\n    									</td>\n    								</tr>\n    								<!-- Spacing -->\n    								<tr>\n    									<td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n    								</tr>\n    							</tbody>\n    						</table>\n    						</td>\n    					</tr>\n    				</tbody>\n    			</table>\n    			</td>\n    		</tr>\n    	</tbody>\n    </table>\n    <!-- /story two --><!-- story three -->\n\n    <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n    	<tbody>\n    		<tr>\n    			<td>\n    			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    				<tbody>\n    					<tr>\n    						<td width=\"100%\">\n    						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    							<tbody><!-- Spacing -->\n    								<tr>\n    									<td bgcolor=\"#076187\" height=\"0\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n    								</tr>\n    								<!-- Spacing --><!-- Spacing -->\n    								<tr>\n    									<td height=\"20\" class=\"desktop-spacer\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n    								</tr>\n    								<!-- Spacing -->\n    								<tr>\n    									<td>\n    									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n    										<tbody>\n    											<tr>\n    												<td><!-- Start of left column -->\n    												<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n    													<tbody><!-- image -->\n    														<tr>\n    															<td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n    														</tr>\n    														<!-- /image -->\n    													</tbody>\n    												</table>\n    												<!-- end of left column --><!-- spacing for mobile devices-->\n\n    												<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n    													<tbody>\n    														<tr>\n    															<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n    														</tr>\n    													</tbody>\n    												</table>\n    												<!-- end of for mobile devices--><!-- start of right column -->\n\n    												<table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n    													<tbody>\n    														<tr>\n    															<td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px;  text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"CiviCRM provides a soup-to-nuts open-source solution for Friends of the San Pedro River\"></a></td>\n    														</tr>\n    														<!-- end of title --><!-- Spacing -->\n    														<tr>\n    															<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n    														</tr>\n    														<!-- /Spacing --><!-- content -->\n    														<tr>\n    															<td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n                                                                tempor incididunt ut labore et dolore magna </span></td>\n    														</tr>\n    														<tr>\n    															<td style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"CiviCRM provides a soup-to-nuts open-source solution for Friends of the San Pedro River\">Read More</a></td>\n    														</tr>\n    														<!-- /button --><!-- end of content -->\n    													</tbody>\n    												</table>\n    												<!-- end of right column --></td>\n    											</tr>\n    										</tbody>\n    									</table>\n    									</td>\n    								</tr>\n    								<!-- Spacing -->\n    								<tr>\n    									<td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n    								</tr>\n    								<!-- Spacing -->\n    							</tbody>\n    						</table>\n    						</td>\n    					</tr>\n    				</tbody>\n    			</table>\n    			</td>\n    		</tr>\n    	</tbody>\n    </table>\n    <!-- /story three -->\n\n\n\n\n\n    <!-- story four -->\n    <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n    	<tbody>\n    		<tr>\n    			<td>\n    			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    				<tbody>\n    					<tr>\n    						<td width=\"100%\">\n    						<table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    							<tbody>\n                                <!-- Spacing -->\n    								<tr>\n    									<td bgcolor=\"#076187\" height=\"0\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n    								</tr>\n    								<!-- Spacing -->\n                                <!-- Spacing -->\n    								<tr>\n    									<td class=\"desktop-spacer\" height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n    								</tr>\n    								<!-- Spacing -->\n    								<tr>\n    									<td>\n    									<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n    										<tbody>\n    											<tr>\n    												<td><!-- Start of left column -->\n    												<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n    													<tbody><!-- image -->\n    														<tr>\n    															<td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n    														</tr>\n    														<!-- /image -->\n    													</tbody>\n    												</table>\n    												<!-- end of left column --><!-- spacing for mobile devices-->\n\n    												<table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n    													<tbody>\n    														<tr>\n    															<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n    														</tr>\n    													</tbody>\n    												</table>\n    												<!-- end of for mobile devices--><!-- start of right column -->\n\n    												<table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n    													<tbody>\n    														<tr>\n    															<td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px;text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"Google Summer of Code\"></a></td>\n    														</tr>\n    														<!-- end of title --><!-- Spacing -->\n    														<tr>\n    															<td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n    														</tr>\n    														<!-- /Spacing --><!-- content -->\n    														<tr>\n    															<td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n                                                                tempor incididunt ut labore et dolore magna </span></td>\n    														</tr>\n    														<tr>\n    															<td style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"Google Summer of Code\">Read More</a></td>\n    														</tr>\n    														<!-- /button --><!-- end of content -->\n    													</tbody>\n    												</table>\n    												<!-- end of right column --></td>\n    											</tr>\n    										</tbody>\n    									</table>\n    									</td>\n    								</tr>\n    								<!-- Spacing -->\n    								<tr>\n                       <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\">&nbsp;</td>\n                    </tr>\n                    <!-- /Spacing -->\n                    <tr>\n                      <td style=\"padding: 15px;\">\n                      <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color:#076187; text-align:left; line-height: 26px; padding-bottom:10px;\">Remember to link the facebook and twitter links below to your pages!</p>\n                      </td>\n    								</tr>\n    								<!-- Spacing -->\n    							</tbody>\n    						</table>\n    						</td>\n    					</tr>\n    				</tbody>\n    			</table>\n    			</td>\n    		</tr>\n    	</tbody>\n    </table>\n    <!-- /story four -->\n\n    <!-- footer -->\n\n    <!-- End of footer --><!-- Start of postfooter -->\n    <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"footer\" width=\"100%\">\n    	<tbody>\n    		<tr>\n    			<td>\n    			<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n            <tbody>\n              <tr>\n                <td width=\"100%\">\n                  <table align=\"center\" bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n    				        <tbody><!-- Spacing -->\n    					        <tr>\n                        <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n    					        </tr>\n    					        <!-- Spacing -->\n    					        <tr>\n                        <td><!-- logo -->\n                        <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"250\">\n            							<tbody>\n            								<tr>\n                               <td width=\"20\">&nbsp;</td>\n                              <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px;\"><a href=\"{action.unsubscribeUrl}\" style=\"color: #f0f0f0;\">Unsubscribe | </a><a href=\"{action.subscribeUrl}\" style=\"color: #f0f0f0;\">Subscribe |</a> <a href=\"{action.optOutUrl}\" style=\"color: #f0f0f0;\">Opt out</a></span></td>\n                            </tr>\n      											<tr>\n      												<td width=\"20\">&nbsp;</td>\n      												<td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px; color: #f0f0f0;\">{domain.address}</span></td>\n      											</tr>\n                          </tbody>\n                        </table>\n                        <!-- end of logo --><!-- start of social icons -->\n      									<table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" height=\"40\" vaalign=\"middle\" width=\"60\">\n      										<tbody>\n      											<tr>\n      												<td align=\"left\" height=\"22\" width=\"22\">\n                                <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/facebook.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>      											  </td>\n      												<td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"10\">&nbsp;</td>\n      												<td align=\"right\" height=\"22\" width=\"22\">\n      												<div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/twitter.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n      												</td>\n      												<td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"20\">&nbsp;</td>\n      											</tr>\n      										</tbody>\n      									</table>\n    									<!-- end of social icons --></td>\n    								</tr>\n    								<!-- Spacing -->\n    								<tr>\n    									<td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\">&nbsp;</td>\n    								</tr>\n    								<!-- Spacing -->\n    								<tr>\n    									<td bgcolor=\"#80C457\" height=\"10\" width=\"100%\">&nbsp;</td>\n    								</tr>\n    								<!-- Spacing -->\n    							</tbody>\n    						</table>\n    						</td>\n    					</tr>\n    				</tbody>\n    			</table>\n    			</td>\n    		</tr>\n    	</tbody>\n    </table>\n    <!-- End of footer -->\n  </body>\n</html>\n',1,NULL,NULL,1,0,0,NULL);
 /*!40000 ALTER TABLE `civicrm_msg_template` ENABLE KEYS */;
 UNLOCK TABLES;
@@ -5310,247 +5568,247 @@ INSERT INTO `civicrm_navigation` (`id`, `domain_id`, `label`, `name`, `url`, `ic
  (10,1,'Find Participants','Find Participants','civicrm/event/search?reset=1',NULL,'access CiviEvent','',2,1,NULL,9),
  (11,1,'Find Pledges','Find Pledges','civicrm/pledge/search?reset=1',NULL,'access CiviPledge','',2,1,NULL,10),
  (12,1,'Find Activities','Find Activities','civicrm/activity/search?reset=1',NULL,NULL,'',2,1,1,11),
- (13,1,'Custom Searches','Custom Searches','civicrm/contact/search/custom/list?reset=1',NULL,NULL,'',2,1,NULL,12),
- (14,1,'Contacts','Contacts',NULL,'crm-i fa-address-book-o',NULL,'',NULL,1,NULL,20),
- (15,1,'New Individual','New Individual','civicrm/contact/add?reset=1&ct=Individual',NULL,'add contacts','',14,1,NULL,1),
- (16,1,'New Household','New Household','civicrm/contact/add?reset=1&ct=Household',NULL,'add contacts','',14,1,NULL,2),
- (17,1,'New Organization','New Organization','civicrm/contact/add?reset=1&ct=Organization',NULL,'add contacts','',14,1,1,3),
- (18,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'access CiviReport','',14,1,1,4),
- (19,1,'New Activity','New Activity','civicrm/activity?reset=1&action=add&context=standalone',NULL,NULL,'',14,1,NULL,5),
- (20,1,'New Email','New Email','civicrm/activity/email/add?atype=3&action=add&reset=1&context=standalone',NULL,NULL,'',14,1,1,6),
- (21,1,'Import Contacts','Import Contacts','civicrm/import/contact?reset=1',NULL,'import contacts','',14,1,NULL,7),
- (22,1,'Import Activities','Import Activities','civicrm/import/activity?reset=1',NULL,'import contacts','',14,1,NULL,8),
- (23,1,'Import Custom Data','Import MultiValued Custom','civicrm/import/custom?reset=1',NULL,'import contacts','',14,1,1,9),
- (24,1,'New Group','New Group','civicrm/group/add?reset=1',NULL,'edit groups','',14,0,NULL,10),
- (25,1,'Manage Groups','Manage Groups','civicrm/group?reset=1',NULL,'access CiviCRM','',14,1,1,11),
- (26,1,'Manage Tags','Manage Tags (Categories)','civicrm/tag?reset=1',NULL,'manage tags','',14,1,1,12),
- (27,1,'Find and Merge Duplicate Contacts','Find and Merge Duplicate Contacts','civicrm/contact/deduperules?reset=1',NULL,'administer dedupe rules,merge duplicate contacts','OR',14,1,NULL,13),
- (28,1,'Contributions','Contributions',NULL,'crm-i fa-credit-card','access CiviContribute','',NULL,1,NULL,30),
- (29,1,'Dashboard','Dashboard','civicrm/contribute?reset=1',NULL,'access CiviContribute','',28,1,NULL,1),
- (30,1,'New Contribution','New Contribution','civicrm/contribute/add?reset=1&action=add&context=standalone',NULL,'access CiviContribute,edit contributions','AND',28,1,NULL,2),
- (31,1,'Find Contributions','Find Contributions','civicrm/contribute/search?reset=1',NULL,'access CiviContribute','',28,1,NULL,3),
- (32,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',28,1,1,4),
- (33,1,'Import Contributions','Import Contributions','civicrm/contribute/import?reset=1',NULL,'access CiviContribute,edit contributions','AND',28,1,1,5),
- (34,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',28,1,NULL,7),
- (35,1,'Pledges','Pledges',NULL,NULL,'access CiviPledge','',28,1,1,6),
- (36,1,'Accounting Batches','Accounting Batches',NULL,NULL,'view own manual batches,view all manual batches','OR',28,1,1,8),
- (37,1,'Dashboard','Dashboard','civicrm/pledge?reset=1',NULL,'access CiviPledge','',35,1,NULL,1),
- (38,1,'New Pledge','New Pledge','civicrm/pledge/add?reset=1&action=add&context=standalone',NULL,'access CiviPledge,edit pledges','AND',35,1,NULL,2),
- (39,1,'Find Pledges','Find Pledges','civicrm/pledge/search?reset=1',NULL,'access CiviPledge','',35,1,NULL,3),
- (40,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',35,1,0,4),
- (41,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute/add?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',28,0,NULL,9),
- (42,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',28,1,1,10),
- (43,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',28,1,NULL,11),
- (44,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',28,1,1,12),
- (45,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',28,0,NULL,13),
- (46,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',28,1,1,14),
- (47,1,'New Batch','New Batch','civicrm/financial/batch?reset=1&action=add',NULL,'create manual batch','AND',36,1,NULL,1),
- (48,1,'Open Batches','Open Batches','civicrm/financial/financialbatches?reset=1&batchStatus=1',NULL,'view own manual batches,view all manual batches','OR',36,1,NULL,2),
- (49,1,'Closed Batches','Closed Batches','civicrm/financial/financialbatches?reset=1&batchStatus=2',NULL,'view own manual batches,view all manual batches','OR',36,1,NULL,3),
- (50,1,'Exported Batches','Exported Batches','civicrm/financial/financialbatches?reset=1&batchStatus=5',NULL,'view own manual batches,view all manual batches','OR',36,1,NULL,4),
- (51,1,'Events','Events',NULL,'crm-i fa-calendar','access CiviEvent','',NULL,1,NULL,40),
- (52,1,'Dashboard','CiviEvent Dashboard','civicrm/event?reset=1',NULL,'access CiviEvent','',51,1,NULL,1),
- (53,1,'Register Event Participant','Register Event Participant','civicrm/participant/add?reset=1&action=add&context=standalone',NULL,'access CiviEvent,edit event participants','AND',51,1,NULL,2),
- (54,1,'Find Participants','Find Participants','civicrm/event/search?reset=1',NULL,'access CiviEvent','',51,1,NULL,3),
- (55,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',51,1,1,4),
- (56,1,'Import Participants','Import Participants','civicrm/event/import?reset=1',NULL,'access CiviEvent,edit event participants','AND',51,1,1,5),
- (57,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',51,0,NULL,6),
- (58,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,edit all events','AND',51,1,1,7),
- (59,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',51,1,1,8),
- (60,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,edit all events','AND',51,1,1,9),
- (61,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',51,0,NULL,10),
- (62,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,edit all events','AND',51,1,NULL,11),
- (63,1,'Mailings','Mailings',NULL,'crm-i fa-envelope-o','access CiviMail,create mailings,approve mailings,schedule mailings,send SMS','OR',NULL,1,NULL,50),
- (64,1,'New Mailing','New Mailing','civicrm/mailing/send?reset=1',NULL,'access CiviMail,create mailings','OR',63,1,NULL,1),
- (65,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',63,1,NULL,2),
- (66,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',63,1,NULL,3),
- (67,1,'Archived Mailings','Archived Mailings','civicrm/mailing/browse/archived?reset=1',NULL,'access CiviMail,create mailings','OR',63,1,NULL,4),
- (68,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',63,1,1,5),
- (69,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',63,1,NULL,6),
- (70,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'edit message templates,edit user-driven message templates,edit system workflow message templates','OR',63,1,NULL,7),
- (71,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',63,1,1,8),
- (72,1,'New SMS','New SMS','civicrm/sms/send?reset=1',NULL,'send SMS',NULL,63,1,NULL,9),
- (73,1,'Find Mass SMS','Find Mass SMS','civicrm/mailing/browse?reset=1&sms=1',NULL,'send SMS',NULL,63,1,1,10),
- (74,1,'New A/B Test','New A/B Test','civicrm/a/#/abtest/new',NULL,'access CiviMail','',63,1,NULL,15),
- (75,1,'Manage A/B Tests','Manage A/B Tests','civicrm/a/#/abtest',NULL,'access CiviMail','',63,1,1,16),
- (76,1,'Memberships','Memberships',NULL,'crm-i fa-id-badge','access CiviMember','',NULL,1,NULL,60),
- (77,1,'Dashboard','Dashboard','civicrm/member?reset=1',NULL,'access CiviMember','',76,1,NULL,1),
- (78,1,'New Membership','New Membership','civicrm/member/add?reset=1&action=add&context=standalone',NULL,'access CiviMember,edit memberships','AND',76,0,NULL,2),
- (79,1,'Find Memberships','Find Memberships','civicrm/member/search?reset=1',NULL,'access CiviMember','',76,1,NULL,3),
- (80,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',76,1,1,4),
- (81,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',76,1,NULL,5),
- (82,1,'Import Memberships','Import Members','civicrm/member/import?reset=1',NULL,'access CiviMember,edit memberships','AND',76,1,1,6),
- (83,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',76,0,NULL,7),
- (84,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',76,1,NULL,8),
- (85,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),
- (86,1,'Dashboard','Dashboard','civicrm/campaign?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',85,1,NULL,1),
- (87,1,'Surveys','Survey Dashboard','civicrm/campaign?reset=1&subPage=survey',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,1),
- (88,1,'Petitions','Petition Dashboard','civicrm/campaign?reset=1&subPage=petition',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,2),
- (89,1,'Campaigns','Campaign Dashboard','civicrm/campaign?reset=1&subPage=campaign',NULL,'manage campaign,administer CiviCampaign','OR',86,1,NULL,3),
- (90,1,'New Campaign','New Campaign','civicrm/campaign/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',85,1,NULL,2),
- (91,1,'New Survey','New Survey','civicrm/survey/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',85,1,NULL,3),
- (92,1,'New Petition','New Petition','civicrm/petition/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',85,1,NULL,4),
- (93,1,'Reserve Respondents','Reserve Respondents','civicrm/survey/search?reset=1&op=reserve',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts','OR',85,1,NULL,5),
- (94,1,'Interview Respondents','Interview Respondents','civicrm/survey/search?reset=1&op=interview',NULL,'administer CiviCampaign,manage campaign,interview campaign contacts','OR',85,1,NULL,6),
- (95,1,'Release Respondents','Release Respondents','civicrm/survey/search?reset=1&op=release',NULL,'administer CiviCampaign,manage campaign,release campaign contacts','OR',85,1,NULL,7),
- (96,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',85,1,1,8),
- (97,1,'Conduct Survey','Conduct Survey','civicrm/campaign/vote?reset=1',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts,interview campaign contacts','OR',85,1,NULL,9),
- (98,1,'GOTV (Voter Tracking)','Voter Listing','civicrm/campaign/gotv?reset=1',NULL,'administer CiviCampaign,manage campaign,release campaign contacts,gotv campaign contacts','OR',85,1,NULL,10),
- (99,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),
- (100,1,'Dashboard','Dashboard','civicrm/case?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',99,1,NULL,1),
- (101,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',99,1,NULL,2),
- (102,1,'Find Cases','Find Cases','civicrm/case/search?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',99,1,1,3),
- (103,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',99,1,0,4),
- (104,1,'Administer','Administer',NULL,'crm-i fa-gears','administer CiviCRM','',NULL,1,NULL,100),
- (105,1,'Administration Console','Administration Console','civicrm/admin?reset=1',NULL,'administer CiviCRM','',104,1,NULL,1),
- (106,1,'System Status','System Status','civicrm/a/#/status',NULL,'administer CiviCRM','',105,1,NULL,0),
- (107,1,'Configuration Checklist','Configuration Checklist','civicrm/admin/configtask?reset=1',NULL,'administer CiviCRM','',105,1,NULL,1),
- (108,1,'Customize Data and Screens','Customize Data and Screens',NULL,NULL,'administer CiviCRM','',104,1,NULL,3),
- (109,1,'Custom Fields','Custom Fields','civicrm/admin/custom/group?reset=1',NULL,'administer CiviCRM','',108,1,NULL,1),
- (110,1,'Profiles','Profiles','civicrm/admin/uf/group?reset=1',NULL,'administer CiviCRM','',108,1,NULL,2),
- (111,1,'Tags','Tags (Categories)','civicrm/tag?reset=1',NULL,'administer CiviCRM','',108,1,NULL,3),
- (112,1,'Activity Types','Activity Types','civicrm/admin/options/activity_type?reset=1',NULL,'administer CiviCRM','',108,1,NULL,4),
- (113,1,'Relationship Types','Relationship Types','civicrm/admin/reltype?reset=1',NULL,'administer CiviCRM','',108,1,NULL,5),
- (114,1,'Contact Types','Contact Types','civicrm/admin/options/subtype?reset=1',NULL,'administer CiviCRM','',108,1,NULL,6),
- (115,1,'Display Preferences','Display Preferences','civicrm/admin/setting/preferences/display?reset=1',NULL,'administer CiviCRM','',108,1,NULL,9),
- (116,1,'Search Preferences','Search Preferences','civicrm/admin/setting/search?reset=1',NULL,'administer CiviCRM','',108,1,NULL,10),
- (117,1,'Date Preferences','Date Preferences','civicrm/admin/setting/preferences/date?reset=1',NULL,'administer CiviCRM','',108,1,NULL,11),
- (118,1,'Navigation Menu','Navigation Menu','civicrm/admin/menu?reset=1',NULL,'administer CiviCRM','',108,1,NULL,12),
- (119,1,'Word Replacements','Word Replacements','civicrm/admin/options/wordreplacements?reset=1',NULL,'administer CiviCRM','',108,1,NULL,13),
- (120,1,'Manage Custom Searches','Manage Custom Searches','civicrm/admin/options/custom_search?reset=1',NULL,'administer CiviCRM','',108,1,NULL,14),
- (121,1,'Dropdown Options','Dropdown Options','civicrm/admin/options?action=browse&reset=1',NULL,'administer CiviCRM','',108,1,NULL,8),
- (122,1,'Gender Options','Gender Options','civicrm/admin/options/gender?reset=1',NULL,'administer CiviCRM','',121,1,NULL,1),
- (123,1,'Individual Prefixes (Ms, Mr...)','Individual Prefixes (Ms, Mr...)','civicrm/admin/options/individual_prefix?reset=1',NULL,'administer CiviCRM','',121,1,NULL,2),
- (124,1,'Individual Suffixes (Jr, Sr...)','Individual Suffixes (Jr, Sr...)','civicrm/admin/options/individual_suffix?reset=1',NULL,'administer CiviCRM','',121,1,NULL,3),
- (125,1,'Instant Messenger Services','Instant Messenger Services','civicrm/admin/options/instant_messenger_service?reset=1',NULL,'administer CiviCRM','',121,1,NULL,4),
- (126,1,'Location Types (Home, Work...)','Location Types (Home, Work...)','civicrm/admin/locationType?reset=1',NULL,'administer CiviCRM','',121,1,NULL,5),
- (127,1,'Mobile Phone Providers','Mobile Phone Providers','civicrm/admin/options/mobile_provider?reset=1',NULL,'administer CiviCRM','',121,1,NULL,6),
- (128,1,'Phone Types','Phone Types','civicrm/admin/options/phone_type?reset=1',NULL,'administer CiviCRM','',121,1,NULL,7),
- (129,1,'Website Types','Website Types','civicrm/admin/options/website_type?reset=1',NULL,'administer CiviCRM','',121,1,NULL,8),
- (130,1,'Communications','Communications',NULL,NULL,'administer CiviCRM','',104,1,NULL,4),
- (131,1,'Organization Address and Contact Info','Organization Address and Contact Info','civicrm/admin/domain?action=update&reset=1',NULL,'administer CiviCRM','',130,1,NULL,1),
- (132,1,'FROM Email Addresses','FROM Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',130,1,NULL,2),
- (133,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',130,1,NULL,3),
- (134,1,'Schedule Reminders','Schedule Reminders','civicrm/admin/scheduleReminders?reset=1',NULL,'administer CiviCRM','',130,1,NULL,4),
- (135,1,'Preferred Communication Methods','Preferred Communication Methods','civicrm/admin/options/preferred_communication_method?reset=1',NULL,'administer CiviCRM','',130,1,NULL,5),
- (136,1,'Label Formats','Label Formats','civicrm/admin/labelFormats?reset=1',NULL,'administer CiviCRM','',130,1,NULL,6),
- (137,1,'Print Page (PDF) Formats','Print Page (PDF) Formats','civicrm/admin/pdfFormats?reset=1',NULL,'administer CiviCRM','',130,1,NULL,7),
- (138,1,'Communication Style Options','Communication Style Options','civicrm/admin/options/communication_style?reset=1',NULL,'administer CiviCRM','',130,1,NULL,8),
- (139,1,'Email Greeting Formats','Email Greeting Formats','civicrm/admin/options/email_greeting?reset=1',NULL,'administer CiviCRM','',130,1,NULL,9),
- (140,1,'Postal Greeting Formats','Postal Greeting Formats','civicrm/admin/options/postal_greeting?reset=1',NULL,'administer CiviCRM','',130,1,NULL,10),
- (141,1,'Addressee Formats','Addressee Formats','civicrm/admin/options/addressee?reset=1',NULL,'administer CiviCRM','',130,1,NULL,11),
- (142,1,'Localization','Localization',NULL,NULL,'administer CiviCRM','',104,1,NULL,6),
- (143,1,'Languages, Currency, Locations','Languages, Currency, Locations','civicrm/admin/setting/localization?reset=1',NULL,'administer CiviCRM','',142,1,NULL,1),
- (144,1,'Address Settings','Address Settings','civicrm/admin/setting/preferences/address?reset=1',NULL,'administer CiviCRM','',142,1,NULL,2),
- (145,1,'Date Formats','Date Formats','civicrm/admin/setting/date?reset=1',NULL,'administer CiviCRM','',142,1,NULL,3),
- (146,1,'Preferred Language Options','Preferred Language Options','civicrm/admin/options/languages?reset=1',NULL,'administer CiviCRM','',142,1,NULL,4),
- (147,1,'Users and Permissions','Users and Permissions',NULL,NULL,'administer CiviCRM','',104,1,NULL,7),
- (148,1,'Permissions (Access Control)','Permissions (Access Control)','civicrm/admin/access?reset=1',NULL,'administer CiviCRM','',147,1,NULL,1),
- (149,1,'Synchronize Users to Contacts','Synchronize Users to Contacts','civicrm/admin/synchUser?reset=1',NULL,'administer CiviCRM','',147,1,NULL,2),
- (150,1,'System Settings','System Settings',NULL,NULL,'administer CiviCRM','',104,1,NULL,8),
- (151,1,'Components','Enable Components','civicrm/admin/setting/component?reset=1',NULL,'administer CiviCRM','',150,1,NULL,1),
- (152,1,'Extensions','Manage Extensions','civicrm/admin/extensions?reset=1',NULL,'administer CiviCRM','',150,1,1,3),
- (153,1,'Cleanup Caches and Update Paths','Cleanup Caches and Update Paths','civicrm/admin/setting/updateConfigBackend?reset=1',NULL,'administer CiviCRM','',150,1,NULL,4),
- (154,1,'CMS Database Integration','CMS Integration','civicrm/admin/setting/uf?reset=1',NULL,'administer CiviCRM','',150,1,NULL,5),
- (155,1,'Debugging and Error Handling','Debugging and Error Handling','civicrm/admin/setting/debug?reset=1',NULL,'administer CiviCRM','',150,1,NULL,6),
- (156,1,'Directories','Directories','civicrm/admin/setting/path?reset=1',NULL,'administer CiviCRM','',150,1,NULL,7),
- (157,1,'Import/Export Mappings','Import/Export Mappings','civicrm/admin/mapping?reset=1',NULL,'administer CiviCRM','',150,1,NULL,8),
- (158,1,'Mapping and Geocoding','Mapping and Geocoding','civicrm/admin/setting/mapping?reset=1',NULL,'administer CiviCRM','',150,1,NULL,9),
- (159,1,'Misc (Undelete, PDFs, Limits, Logging, etc.)','misc_admin_settings','civicrm/admin/setting/misc?reset=1',NULL,'administer CiviCRM','',150,1,NULL,10),
- (160,1,'Multi Site Settings','Multi Site Settings','civicrm/admin/setting/preferences/multisite?reset=1',NULL,'administer CiviCRM','',150,1,NULL,11),
- (161,1,'Option Groups','Option Groups','civicrm/admin/options?reset=1',NULL,'administer CiviCRM','',150,1,NULL,12),
- (162,1,'Outbound Email (SMTP/Sendmail)','Outbound Email','civicrm/admin/setting/smtp?reset=1',NULL,'administer CiviCRM','',150,1,NULL,13),
- (163,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',150,1,NULL,14),
- (164,1,'Resource URLs','Resource URLs','civicrm/admin/setting/url?reset=1',NULL,'administer CiviCRM','',150,1,NULL,15),
- (165,1,'Safe File Extensions','Safe File Extensions','civicrm/admin/options/safe_file_extension?reset=1',NULL,'administer CiviCRM','',150,1,NULL,16),
- (166,1,'Scheduled Jobs','Scheduled Jobs','civicrm/admin/job?reset=1',NULL,'administer CiviCRM','',150,1,NULL,17),
- (167,1,'SMS Providers','SMS Providers','civicrm/admin/sms/provider?reset=1',NULL,'administer CiviCRM','',150,1,NULL,18),
- (168,1,'CiviCampaign','CiviCampaign',NULL,NULL,'administer CiviCampaign,administer CiviCRM','AND',104,1,NULL,9),
- (169,1,'Survey Types','Survey Types','civicrm/admin/campaign/surveyType?reset=1',NULL,'administer CiviCampaign','',168,1,NULL,1),
- (170,1,'Campaign Types','Campaign Types','civicrm/admin/options/campaign_type?reset=1',NULL,'administer CiviCampaign','',168,1,NULL,2),
- (171,1,'Campaign Status','Campaign Status','civicrm/admin/options/campaign_status?reset=1',NULL,'administer CiviCampaign','',168,1,NULL,3),
- (172,1,'Engagement Index','Engagement Index','civicrm/admin/options/engagement_index?reset=1',NULL,'administer CiviCampaign','',168,1,NULL,4),
- (173,1,'CiviCampaign Component Settings','CiviCampaign Component Settings','civicrm/admin/setting/preferences/campaign?reset=1',NULL,'administer CiviCampaign','',168,1,NULL,5),
- (174,1,'CiviCase','CiviCase',NULL,NULL,'administer CiviCase',NULL,104,1,NULL,10),
- (175,1,'CiviCase Settings','CiviCase Settings','civicrm/admin/setting/case?reset=1',NULL,'administer CiviCase',NULL,174,1,NULL,1),
- (176,1,'Case Types','Case Types','civicrm/a/#/caseType',NULL,'administer CiviCase',NULL,174,1,NULL,2),
- (177,1,'Redaction Rules','Redaction Rules','civicrm/admin/options/redaction_rule?reset=1',NULL,'administer CiviCase',NULL,174,1,NULL,3),
- (178,1,'Case Statuses','Case Statuses','civicrm/admin/options/case_status?reset=1',NULL,'administer CiviCase',NULL,174,1,NULL,4),
- (179,1,'Encounter Medium','Encounter Medium','civicrm/admin/options/encounter_medium?reset=1',NULL,'administer CiviCase',NULL,174,1,NULL,5),
- (180,1,'CiviContribute','CiviContribute',NULL,NULL,'access CiviContribute,administer CiviCRM','AND',104,1,NULL,11),
- (181,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',180,1,NULL,6),
- (182,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',180,1,1,7),
- (183,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',180,1,NULL,8),
- (184,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',180,1,1,9),
- (185,1,'Financial Types','Financial Types','civicrm/admin/financial/financialType?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',180,1,NULL,10),
- (186,1,'Financial Accounts','Financial Accounts','civicrm/admin/financial/financialAccount?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',180,1,NULL,11),
- (187,1,'Payment Methods','Payment Instruments','civicrm/admin/options/payment_instrument?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',180,1,NULL,12),
- (188,1,'Accepted Credit Cards','Accepted Credit Cards','civicrm/admin/options/accept_creditcard?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',180,1,NULL,13),
- (189,1,'Soft Credit Types','Soft Credit Types','civicrm/admin/options/soft_credit_type?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',180,1,1,14),
- (190,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',180,0,NULL,15),
- (191,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',180,1,NULL,16),
- (192,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',180,1,NULL,17),
- (193,1,'CiviContribute Component Settings','CiviContribute Component Settings','civicrm/admin/setting/preferences/contribute?reset=1',NULL,'administer CiviCRM','',180,1,NULL,18),
- (194,1,'CiviEvent','CiviEvent',NULL,NULL,'access CiviEvent,administer CiviCRM','AND',104,1,NULL,12),
- (195,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',194,1,NULL,1),
- (196,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',194,1,1,2),
- (197,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',194,1,1,3),
- (198,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',194,1,1,4),
- (199,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',194,0,NULL,5),
- (200,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',194,1,1,6),
- (201,1,'Event Types','Event Types','civicrm/admin/options/event_type?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',194,1,NULL,7),
- (202,1,'Participant Statuses','Participant Statuses','civicrm/admin/participant_status?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',194,1,NULL,8),
- (203,1,'Participant Roles','Participant Roles','civicrm/admin/options/participant_role?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',194,1,NULL,9),
- (204,1,'Participant Listing Options','Participant Listing Options','civicrm/admin/options/participant_listing?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',194,1,NULL,10),
- (205,1,'Event Name Badge Layouts','Event Name Badge Layouts','civicrm/admin/badgelayout?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',194,1,NULL,11),
- (206,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',194,1,NULL,12),
- (207,1,'CiviEvent Component Settings','CiviEvent Component Settings','civicrm/admin/setting/preferences/event?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',194,1,NULL,13),
- (208,1,'CiviMail','CiviMail',NULL,NULL,'access CiviMail,administer CiviCRM','AND',104,1,NULL,14),
- (209,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',208,1,NULL,1),
- (210,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',208,1,NULL,2),
- (211,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',208,1,NULL,3),
- (212,1,'Mail Accounts','Mail Accounts','civicrm/admin/mailSettings?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',208,1,NULL,4),
- (213,1,'Mailer Settings','Mailer Settings','civicrm/admin/mail?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',208,1,NULL,5),
- (214,1,'CiviMail Component Settings','CiviMail Component Settings','civicrm/admin/setting/preferences/mailing?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',208,1,NULL,6),
- (215,1,'CiviMember','CiviMember',NULL,NULL,'access CiviMember,administer CiviCRM','AND',104,1,NULL,15),
- (216,1,'Membership Types','Membership Types','civicrm/admin/member/membershipType?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',215,1,NULL,1),
- (217,1,'Membership Status Rules','Membership Status Rules','civicrm/admin/member/membershipStatus?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',215,1,1,2),
- (218,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',215,1,NULL,3),
- (219,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',215,1,NULL,4),
- (220,1,'CiviMember Component Settings','CiviMember Component Settings','civicrm/admin/setting/preferences/member?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',215,1,NULL,5),
- (221,1,'CiviReport','CiviReport',NULL,NULL,'access CiviReport,administer CiviCRM','AND',104,1,NULL,16),
- (222,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',221,1,NULL,1),
- (223,1,'Create New Report from Template','Create New Report from Template','civicrm/admin/report/template/list?reset=1',NULL,'administer Reports','',221,1,NULL,2),
- (224,1,'Manage Templates','Manage Templates','civicrm/admin/report/options/report_template?reset=1',NULL,'administer Reports','',221,1,NULL,3),
- (225,1,'Register Report','Register Report','civicrm/admin/report/register?reset=1',NULL,'administer Reports','',221,1,NULL,4),
- (226,1,'Support','Support',NULL,'crm-i fa-life-ring',NULL,'',NULL,1,NULL,110),
- (227,1,'Get started','Get started','https://civicrm.org/get-started?src=iam',NULL,NULL,'AND',226,1,NULL,1),
- (228,1,'Documentation','Documentation','https://civicrm.org/documentation?src=iam',NULL,NULL,'AND',226,1,NULL,2),
- (229,1,'Ask a question','Ask a question','https://civicrm.org/ask-a-question?src=iam',NULL,NULL,'AND',226,1,NULL,3),
- (230,1,'Get expert help','Get expert help','https://civicrm.org/experts?src=iam',NULL,NULL,'AND',226,1,NULL,4),
- (231,1,'About CiviCRM','About CiviCRM','https://civicrm.org/about?src=iam',NULL,NULL,'AND',226,1,1,5),
- (232,1,'Register your site','Register your site','https://civicrm.org/register-your-site?src=iam&sid={sid}',NULL,NULL,'AND',226,1,NULL,6),
- (233,1,'Join CiviCRM','Join CiviCRM','https://civicrm.org/become-a-member?src=iam&sid={sid}',NULL,NULL,'AND',226,1,NULL,7),
- (234,1,'Developer','Developer',NULL,NULL,'administer CiviCRM','',226,1,1,8),
- (235,1,'Api Explorer v3','API Explorer','civicrm/api3',NULL,'administer CiviCRM','',234,1,NULL,1),
- (236,1,'Api Explorer v4','Api Explorer v4','civicrm/api4#/explorer',NULL,'administer CiviCRM','',234,1,NULL,2),
- (237,1,'Developer Docs','Developer Docs','https://civicrm.org/developer-documentation?src=iam',NULL,'administer CiviCRM','',234,1,NULL,3),
- (238,1,'Reports','Reports',NULL,'crm-i fa-bar-chart','access CiviReport','',NULL,1,NULL,95),
- (239,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'administer CiviCRM','',238,1,0,1),
- (240,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',238,1,0,2),
- (241,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',238,1,0,3),
- (242,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',238,1,0,4),
- (243,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',238,1,0,5),
- (244,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',238,1,0,6),
- (245,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',238,1,0,7),
- (246,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',238,1,0,8),
- (247,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',238,1,1,10),
- (248,1,'My Reports','My Reports','civicrm/report/list?myreports=1&reset=1',NULL,'access CiviReport','',238,1,1,11),
- (249,1,'New Student','New Student','civicrm/contact/add?ct=Individual&cst=Student&reset=1',NULL,'add contacts','',15,1,NULL,1),
- (250,1,'New Parent','New Parent','civicrm/contact/add?ct=Individual&cst=Parent&reset=1',NULL,'add contacts','',15,1,NULL,2),
- (251,1,'New Staff','New Staff','civicrm/contact/add?ct=Individual&cst=Staff&reset=1',NULL,'add contacts','',15,1,NULL,3),
- (252,1,'New Team','New Team','civicrm/contact/add?ct=Organization&cst=Team&reset=1',NULL,'add contacts','',17,1,NULL,1),
- (253,1,'New Sponsor','New Sponsor','civicrm/contact/add?ct=Organization&cst=Sponsor&reset=1',NULL,'add contacts','',17,1,NULL,2);
+ (13,1,'Contacts','Contacts',NULL,'crm-i fa-address-book-o',NULL,'',NULL,1,NULL,20),
+ (14,1,'New Individual','New Individual','civicrm/contact/add?reset=1&ct=Individual',NULL,'add contacts','',13,1,NULL,1),
+ (15,1,'New Household','New Household','civicrm/contact/add?reset=1&ct=Household',NULL,'add contacts','',13,1,NULL,2),
+ (16,1,'New Organization','New Organization','civicrm/contact/add?reset=1&ct=Organization',NULL,'add contacts','',13,1,1,3),
+ (17,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'access CiviReport','',13,1,1,4),
+ (18,1,'New Activity','New Activity','civicrm/activity?reset=1&action=add&context=standalone',NULL,NULL,'',13,1,NULL,5),
+ (19,1,'New Email','New Email','civicrm/activity/email/add?atype=3&action=add&reset=1&context=standalone',NULL,NULL,'',13,1,1,6),
+ (20,1,'Import Contacts','Import Contacts','civicrm/import/contact?reset=1',NULL,'import contacts','',13,1,NULL,7),
+ (21,1,'Import Activities','Import Activities','civicrm/import/activity?reset=1',NULL,'import contacts','',13,1,NULL,8),
+ (22,1,'Import Custom Data','Import MultiValued Custom','civicrm/import/custom?reset=1',NULL,'import contacts','',13,1,1,9),
+ (23,1,'New Group','New Group','civicrm/group/add?reset=1',NULL,'edit groups','',13,0,NULL,10),
+ (24,1,'Manage Groups','Manage Groups','civicrm/group?reset=1',NULL,'access CiviCRM','',13,1,1,11),
+ (25,1,'Manage Tags','Manage Tags (Categories)','civicrm/tag?reset=1',NULL,'manage tags','',13,1,1,12),
+ (26,1,'Find and Merge Duplicate Contacts','Find and Merge Duplicate Contacts','civicrm/contact/deduperules?reset=1',NULL,'administer dedupe rules,merge duplicate contacts','OR',13,1,NULL,13),
+ (27,1,'Contributions','Contributions',NULL,'crm-i fa-credit-card','access CiviContribute','',NULL,1,NULL,30),
+ (28,1,'Dashboard','Dashboard','civicrm/contribute?reset=1',NULL,'access CiviContribute','',27,1,NULL,1),
+ (29,1,'New Contribution','New Contribution','civicrm/contribute/add?reset=1&action=add&context=standalone',NULL,'access CiviContribute,edit contributions','AND',27,1,NULL,2),
+ (30,1,'Find Contributions','Find Contributions','civicrm/contribute/search?reset=1',NULL,'access CiviContribute','',27,1,NULL,3),
+ (31,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',27,1,1,4),
+ (32,1,'Import Contributions','Import Contributions','civicrm/contribute/import?reset=1',NULL,'access CiviContribute,edit contributions','AND',27,1,1,5),
+ (33,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',27,1,NULL,7),
+ (34,1,'Pledges','Pledges',NULL,NULL,'access CiviPledge','',27,1,1,6),
+ (35,1,'Accounting Batches','Accounting Batches',NULL,NULL,'view own manual batches,view all manual batches','OR',27,1,1,8),
+ (36,1,'Dashboard','Dashboard','civicrm/pledge?reset=1',NULL,'access CiviPledge','',34,1,NULL,1),
+ (37,1,'New Pledge','New Pledge','civicrm/pledge/add?reset=1&action=add&context=standalone',NULL,'access CiviPledge,edit pledges','AND',34,1,NULL,2),
+ (38,1,'Find Pledges','Find Pledges','civicrm/pledge/search?reset=1',NULL,'access CiviPledge','',34,1,NULL,3),
+ (39,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',34,1,0,4),
+ (40,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute/add?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',27,0,NULL,9),
+ (41,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',27,1,1,10),
+ (42,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',27,1,NULL,11),
+ (43,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',27,1,1,12),
+ (44,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',27,0,NULL,13),
+ (45,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',27,1,1,14),
+ (46,1,'New Batch','New Batch','civicrm/financial/batch?reset=1&action=add',NULL,'create manual batch','AND',35,1,NULL,1),
+ (47,1,'Open Batches','Open Batches','civicrm/financial/financialbatches?reset=1&batchStatus=1',NULL,'view own manual batches,view all manual batches','OR',35,1,NULL,2),
+ (48,1,'Closed Batches','Closed Batches','civicrm/financial/financialbatches?reset=1&batchStatus=2',NULL,'view own manual batches,view all manual batches','OR',35,1,NULL,3),
+ (49,1,'Exported Batches','Exported Batches','civicrm/financial/financialbatches?reset=1&batchStatus=5',NULL,'view own manual batches,view all manual batches','OR',35,1,NULL,4),
+ (50,1,'Events','Events',NULL,'crm-i fa-calendar','access CiviEvent','',NULL,1,NULL,40),
+ (51,1,'Dashboard','CiviEvent Dashboard','civicrm/event?reset=1',NULL,'access CiviEvent','',50,1,NULL,1),
+ (52,1,'Register Event Participant','Register Event Participant','civicrm/participant/add?reset=1&action=add&context=standalone',NULL,'access CiviEvent,edit event participants','AND',50,1,NULL,2),
+ (53,1,'Find Participants','Find Participants','civicrm/event/search?reset=1',NULL,'access CiviEvent','',50,1,NULL,3),
+ (54,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',50,1,1,4),
+ (55,1,'Import Participants','Import Participants','civicrm/event/import?reset=1',NULL,'access CiviEvent,edit event participants','AND',50,1,1,5),
+ (56,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',50,0,NULL,6),
+ (57,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,edit all events','AND',50,1,1,7),
+ (58,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',50,1,1,8),
+ (59,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,edit all events','AND',50,1,1,9),
+ (60,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviEvent,edit all events','AND',50,0,NULL,10),
+ (61,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,edit all events','AND',50,1,NULL,11),
+ (62,1,'Mailings','Mailings',NULL,'crm-i fa-envelope-o','access CiviMail,create mailings,approve mailings,schedule mailings,send SMS','OR',NULL,1,NULL,50),
+ (63,1,'New Mailing','New Mailing','civicrm/mailing/send?reset=1',NULL,'access CiviMail,create mailings','OR',62,1,NULL,1),
+ (64,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',62,1,NULL,2),
+ (65,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',62,1,NULL,3),
+ (66,1,'Archived Mailings','Archived Mailings','civicrm/mailing/browse/archived?reset=1',NULL,'access CiviMail,create mailings','OR',62,1,NULL,4),
+ (67,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',62,1,1,5),
+ (68,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',62,1,NULL,6),
+ (69,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'edit message templates,edit user-driven message templates,edit system workflow message templates','OR',62,1,NULL,7),
+ (70,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',62,1,1,8),
+ (71,1,'New SMS','New SMS','civicrm/sms/send?reset=1',NULL,'send SMS',NULL,62,1,NULL,9),
+ (72,1,'Find Mass SMS','Find Mass SMS','civicrm/mailing/browse?reset=1&sms=1',NULL,'send SMS',NULL,62,1,1,10),
+ (73,1,'New A/B Test','New A/B Test','civicrm/a/#/abtest/new',NULL,'access CiviMail','',62,1,NULL,15),
+ (74,1,'Manage A/B Tests','Manage A/B Tests','civicrm/a/#/abtest',NULL,'access CiviMail','',62,1,1,16),
+ (75,1,'Memberships','Memberships',NULL,'crm-i fa-id-badge','access CiviMember','',NULL,1,NULL,60),
+ (76,1,'Dashboard','Dashboard','civicrm/member?reset=1',NULL,'access CiviMember','',75,1,NULL,1),
+ (77,1,'New Membership','New Membership','civicrm/member/add?reset=1&action=add&context=standalone',NULL,'access CiviMember,edit memberships','AND',75,0,NULL,2),
+ (78,1,'Find Memberships','Find Memberships','civicrm/member/search?reset=1',NULL,'access CiviMember','',75,1,NULL,3),
+ (79,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',75,1,1,4),
+ (80,1,'Batch Data Entry','Batch Data Entry','civicrm/batch?reset=1',NULL,'access CiviContribute','',75,1,NULL,5),
+ (81,1,'Import Memberships','Import Members','civicrm/member/import?reset=1',NULL,'access CiviMember,edit memberships','AND',75,1,1,6),
+ (82,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',75,0,NULL,7),
+ (83,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',75,1,NULL,8),
+ (84,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),
+ (85,1,'Dashboard','Dashboard','civicrm/campaign?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',84,1,NULL,1),
+ (86,1,'Surveys','Survey Dashboard','civicrm/campaign?reset=1&subPage=survey',NULL,'manage campaign,administer CiviCampaign','OR',85,1,NULL,1),
+ (87,1,'Petitions','Petition Dashboard','civicrm/campaign?reset=1&subPage=petition',NULL,'manage campaign,administer CiviCampaign','OR',85,1,NULL,2),
+ (88,1,'Campaigns','Campaign Dashboard','civicrm/campaign?reset=1&subPage=campaign',NULL,'manage campaign,administer CiviCampaign','OR',85,1,NULL,3),
+ (89,1,'New Campaign','New Campaign','civicrm/campaign/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',84,1,NULL,2),
+ (90,1,'New Survey','New Survey','civicrm/survey/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',84,1,NULL,3),
+ (91,1,'New Petition','New Petition','civicrm/petition/add?reset=1',NULL,'manage campaign,administer CiviCampaign','OR',84,1,NULL,4),
+ (92,1,'Reserve Respondents','Reserve Respondents','civicrm/survey/search?reset=1&op=reserve',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts','OR',84,1,NULL,5),
+ (93,1,'Interview Respondents','Interview Respondents','civicrm/survey/search?reset=1&op=interview',NULL,'administer CiviCampaign,manage campaign,interview campaign contacts','OR',84,1,NULL,6),
+ (94,1,'Release Respondents','Release Respondents','civicrm/survey/search?reset=1&op=release',NULL,'administer CiviCampaign,manage campaign,release campaign contacts','OR',84,1,NULL,7),
+ (95,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',84,1,1,8),
+ (96,1,'Conduct Survey','Conduct Survey','civicrm/campaign/vote?reset=1',NULL,'administer CiviCampaign,manage campaign,reserve campaign contacts,interview campaign contacts','OR',84,1,NULL,9),
+ (97,1,'GOTV (Voter Tracking)','Voter Listing','civicrm/campaign/gotv?reset=1',NULL,'administer CiviCampaign,manage campaign,release campaign contacts,gotv campaign contacts','OR',84,1,NULL,10),
+ (98,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),
+ (99,1,'Dashboard','Dashboard','civicrm/case?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',98,1,NULL,1),
+ (100,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',98,1,NULL,2),
+ (101,1,'Find Cases','Find Cases','civicrm/case/search?reset=1',NULL,'access my cases and activities,access all cases and activities','OR',98,1,1,3),
+ (102,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',98,1,0,4),
+ (103,1,'Administer','Administer',NULL,'crm-i fa-gears','administer CiviCRM','',NULL,1,NULL,100),
+ (104,1,'Administration Console','Administration Console','civicrm/admin?reset=1',NULL,'administer CiviCRM','',103,1,NULL,1),
+ (105,1,'System Status','System Status','civicrm/a/#/status',NULL,'administer CiviCRM','',104,1,NULL,0),
+ (106,1,'Configuration Checklist','Configuration Checklist','civicrm/admin/configtask?reset=1',NULL,'administer CiviCRM','',104,1,NULL,1),
+ (107,1,'Customize Data and Screens','Customize Data and Screens',NULL,NULL,'administer CiviCRM','',103,1,NULL,3),
+ (108,1,'Custom Fields','Custom Fields','civicrm/admin/custom/group?reset=1',NULL,'administer CiviCRM','',107,1,NULL,1),
+ (109,1,'Profiles','Profiles','civicrm/admin/uf/group?reset=1',NULL,'administer CiviCRM','',107,1,NULL,2),
+ (110,1,'Tags','Tags (Categories)','civicrm/tag?reset=1',NULL,'administer CiviCRM','',107,1,NULL,3),
+ (111,1,'Activity Types','Activity Types','civicrm/admin/options/activity_type?reset=1',NULL,'administer CiviCRM','',107,1,NULL,4),
+ (112,1,'Relationship Types','Relationship Types','civicrm/admin/reltype?reset=1',NULL,'administer CiviCRM','',107,1,NULL,5),
+ (113,1,'Contact Types','Contact Types','civicrm/admin/options/subtype?reset=1',NULL,'administer CiviCRM','',107,1,NULL,6),
+ (114,1,'Display Preferences','Display Preferences','civicrm/admin/setting/preferences/display?reset=1',NULL,'administer CiviCRM','',107,1,NULL,9),
+ (115,1,'Search Preferences','Search Preferences','civicrm/admin/setting/search?reset=1',NULL,'administer CiviCRM','',107,1,NULL,10),
+ (116,1,'Date Preferences','Date Preferences','civicrm/admin/setting/preferences/date?reset=1',NULL,'administer CiviCRM','',107,1,NULL,11),
+ (117,1,'Navigation Menu','Navigation Menu','civicrm/admin/menu?reset=1',NULL,'administer CiviCRM','',107,1,NULL,12),
+ (118,1,'Word Replacements','Word Replacements','civicrm/admin/options/wordreplacements?reset=1',NULL,'administer CiviCRM','',107,1,NULL,13),
+ (119,1,'Dropdown Options','Dropdown Options','civicrm/admin/options?action=browse&reset=1',NULL,'administer CiviCRM','',107,1,NULL,8),
+ (120,1,'Gender Options','Gender Options','civicrm/admin/options/gender?reset=1',NULL,'administer CiviCRM','',119,1,NULL,1),
+ (121,1,'Individual Prefixes (Ms, Mr...)','Individual Prefixes (Ms, Mr...)','civicrm/admin/options/individual_prefix?reset=1',NULL,'administer CiviCRM','',119,1,NULL,2),
+ (122,1,'Individual Suffixes (Jr, Sr...)','Individual Suffixes (Jr, Sr...)','civicrm/admin/options/individual_suffix?reset=1',NULL,'administer CiviCRM','',119,1,NULL,3),
+ (123,1,'Instant Messenger Services','Instant Messenger Services','civicrm/admin/options/instant_messenger_service?reset=1',NULL,'administer CiviCRM','',119,1,NULL,4),
+ (124,1,'Location Types (Home, Work...)','Location Types (Home, Work...)','civicrm/admin/locationType?reset=1',NULL,'administer CiviCRM','',119,1,NULL,5),
+ (125,1,'Mobile Phone Providers','Mobile Phone Providers','civicrm/admin/options/mobile_provider?reset=1',NULL,'administer CiviCRM','',119,1,NULL,6),
+ (126,1,'Phone Types','Phone Types','civicrm/admin/options/phone_type?reset=1',NULL,'administer CiviCRM','',119,1,NULL,7),
+ (127,1,'Website Types','Website Types','civicrm/admin/options/website_type?reset=1',NULL,'administer CiviCRM','',119,1,NULL,8),
+ (128,1,'Communications','Communications',NULL,NULL,'administer CiviCRM','',103,1,NULL,4),
+ (129,1,'Organization Address and Contact Info','Organization Address and Contact Info','civicrm/admin/domain?action=update&reset=1',NULL,'administer CiviCRM','',128,1,NULL,1),
+ (130,1,'FROM Email Addresses','FROM Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',128,1,NULL,2),
+ (131,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',128,1,NULL,3),
+ (132,1,'Schedule Reminders','Schedule Reminders','civicrm/admin/scheduleReminders?reset=1',NULL,'administer CiviCRM','',128,1,NULL,4),
+ (133,1,'Preferred Communication Methods','Preferred Communication Methods','civicrm/admin/options/preferred_communication_method?reset=1',NULL,'administer CiviCRM','',128,1,NULL,5),
+ (134,1,'Label Formats','Label Formats','civicrm/admin/labelFormats?reset=1',NULL,'administer CiviCRM','',128,1,NULL,6),
+ (135,1,'Print Page (PDF) Formats','Print Page (PDF) Formats','civicrm/admin/pdfFormats?reset=1',NULL,'administer CiviCRM','',128,1,NULL,7),
+ (136,1,'Communication Style Options','Communication Style Options','civicrm/admin/options/communication_style?reset=1',NULL,'administer CiviCRM','',128,1,NULL,8),
+ (137,1,'Email Greeting Formats','Email Greeting Formats','civicrm/admin/options/email_greeting?reset=1',NULL,'administer CiviCRM','',128,1,NULL,9),
+ (138,1,'Postal Greeting Formats','Postal Greeting Formats','civicrm/admin/options/postal_greeting?reset=1',NULL,'administer CiviCRM','',128,1,NULL,10),
+ (139,1,'Addressee Formats','Addressee Formats','civicrm/admin/options/addressee?reset=1',NULL,'administer CiviCRM','',128,1,NULL,11),
+ (140,1,'Localization','Localization',NULL,NULL,'administer CiviCRM','',103,1,NULL,6),
+ (141,1,'Languages, Currency, Locations','Languages, Currency, Locations','civicrm/admin/setting/localization?reset=1',NULL,'administer CiviCRM','',140,1,NULL,1),
+ (142,1,'Address Settings','Address Settings','civicrm/admin/setting/preferences/address?reset=1',NULL,'administer CiviCRM','',140,1,NULL,2),
+ (143,1,'Date Formats','Date Formats','civicrm/admin/setting/date?reset=1',NULL,'administer CiviCRM','',140,1,NULL,3),
+ (144,1,'Preferred Language Options','Preferred Language Options','civicrm/admin/options/languages?reset=1',NULL,'administer CiviCRM','',140,1,NULL,4),
+ (145,1,'Users and Permissions','Users and Permissions',NULL,NULL,'administer CiviCRM','',103,1,NULL,7),
+ (146,1,'Permissions (Access Control)','Permissions (Access Control)','civicrm/admin/access?reset=1',NULL,'administer CiviCRM','',145,1,NULL,1),
+ (147,1,'Synchronize Users to Contacts','Synchronize Users to Contacts','civicrm/admin/synchUser?reset=1',NULL,'administer CiviCRM','',145,1,NULL,2),
+ (148,1,'System Settings','System Settings',NULL,NULL,'administer CiviCRM','',103,1,NULL,8),
+ (149,1,'Components','Enable Components','civicrm/admin/setting/component?reset=1',NULL,'administer CiviCRM','',148,1,NULL,1),
+ (150,1,'Extensions','Manage Extensions','civicrm/admin/extensions?reset=1',NULL,'administer CiviCRM','',148,1,1,3),
+ (151,1,'Cleanup Caches and Update Paths','Cleanup Caches and Update Paths','civicrm/admin/setting/updateConfigBackend?reset=1',NULL,'administer CiviCRM','',148,1,NULL,4),
+ (152,1,'CMS Database Integration','CMS Integration','civicrm/admin/setting/uf?reset=1',NULL,'administer CiviCRM','',148,1,NULL,5),
+ (153,1,'Debugging and Error Handling','Debugging and Error Handling','civicrm/admin/setting/debug?reset=1',NULL,'administer CiviCRM','',148,1,NULL,6),
+ (154,1,'Directories','Directories','civicrm/admin/setting/path?reset=1',NULL,'administer CiviCRM','',148,1,NULL,7),
+ (155,1,'Import/Export Mappings','Import/Export Mappings','civicrm/admin/mapping?reset=1',NULL,'administer CiviCRM','',148,1,NULL,8),
+ (156,1,'Mapping and Geocoding','Mapping and Geocoding','civicrm/admin/setting/mapping?reset=1',NULL,'administer CiviCRM','',148,1,NULL,9),
+ (157,1,'Misc (Undelete, PDFs, Limits, Logging, etc.)','misc_admin_settings','civicrm/admin/setting/misc?reset=1',NULL,'administer CiviCRM','',148,1,NULL,10),
+ (158,1,'Multi Site Settings','Multi Site Settings','civicrm/admin/setting/preferences/multisite?reset=1',NULL,'administer CiviCRM','',148,1,NULL,11),
+ (159,1,'Option Groups','Option Groups','civicrm/admin/options?reset=1',NULL,'administer CiviCRM','',148,1,NULL,12),
+ (160,1,'Outbound Email (SMTP/Sendmail)','Outbound Email','civicrm/admin/setting/smtp?reset=1',NULL,'administer CiviCRM','',148,1,NULL,13),
+ (161,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',148,1,NULL,14),
+ (162,1,'Resource URLs','Resource URLs','civicrm/admin/setting/url?reset=1',NULL,'administer CiviCRM','',148,1,NULL,15),
+ (163,1,'Safe File Extensions','Safe File Extensions','civicrm/admin/options/safe_file_extension?reset=1',NULL,'administer CiviCRM','',148,1,NULL,16),
+ (164,1,'Scheduled Jobs','Scheduled Jobs','civicrm/admin/job?reset=1',NULL,'administer CiviCRM','',148,1,NULL,17),
+ (165,1,'SMS Providers','SMS Providers','civicrm/admin/sms/provider?reset=1',NULL,'administer CiviCRM','',148,1,NULL,18),
+ (166,1,'CiviCampaign','CiviCampaign',NULL,NULL,'administer CiviCampaign,administer CiviCRM','AND',103,1,NULL,9),
+ (167,1,'Survey Types','Survey Types','civicrm/admin/campaign/surveyType?reset=1',NULL,'administer CiviCampaign','',166,1,NULL,1),
+ (168,1,'Campaign Types','Campaign Types','civicrm/admin/options/campaign_type?reset=1',NULL,'administer CiviCampaign','',166,1,NULL,2),
+ (169,1,'Campaign Status','Campaign Status','civicrm/admin/options/campaign_status?reset=1',NULL,'administer CiviCampaign','',166,1,NULL,3),
+ (170,1,'Engagement Index','Engagement Index','civicrm/admin/options/engagement_index?reset=1',NULL,'administer CiviCampaign','',166,1,NULL,4),
+ (171,1,'CiviCampaign Component Settings','CiviCampaign Component Settings','civicrm/admin/setting/preferences/campaign?reset=1',NULL,'administer CiviCampaign','',166,1,NULL,5),
+ (172,1,'CiviCase','CiviCase',NULL,NULL,'administer CiviCase',NULL,103,1,NULL,10),
+ (173,1,'CiviCase Settings','CiviCase Settings','civicrm/admin/setting/case?reset=1',NULL,'administer CiviCase',NULL,172,1,NULL,1),
+ (174,1,'Case Types','Case Types','civicrm/a/#/caseType',NULL,'administer CiviCase',NULL,172,1,NULL,2),
+ (175,1,'Redaction Rules','Redaction Rules','civicrm/admin/options/redaction_rule?reset=1',NULL,'administer CiviCase',NULL,172,1,NULL,3),
+ (176,1,'Case Statuses','Case Statuses','civicrm/admin/options/case_status?reset=1',NULL,'administer CiviCase',NULL,172,1,NULL,4),
+ (177,1,'Encounter Medium','Encounter Medium','civicrm/admin/options/encounter_medium?reset=1',NULL,'administer CiviCase',NULL,172,1,NULL,5),
+ (178,1,'CiviContribute','CiviContribute',NULL,NULL,'access CiviContribute,administer CiviCRM','AND',103,1,NULL,11),
+ (179,1,'New Contribution Page','New Contribution Page','civicrm/admin/contribute?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,6),
+ (180,1,'Manage Contribution Pages','Manage Contribution Pages','civicrm/admin/contribute?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,1,7),
+ (181,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=contribute',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,8),
+ (182,1,'Premiums (Thank-you Gifts)','Premiums','civicrm/admin/contribute/managePremiums?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,1,9),
+ (183,1,'Financial Types','Financial Types','civicrm/admin/financial/financialType?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,10),
+ (184,1,'Financial Accounts','Financial Accounts','civicrm/admin/financial/financialAccount?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,11),
+ (185,1,'Payment Methods','Payment Instruments','civicrm/admin/options/payment_instrument?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,12),
+ (186,1,'Accepted Credit Cards','Accepted Credit Cards','civicrm/admin/options/accept_creditcard?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,13),
+ (187,1,'Soft Credit Types','Soft Credit Types','civicrm/admin/options/soft_credit_type?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,1,14),
+ (188,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviContribute,administer CiviCRM','AND',178,0,NULL,15),
+ (189,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviContribute,administer CiviCRM','AND',178,1,NULL,16),
+ (190,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',178,1,NULL,17),
+ (191,1,'CiviContribute Component Settings','CiviContribute Component Settings','civicrm/admin/setting/preferences/contribute?reset=1',NULL,'administer CiviCRM','',178,1,NULL,18),
+ (192,1,'CiviEvent','CiviEvent',NULL,NULL,'access CiviEvent,administer CiviCRM','AND',103,1,NULL,12),
+ (193,1,'New Event','New Event','civicrm/event/add?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,1),
+ (194,1,'Manage Events','Manage Events','civicrm/event/manage?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,1,2),
+ (195,1,'Personal Campaign Pages','Personal Campaign Pages','civicrm/admin/pcp?reset=1&page_type=event',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,1,3),
+ (196,1,'Event Templates','Event Templates','civicrm/admin/eventTemplate?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,1,4),
+ (197,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviEvent,administer CiviCRM','AND',192,0,NULL,5),
+ (198,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,1,6),
+ (199,1,'Event Types','Event Types','civicrm/admin/options/event_type?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,7),
+ (200,1,'Participant Statuses','Participant Statuses','civicrm/admin/participant_status?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,8),
+ (201,1,'Participant Roles','Participant Roles','civicrm/admin/options/participant_role?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,9),
+ (202,1,'Participant Listing Options','Participant Listing Options','civicrm/admin/options/participant_listing?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,10),
+ (203,1,'Event Name Badge Layouts','Event Name Badge Layouts','civicrm/admin/badgelayout?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,11),
+ (204,1,'Payment Processors','Payment Processors','civicrm/admin/paymentProcessor?reset=1',NULL,'administer CiviCRM','',192,1,NULL,12),
+ (205,1,'CiviEvent Component Settings','CiviEvent Component Settings','civicrm/admin/setting/preferences/event?reset=1',NULL,'access CiviEvent,administer CiviCRM','AND',192,1,NULL,13),
+ (206,1,'CiviMail','CiviMail',NULL,NULL,'access CiviMail,administer CiviCRM','AND',103,1,NULL,14),
+ (207,1,'Headers, Footers, and Automated Messages','Headers, Footers, and Automated Messages','civicrm/admin/component?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',206,1,NULL,1),
+ (208,1,'Message Templates','Message Templates','civicrm/admin/messageTemplates?reset=1',NULL,'administer CiviCRM','',206,1,NULL,2),
+ (209,1,'From Email Addresses','From Email Addresses','civicrm/admin/options/from_email_address?reset=1',NULL,'administer CiviCRM','',206,1,NULL,3),
+ (210,1,'Mail Accounts','Mail Accounts','civicrm/admin/mailSettings?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',206,1,NULL,4),
+ (211,1,'Mailer Settings','Mailer Settings','civicrm/admin/mail?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',206,1,NULL,5),
+ (212,1,'CiviMail Component Settings','CiviMail Component Settings','civicrm/admin/setting/preferences/mailing?reset=1',NULL,'access CiviMail,administer CiviCRM','AND',206,1,NULL,6),
+ (213,1,'CiviMember','CiviMember',NULL,NULL,'access CiviMember,administer CiviCRM','AND',103,1,NULL,15),
+ (214,1,'Membership Types','Membership Types','civicrm/admin/member/membershipType?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',213,1,NULL,1),
+ (215,1,'Membership Status Rules','Membership Status Rules','civicrm/admin/member/membershipStatus?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',213,1,1,2),
+ (216,1,'New Price Set','New Price Set','civicrm/admin/price?reset=1&action=add',NULL,'access CiviMember,administer CiviCRM','AND',213,1,NULL,3),
+ (217,1,'Manage Price Sets','Manage Price Sets','civicrm/admin/price?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',213,1,NULL,4),
+ (218,1,'CiviMember Component Settings','CiviMember Component Settings','civicrm/admin/setting/preferences/member?reset=1',NULL,'access CiviMember,administer CiviCRM','AND',213,1,NULL,5),
+ (219,1,'CiviReport','CiviReport',NULL,NULL,'access CiviReport,administer CiviCRM','AND',103,1,NULL,16),
+ (220,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',219,1,NULL,1),
+ (221,1,'Create New Report from Template','Create New Report from Template','civicrm/admin/report/template/list?reset=1',NULL,'administer Reports','',219,1,NULL,2),
+ (222,1,'Manage Templates','Manage Templates','civicrm/admin/report/options/report_template?reset=1',NULL,'administer Reports','',219,1,NULL,3),
+ (223,1,'Register Report','Register Report','civicrm/admin/report/register?reset=1',NULL,'administer Reports','',219,1,NULL,4),
+ (224,1,'Support','Support',NULL,'crm-i fa-life-ring',NULL,'',NULL,1,NULL,110),
+ (225,1,'Get started','Get started','https://civicrm.org/get-started?src=iam',NULL,NULL,'AND',224,1,NULL,1),
+ (226,1,'Documentation','Documentation','https://civicrm.org/documentation?src=iam',NULL,NULL,'AND',224,1,NULL,2),
+ (227,1,'Ask a question','Ask a question','https://civicrm.org/ask-a-question?src=iam',NULL,NULL,'AND',224,1,NULL,3),
+ (228,1,'Get expert help','Get expert help','https://civicrm.org/experts?src=iam',NULL,NULL,'AND',224,1,NULL,4),
+ (229,1,'About CiviCRM','About CiviCRM','https://civicrm.org/about?src=iam',NULL,NULL,'AND',224,1,1,5),
+ (230,1,'Register your site','Register your site','https://civicrm.org/register-your-site?src=iam&sid={sid}',NULL,NULL,'AND',224,1,NULL,6),
+ (231,1,'Join CiviCRM','Join CiviCRM','https://civicrm.org/become-a-member?src=iam&sid={sid}',NULL,NULL,'AND',224,1,NULL,7),
+ (232,1,'Developer','Developer',NULL,NULL,'administer CiviCRM','',224,1,1,8),
+ (233,1,'Api Explorer v3','API Explorer','civicrm/api3',NULL,'administer CiviCRM','',232,1,NULL,1),
+ (234,1,'Api Explorer v4','Api Explorer v4','civicrm/api4#/explorer',NULL,'administer CiviCRM','',232,1,NULL,2),
+ (235,1,'Developer Docs','Developer Docs','https://civicrm.org/developer-documentation?src=iam',NULL,'administer CiviCRM','',232,1,NULL,3),
+ (236,1,'Reports','Reports',NULL,'crm-i fa-bar-chart','access CiviReport','',NULL,1,NULL,95),
+ (237,1,'Contact Reports','Contact Reports','civicrm/report/list?compid=99&reset=1',NULL,'administer CiviCRM','',236,1,0,1),
+ (238,1,'Contribution Reports','Contribution Reports','civicrm/report/list?compid=2&reset=1',NULL,'access CiviContribute','',236,1,0,2),
+ (239,1,'Pledge Reports','Pledge Reports','civicrm/report/list?compid=6&reset=1',NULL,'access CiviPledge','',236,1,0,3),
+ (240,1,'Event Reports','Event Reports','civicrm/report/list?compid=1&reset=1',NULL,'access CiviEvent','',236,1,0,4),
+ (241,1,'Mailing Reports','Mailing Reports','civicrm/report/list?compid=4&reset=1',NULL,'access CiviMail','',236,1,0,5),
+ (242,1,'Membership Reports','Membership Reports','civicrm/report/list?compid=3&reset=1',NULL,'access CiviMember','',236,1,0,6),
+ (243,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',236,1,0,7),
+ (244,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',236,1,0,8),
+ (245,1,'All Reports','All Reports','civicrm/report/list?reset=1',NULL,'access CiviReport','',236,1,1,10),
+ (246,1,'My Reports','My Reports','civicrm/report/list?myreports=1&reset=1',NULL,'access CiviReport','',236,1,1,11),
+ (247,1,'New Student','New Student','civicrm/contact/add?ct=Individual&cst=Student&reset=1',NULL,'add contacts','',14,1,NULL,1),
+ (248,1,'New Parent','New Parent','civicrm/contact/add?ct=Individual&cst=Parent&reset=1',NULL,'add contacts','',14,1,NULL,2),
+ (249,1,'New Staff','New Staff','civicrm/contact/add?ct=Individual&cst=Staff&reset=1',NULL,'add contacts','',14,1,NULL,3),
+ (250,1,'New Team','New Team','civicrm/contact/add?ct=Organization&cst=Team&reset=1',NULL,'add contacts','',16,1,NULL,1),
+ (251,1,'New Sponsor','New Sponsor','civicrm/contact/add?ct=Organization&cst=Sponsor&reset=1',NULL,'add contacts','',16,1,NULL,2),
+ (252,1,'Custom Searches','Custom Searches','civicrm/contact/search/custom/list?reset=1',NULL,NULL,'OR',2,1,2,12),
+ (253,1,'Manage Custom Searches','Manage Custom Searches','civicrm/admin/options/custom_search?reset=1',NULL,'administer CiviCRM','OR',107,1,0,14);
 /*!40000 ALTER TABLE `civicrm_navigation` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -5561,26 +5819,26 @@ 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`, `note_date`, `created_date`, `modified_date`, `subject`, `privacy`) VALUES
- (1,'civicrm_contact',11,'Get the registration done for NGO status',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2021-09-17 16:44:45',NULL,'0'),
- (2,'civicrm_contact',40,'Organize the Terry Fox run',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2022-05-29 05:54:46',NULL,'0'),
- (3,'civicrm_contact',191,'Chart out route map for next 10k run',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2022-01-10 11:58:19',NULL,'0'),
- (4,'civicrm_contact',114,'Invite members for the Steve Prefontaine 10k dream run',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2022-04-02 14:09:16',NULL,'0'),
- (5,'civicrm_contact',32,'Get the registration done for NGO status',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2022-06-29 23:05:22',NULL,'0'),
- (6,'civicrm_contact',90,'Organize the Terry Fox run',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2022-06-12 08:49:50',NULL,'0'),
- (7,'civicrm_contact',117,'Contact the Commissioner of Charities',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2022-02-20 10:32:04',NULL,'0'),
- (8,'civicrm_contact',148,'Send newsletter for April 2005',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2021-10-15 16:28:37',NULL,'0'),
- (9,'civicrm_contact',118,'Organize the Terry Fox run',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2022-04-08 18:57:20',NULL,'0'),
- (10,'civicrm_contact',197,'Get the registration done for NGO status',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2021-08-10 01:50:22',NULL,'0'),
- (11,'civicrm_contact',16,'Organize the Terry Fox run',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2022-06-16 02:05:09',NULL,'0'),
- (12,'civicrm_contact',64,'Send reminder for annual dinner',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2022-04-06 21:50:16',NULL,'0'),
- (13,'civicrm_contact',147,'Arrange for cricket match with Sunil Gavaskar',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2022-05-31 14:26:31',NULL,'0'),
- (14,'civicrm_contact',70,'Send newsletter for April 2005',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2022-06-06 14:10:27',NULL,'0'),
- (15,'civicrm_contact',147,'Arrange for cricket match with Sunil Gavaskar',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2021-10-21 07:58:05',NULL,'0'),
- (16,'civicrm_contact',12,'Arrange collection of funds from members',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2021-11-27 10:23:33',NULL,'0'),
- (17,'civicrm_contact',117,'Arrange for cricket match with Sunil Gavaskar',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2021-09-16 14:24:16',NULL,'0'),
- (18,'civicrm_contact',129,'Arrange collection of funds from members',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2022-05-31 12:19:52',NULL,'0'),
- (19,'civicrm_contact',116,'Chart out route map for next 10k run',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2021-09-09 16:04:45',NULL,'0'),
- (20,'civicrm_contact',140,'Arrange collection of funds from members',1,'2022-08-09 18:17:33','2022-08-09 18:17:33','2021-08-29 15:40:12',NULL,'0');
+ (1,'civicrm_contact',77,'Contact the Commissioner of Charities',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-01-02 21:52:04',NULL,'0'),
+ (2,'civicrm_contact',120,'Send newsletter for April 2005',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-04-20 10:31:23',NULL,'0'),
+ (3,'civicrm_contact',134,'Send newsletter for April 2005',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2021-11-14 08:31:03',NULL,'0'),
+ (4,'civicrm_contact',4,'Arrange collection of funds from members',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-07-27 23:56:29',NULL,'0'),
+ (5,'civicrm_contact',94,'Reminder screening of \"Black\" on next Friday',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-05-09 07:35:52',NULL,'0'),
+ (6,'civicrm_contact',143,'Organize the Terry Fox run',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-03-13 11:44:46',NULL,'0'),
+ (7,'civicrm_contact',144,'Get the registration done for NGO status',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-03-28 11:49:55',NULL,'0'),
+ (8,'civicrm_contact',74,'Arrange for cricket match with Sunil Gavaskar',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-08-31 07:14:42',NULL,'0'),
+ (9,'civicrm_contact',139,'Get the registration done for NGO status',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2021-10-04 19:20:38',NULL,'0'),
+ (10,'civicrm_contact',6,'Chart out route map for next 10k run',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-08-20 16:12:46',NULL,'0'),
+ (11,'civicrm_contact',56,'Chart out route map for next 10k run',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-07-08 13:30:02',NULL,'0'),
+ (12,'civicrm_contact',120,'Contact the Commissioner of Charities',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-01-05 13:13:45',NULL,'0'),
+ (13,'civicrm_contact',186,'Send reminder for annual dinner',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2021-12-19 19:25:56',NULL,'0'),
+ (14,'civicrm_contact',135,'Organize the Terry Fox run',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-09-03 21:42:23',NULL,'0'),
+ (15,'civicrm_contact',151,'Arrange collection of funds from members',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-08-23 15:23:47',NULL,'0'),
+ (16,'civicrm_contact',75,'Connect for presentation',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2021-12-25 04:05:26',NULL,'0'),
+ (17,'civicrm_contact',57,'Arrange for cricket match with Sunil Gavaskar',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2021-10-09 20:14:02',NULL,'0'),
+ (18,'civicrm_contact',144,'Connect for presentation',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-04-29 16:18:42',NULL,'0'),
+ (19,'civicrm_contact',142,'Get the registration done for NGO status',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2022-03-02 22:23:25',NULL,'0'),
+ (20,'civicrm_contact',27,'Reminder screening of \"Black\" on next Friday',1,'2022-10-01 23:23:02','2022-10-01 23:23:02','2021-12-22 21:15:36',NULL,'0');
 /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -6561,18 +6819,18 @@ INSERT INTO `civicrm_option_value` (`id`, `option_group_id`, `label`, `value`, `
  (853,95,'Matched Gift','9','matched_gift',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL),
  (854,95,'Personal Campaign Page','10','pcp',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),
  (855,95,'Gift','11','gift',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL),
- (856,96,'Contacts','Contact','Contacts',NULL,NULL,0,1,'',0,0,1,NULL,NULL,NULL,NULL,NULL),
- (857,96,'Relationships','Relationship','Relationships',NULL,NULL,0,1,'',0,0,1,NULL,NULL,NULL,NULL,NULL),
- (858,96,'Activities','Activity','Activities',NULL,NULL,0,1,'',0,0,1,NULL,NULL,NULL,NULL,NULL),
- (859,96,'Notes','Note','Notes',NULL,NULL,0,1,'',0,0,1,NULL,NULL,NULL,NULL,NULL),
- (860,96,'Groups','Group','Groups',NULL,NULL,0,1,'',0,0,1,NULL,NULL,NULL,NULL,NULL),
- (861,96,'Cases','Case','Cases',NULL,NULL,0,1,'',0,0,1,NULL,NULL,NULL,NULL,NULL),
- (862,96,'Contributions','Contribution','Contributions',NULL,NULL,0,1,'',0,0,1,NULL,NULL,NULL,NULL,NULL),
- (863,96,'Participants','Participant','Participants',NULL,NULL,0,1,'',0,0,1,NULL,NULL,NULL,NULL,NULL),
- (864,96,'Memberships','Membership','Memberships',NULL,NULL,0,1,'',0,0,1,NULL,NULL,NULL,NULL,NULL),
- (865,96,'Pledges','Pledge','Pledges',NULL,NULL,0,1,'',0,0,1,NULL,NULL,NULL,NULL,NULL),
- (866,96,'Events','Event','Events',NULL,NULL,0,1,'',0,0,1,NULL,NULL,NULL,NULL,NULL),
- (867,96,'Campaigns','Campaign','Campaigns',NULL,NULL,0,1,'',0,0,1,NULL,NULL,NULL,NULL,NULL),
+ (856,96,'Contacts','Contact','Contact',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL),
+ (857,96,'Relationships','Relationship','Relationship',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL),
+ (858,96,'Activities','Activity','Activity',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL),
+ (859,96,'Notes','Note','Note',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL),
+ (860,96,'Groups','Group','Group',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL),
+ (861,96,'Cases','Case','Case',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL),
+ (862,96,'Contributions','Contribution','Contribution',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL),
+ (863,96,'Participants','Participant','Participant',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL),
+ (864,96,'Memberships','Membership','Membership',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL),
+ (865,96,'Pledges','Pledge','Pledge',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL),
+ (866,96,'Events','Event','Event',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL),
+ (867,96,'Campaigns','Campaign','Campaign',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL),
  (868,2,'Interview','55','Interview',NULL,0,NULL,55,'Conduct a phone or in person interview.',0,0,1,NULL,NULL,NULL,'fa-comment-o',NULL),
  (869,8,'Advisory Board','3','Advisory Board',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_option_value` ENABLE KEYS */;
@@ -6584,57 +6842,57 @@ 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,182,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),
- (2,36,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,138,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,57,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,105,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),
- (6,54,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,151,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,93,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,104,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,83,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),
- (11,157,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,127,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,143,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,125,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,130,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,152,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,139,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,12,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,34,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,86,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,92,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,65,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,183,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,67,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,59,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,150,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),
- (27,101,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,114,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,126,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,141,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,119,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,5,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),
- (33,90,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,99,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,26,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,20,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,70,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,179,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,154,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,72,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,40,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,165,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,23,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,14,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,25,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,174,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,190,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,46,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,37,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,3,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`, `created_id`) VALUES
+ (1,132,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (2,16,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (3,154,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,NULL),
+ (4,113,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (5,9,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (6,62,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,NULL),
+ (7,21,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (8,11,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (9,12,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,NULL),
+ (10,25,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (11,18,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (12,83,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,NULL),
+ (13,160,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (14,141,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (15,143,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,NULL),
+ (16,109,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (17,100,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (18,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,NULL),
+ (19,48,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (20,94,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (21,41,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,NULL),
+ (22,177,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (23,17,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (24,172,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,NULL),
+ (25,188,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,NULL),
+ (26,89,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (27,74,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (28,170,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,NULL),
+ (29,150,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (30,24,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (31,99,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,NULL),
+ (32,108,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (33,133,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (34,22,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,NULL),
+ (35,129,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (36,84,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (37,31,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,NULL),
+ (38,70,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (39,58,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (40,38,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,NULL),
+ (41,192,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (42,95,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (43,166,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,NULL),
+ (44,93,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (45,28,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (46,39,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,NULL),
+ (47,110,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL),
+ (48,3,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,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,NULL),
+ (50,29,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,NULL);
 /*!40000 ALTER TABLE `civicrm_participant` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -6645,56 +6903,56 @@ 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,50,63),
- (2,32,64),
- (3,18,65),
- (4,44,66),
- (5,36,67),
- (6,43,68),
- (7,45,69),
- (8,35,70),
- (9,19,71),
- (10,2,72),
- (11,49,73),
- (12,41,74),
- (13,48,75),
- (14,6,76),
- (15,4,77),
- (16,25,78),
- (17,22,79),
- (18,24,80),
- (19,37,81),
- (20,40,82),
- (21,10,83),
- (22,20,84),
- (23,33,85),
- (24,21,86),
- (25,8,87),
- (26,34,88),
+ (1,1,63),
+ (2,2,64),
+ (3,3,65),
+ (4,4,66),
+ (5,5,67),
+ (6,6,68),
+ (7,7,69),
+ (8,8,70),
+ (9,9,71),
+ (10,10,72),
+ (11,11,73),
+ (12,12,74),
+ (13,13,75),
+ (14,14,76),
+ (15,15,77),
+ (16,16,78),
+ (17,17,79),
+ (18,18,80),
+ (19,19,81),
+ (20,20,82),
+ (21,21,83),
+ (22,22,84),
+ (23,23,85),
+ (24,24,86),
+ (25,25,87),
+ (26,26,88),
  (27,27,89),
- (28,9,90),
- (29,5,91),
- (30,28,92),
+ (28,28,90),
+ (29,29,91),
+ (30,30,92),
  (31,31,93),
- (32,14,94),
- (33,29,95),
- (34,12,96),
- (35,15,97),
- (36,3,98),
- (37,17,99),
- (38,30,100),
- (39,13,101),
- (40,26,102),
- (41,7,103),
- (42,16,104),
- (43,39,105),
- (44,11,106),
- (45,42,107),
+ (32,32,94),
+ (33,33,95),
+ (34,34,96),
+ (35,35,97),
+ (36,36,98),
+ (37,37,99),
+ (38,38,100),
+ (39,39,101),
+ (40,40,102),
+ (41,41,103),
+ (42,42,104),
+ (43,43,105),
+ (44,44,106),
+ (45,45,107),
  (46,46,108),
- (47,38,109),
- (48,1,110),
- (49,23,111),
- (50,47,112);
+ (47,47,109),
+ (48,48,110),
+ (49,49,111),
+ (50,50,112);
 /*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -6746,9 +7004,8 @@ INSERT INTO `civicrm_payment_processor_type` (`id`, `name`, `title`, `descriptio
  (4,'AuthNet','Authorize.Net',NULL,1,0,'API Login','Payment Key','MD5 Hash',NULL,'Payment_AuthorizeNet','https://secure2.authorize.net/gateway/transact.dll',NULL,'https://api2.authorize.net/xml/v1/request.api',NULL,'https://test.authorize.net/gateway/transact.dll',NULL,'https://apitest.authorize.net/xml/v1/request.api',NULL,1,1,1,1),
  (5,'PayJunction','PayJunction',NULL,0,0,'User Name','Password',NULL,NULL,'Payment_PayJunction','https://payjunction.com/quick_link',NULL,NULL,NULL,'https://www.payjunctionlabs.com/quick_link',NULL,NULL,NULL,1,1,1,1),
  (6,'Dummy','Dummy Payment Processor',NULL,1,1,'User Name',NULL,NULL,NULL,'Payment_Dummy',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,1,1),
- (7,'Elavon','Elavon Payment Processor','Elavon / Nova Virtual Merchant',0,0,'SSL Merchant ID ','SSL User ID','SSL PIN',NULL,'Payment_Elavon','https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,1,0,1,1),
- (8,'Realex','Realex Payment',NULL,0,0,'Merchant ID','Password',NULL,'Account','Payment_Realex','https://epage.payandshop.com/epage.cgi',NULL,NULL,NULL,'https://epage.payandshop.com/epage-remote.cgi',NULL,NULL,NULL,1,0,1,1),
- (9,'FirstData','FirstData (aka linkpoint)','FirstData (aka linkpoint)',0,0,'Store name','certificate path',NULL,NULL,'Payment_FirstData','https://secure.linkpt.net',NULL,NULL,NULL,'https://staging.linkpt.net',NULL,NULL,NULL,1,0,1,1);
+ (7,'Realex','Realex Payment',NULL,0,0,'Merchant ID','Password',NULL,'Account','Payment_Realex','https://epage.payandshop.com/epage.cgi',NULL,NULL,NULL,'https://epage.payandshop.com/epage-remote.cgi',NULL,NULL,NULL,1,0,1,1),
+ (8,'FirstData','FirstData (aka linkpoint)','FirstData (aka linkpoint)',0,0,'Store name','certificate path',NULL,NULL,'Payment_FirstData','https://secure.linkpt.net',NULL,NULL,NULL,'https://staging.linkpt.net',NULL,NULL,NULL,1,0,1,1);
 /*!40000 ALTER TABLE `civicrm_payment_processor_type` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -6768,7 +7025,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,72,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);
+ (1,27,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;
 
@@ -6790,174 +7047,162 @@ 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,36,1,1,0,NULL,'(899) 501-5183',NULL,'8995015183',2),
- (2,72,1,1,0,NULL,'213-9601',NULL,'2139601',1),
- (3,72,1,0,0,NULL,'232-2166',NULL,'2322166',1),
- (4,65,1,1,0,NULL,'791-9598',NULL,'7919598',2),
- (5,195,1,1,0,NULL,'571-7535',NULL,'5717535',1),
- (6,14,1,1,0,NULL,'(834) 667-2643',NULL,'8346672643',2),
- (7,14,1,0,0,NULL,'(369) 525-9154',NULL,'3695259154',2),
- (8,121,1,1,0,NULL,'560-2242',NULL,'5602242',2),
- (9,112,1,1,0,NULL,'(217) 735-9936',NULL,'2177359936',1),
- (10,112,1,0,0,NULL,'(825) 669-3397',NULL,'8256693397',2),
- (11,68,1,1,0,NULL,'351-9665',NULL,'3519665',2),
- (12,142,1,1,0,NULL,'(871) 588-2342',NULL,'8715882342',2),
- (13,142,1,0,0,NULL,'419-6322',NULL,'4196322',1),
- (14,165,1,1,0,NULL,'756-4726',NULL,'7564726',2),
- (15,165,1,0,0,NULL,'809-3268',NULL,'8093268',1),
- (16,52,1,1,0,NULL,'(223) 863-3244',NULL,'2238633244',2),
- (17,128,1,1,0,NULL,'(559) 417-9639',NULL,'5594179639',2),
- (18,106,1,1,0,NULL,'780-8586',NULL,'7808586',1),
- (19,46,1,1,0,NULL,'(464) 583-5806',NULL,'4645835806',2),
- (20,46,1,0,0,NULL,'440-4175',NULL,'4404175',2),
- (21,159,1,1,0,NULL,'261-6932',NULL,'2616932',1),
- (22,32,1,1,0,NULL,'554-6999',NULL,'5546999',1),
- (23,32,1,0,0,NULL,'(201) 854-8580',NULL,'2018548580',2),
- (24,51,1,1,0,NULL,'771-3568',NULL,'7713568',2),
- (25,51,1,0,0,NULL,'268-9118',NULL,'2689118',2),
- (26,138,1,1,0,NULL,'431-8752',NULL,'4318752',1),
- (27,120,1,1,0,NULL,'(690) 494-9786',NULL,'6904949786',2),
- (28,91,1,1,0,NULL,'433-6991',NULL,'4336991',2),
- (29,91,1,0,0,NULL,'(287) 586-6284',NULL,'2875866284',1),
- (30,90,1,1,0,NULL,'(689) 469-4685',NULL,'6894694685',1),
- (31,108,1,1,0,NULL,'(727) 451-1992',NULL,'7274511992',2),
- (32,108,1,0,0,NULL,'(789) 707-6815',NULL,'7897076815',2),
- (33,78,1,1,0,NULL,'234-7590',NULL,'2347590',2),
- (34,10,1,1,0,NULL,'(888) 387-4951',NULL,'8883874951',2),
- (35,10,1,0,0,NULL,'498-6702',NULL,'4986702',1),
- (36,185,1,1,0,NULL,'235-5104',NULL,'2355104',1),
- (37,185,1,0,0,NULL,'(840) 386-8063',NULL,'8403868063',1),
- (38,24,1,1,0,NULL,'(356) 337-1720',NULL,'3563371720',1),
- (39,155,1,1,0,NULL,'(659) 753-9566',NULL,'6597539566',2),
- (40,145,1,1,0,NULL,'(324) 800-6845',NULL,'3248006845',1),
- (41,184,1,1,0,NULL,'351-1621',NULL,'3511621',1),
- (42,184,1,0,0,NULL,'(399) 807-6074',NULL,'3998076074',1),
- (43,197,1,1,0,NULL,'(769) 661-9042',NULL,'7696619042',2),
- (44,2,1,1,0,NULL,'(650) 688-8457',NULL,'6506888457',1),
- (45,60,1,1,0,NULL,'(280) 744-6515',NULL,'2807446515',1),
- (46,170,1,1,0,NULL,'(217) 748-9463',NULL,'2177489463',1),
- (47,170,1,0,0,NULL,'204-2330',NULL,'2042330',2),
- (48,100,1,1,0,NULL,'651-6080',NULL,'6516080',2),
- (49,12,1,1,0,NULL,'(358) 640-8641',NULL,'3586408641',1),
- (50,133,1,1,0,NULL,'(210) 860-6296',NULL,'2108606296',2),
- (51,133,1,0,0,NULL,'790-9940',NULL,'7909940',2),
- (52,34,1,1,0,NULL,'(788) 469-4457',NULL,'7884694457',2),
- (53,34,1,0,0,NULL,'(356) 712-1643',NULL,'3567121643',1),
- (54,169,1,1,0,NULL,'665-5656',NULL,'6655656',1),
- (55,57,1,1,0,NULL,'(689) 865-9629',NULL,'6898659629',2),
- (56,57,1,0,0,NULL,'408-9964',NULL,'4089964',1),
- (57,164,1,1,0,NULL,'580-8948',NULL,'5808948',1),
- (58,164,1,0,0,NULL,'731-6289',NULL,'7316289',1),
- (59,150,1,1,0,NULL,'(421) 355-6323',NULL,'4213556323',1),
- (60,95,1,1,0,NULL,'638-9361',NULL,'6389361',1),
- (61,29,1,1,0,NULL,'(692) 618-5749',NULL,'6926185749',2),
- (62,193,1,1,0,NULL,'(612) 574-1829',NULL,'6125741829',1),
- (63,193,1,0,0,NULL,'(711) 417-1442',NULL,'7114171442',2),
- (64,50,1,1,0,NULL,'261-1125',NULL,'2611125',2),
- (65,50,1,0,0,NULL,'(427) 439-1800',NULL,'4274391800',1),
- (66,173,1,1,0,NULL,'(380) 203-8249',NULL,'3802038249',1),
- (67,173,1,0,0,NULL,'797-8809',NULL,'7978809',2),
- (68,144,1,1,0,NULL,'783-3709',NULL,'7833709',1),
- (69,38,1,1,0,NULL,'(657) 735-3855',NULL,'6577353855',1),
- (70,171,1,1,0,NULL,'(258) 863-9590',NULL,'2588639590',1),
- (71,104,1,1,0,NULL,'(316) 432-6091',NULL,'3164326091',2),
- (72,104,1,0,0,NULL,'(219) 837-3614',NULL,'2198373614',2),
- (73,153,1,1,0,NULL,'(899) 889-5118',NULL,'8998895118',1),
- (74,153,1,0,0,NULL,'630-8844',NULL,'6308844',2),
- (75,115,1,1,0,NULL,'(738) 828-8424',NULL,'7388288424',2),
- (76,182,1,1,0,NULL,'(767) 559-1265',NULL,'7675591265',1),
- (77,97,1,1,0,NULL,'859-8076',NULL,'8598076',2),
- (78,97,1,0,0,NULL,'806-6816',NULL,'8066816',1),
- (79,84,1,1,0,NULL,'559-2736',NULL,'5592736',1),
- (80,134,1,1,0,NULL,'803-8785',NULL,'8038785',1),
- (81,134,1,0,0,NULL,'465-6576',NULL,'4656576',1),
- (82,109,1,1,0,NULL,'(452) 818-6968',NULL,'4528186968',1),
- (83,109,1,0,0,NULL,'(331) 566-8689',NULL,'3315668689',1),
- (84,162,1,1,0,NULL,'547-6813',NULL,'5476813',2),
- (85,152,1,1,0,NULL,'596-6339',NULL,'5966339',2),
- (86,152,1,0,0,NULL,'618-1665',NULL,'6181665',2),
- (87,44,1,1,0,NULL,'(638) 667-9119',NULL,'6386679119',1),
- (88,181,1,1,0,NULL,'(824) 463-5116',NULL,'8244635116',1),
- (89,137,1,1,0,NULL,'(816) 666-3414',NULL,'8166663414',1),
- (90,137,1,0,0,NULL,'(657) 884-3289',NULL,'6578843289',1),
- (91,200,1,1,0,NULL,'644-1250',NULL,'6441250',2),
- (92,200,1,0,0,NULL,'(835) 577-5857',NULL,'8355775857',2),
- (93,188,1,1,0,NULL,'599-6060',NULL,'5996060',1),
- (94,188,1,0,0,NULL,'462-1787',NULL,'4621787',2),
- (95,102,1,1,0,NULL,'842-1015',NULL,'8421015',1),
- (96,59,1,1,0,NULL,'(815) 213-3266',NULL,'8152133266',2),
- (97,59,1,0,0,NULL,'(722) 389-3696',NULL,'7223893696',1),
- (98,151,1,1,0,NULL,'636-3308',NULL,'6363308',2),
- (99,198,1,1,0,NULL,'(837) 848-8142',NULL,'8378488142',2),
- (100,198,1,0,0,NULL,'801-4447',NULL,'8014447',1),
- (101,49,1,1,0,NULL,'683-4147',NULL,'6834147',1),
- (102,49,1,0,0,NULL,'593-3338',NULL,'5933338',1),
- (103,16,1,1,0,NULL,'604-7102',NULL,'6047102',1),
- (104,113,1,1,0,NULL,'244-2848',NULL,'2442848',2),
- (105,23,1,1,0,NULL,'(785) 497-8812',NULL,'7854978812',1),
- (106,23,1,0,0,NULL,'(782) 873-5795',NULL,'7828735795',1),
- (107,119,1,1,0,NULL,'(368) 781-3428',NULL,'3687813428',1),
- (108,119,1,0,0,NULL,'(304) 619-5846',NULL,'3046195846',2),
- (109,186,1,1,0,NULL,'596-5529',NULL,'5965529',2),
- (110,186,1,0,0,NULL,'(594) 793-6070',NULL,'5947936070',2),
- (111,54,1,1,0,NULL,'(279) 600-6885',NULL,'2796006885',1),
- (112,123,1,1,0,NULL,'780-7231',NULL,'7807231',2),
- (113,179,1,1,0,NULL,'(405) 626-1911',NULL,'4056261911',2),
- (114,129,1,1,0,NULL,'459-8837',NULL,'4598837',2),
- (115,53,1,1,0,NULL,'781-2019',NULL,'7812019',1),
- (116,96,1,1,0,NULL,'631-3675',NULL,'6313675',2),
- (117,96,1,0,0,NULL,'(888) 577-3420',NULL,'8885773420',1),
- (118,172,1,1,0,NULL,'419-7713',NULL,'4197713',1),
- (119,172,1,0,0,NULL,'(341) 781-4056',NULL,'3417814056',1),
- (120,30,1,1,0,NULL,'630-8768',NULL,'6308768',1),
- (121,56,1,1,0,NULL,'(617) 869-6404',NULL,'6178696404',2),
- (122,56,1,0,0,NULL,'696-7847',NULL,'6967847',2),
- (123,177,1,1,0,NULL,'(243) 742-9892',NULL,'2437429892',2),
- (124,177,1,0,0,NULL,'(228) 543-1605',NULL,'2285431605',2),
- (125,85,1,1,0,NULL,'(809) 824-7545',NULL,'8098247545',2),
- (126,167,1,1,0,NULL,'(882) 329-8260',NULL,'8823298260',1),
- (127,167,1,0,0,NULL,'(239) 831-8711',NULL,'2398318711',1),
- (128,40,1,1,0,NULL,'792-2060',NULL,'7922060',2),
- (129,40,1,0,0,NULL,'(233) 621-6374',NULL,'2336216374',1),
- (130,146,1,1,0,NULL,'(630) 247-7265',NULL,'6302477265',2),
- (131,189,1,1,0,NULL,'(739) 894-9854',NULL,'7398949854',2),
- (132,189,1,0,0,NULL,'680-6396',NULL,'6806396',2),
- (133,107,1,1,0,NULL,'(216) 790-3427',NULL,'2167903427',1),
- (134,71,1,1,0,NULL,'(521) 660-2344',NULL,'5216602344',1),
- (135,21,1,1,0,NULL,'(676) 614-7825',NULL,'6766147825',2),
- (136,21,1,0,0,NULL,'(561) 734-3091',NULL,'5617343091',2),
- (137,192,1,1,0,NULL,'442-7252',NULL,'4427252',2),
- (138,37,1,1,0,NULL,'(278) 643-4361',NULL,'2786434361',2),
- (139,47,1,1,0,NULL,'325-1723',NULL,'3251723',2),
- (140,130,1,1,0,NULL,'336-3705',NULL,'3363705',2),
- (141,130,1,0,0,NULL,'747-1558',NULL,'7471558',2),
- (142,105,1,1,0,NULL,'(225) 855-6264',NULL,'2258556264',2),
- (143,105,1,0,0,NULL,'(562) 209-7481',NULL,'5622097481',2),
- (144,22,1,1,0,NULL,'(707) 868-7741',NULL,'7078687741',2),
- (145,22,1,0,0,NULL,'210-5261',NULL,'2105261',1),
- (146,83,1,1,0,NULL,'(576) 669-9077',NULL,'5766699077',2),
- (147,9,1,1,0,NULL,'(275) 568-5212',NULL,'2755685212',2),
- (148,9,1,0,0,NULL,'481-8834',NULL,'4818834',1),
- (149,6,1,1,0,NULL,'271-4364',NULL,'2714364',1),
- (150,6,1,0,0,NULL,'(364) 383-9578',NULL,'3643839578',2),
- (151,26,1,1,0,NULL,'240-6985',NULL,'2406985',2),
- (152,125,1,1,0,NULL,'767-3469',NULL,'7673469',2),
- (153,28,1,1,0,NULL,'355-6267',NULL,'3556267',1),
- (154,28,1,0,0,NULL,'(854) 421-8298',NULL,'8544218298',1),
- (155,88,1,1,0,NULL,'248-2674',NULL,'2482674',1),
- (156,88,1,0,0,NULL,'610-9424',NULL,'6109424',2),
- (157,42,1,1,0,NULL,'(890) 449-9229',NULL,'8904499229',1),
- (158,42,1,0,0,NULL,'(285) 435-8501',NULL,'2854358501',2),
- (159,20,1,1,0,NULL,'762-3008',NULL,'7623008',2),
- (160,201,1,1,0,NULL,'229-3288',NULL,'2293288',2),
- (161,176,1,1,0,NULL,'(887) 653-3964',NULL,'8876533964',1),
- (162,176,1,0,0,NULL,'(618) 245-6866',NULL,'6182456866',2),
- (163,86,1,1,0,NULL,'641-7331',NULL,'6417331',1),
- (164,67,1,1,0,NULL,'(627) 713-6593',NULL,'6277136593',2),
- (165,31,1,1,0,NULL,'(429) 389-6925',NULL,'4293896925',1),
- (166,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),
- (167,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),
- (168,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1);
+ (1,102,1,1,0,NULL,'286-8392',NULL,'2868392',2),
+ (2,102,1,0,0,NULL,'(424) 343-4541',NULL,'4243434541',2),
+ (3,151,1,1,0,NULL,'498-1099',NULL,'4981099',2),
+ (4,72,1,1,0,NULL,'(784) 272-5742',NULL,'7842725742',1),
+ (5,72,1,0,0,NULL,'(224) 431-7051',NULL,'2244317051',2),
+ (6,135,1,1,0,NULL,'652-7165',NULL,'6527165',2),
+ (7,186,1,1,0,NULL,'(690) 580-2418',NULL,'6905802418',1),
+ (8,186,1,0,0,NULL,'223-3230',NULL,'2233230',2),
+ (9,156,1,1,0,NULL,'208-1773',NULL,'2081773',1),
+ (10,156,1,0,0,NULL,'236-8600',NULL,'2368600',1),
+ (11,38,1,1,0,NULL,'(667) 852-1511',NULL,'6678521511',2),
+ (12,175,1,1,0,NULL,'689-2510',NULL,'6892510',1),
+ (13,175,1,0,0,NULL,'(882) 577-2265',NULL,'8825772265',1),
+ (14,193,1,1,0,NULL,'(331) 286-5983',NULL,'3312865983',2),
+ (15,193,1,0,0,NULL,'(384) 527-2107',NULL,'3845272107',2),
+ (16,160,1,1,0,NULL,'597-1194',NULL,'5971194',2),
+ (17,155,1,1,0,NULL,'(726) 845-4845',NULL,'7268454845',1),
+ (18,155,1,0,0,NULL,'533-1719',NULL,'5331719',1),
+ (19,28,1,1,0,NULL,'541-4568',NULL,'5414568',1),
+ (20,198,1,1,0,NULL,'817-3832',NULL,'8173832',2),
+ (21,198,1,0,0,NULL,'(406) 849-9312',NULL,'4068499312',1),
+ (22,188,1,1,0,NULL,'(228) 507-8121',NULL,'2285078121',2),
+ (23,94,1,1,0,NULL,'259-1653',NULL,'2591653',2),
+ (24,94,1,0,0,NULL,'(766) 335-1163',NULL,'7663351163',1),
+ (25,51,1,1,0,NULL,'(643) 570-8935',NULL,'6435708935',1),
+ (26,51,1,0,0,NULL,'(351) 555-1905',NULL,'3515551905',2),
+ (27,195,1,1,0,NULL,'(825) 210-4896',NULL,'8252104896',1),
+ (28,195,1,0,0,NULL,'815-9299',NULL,'8159299',2),
+ (29,17,1,1,0,NULL,'(822) 723-9940',NULL,'8227239940',2),
+ (30,17,1,0,0,NULL,'(607) 791-9664',NULL,'6077919664',1),
+ (31,154,1,1,0,NULL,'620-7329',NULL,'6207329',2),
+ (32,154,1,0,0,NULL,'(788) 888-1821',NULL,'7888881821',2),
+ (33,199,1,1,0,NULL,'(235) 887-2354',NULL,'2358872354',1),
+ (34,199,1,0,0,NULL,'(493) 679-4708',NULL,'4936794708',2),
+ (35,87,1,1,0,NULL,'(496) 820-9022',NULL,'4968209022',2),
+ (36,12,1,1,0,NULL,'593-1049',NULL,'5931049',2),
+ (37,12,1,0,0,NULL,'614-9379',NULL,'6149379',2),
+ (38,168,1,1,0,NULL,'(477) 601-8945',NULL,'4776018945',2),
+ (39,134,1,1,0,NULL,'(411) 707-8735',NULL,'4117078735',1),
+ (40,134,1,0,0,NULL,'(810) 600-9043',NULL,'8106009043',2),
+ (41,78,1,1,0,NULL,'772-6918',NULL,'7726918',1),
+ (42,78,1,0,0,NULL,'470-4085',NULL,'4704085',1),
+ (43,53,1,1,0,NULL,'479-8099',NULL,'4798099',2),
+ (44,141,1,1,0,NULL,'(441) 208-5569',NULL,'4412085569',1),
+ (45,141,1,0,0,NULL,'524-8561',NULL,'5248561',1),
+ (46,42,1,1,0,NULL,'(546) 215-6680',NULL,'5462156680',1),
+ (47,166,1,1,0,NULL,'(238) 348-4590',NULL,'2383484590',2),
+ (48,21,1,1,0,NULL,'892-7098',NULL,'8927098',2),
+ (49,89,1,1,0,NULL,'(836) 500-1057',NULL,'8365001057',2),
+ (50,122,1,1,0,NULL,'794-4648',NULL,'7944648',1),
+ (51,122,1,0,0,NULL,'852-5820',NULL,'8525820',1),
+ (52,140,1,1,0,NULL,'(363) 777-3317',NULL,'3637773317',1),
+ (53,39,1,1,0,NULL,'210-8246',NULL,'2108246',1),
+ (54,39,1,0,0,NULL,'(677) 809-3791',NULL,'6778093791',2),
+ (55,184,1,1,0,NULL,'(441) 527-9619',NULL,'4415279619',1),
+ (56,77,1,1,0,NULL,'262-6988',NULL,'2626988',1),
+ (57,77,1,0,0,NULL,'218-1973',NULL,'2181973',2),
+ (58,44,1,1,0,NULL,'(335) 495-9546',NULL,'3354959546',2),
+ (59,44,1,0,0,NULL,'494-5489',NULL,'4945489',1),
+ (60,82,1,1,0,NULL,'(716) 332-1703',NULL,'7163321703',2),
+ (61,81,1,1,0,NULL,'(382) 560-1479',NULL,'3825601479',1),
+ (62,81,1,0,0,NULL,'783-6148',NULL,'7836148',2),
+ (63,110,1,1,0,NULL,'410-8307',NULL,'4108307',1),
+ (64,46,1,1,0,NULL,'781-7773',NULL,'7817773',1),
+ (65,46,1,0,0,NULL,'(217) 415-3748',NULL,'2174153748',1),
+ (66,127,1,1,0,NULL,'(469) 464-3598',NULL,'4694643598',2),
+ (67,127,1,0,0,NULL,'524-5404',NULL,'5245404',2),
+ (68,47,1,1,0,NULL,'892-4923',NULL,'8924923',2),
+ (69,36,1,1,0,NULL,'267-1614',NULL,'2671614',1),
+ (70,36,1,0,0,NULL,'487-9287',NULL,'4879287',2),
+ (71,138,1,1,0,NULL,'(448) 483-9211',NULL,'4484839211',2),
+ (72,146,1,1,0,NULL,'324-6151',NULL,'3246151',2),
+ (73,146,1,0,0,NULL,'293-9379',NULL,'2939379',2),
+ (74,176,1,1,0,NULL,'(253) 384-3362',NULL,'2533843362',1),
+ (75,50,1,1,0,NULL,'675-1869',NULL,'6751869',1),
+ (76,66,1,1,0,NULL,'(648) 779-4705',NULL,'6487794705',2),
+ (77,104,1,1,0,NULL,'786-7448',NULL,'7867448',2),
+ (78,104,1,0,0,NULL,'(397) 350-9803',NULL,'3973509803',2),
+ (79,136,1,1,0,NULL,'(736) 889-9721',NULL,'7368899721',2),
+ (80,67,1,1,0,NULL,'(612) 488-6753',NULL,'6124886753',2),
+ (81,177,1,1,0,NULL,'270-5764',NULL,'2705764',2),
+ (82,76,1,1,0,NULL,'511-7614',NULL,'5117614',1),
+ (83,76,1,0,0,NULL,'384-8685',NULL,'3848685',1),
+ (84,92,1,1,0,NULL,'256-1219',NULL,'2561219',1),
+ (85,92,1,0,0,NULL,'780-5539',NULL,'7805539',2),
+ (86,13,1,1,0,NULL,'226-9864',NULL,'2269864',1),
+ (87,13,1,0,0,NULL,'892-4542',NULL,'8924542',1),
+ (88,88,1,1,0,NULL,'(869) 444-2987',NULL,'8694442987',1),
+ (89,88,1,0,0,NULL,'445-3992',NULL,'4453992',2),
+ (90,7,1,1,0,NULL,'683-8791',NULL,'6838791',2),
+ (91,7,1,0,0,NULL,'808-6434',NULL,'8086434',1),
+ (92,197,1,1,0,NULL,'498-1311',NULL,'4981311',2),
+ (93,100,1,1,0,NULL,'(520) 795-3385',NULL,'5207953385',1),
+ (94,100,1,0,0,NULL,'773-7808',NULL,'7737808',2),
+ (95,191,1,1,0,NULL,'771-8903',NULL,'7718903',2),
+ (96,98,1,1,0,NULL,'(445) 645-1501',NULL,'4456451501',2),
+ (97,29,1,1,0,NULL,'(274) 622-6356',NULL,'2746226356',1),
+ (98,29,1,0,0,NULL,'804-7668',NULL,'8047668',1),
+ (99,172,1,1,0,NULL,'(448) 246-9817',NULL,'4482469817',2),
+ (100,74,1,1,0,NULL,'365-2354',NULL,'3652354',2),
+ (101,74,1,0,0,NULL,'552-1324',NULL,'5521324',2),
+ (102,115,1,1,0,NULL,'(439) 303-6245',NULL,'4393036245',2),
+ (103,115,1,0,0,NULL,'530-4117',NULL,'5304117',2),
+ (104,80,1,1,0,NULL,'(861) 375-8837',NULL,'8613758837',2),
+ (105,131,1,1,0,NULL,'230-2779',NULL,'2302779',1),
+ (106,32,1,1,0,NULL,'249-8160',NULL,'2498160',2),
+ (107,148,1,1,0,NULL,'(364) 608-9567',NULL,'3646089567',1),
+ (108,148,1,0,0,NULL,'790-4360',NULL,'7904360',2),
+ (109,181,1,1,0,NULL,'390-8294',NULL,'3908294',2),
+ (110,181,1,0,0,NULL,'230-3773',NULL,'2303773',1),
+ (111,58,1,1,0,NULL,'(669) 378-4728',NULL,'6693784728',1),
+ (112,14,1,1,0,NULL,'(447) 211-9193',NULL,'4472119193',2),
+ (113,14,1,0,0,NULL,'323-7444',NULL,'3237444',1),
+ (114,61,1,1,0,NULL,'438-4271',NULL,'4384271',2),
+ (115,26,1,1,0,NULL,'855-8027',NULL,'8558027',1),
+ (116,26,1,0,0,NULL,'(782) 304-6812',NULL,'7823046812',1),
+ (117,142,1,1,0,NULL,'782-3034',NULL,'7823034',1),
+ (118,171,1,1,0,NULL,'(793) 463-3129',NULL,'7934633129',1),
+ (119,169,1,1,0,NULL,'(492) 285-2337',NULL,'4922852337',2),
+ (120,169,1,0,0,NULL,'(728) 223-2863',NULL,'7282232863',1),
+ (121,159,1,1,0,NULL,'889-9503',NULL,'8899503',2),
+ (122,159,1,0,0,NULL,'500-1154',NULL,'5001154',2),
+ (123,170,1,1,0,NULL,'383-5268',NULL,'3835268',2),
+ (124,170,1,0,0,NULL,'821-2931',NULL,'8212931',2),
+ (125,180,1,1,0,NULL,'(746) 510-9160',NULL,'7465109160',2),
+ (126,180,1,0,0,NULL,'(275) 596-7579',NULL,'2755967579',2),
+ (127,121,1,1,0,NULL,'627-1710',NULL,'6271710',2),
+ (128,121,1,0,0,NULL,'420-7523',NULL,'4207523',1),
+ (129,9,1,1,0,NULL,'(284) 360-5659',NULL,'2843605659',1),
+ (130,9,1,0,0,NULL,'755-6611',NULL,'7556611',2),
+ (131,107,1,1,0,NULL,'(642) 206-6745',NULL,'6422066745',1),
+ (132,56,1,1,0,NULL,'893-3589',NULL,'8933589',2),
+ (133,56,1,0,0,NULL,'275-7026',NULL,'2757026',1),
+ (134,57,1,1,0,NULL,'631-9218',NULL,'6319218',1),
+ (135,114,1,1,0,NULL,'567-8098',NULL,'5678098',1),
+ (136,109,1,1,0,NULL,'(211) 323-2108',NULL,'2113232108',1),
+ (137,109,1,0,0,NULL,'(474) 802-8631',NULL,'4748028631',1),
+ (138,145,1,1,0,NULL,'357-2705',NULL,'3572705',1),
+ (139,103,1,1,0,NULL,'676-2163',NULL,'6762163',1),
+ (140,103,1,0,0,NULL,'(232) 481-1235',NULL,'2324811235',2),
+ (141,153,1,1,0,NULL,'(634) 722-5989',NULL,'6347225989',1),
+ (142,34,1,1,0,NULL,'654-6661',NULL,'6546661',2),
+ (143,34,1,0,0,NULL,'(484) 390-5836',NULL,'4843905836',2),
+ (144,54,1,1,0,NULL,'(590) 792-4576',NULL,'5907924576',2),
+ (145,54,1,0,0,NULL,'(272) 492-1336',NULL,'2724921336',2),
+ (146,93,1,1,0,NULL,'(382) 696-1610',NULL,'3826961610',1),
+ (147,95,1,1,0,NULL,'724-6070',NULL,'7246070',2),
+ (148,95,1,0,0,NULL,'263-7118',NULL,'2637118',1),
+ (149,62,1,1,0,NULL,'(584) 627-6154',NULL,'5846276154',1),
+ (150,165,1,1,0,NULL,'(378) 663-7122',NULL,'3786637122',1),
+ (151,25,1,1,0,NULL,'(345) 325-1058',NULL,'3453251058',2),
+ (152,25,1,0,0,NULL,'(501) 824-5258',NULL,'5018245258',2),
+ (153,143,1,1,0,NULL,'879-4525',NULL,'8794525',2),
+ (154,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),
+ (155,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),
+ (156,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1);
 /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -7111,12 +7356,12 @@ LOCK TABLES `civicrm_price_set` WRITE;
 INSERT INTO `civicrm_price_set` (`id`, `domain_id`, `name`, `title`, `is_active`, `help_pre`, `help_post`, `javascript`, `extends`, `financial_type_id`, `is_quick_config`, `is_reserved`, `min_amount`) VALUES
  (1,NULL,'default_contribution_amount','Contribution Amount',1,NULL,NULL,NULL,'2',NULL,1,1,0.00),
  (2,NULL,'default_membership_type_amount','Membership Amount',1,NULL,NULL,NULL,'3',2,1,1,0.00),
- (3,NULL,'help_support_civicrm_amount','Help Support CiviCRM!',1,NULL,NULL,NULL,'2',NULL,1,0,0.00),
+ (3,NULL,'help_support_civicrm_amount','Help Support CiviCRM!',1,NULL,NULL,NULL,'2',NULL,0,0,0.00),
  (4,NULL,'member_signup_and_renewal','Member Signup and Renewal',1,NULL,NULL,NULL,'3',2,1,0,0.00),
  (5,NULL,'pledge_for_civicrm','Pledge for CiviCRM!',1,NULL,NULL,NULL,'2',NULL,1,0,0.00),
  (6,NULL,'rain_forest_cup_youth_soccer_tournament','Rain-forest Cup Youth Soccer Tournament',1,NULL,NULL,NULL,'1',NULL,1,0,0.00),
  (7,NULL,'fall_fundraiser_dinner','Fall Fundraiser Dinner',1,NULL,NULL,NULL,'1',NULL,1,0,0.00),
- (8,NULL,'summer_solstice_festival_day_concert','Summer Solstice Festival Day Concert',1,NULL,NULL,NULL,'1',NULL,1,0,0.00);
+ (8,NULL,'summer_solstice_festival_day_concert','Summer Solstice Festival Day Concert',1,NULL,NULL,NULL,'1',NULL,0,0,0.00);
 /*!40000 ALTER TABLE `civicrm_price_set` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -7192,219 +7437,221 @@ 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`, `created_date`, `modified_date`) VALUES
- (1,152,109,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (2,44,109,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (3,152,162,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (4,44,162,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (5,44,152,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (6,162,3,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (7,152,3,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (8,44,3,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (9,109,3,7,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (10,162,109,2,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (11,43,81,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (12,183,81,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (13,43,181,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (14,183,181,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (15,183,43,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (16,181,124,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (17,43,124,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (18,183,124,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (19,81,124,7,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (20,181,81,2,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (21,188,137,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (22,196,137,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (23,188,200,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (24,196,200,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (25,196,188,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (26,200,157,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (27,188,157,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (28,196,157,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (29,137,157,7,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (30,200,137,2,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (31,102,187,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (32,89,187,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (33,102,156,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (34,89,156,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (35,89,102,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (36,156,131,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (37,102,131,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (38,89,131,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (39,187,131,7,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (40,156,187,2,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (41,151,59,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (42,198,59,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (43,151,76,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (44,198,76,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:29','2022-08-09 18:17:29'),
- (45,198,151,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (46,76,174,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (47,151,174,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (48,198,174,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (49,59,174,7,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (50,76,59,2,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (51,113,49,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (52,23,49,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (53,113,16,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (54,23,16,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (55,23,113,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (56,16,92,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (57,113,92,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (58,23,92,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (59,49,92,7,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (60,16,49,2,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (61,94,119,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (62,54,119,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (63,94,186,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (64,54,186,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (65,54,94,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (66,186,25,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (67,94,25,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (68,54,25,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (69,119,25,7,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (70,186,119,2,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (71,123,116,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (72,179,116,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (73,123,141,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (74,179,141,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (75,179,123,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (76,141,17,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (77,123,17,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (78,179,17,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (79,116,17,7,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (80,141,116,2,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (81,13,129,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (82,53,129,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (83,13,66,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (84,53,66,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (85,53,13,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (86,66,161,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (87,13,161,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (88,53,161,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (89,129,161,7,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (90,66,129,2,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (91,103,96,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (92,191,96,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (93,103,172,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (94,191,172,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (95,191,103,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (96,172,149,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (97,103,149,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (98,191,149,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (99,96,149,7,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (100,172,96,2,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (101,35,140,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (102,135,140,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (103,35,30,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (104,135,30,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (105,135,35,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (106,30,73,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (107,35,73,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (108,135,73,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (109,140,73,7,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (110,30,140,2,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (111,85,56,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (112,160,56,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (113,85,177,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (114,160,177,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (115,160,85,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (116,177,139,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (117,85,139,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (118,160,139,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (119,56,139,7,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (120,177,56,2,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (121,40,199,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (122,4,199,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (123,40,167,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (124,4,167,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (125,4,40,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (126,167,143,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (127,40,143,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (128,4,143,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (129,199,143,7,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (130,167,199,2,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (131,107,146,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (132,71,146,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (133,107,189,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (134,71,189,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (135,71,107,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (136,189,114,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (137,107,114,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (138,71,114,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (139,146,114,7,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (140,189,146,2,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (141,192,39,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (142,37,39,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (143,192,21,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (144,37,21,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (145,37,192,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (146,21,101,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (147,192,101,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (148,37,101,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (149,39,101,7,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (150,21,39,2,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (151,105,47,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (152,22,47,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (153,105,130,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (154,22,130,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (155,22,105,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:30','2022-08-09 18:17:30'),
- (156,130,70,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (157,105,70,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (158,22,70,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (159,47,70,7,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (160,130,47,2,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (161,6,83,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (162,26,83,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (163,6,9,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (164,26,9,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (165,26,6,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (166,9,98,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (167,6,98,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (168,26,98,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (169,83,98,7,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (170,9,83,2,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (171,77,125,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (172,88,125,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (173,77,28,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (174,88,28,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (175,88,77,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (176,28,8,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (177,77,8,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (178,88,8,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (179,125,8,7,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (180,28,125,2,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (181,201,42,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (182,176,42,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (183,201,20,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (184,176,20,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (185,176,201,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (186,20,48,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (187,201,48,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (188,176,48,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (189,42,48,7,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (190,20,42,2,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (191,67,86,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (192,31,86,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (193,67,190,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (194,31,190,1,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (195,31,67,4,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (196,190,180,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (197,67,180,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (198,31,180,8,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (199,86,180,7,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (200,190,86,2,NULL,NULL,0,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (201,22,5,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (202,155,15,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (203,78,41,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (204,138,64,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (205,105,69,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (206,14,82,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (207,7,117,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (208,159,118,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (209,197,127,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (210,30,147,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (211,150,148,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (212,167,154,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31'),
- (213,40,158,5,NULL,NULL,1,NULL,0,0,NULL,'2022-08-09 18:17:31','2022-08-09 18:17:31');
+ (1,136,66,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (2,35,66,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (3,136,104,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (4,35,104,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (5,35,136,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (6,104,178,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (7,136,178,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (8,35,178,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (9,66,178,7,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (10,104,66,2,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (11,76,67,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (12,158,67,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (13,76,177,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (14,158,177,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (15,158,76,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (16,177,164,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (17,76,164,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (18,158,164,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (19,67,164,7,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (20,177,67,2,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (21,13,120,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (22,88,120,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (23,13,92,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (24,88,92,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (25,88,13,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (26,92,157,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (27,13,157,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (28,88,157,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (29,120,157,7,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (30,92,120,2,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (31,182,7,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (32,63,7,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (33,182,197,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (34,63,197,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (35,63,182,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (36,197,24,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (37,182,24,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (38,63,24,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (39,7,24,7,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (40,197,7,2,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (41,191,167,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (42,98,167,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (43,191,100,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (44,98,100,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (45,98,191,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (46,100,45,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (47,191,45,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (48,98,45,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (49,167,45,7,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (50,100,167,2,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (51,189,29,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (52,74,29,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (53,189,172,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (54,74,172,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (55,74,189,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (56,172,86,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (57,189,86,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (58,74,86,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (59,29,86,7,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (60,172,29,2,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (61,80,49,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (62,131,49,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (63,80,115,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (64,131,115,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (65,131,80,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (66,115,16,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (67,80,16,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (68,131,16,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (69,49,16,7,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (70,115,49,2,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (71,148,162,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (72,181,162,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (73,148,32,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (74,181,32,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (75,181,148,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (76,32,59,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (77,148,59,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (78,181,59,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (79,162,59,7,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (80,32,162,2,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (81,14,19,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (82,123,19,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (83,14,58,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (84,123,58,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (85,123,14,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (86,58,116,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (87,14,116,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (88,123,116,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (89,19,116,7,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (90,58,19,2,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (91,61,117,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (92,26,117,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (93,61,125,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (94,26,125,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (95,26,61,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (96,125,33,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (97,61,33,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (98,26,33,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (99,117,33,7,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (100,125,117,2,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (101,52,11,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (102,171,11,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (103,52,142,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (104,171,142,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (105,171,52,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (106,142,200,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (107,52,200,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (108,171,200,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (109,11,200,7,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (110,142,11,2,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (111,170,169,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (112,180,169,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (113,170,159,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (114,180,159,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (115,180,170,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (116,159,37,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (117,170,37,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (118,180,37,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (119,169,37,7,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (120,159,169,2,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (121,9,121,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (122,30,121,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (123,9,161,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (124,30,161,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (125,30,9,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (126,161,119,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (127,9,119,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (128,30,119,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (129,121,119,7,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (130,161,121,2,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (131,43,107,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (132,23,107,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (133,43,56,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (134,23,56,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (135,23,43,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (136,56,31,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (137,43,31,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (138,23,31,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (139,107,31,7,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (140,56,107,2,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (141,20,149,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (142,69,149,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (143,20,41,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (144,69,41,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (145,69,20,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (146,41,185,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (147,20,185,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (148,69,185,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (149,149,185,7,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (150,41,149,2,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (151,114,57,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (152,109,57,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (153,114,113,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (154,109,113,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (155,109,114,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (156,113,111,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (157,114,111,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (158,109,111,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (159,57,111,7,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (160,113,57,2,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (161,99,145,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (162,103,145,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (163,99,163,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (164,103,163,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (165,103,99,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (166,163,5,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (167,99,5,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (168,103,5,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (169,145,5,7,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (170,163,145,2,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (171,54,153,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (172,108,153,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (173,54,34,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (174,108,34,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (175,108,54,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (176,34,64,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (177,54,64,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (178,108,64,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (179,153,64,7,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (180,34,153,2,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (181,95,173,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (182,62,173,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (183,95,93,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (184,62,93,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (185,62,95,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (186,93,10,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (187,95,10,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (188,62,10,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (189,173,10,7,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (190,93,173,2,NULL,NULL,0,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (191,25,165,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (192,143,165,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (193,25,22,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (194,143,22,1,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (195,143,25,4,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (196,22,60,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (197,25,60,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (198,143,60,8,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (199,165,60,7,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (200,22,165,2,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (201,124,2,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (202,125,6,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (203,155,65,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (204,117,71,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (205,188,73,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (206,171,79,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (207,21,90,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (208,61,97,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (209,107,105,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (210,121,106,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (211,36,112,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (212,122,132,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (213,181,133,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (214,22,139,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01'),
+ (215,57,152,5,NULL,NULL,1,NULL,0,0,NULL,'2022-10-01 23:23:01','2022-10-01 23:23:01');
 /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -7415,432 +7662,436 @@ UNLOCK TABLES;
 LOCK TABLES `civicrm_relationship_cache` WRITE;
 /*!40000 ALTER TABLE `civicrm_relationship_cache` DISABLE KEYS */;
 INSERT INTO `civicrm_relationship_cache` (`id`, `relationship_id`, `relationship_type_id`, `orientation`, `near_contact_id`, `near_relation`, `far_contact_id`, `far_relation`, `is_active`, `start_date`, `end_date`, `case_id`) VALUES
- (1,1,1,'a_b',152,'Child of',109,'Parent of',1,NULL,NULL,NULL),
- (2,1,1,'b_a',109,'Parent of',152,'Child of',1,NULL,NULL,NULL),
- (3,2,1,'a_b',44,'Child of',109,'Parent of',1,NULL,NULL,NULL),
- (4,2,1,'b_a',109,'Parent of',44,'Child of',1,NULL,NULL,NULL),
- (5,3,1,'a_b',152,'Child of',162,'Parent of',1,NULL,NULL,NULL),
- (6,3,1,'b_a',162,'Parent of',152,'Child of',1,NULL,NULL,NULL),
- (7,4,1,'a_b',44,'Child of',162,'Parent of',1,NULL,NULL,NULL),
- (8,4,1,'b_a',162,'Parent of',44,'Child of',1,NULL,NULL,NULL),
- (9,5,4,'a_b',44,'Sibling of',152,'Sibling of',1,NULL,NULL,NULL),
- (10,5,4,'b_a',152,'Sibling of',44,'Sibling of',1,NULL,NULL,NULL),
- (11,6,8,'a_b',162,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
- (12,6,8,'b_a',3,'Household Member is',162,'Household Member of',1,NULL,NULL,NULL),
- (13,7,8,'a_b',152,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
- (14,7,8,'b_a',3,'Household Member is',152,'Household Member of',1,NULL,NULL,NULL),
- (15,8,8,'a_b',44,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL),
- (16,8,8,'b_a',3,'Household Member is',44,'Household Member of',1,NULL,NULL,NULL),
- (17,9,7,'a_b',109,'Head of Household for',3,'Head of Household is',1,NULL,NULL,NULL),
- (18,9,7,'b_a',3,'Head of Household is',109,'Head of Household for',1,NULL,NULL,NULL),
- (19,10,2,'a_b',162,'Spouse of',109,'Spouse of',1,NULL,NULL,NULL),
- (20,10,2,'b_a',109,'Spouse of',162,'Spouse of',1,NULL,NULL,NULL),
- (21,11,1,'a_b',43,'Child of',81,'Parent of',1,NULL,NULL,NULL),
- (22,11,1,'b_a',81,'Parent of',43,'Child of',1,NULL,NULL,NULL),
- (23,12,1,'a_b',183,'Child of',81,'Parent of',1,NULL,NULL,NULL),
- (24,12,1,'b_a',81,'Parent of',183,'Child of',1,NULL,NULL,NULL),
- (25,13,1,'a_b',43,'Child of',181,'Parent of',1,NULL,NULL,NULL),
- (26,13,1,'b_a',181,'Parent of',43,'Child of',1,NULL,NULL,NULL),
- (27,14,1,'a_b',183,'Child of',181,'Parent of',1,NULL,NULL,NULL),
- (28,14,1,'b_a',181,'Parent of',183,'Child of',1,NULL,NULL,NULL),
- (29,15,4,'a_b',183,'Sibling of',43,'Sibling of',1,NULL,NULL,NULL),
- (30,15,4,'b_a',43,'Sibling of',183,'Sibling of',1,NULL,NULL,NULL),
- (31,16,8,'a_b',181,'Household Member of',124,'Household Member is',1,NULL,NULL,NULL),
- (32,16,8,'b_a',124,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL),
- (33,17,8,'a_b',43,'Household Member of',124,'Household Member is',1,NULL,NULL,NULL),
- (34,17,8,'b_a',124,'Household Member is',43,'Household Member of',1,NULL,NULL,NULL),
- (35,18,8,'a_b',183,'Household Member of',124,'Household Member is',1,NULL,NULL,NULL),
- (36,18,8,'b_a',124,'Household Member is',183,'Household Member of',1,NULL,NULL,NULL),
- (37,19,7,'a_b',81,'Head of Household for',124,'Head of Household is',0,NULL,NULL,NULL),
- (38,19,7,'b_a',124,'Head of Household is',81,'Head of Household for',0,NULL,NULL,NULL),
- (39,20,2,'a_b',181,'Spouse of',81,'Spouse of',0,NULL,NULL,NULL),
- (40,20,2,'b_a',81,'Spouse of',181,'Spouse of',0,NULL,NULL,NULL),
- (41,21,1,'a_b',188,'Child of',137,'Parent of',1,NULL,NULL,NULL),
- (42,21,1,'b_a',137,'Parent of',188,'Child of',1,NULL,NULL,NULL),
- (43,22,1,'a_b',196,'Child of',137,'Parent of',1,NULL,NULL,NULL),
- (44,22,1,'b_a',137,'Parent of',196,'Child of',1,NULL,NULL,NULL),
- (45,23,1,'a_b',188,'Child of',200,'Parent of',1,NULL,NULL,NULL),
- (46,23,1,'b_a',200,'Parent of',188,'Child of',1,NULL,NULL,NULL),
- (47,24,1,'a_b',196,'Child of',200,'Parent of',1,NULL,NULL,NULL),
- (48,24,1,'b_a',200,'Parent of',196,'Child of',1,NULL,NULL,NULL),
- (49,25,4,'a_b',196,'Sibling of',188,'Sibling of',1,NULL,NULL,NULL),
- (50,25,4,'b_a',188,'Sibling of',196,'Sibling of',1,NULL,NULL,NULL),
- (51,26,8,'a_b',200,'Household Member of',157,'Household Member is',1,NULL,NULL,NULL),
- (52,26,8,'b_a',157,'Household Member is',200,'Household Member of',1,NULL,NULL,NULL),
- (53,27,8,'a_b',188,'Household Member of',157,'Household Member is',1,NULL,NULL,NULL),
- (54,27,8,'b_a',157,'Household Member is',188,'Household Member of',1,NULL,NULL,NULL),
- (55,28,8,'a_b',196,'Household Member of',157,'Household Member is',1,NULL,NULL,NULL),
- (56,28,8,'b_a',157,'Household Member is',196,'Household Member of',1,NULL,NULL,NULL),
- (57,29,7,'a_b',137,'Head of Household for',157,'Head of Household is',1,NULL,NULL,NULL),
- (58,29,7,'b_a',157,'Head of Household is',137,'Head of Household for',1,NULL,NULL,NULL),
- (59,30,2,'a_b',200,'Spouse of',137,'Spouse of',1,NULL,NULL,NULL),
- (60,30,2,'b_a',137,'Spouse of',200,'Spouse of',1,NULL,NULL,NULL),
- (61,31,1,'a_b',102,'Child of',187,'Parent of',1,NULL,NULL,NULL),
- (62,31,1,'b_a',187,'Parent of',102,'Child of',1,NULL,NULL,NULL),
- (63,32,1,'a_b',89,'Child of',187,'Parent of',1,NULL,NULL,NULL),
- (64,32,1,'b_a',187,'Parent of',89,'Child of',1,NULL,NULL,NULL),
- (65,33,1,'a_b',102,'Child of',156,'Parent of',1,NULL,NULL,NULL),
- (66,33,1,'b_a',156,'Parent of',102,'Child of',1,NULL,NULL,NULL),
- (67,34,1,'a_b',89,'Child of',156,'Parent of',1,NULL,NULL,NULL),
- (68,34,1,'b_a',156,'Parent of',89,'Child of',1,NULL,NULL,NULL),
- (69,35,4,'a_b',89,'Sibling of',102,'Sibling of',1,NULL,NULL,NULL),
- (70,35,4,'b_a',102,'Sibling of',89,'Sibling of',1,NULL,NULL,NULL),
- (71,36,8,'a_b',156,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL),
- (72,36,8,'b_a',131,'Household Member is',156,'Household Member of',1,NULL,NULL,NULL),
- (73,37,8,'a_b',102,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL),
- (74,37,8,'b_a',131,'Household Member is',102,'Household Member of',1,NULL,NULL,NULL),
- (75,38,8,'a_b',89,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL),
- (76,38,8,'b_a',131,'Household Member is',89,'Household Member of',1,NULL,NULL,NULL),
- (77,39,7,'a_b',187,'Head of Household for',131,'Head of Household is',1,NULL,NULL,NULL),
- (78,39,7,'b_a',131,'Head of Household is',187,'Head of Household for',1,NULL,NULL,NULL),
- (79,40,2,'a_b',156,'Spouse of',187,'Spouse of',1,NULL,NULL,NULL),
- (80,40,2,'b_a',187,'Spouse of',156,'Spouse of',1,NULL,NULL,NULL),
- (81,41,1,'a_b',151,'Child of',59,'Parent of',1,NULL,NULL,NULL),
- (82,41,1,'b_a',59,'Parent of',151,'Child of',1,NULL,NULL,NULL),
- (83,42,1,'a_b',198,'Child of',59,'Parent of',1,NULL,NULL,NULL),
- (84,42,1,'b_a',59,'Parent of',198,'Child of',1,NULL,NULL,NULL),
- (85,43,1,'a_b',151,'Child of',76,'Parent of',1,NULL,NULL,NULL),
- (86,43,1,'b_a',76,'Parent of',151,'Child of',1,NULL,NULL,NULL),
- (87,44,1,'a_b',198,'Child of',76,'Parent of',1,NULL,NULL,NULL),
- (88,44,1,'b_a',76,'Parent of',198,'Child of',1,NULL,NULL,NULL),
- (89,45,4,'a_b',198,'Sibling of',151,'Sibling of',1,NULL,NULL,NULL),
- (90,45,4,'b_a',151,'Sibling of',198,'Sibling of',1,NULL,NULL,NULL),
- (91,46,8,'a_b',76,'Household Member of',174,'Household Member is',1,NULL,NULL,NULL),
- (92,46,8,'b_a',174,'Household Member is',76,'Household Member of',1,NULL,NULL,NULL),
- (93,47,8,'a_b',151,'Household Member of',174,'Household Member is',1,NULL,NULL,NULL),
- (94,47,8,'b_a',174,'Household Member is',151,'Household Member of',1,NULL,NULL,NULL),
- (95,48,8,'a_b',198,'Household Member of',174,'Household Member is',1,NULL,NULL,NULL),
- (96,48,8,'b_a',174,'Household Member is',198,'Household Member of',1,NULL,NULL,NULL),
- (97,49,7,'a_b',59,'Head of Household for',174,'Head of Household is',1,NULL,NULL,NULL),
- (98,49,7,'b_a',174,'Head of Household is',59,'Head of Household for',1,NULL,NULL,NULL),
- (99,50,2,'a_b',76,'Spouse of',59,'Spouse of',1,NULL,NULL,NULL),
- (100,50,2,'b_a',59,'Spouse of',76,'Spouse of',1,NULL,NULL,NULL),
- (101,51,1,'a_b',113,'Child of',49,'Parent of',1,NULL,NULL,NULL),
- (102,51,1,'b_a',49,'Parent of',113,'Child of',1,NULL,NULL,NULL),
- (103,52,1,'a_b',23,'Child of',49,'Parent of',1,NULL,NULL,NULL),
- (104,52,1,'b_a',49,'Parent of',23,'Child of',1,NULL,NULL,NULL),
- (105,53,1,'a_b',113,'Child of',16,'Parent of',1,NULL,NULL,NULL),
- (106,53,1,'b_a',16,'Parent of',113,'Child of',1,NULL,NULL,NULL),
- (107,54,1,'a_b',23,'Child of',16,'Parent of',1,NULL,NULL,NULL),
- (108,54,1,'b_a',16,'Parent of',23,'Child of',1,NULL,NULL,NULL),
- (109,55,4,'a_b',23,'Sibling of',113,'Sibling of',1,NULL,NULL,NULL),
- (110,55,4,'b_a',113,'Sibling of',23,'Sibling of',1,NULL,NULL,NULL),
- (111,56,8,'a_b',16,'Household Member of',92,'Household Member is',1,NULL,NULL,NULL),
- (112,56,8,'b_a',92,'Household Member is',16,'Household Member of',1,NULL,NULL,NULL),
- (113,57,8,'a_b',113,'Household Member of',92,'Household Member is',1,NULL,NULL,NULL),
- (114,57,8,'b_a',92,'Household Member is',113,'Household Member of',1,NULL,NULL,NULL),
- (115,58,8,'a_b',23,'Household Member of',92,'Household Member is',1,NULL,NULL,NULL),
- (116,58,8,'b_a',92,'Household Member is',23,'Household Member of',1,NULL,NULL,NULL),
- (117,59,7,'a_b',49,'Head of Household for',92,'Head of Household is',0,NULL,NULL,NULL),
- (118,59,7,'b_a',92,'Head of Household is',49,'Head of Household for',0,NULL,NULL,NULL),
- (119,60,2,'a_b',16,'Spouse of',49,'Spouse of',0,NULL,NULL,NULL),
- (120,60,2,'b_a',49,'Spouse of',16,'Spouse of',0,NULL,NULL,NULL),
- (121,61,1,'a_b',94,'Child of',119,'Parent of',1,NULL,NULL,NULL),
- (122,61,1,'b_a',119,'Parent of',94,'Child of',1,NULL,NULL,NULL),
- (123,62,1,'a_b',54,'Child of',119,'Parent of',1,NULL,NULL,NULL),
- (124,62,1,'b_a',119,'Parent of',54,'Child of',1,NULL,NULL,NULL),
- (125,63,1,'a_b',94,'Child of',186,'Parent of',1,NULL,NULL,NULL),
- (126,63,1,'b_a',186,'Parent of',94,'Child of',1,NULL,NULL,NULL),
- (127,64,1,'a_b',54,'Child of',186,'Parent of',1,NULL,NULL,NULL),
- (128,64,1,'b_a',186,'Parent of',54,'Child of',1,NULL,NULL,NULL),
- (129,65,4,'a_b',54,'Sibling of',94,'Sibling of',1,NULL,NULL,NULL),
- (130,65,4,'b_a',94,'Sibling of',54,'Sibling of',1,NULL,NULL,NULL),
- (131,66,8,'a_b',186,'Household Member of',25,'Household Member is',1,NULL,NULL,NULL),
- (132,66,8,'b_a',25,'Household Member is',186,'Household Member of',1,NULL,NULL,NULL),
- (133,67,8,'a_b',94,'Household Member of',25,'Household Member is',1,NULL,NULL,NULL),
- (134,67,8,'b_a',25,'Household Member is',94,'Household Member of',1,NULL,NULL,NULL),
- (135,68,8,'a_b',54,'Household Member of',25,'Household Member is',1,NULL,NULL,NULL),
- (136,68,8,'b_a',25,'Household Member is',54,'Household Member of',1,NULL,NULL,NULL),
- (137,69,7,'a_b',119,'Head of Household for',25,'Head of Household is',0,NULL,NULL,NULL),
- (138,69,7,'b_a',25,'Head of Household is',119,'Head of Household for',0,NULL,NULL,NULL),
- (139,70,2,'a_b',186,'Spouse of',119,'Spouse of',0,NULL,NULL,NULL),
- (140,70,2,'b_a',119,'Spouse of',186,'Spouse of',0,NULL,NULL,NULL),
- (141,71,1,'a_b',123,'Child of',116,'Parent of',1,NULL,NULL,NULL),
- (142,71,1,'b_a',116,'Parent of',123,'Child of',1,NULL,NULL,NULL),
- (143,72,1,'a_b',179,'Child of',116,'Parent of',1,NULL,NULL,NULL),
- (144,72,1,'b_a',116,'Parent of',179,'Child of',1,NULL,NULL,NULL),
- (145,73,1,'a_b',123,'Child of',141,'Parent of',1,NULL,NULL,NULL),
- (146,73,1,'b_a',141,'Parent of',123,'Child of',1,NULL,NULL,NULL),
- (147,74,1,'a_b',179,'Child of',141,'Parent of',1,NULL,NULL,NULL),
- (148,74,1,'b_a',141,'Parent of',179,'Child of',1,NULL,NULL,NULL),
- (149,75,4,'a_b',179,'Sibling of',123,'Sibling of',1,NULL,NULL,NULL),
- (150,75,4,'b_a',123,'Sibling of',179,'Sibling of',1,NULL,NULL,NULL),
- (151,76,8,'a_b',141,'Household Member of',17,'Household Member is',1,NULL,NULL,NULL),
- (152,76,8,'b_a',17,'Household Member is',141,'Household Member of',1,NULL,NULL,NULL),
- (153,77,8,'a_b',123,'Household Member of',17,'Household Member is',1,NULL,NULL,NULL),
- (154,77,8,'b_a',17,'Household Member is',123,'Household Member of',1,NULL,NULL,NULL),
- (155,78,8,'a_b',179,'Household Member of',17,'Household Member is',1,NULL,NULL,NULL),
- (156,78,8,'b_a',17,'Household Member is',179,'Household Member of',1,NULL,NULL,NULL),
- (157,79,7,'a_b',116,'Head of Household for',17,'Head of Household is',0,NULL,NULL,NULL),
- (158,79,7,'b_a',17,'Head of Household is',116,'Head of Household for',0,NULL,NULL,NULL),
- (159,80,2,'a_b',141,'Spouse of',116,'Spouse of',0,NULL,NULL,NULL),
- (160,80,2,'b_a',116,'Spouse of',141,'Spouse of',0,NULL,NULL,NULL),
- (161,81,1,'a_b',13,'Child of',129,'Parent of',1,NULL,NULL,NULL),
- (162,81,1,'b_a',129,'Parent of',13,'Child of',1,NULL,NULL,NULL),
- (163,82,1,'a_b',53,'Child of',129,'Parent of',1,NULL,NULL,NULL),
- (164,82,1,'b_a',129,'Parent of',53,'Child of',1,NULL,NULL,NULL),
- (165,83,1,'a_b',13,'Child of',66,'Parent of',1,NULL,NULL,NULL),
- (166,83,1,'b_a',66,'Parent of',13,'Child of',1,NULL,NULL,NULL),
- (167,84,1,'a_b',53,'Child of',66,'Parent of',1,NULL,NULL,NULL),
- (168,84,1,'b_a',66,'Parent of',53,'Child of',1,NULL,NULL,NULL),
- (169,85,4,'a_b',53,'Sibling of',13,'Sibling of',1,NULL,NULL,NULL),
- (170,85,4,'b_a',13,'Sibling of',53,'Sibling of',1,NULL,NULL,NULL),
- (171,86,8,'a_b',66,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL),
- (172,86,8,'b_a',161,'Household Member is',66,'Household Member of',1,NULL,NULL,NULL),
- (173,87,8,'a_b',13,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL),
- (174,87,8,'b_a',161,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL),
- (175,88,8,'a_b',53,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL),
- (176,88,8,'b_a',161,'Household Member is',53,'Household Member of',1,NULL,NULL,NULL),
- (177,89,7,'a_b',129,'Head of Household for',161,'Head of Household is',0,NULL,NULL,NULL),
- (178,89,7,'b_a',161,'Head of Household is',129,'Head of Household for',0,NULL,NULL,NULL),
- (179,90,2,'a_b',66,'Spouse of',129,'Spouse of',0,NULL,NULL,NULL),
- (180,90,2,'b_a',129,'Spouse of',66,'Spouse of',0,NULL,NULL,NULL),
- (181,91,1,'a_b',103,'Child of',96,'Parent of',1,NULL,NULL,NULL),
- (182,91,1,'b_a',96,'Parent of',103,'Child of',1,NULL,NULL,NULL),
- (183,92,1,'a_b',191,'Child of',96,'Parent of',1,NULL,NULL,NULL),
- (184,92,1,'b_a',96,'Parent of',191,'Child of',1,NULL,NULL,NULL),
- (185,93,1,'a_b',103,'Child of',172,'Parent of',1,NULL,NULL,NULL),
- (186,93,1,'b_a',172,'Parent of',103,'Child of',1,NULL,NULL,NULL),
- (187,94,1,'a_b',191,'Child of',172,'Parent of',1,NULL,NULL,NULL),
- (188,94,1,'b_a',172,'Parent of',191,'Child of',1,NULL,NULL,NULL),
- (189,95,4,'a_b',191,'Sibling of',103,'Sibling of',1,NULL,NULL,NULL),
- (190,95,4,'b_a',103,'Sibling of',191,'Sibling of',1,NULL,NULL,NULL),
- (191,96,8,'a_b',172,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL),
- (192,96,8,'b_a',149,'Household Member is',172,'Household Member of',1,NULL,NULL,NULL),
- (193,97,8,'a_b',103,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL),
- (194,97,8,'b_a',149,'Household Member is',103,'Household Member of',1,NULL,NULL,NULL),
- (195,98,8,'a_b',191,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL),
- (196,98,8,'b_a',149,'Household Member is',191,'Household Member of',1,NULL,NULL,NULL),
- (197,99,7,'a_b',96,'Head of Household for',149,'Head of Household is',1,NULL,NULL,NULL),
- (198,99,7,'b_a',149,'Head of Household is',96,'Head of Household for',1,NULL,NULL,NULL),
- (199,100,2,'a_b',172,'Spouse of',96,'Spouse of',1,NULL,NULL,NULL),
- (200,100,2,'b_a',96,'Spouse of',172,'Spouse of',1,NULL,NULL,NULL),
- (201,101,1,'a_b',35,'Child of',140,'Parent of',1,NULL,NULL,NULL),
- (202,101,1,'b_a',140,'Parent of',35,'Child of',1,NULL,NULL,NULL),
- (203,102,1,'a_b',135,'Child of',140,'Parent of',1,NULL,NULL,NULL),
- (204,102,1,'b_a',140,'Parent of',135,'Child of',1,NULL,NULL,NULL),
- (205,103,1,'a_b',35,'Child of',30,'Parent of',1,NULL,NULL,NULL),
- (206,103,1,'b_a',30,'Parent of',35,'Child of',1,NULL,NULL,NULL),
- (207,104,1,'a_b',135,'Child of',30,'Parent of',1,NULL,NULL,NULL),
- (208,104,1,'b_a',30,'Parent of',135,'Child of',1,NULL,NULL,NULL),
- (209,105,4,'a_b',135,'Sibling of',35,'Sibling of',1,NULL,NULL,NULL),
- (210,105,4,'b_a',35,'Sibling of',135,'Sibling of',1,NULL,NULL,NULL),
- (211,106,8,'a_b',30,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL),
- (212,106,8,'b_a',73,'Household Member is',30,'Household Member of',1,NULL,NULL,NULL),
- (213,107,8,'a_b',35,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL),
- (214,107,8,'b_a',73,'Household Member is',35,'Household Member of',1,NULL,NULL,NULL),
- (215,108,8,'a_b',135,'Household Member of',73,'Household Member is',1,NULL,NULL,NULL),
- (216,108,8,'b_a',73,'Household Member is',135,'Household Member of',1,NULL,NULL,NULL),
- (217,109,7,'a_b',140,'Head of Household for',73,'Head of Household is',0,NULL,NULL,NULL),
- (218,109,7,'b_a',73,'Head of Household is',140,'Head of Household for',0,NULL,NULL,NULL),
- (219,110,2,'a_b',30,'Spouse of',140,'Spouse of',0,NULL,NULL,NULL),
- (220,110,2,'b_a',140,'Spouse of',30,'Spouse of',0,NULL,NULL,NULL),
- (221,111,1,'a_b',85,'Child of',56,'Parent of',1,NULL,NULL,NULL),
- (222,111,1,'b_a',56,'Parent of',85,'Child of',1,NULL,NULL,NULL),
- (223,112,1,'a_b',160,'Child of',56,'Parent of',1,NULL,NULL,NULL),
- (224,112,1,'b_a',56,'Parent of',160,'Child of',1,NULL,NULL,NULL),
- (225,113,1,'a_b',85,'Child of',177,'Parent of',1,NULL,NULL,NULL),
- (226,113,1,'b_a',177,'Parent of',85,'Child of',1,NULL,NULL,NULL),
- (227,114,1,'a_b',160,'Child of',177,'Parent of',1,NULL,NULL,NULL),
- (228,114,1,'b_a',177,'Parent of',160,'Child of',1,NULL,NULL,NULL),
- (229,115,4,'a_b',160,'Sibling of',85,'Sibling of',1,NULL,NULL,NULL),
- (230,115,4,'b_a',85,'Sibling of',160,'Sibling of',1,NULL,NULL,NULL),
- (231,116,8,'a_b',177,'Household Member of',139,'Household Member is',1,NULL,NULL,NULL),
- (232,116,8,'b_a',139,'Household Member is',177,'Household Member of',1,NULL,NULL,NULL),
- (233,117,8,'a_b',85,'Household Member of',139,'Household Member is',1,NULL,NULL,NULL),
- (234,117,8,'b_a',139,'Household Member is',85,'Household Member of',1,NULL,NULL,NULL),
- (235,118,8,'a_b',160,'Household Member of',139,'Household Member is',1,NULL,NULL,NULL),
- (236,118,8,'b_a',139,'Household Member is',160,'Household Member of',1,NULL,NULL,NULL),
- (237,119,7,'a_b',56,'Head of Household for',139,'Head of Household is',0,NULL,NULL,NULL),
- (238,119,7,'b_a',139,'Head of Household is',56,'Head of Household for',0,NULL,NULL,NULL),
- (239,120,2,'a_b',177,'Spouse of',56,'Spouse of',0,NULL,NULL,NULL),
- (240,120,2,'b_a',56,'Spouse of',177,'Spouse of',0,NULL,NULL,NULL),
- (241,121,1,'a_b',40,'Child of',199,'Parent of',1,NULL,NULL,NULL),
- (242,121,1,'b_a',199,'Parent of',40,'Child of',1,NULL,NULL,NULL),
- (243,122,1,'a_b',4,'Child of',199,'Parent of',1,NULL,NULL,NULL),
- (244,122,1,'b_a',199,'Parent of',4,'Child of',1,NULL,NULL,NULL),
- (245,123,1,'a_b',40,'Child of',167,'Parent of',1,NULL,NULL,NULL),
- (246,123,1,'b_a',167,'Parent of',40,'Child of',1,NULL,NULL,NULL),
- (247,124,1,'a_b',4,'Child of',167,'Parent of',1,NULL,NULL,NULL),
- (248,124,1,'b_a',167,'Parent of',4,'Child of',1,NULL,NULL,NULL),
- (249,125,4,'a_b',4,'Sibling of',40,'Sibling of',1,NULL,NULL,NULL),
- (250,125,4,'b_a',40,'Sibling of',4,'Sibling of',1,NULL,NULL,NULL),
- (251,126,8,'a_b',167,'Household Member of',143,'Household Member is',1,NULL,NULL,NULL),
- (252,126,8,'b_a',143,'Household Member is',167,'Household Member of',1,NULL,NULL,NULL),
- (253,127,8,'a_b',40,'Household Member of',143,'Household Member is',1,NULL,NULL,NULL),
- (254,127,8,'b_a',143,'Household Member is',40,'Household Member of',1,NULL,NULL,NULL),
- (255,128,8,'a_b',4,'Household Member of',143,'Household Member is',1,NULL,NULL,NULL),
- (256,128,8,'b_a',143,'Household Member is',4,'Household Member of',1,NULL,NULL,NULL),
- (257,129,7,'a_b',199,'Head of Household for',143,'Head of Household is',0,NULL,NULL,NULL),
- (258,129,7,'b_a',143,'Head of Household is',199,'Head of Household for',0,NULL,NULL,NULL),
- (259,130,2,'a_b',167,'Spouse of',199,'Spouse of',0,NULL,NULL,NULL),
- (260,130,2,'b_a',199,'Spouse of',167,'Spouse of',0,NULL,NULL,NULL),
- (261,131,1,'a_b',107,'Child of',146,'Parent of',1,NULL,NULL,NULL),
- (262,131,1,'b_a',146,'Parent of',107,'Child of',1,NULL,NULL,NULL),
- (263,132,1,'a_b',71,'Child of',146,'Parent of',1,NULL,NULL,NULL),
- (264,132,1,'b_a',146,'Parent of',71,'Child of',1,NULL,NULL,NULL),
- (265,133,1,'a_b',107,'Child of',189,'Parent of',1,NULL,NULL,NULL),
- (266,133,1,'b_a',189,'Parent of',107,'Child of',1,NULL,NULL,NULL),
- (267,134,1,'a_b',71,'Child of',189,'Parent of',1,NULL,NULL,NULL),
- (268,134,1,'b_a',189,'Parent of',71,'Child of',1,NULL,NULL,NULL),
- (269,135,4,'a_b',71,'Sibling of',107,'Sibling of',1,NULL,NULL,NULL),
- (270,135,4,'b_a',107,'Sibling of',71,'Sibling of',1,NULL,NULL,NULL),
- (271,136,8,'a_b',189,'Household Member of',114,'Household Member is',1,NULL,NULL,NULL),
- (272,136,8,'b_a',114,'Household Member is',189,'Household Member of',1,NULL,NULL,NULL),
- (273,137,8,'a_b',107,'Household Member of',114,'Household Member is',1,NULL,NULL,NULL),
- (274,137,8,'b_a',114,'Household Member is',107,'Household Member of',1,NULL,NULL,NULL),
- (275,138,8,'a_b',71,'Household Member of',114,'Household Member is',1,NULL,NULL,NULL),
- (276,138,8,'b_a',114,'Household Member is',71,'Household Member of',1,NULL,NULL,NULL),
- (277,139,7,'a_b',146,'Head of Household for',114,'Head of Household is',0,NULL,NULL,NULL),
- (278,139,7,'b_a',114,'Head of Household is',146,'Head of Household for',0,NULL,NULL,NULL),
- (279,140,2,'a_b',189,'Spouse of',146,'Spouse of',0,NULL,NULL,NULL),
- (280,140,2,'b_a',146,'Spouse of',189,'Spouse of',0,NULL,NULL,NULL),
- (281,141,1,'a_b',192,'Child of',39,'Parent of',1,NULL,NULL,NULL),
- (282,141,1,'b_a',39,'Parent of',192,'Child of',1,NULL,NULL,NULL),
- (283,142,1,'a_b',37,'Child of',39,'Parent of',1,NULL,NULL,NULL),
- (284,142,1,'b_a',39,'Parent of',37,'Child of',1,NULL,NULL,NULL),
- (285,143,1,'a_b',192,'Child of',21,'Parent of',1,NULL,NULL,NULL),
- (286,143,1,'b_a',21,'Parent of',192,'Child of',1,NULL,NULL,NULL),
- (287,144,1,'a_b',37,'Child of',21,'Parent of',1,NULL,NULL,NULL),
- (288,144,1,'b_a',21,'Parent of',37,'Child of',1,NULL,NULL,NULL),
- (289,145,4,'a_b',37,'Sibling of',192,'Sibling of',1,NULL,NULL,NULL),
- (290,145,4,'b_a',192,'Sibling of',37,'Sibling of',1,NULL,NULL,NULL),
- (291,146,8,'a_b',21,'Household Member of',101,'Household Member is',1,NULL,NULL,NULL),
- (292,146,8,'b_a',101,'Household Member is',21,'Household Member of',1,NULL,NULL,NULL),
- (293,147,8,'a_b',192,'Household Member of',101,'Household Member is',1,NULL,NULL,NULL),
- (294,147,8,'b_a',101,'Household Member is',192,'Household Member of',1,NULL,NULL,NULL),
- (295,148,8,'a_b',37,'Household Member of',101,'Household Member is',1,NULL,NULL,NULL),
- (296,148,8,'b_a',101,'Household Member is',37,'Household Member of',1,NULL,NULL,NULL),
- (297,149,7,'a_b',39,'Head of Household for',101,'Head of Household is',1,NULL,NULL,NULL),
- (298,149,7,'b_a',101,'Head of Household is',39,'Head of Household for',1,NULL,NULL,NULL),
- (299,150,2,'a_b',21,'Spouse of',39,'Spouse of',1,NULL,NULL,NULL),
- (300,150,2,'b_a',39,'Spouse of',21,'Spouse of',1,NULL,NULL,NULL),
- (301,151,1,'a_b',105,'Child of',47,'Parent of',1,NULL,NULL,NULL),
- (302,151,1,'b_a',47,'Parent of',105,'Child of',1,NULL,NULL,NULL),
- (303,152,1,'a_b',22,'Child of',47,'Parent of',1,NULL,NULL,NULL),
- (304,152,1,'b_a',47,'Parent of',22,'Child of',1,NULL,NULL,NULL),
- (305,153,1,'a_b',105,'Child of',130,'Parent of',1,NULL,NULL,NULL),
- (306,153,1,'b_a',130,'Parent of',105,'Child of',1,NULL,NULL,NULL),
- (307,154,1,'a_b',22,'Child of',130,'Parent of',1,NULL,NULL,NULL),
- (308,154,1,'b_a',130,'Parent of',22,'Child of',1,NULL,NULL,NULL),
- (309,155,4,'a_b',22,'Sibling of',105,'Sibling of',1,NULL,NULL,NULL),
- (310,155,4,'b_a',105,'Sibling of',22,'Sibling of',1,NULL,NULL,NULL),
- (311,156,8,'a_b',130,'Household Member of',70,'Household Member is',1,NULL,NULL,NULL),
- (312,156,8,'b_a',70,'Household Member is',130,'Household Member of',1,NULL,NULL,NULL),
- (313,157,8,'a_b',105,'Household Member of',70,'Household Member is',1,NULL,NULL,NULL),
- (314,157,8,'b_a',70,'Household Member is',105,'Household Member of',1,NULL,NULL,NULL),
- (315,158,8,'a_b',22,'Household Member of',70,'Household Member is',1,NULL,NULL,NULL),
- (316,158,8,'b_a',70,'Household Member is',22,'Household Member of',1,NULL,NULL,NULL),
- (317,159,7,'a_b',47,'Head of Household for',70,'Head of Household is',1,NULL,NULL,NULL),
- (318,159,7,'b_a',70,'Head of Household is',47,'Head of Household for',1,NULL,NULL,NULL),
- (319,160,2,'a_b',130,'Spouse of',47,'Spouse of',1,NULL,NULL,NULL),
- (320,160,2,'b_a',47,'Spouse of',130,'Spouse of',1,NULL,NULL,NULL),
- (321,161,1,'a_b',6,'Child of',83,'Parent of',1,NULL,NULL,NULL),
- (322,161,1,'b_a',83,'Parent of',6,'Child of',1,NULL,NULL,NULL),
- (323,162,1,'a_b',26,'Child of',83,'Parent of',1,NULL,NULL,NULL),
- (324,162,1,'b_a',83,'Parent of',26,'Child of',1,NULL,NULL,NULL),
- (325,163,1,'a_b',6,'Child of',9,'Parent of',1,NULL,NULL,NULL),
- (326,163,1,'b_a',9,'Parent of',6,'Child of',1,NULL,NULL,NULL),
- (327,164,1,'a_b',26,'Child of',9,'Parent of',1,NULL,NULL,NULL),
- (328,164,1,'b_a',9,'Parent of',26,'Child of',1,NULL,NULL,NULL),
- (329,165,4,'a_b',26,'Sibling of',6,'Sibling of',1,NULL,NULL,NULL),
- (330,165,4,'b_a',6,'Sibling of',26,'Sibling of',1,NULL,NULL,NULL),
- (331,166,8,'a_b',9,'Household Member of',98,'Household Member is',1,NULL,NULL,NULL),
- (332,166,8,'b_a',98,'Household Member is',9,'Household Member of',1,NULL,NULL,NULL),
- (333,167,8,'a_b',6,'Household Member of',98,'Household Member is',1,NULL,NULL,NULL),
- (334,167,8,'b_a',98,'Household Member is',6,'Household Member of',1,NULL,NULL,NULL),
- (335,168,8,'a_b',26,'Household Member of',98,'Household Member is',1,NULL,NULL,NULL),
- (336,168,8,'b_a',98,'Household Member is',26,'Household Member of',1,NULL,NULL,NULL),
- (337,169,7,'a_b',83,'Head of Household for',98,'Head of Household is',1,NULL,NULL,NULL),
- (338,169,7,'b_a',98,'Head of Household is',83,'Head of Household for',1,NULL,NULL,NULL),
- (339,170,2,'a_b',9,'Spouse of',83,'Spouse of',1,NULL,NULL,NULL),
- (340,170,2,'b_a',83,'Spouse of',9,'Spouse of',1,NULL,NULL,NULL),
- (341,171,1,'a_b',77,'Child of',125,'Parent of',1,NULL,NULL,NULL),
- (342,171,1,'b_a',125,'Parent of',77,'Child of',1,NULL,NULL,NULL),
- (343,172,1,'a_b',88,'Child of',125,'Parent of',1,NULL,NULL,NULL),
- (344,172,1,'b_a',125,'Parent of',88,'Child of',1,NULL,NULL,NULL),
- (345,173,1,'a_b',77,'Child of',28,'Parent of',1,NULL,NULL,NULL),
- (346,173,1,'b_a',28,'Parent of',77,'Child of',1,NULL,NULL,NULL),
- (347,174,1,'a_b',88,'Child of',28,'Parent of',1,NULL,NULL,NULL),
- (348,174,1,'b_a',28,'Parent of',88,'Child of',1,NULL,NULL,NULL),
- (349,175,4,'a_b',88,'Sibling of',77,'Sibling of',1,NULL,NULL,NULL),
- (350,175,4,'b_a',77,'Sibling of',88,'Sibling of',1,NULL,NULL,NULL),
- (351,176,8,'a_b',28,'Household Member of',8,'Household Member is',1,NULL,NULL,NULL),
- (352,176,8,'b_a',8,'Household Member is',28,'Household Member of',1,NULL,NULL,NULL),
- (353,177,8,'a_b',77,'Household Member of',8,'Household Member is',1,NULL,NULL,NULL),
- (354,177,8,'b_a',8,'Household Member is',77,'Household Member of',1,NULL,NULL,NULL),
- (355,178,8,'a_b',88,'Household Member of',8,'Household Member is',1,NULL,NULL,NULL),
- (356,178,8,'b_a',8,'Household Member is',88,'Household Member of',1,NULL,NULL,NULL),
- (357,179,7,'a_b',125,'Head of Household for',8,'Head of Household is',0,NULL,NULL,NULL),
- (358,179,7,'b_a',8,'Head of Household is',125,'Head of Household for',0,NULL,NULL,NULL),
- (359,180,2,'a_b',28,'Spouse of',125,'Spouse of',0,NULL,NULL,NULL),
- (360,180,2,'b_a',125,'Spouse of',28,'Spouse of',0,NULL,NULL,NULL),
- (361,181,1,'a_b',201,'Child of',42,'Parent of',1,NULL,NULL,NULL),
- (362,181,1,'b_a',42,'Parent of',201,'Child of',1,NULL,NULL,NULL),
- (363,182,1,'a_b',176,'Child of',42,'Parent of',1,NULL,NULL,NULL),
- (364,182,1,'b_a',42,'Parent of',176,'Child of',1,NULL,NULL,NULL),
- (365,183,1,'a_b',201,'Child of',20,'Parent of',1,NULL,NULL,NULL),
- (366,183,1,'b_a',20,'Parent of',201,'Child of',1,NULL,NULL,NULL),
- (367,184,1,'a_b',176,'Child of',20,'Parent of',1,NULL,NULL,NULL),
- (368,184,1,'b_a',20,'Parent of',176,'Child of',1,NULL,NULL,NULL),
- (369,185,4,'a_b',176,'Sibling of',201,'Sibling of',1,NULL,NULL,NULL),
- (370,185,4,'b_a',201,'Sibling of',176,'Sibling of',1,NULL,NULL,NULL),
- (371,186,8,'a_b',20,'Household Member of',48,'Household Member is',1,NULL,NULL,NULL),
- (372,186,8,'b_a',48,'Household Member is',20,'Household Member of',1,NULL,NULL,NULL),
- (373,187,8,'a_b',201,'Household Member of',48,'Household Member is',1,NULL,NULL,NULL),
- (374,187,8,'b_a',48,'Household Member is',201,'Household Member of',1,NULL,NULL,NULL),
- (375,188,8,'a_b',176,'Household Member of',48,'Household Member is',1,NULL,NULL,NULL),
- (376,188,8,'b_a',48,'Household Member is',176,'Household Member of',1,NULL,NULL,NULL),
- (377,189,7,'a_b',42,'Head of Household for',48,'Head of Household is',0,NULL,NULL,NULL),
- (378,189,7,'b_a',48,'Head of Household is',42,'Head of Household for',0,NULL,NULL,NULL),
- (379,190,2,'a_b',20,'Spouse of',42,'Spouse of',0,NULL,NULL,NULL),
- (380,190,2,'b_a',42,'Spouse of',20,'Spouse of',0,NULL,NULL,NULL),
- (381,191,1,'a_b',67,'Child of',86,'Parent of',1,NULL,NULL,NULL),
- (382,191,1,'b_a',86,'Parent of',67,'Child of',1,NULL,NULL,NULL),
- (383,192,1,'a_b',31,'Child of',86,'Parent of',1,NULL,NULL,NULL),
- (384,192,1,'b_a',86,'Parent of',31,'Child of',1,NULL,NULL,NULL),
- (385,193,1,'a_b',67,'Child of',190,'Parent of',1,NULL,NULL,NULL),
- (386,193,1,'b_a',190,'Parent of',67,'Child of',1,NULL,NULL,NULL),
- (387,194,1,'a_b',31,'Child of',190,'Parent of',1,NULL,NULL,NULL),
- (388,194,1,'b_a',190,'Parent of',31,'Child of',1,NULL,NULL,NULL),
- (389,195,4,'a_b',31,'Sibling of',67,'Sibling of',1,NULL,NULL,NULL),
- (390,195,4,'b_a',67,'Sibling of',31,'Sibling of',1,NULL,NULL,NULL),
- (391,196,8,'a_b',190,'Household Member of',180,'Household Member is',1,NULL,NULL,NULL),
- (392,196,8,'b_a',180,'Household Member is',190,'Household Member of',1,NULL,NULL,NULL),
- (393,197,8,'a_b',67,'Household Member of',180,'Household Member is',1,NULL,NULL,NULL),
- (394,197,8,'b_a',180,'Household Member is',67,'Household Member of',1,NULL,NULL,NULL),
- (395,198,8,'a_b',31,'Household Member of',180,'Household Member is',1,NULL,NULL,NULL),
- (396,198,8,'b_a',180,'Household Member is',31,'Household Member of',1,NULL,NULL,NULL),
- (397,199,7,'a_b',86,'Head of Household for',180,'Head of Household is',0,NULL,NULL,NULL),
- (398,199,7,'b_a',180,'Head of Household is',86,'Head of Household for',0,NULL,NULL,NULL),
- (399,200,2,'a_b',190,'Spouse of',86,'Spouse of',0,NULL,NULL,NULL),
- (400,200,2,'b_a',86,'Spouse of',190,'Spouse of',0,NULL,NULL,NULL),
- (401,201,5,'a_b',22,'Employee of',5,'Employer of',1,NULL,NULL,NULL),
- (402,201,5,'b_a',5,'Employer of',22,'Employee of',1,NULL,NULL,NULL),
- (403,202,5,'a_b',155,'Employee of',15,'Employer of',1,NULL,NULL,NULL),
- (404,202,5,'b_a',15,'Employer of',155,'Employee of',1,NULL,NULL,NULL),
- (405,203,5,'a_b',78,'Employee of',41,'Employer of',1,NULL,NULL,NULL),
- (406,203,5,'b_a',41,'Employer of',78,'Employee of',1,NULL,NULL,NULL),
- (407,204,5,'a_b',138,'Employee of',64,'Employer of',1,NULL,NULL,NULL),
- (408,204,5,'b_a',64,'Employer of',138,'Employee of',1,NULL,NULL,NULL),
- (409,205,5,'a_b',105,'Employee of',69,'Employer of',1,NULL,NULL,NULL),
- (410,205,5,'b_a',69,'Employer of',105,'Employee of',1,NULL,NULL,NULL),
- (411,206,5,'a_b',14,'Employee of',82,'Employer of',1,NULL,NULL,NULL),
- (412,206,5,'b_a',82,'Employer of',14,'Employee of',1,NULL,NULL,NULL),
- (413,207,5,'a_b',7,'Employee of',117,'Employer of',1,NULL,NULL,NULL),
- (414,207,5,'b_a',117,'Employer of',7,'Employee of',1,NULL,NULL,NULL),
- (415,208,5,'a_b',159,'Employee of',118,'Employer of',1,NULL,NULL,NULL),
- (416,208,5,'b_a',118,'Employer of',159,'Employee of',1,NULL,NULL,NULL),
- (417,209,5,'a_b',197,'Employee of',127,'Employer of',1,NULL,NULL,NULL),
- (418,209,5,'b_a',127,'Employer of',197,'Employee of',1,NULL,NULL,NULL),
- (419,210,5,'a_b',30,'Employee of',147,'Employer of',1,NULL,NULL,NULL),
- (420,210,5,'b_a',147,'Employer of',30,'Employee of',1,NULL,NULL,NULL),
- (421,211,5,'a_b',150,'Employee of',148,'Employer of',1,NULL,NULL,NULL),
- (422,211,5,'b_a',148,'Employer of',150,'Employee of',1,NULL,NULL,NULL),
- (423,212,5,'a_b',167,'Employee of',154,'Employer of',1,NULL,NULL,NULL),
- (424,212,5,'b_a',154,'Employer of',167,'Employee of',1,NULL,NULL,NULL),
- (425,213,5,'a_b',40,'Employee of',158,'Employer of',1,NULL,NULL,NULL),
- (426,213,5,'b_a',158,'Employer of',40,'Employee of',1,NULL,NULL,NULL);
+ (1,1,1,'a_b',136,'Child of',66,'Parent of',1,NULL,NULL,NULL),
+ (2,1,1,'b_a',66,'Parent of',136,'Child of',1,NULL,NULL,NULL),
+ (3,2,1,'a_b',35,'Child of',66,'Parent of',1,NULL,NULL,NULL),
+ (4,2,1,'b_a',66,'Parent of',35,'Child of',1,NULL,NULL,NULL),
+ (5,3,1,'a_b',136,'Child of',104,'Parent of',1,NULL,NULL,NULL),
+ (6,3,1,'b_a',104,'Parent of',136,'Child of',1,NULL,NULL,NULL),
+ (7,4,1,'a_b',35,'Child of',104,'Parent of',1,NULL,NULL,NULL),
+ (8,4,1,'b_a',104,'Parent of',35,'Child of',1,NULL,NULL,NULL),
+ (9,5,4,'a_b',35,'Sibling of',136,'Sibling of',1,NULL,NULL,NULL),
+ (10,5,4,'b_a',136,'Sibling of',35,'Sibling of',1,NULL,NULL,NULL),
+ (11,6,8,'a_b',104,'Household Member of',178,'Household Member is',1,NULL,NULL,NULL),
+ (12,6,8,'b_a',178,'Household Member is',104,'Household Member of',1,NULL,NULL,NULL),
+ (13,7,8,'a_b',136,'Household Member of',178,'Household Member is',1,NULL,NULL,NULL),
+ (14,7,8,'b_a',178,'Household Member is',136,'Household Member of',1,NULL,NULL,NULL),
+ (15,8,8,'a_b',35,'Household Member of',178,'Household Member is',1,NULL,NULL,NULL),
+ (16,8,8,'b_a',178,'Household Member is',35,'Household Member of',1,NULL,NULL,NULL),
+ (17,9,7,'a_b',66,'Head of Household for',178,'Head of Household is',0,NULL,NULL,NULL),
+ (18,9,7,'b_a',178,'Head of Household is',66,'Head of Household for',0,NULL,NULL,NULL),
+ (19,10,2,'a_b',104,'Spouse of',66,'Spouse of',0,NULL,NULL,NULL),
+ (20,10,2,'b_a',66,'Spouse of',104,'Spouse of',0,NULL,NULL,NULL),
+ (21,11,1,'a_b',76,'Child of',67,'Parent of',1,NULL,NULL,NULL),
+ (22,11,1,'b_a',67,'Parent of',76,'Child of',1,NULL,NULL,NULL),
+ (23,12,1,'a_b',158,'Child of',67,'Parent of',1,NULL,NULL,NULL),
+ (24,12,1,'b_a',67,'Parent of',158,'Child of',1,NULL,NULL,NULL),
+ (25,13,1,'a_b',76,'Child of',177,'Parent of',1,NULL,NULL,NULL),
+ (26,13,1,'b_a',177,'Parent of',76,'Child of',1,NULL,NULL,NULL),
+ (27,14,1,'a_b',158,'Child of',177,'Parent of',1,NULL,NULL,NULL),
+ (28,14,1,'b_a',177,'Parent of',158,'Child of',1,NULL,NULL,NULL),
+ (29,15,4,'a_b',158,'Sibling of',76,'Sibling of',1,NULL,NULL,NULL),
+ (30,15,4,'b_a',76,'Sibling of',158,'Sibling of',1,NULL,NULL,NULL),
+ (31,16,8,'a_b',177,'Household Member of',164,'Household Member is',1,NULL,NULL,NULL),
+ (32,16,8,'b_a',164,'Household Member is',177,'Household Member of',1,NULL,NULL,NULL),
+ (33,17,8,'a_b',76,'Household Member of',164,'Household Member is',1,NULL,NULL,NULL),
+ (34,17,8,'b_a',164,'Household Member is',76,'Household Member of',1,NULL,NULL,NULL),
+ (35,18,8,'a_b',158,'Household Member of',164,'Household Member is',1,NULL,NULL,NULL),
+ (36,18,8,'b_a',164,'Household Member is',158,'Household Member of',1,NULL,NULL,NULL),
+ (37,19,7,'a_b',67,'Head of Household for',164,'Head of Household is',1,NULL,NULL,NULL),
+ (38,19,7,'b_a',164,'Head of Household is',67,'Head of Household for',1,NULL,NULL,NULL),
+ (39,20,2,'a_b',177,'Spouse of',67,'Spouse of',1,NULL,NULL,NULL),
+ (40,20,2,'b_a',67,'Spouse of',177,'Spouse of',1,NULL,NULL,NULL),
+ (41,21,1,'a_b',13,'Child of',120,'Parent of',1,NULL,NULL,NULL),
+ (42,21,1,'b_a',120,'Parent of',13,'Child of',1,NULL,NULL,NULL),
+ (43,22,1,'a_b',88,'Child of',120,'Parent of',1,NULL,NULL,NULL),
+ (44,22,1,'b_a',120,'Parent of',88,'Child of',1,NULL,NULL,NULL),
+ (45,23,1,'a_b',13,'Child of',92,'Parent of',1,NULL,NULL,NULL),
+ (46,23,1,'b_a',92,'Parent of',13,'Child of',1,NULL,NULL,NULL),
+ (47,24,1,'a_b',88,'Child of',92,'Parent of',1,NULL,NULL,NULL),
+ (48,24,1,'b_a',92,'Parent of',88,'Child of',1,NULL,NULL,NULL),
+ (49,25,4,'a_b',88,'Sibling of',13,'Sibling of',1,NULL,NULL,NULL),
+ (50,25,4,'b_a',13,'Sibling of',88,'Sibling of',1,NULL,NULL,NULL),
+ (51,26,8,'a_b',92,'Household Member of',157,'Household Member is',1,NULL,NULL,NULL),
+ (52,26,8,'b_a',157,'Household Member is',92,'Household Member of',1,NULL,NULL,NULL),
+ (53,27,8,'a_b',13,'Household Member of',157,'Household Member is',1,NULL,NULL,NULL),
+ (54,27,8,'b_a',157,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL),
+ (55,28,8,'a_b',88,'Household Member of',157,'Household Member is',1,NULL,NULL,NULL),
+ (56,28,8,'b_a',157,'Household Member is',88,'Household Member of',1,NULL,NULL,NULL),
+ (57,29,7,'a_b',120,'Head of Household for',157,'Head of Household is',0,NULL,NULL,NULL),
+ (58,29,7,'b_a',157,'Head of Household is',120,'Head of Household for',0,NULL,NULL,NULL),
+ (59,30,2,'a_b',92,'Spouse of',120,'Spouse of',0,NULL,NULL,NULL),
+ (60,30,2,'b_a',120,'Spouse of',92,'Spouse of',0,NULL,NULL,NULL),
+ (61,31,1,'a_b',182,'Child of',7,'Parent of',1,NULL,NULL,NULL),
+ (62,31,1,'b_a',7,'Parent of',182,'Child of',1,NULL,NULL,NULL),
+ (63,32,1,'a_b',63,'Child of',7,'Parent of',1,NULL,NULL,NULL),
+ (64,32,1,'b_a',7,'Parent of',63,'Child of',1,NULL,NULL,NULL),
+ (65,33,1,'a_b',182,'Child of',197,'Parent of',1,NULL,NULL,NULL),
+ (66,33,1,'b_a',197,'Parent of',182,'Child of',1,NULL,NULL,NULL),
+ (67,34,1,'a_b',63,'Child of',197,'Parent of',1,NULL,NULL,NULL),
+ (68,34,1,'b_a',197,'Parent of',63,'Child of',1,NULL,NULL,NULL),
+ (69,35,4,'a_b',63,'Sibling of',182,'Sibling of',1,NULL,NULL,NULL),
+ (70,35,4,'b_a',182,'Sibling of',63,'Sibling of',1,NULL,NULL,NULL),
+ (71,36,8,'a_b',197,'Household Member of',24,'Household Member is',1,NULL,NULL,NULL),
+ (72,36,8,'b_a',24,'Household Member is',197,'Household Member of',1,NULL,NULL,NULL),
+ (73,37,8,'a_b',182,'Household Member of',24,'Household Member is',1,NULL,NULL,NULL),
+ (74,37,8,'b_a',24,'Household Member is',182,'Household Member of',1,NULL,NULL,NULL),
+ (75,38,8,'a_b',63,'Household Member of',24,'Household Member is',1,NULL,NULL,NULL),
+ (76,38,8,'b_a',24,'Household Member is',63,'Household Member of',1,NULL,NULL,NULL),
+ (77,39,7,'a_b',7,'Head of Household for',24,'Head of Household is',0,NULL,NULL,NULL),
+ (78,39,7,'b_a',24,'Head of Household is',7,'Head of Household for',0,NULL,NULL,NULL),
+ (79,40,2,'a_b',197,'Spouse of',7,'Spouse of',0,NULL,NULL,NULL),
+ (80,40,2,'b_a',7,'Spouse of',197,'Spouse of',0,NULL,NULL,NULL),
+ (81,41,1,'a_b',191,'Child of',167,'Parent of',1,NULL,NULL,NULL),
+ (82,41,1,'b_a',167,'Parent of',191,'Child of',1,NULL,NULL,NULL),
+ (83,42,1,'a_b',98,'Child of',167,'Parent of',1,NULL,NULL,NULL),
+ (84,42,1,'b_a',167,'Parent of',98,'Child of',1,NULL,NULL,NULL),
+ (85,43,1,'a_b',191,'Child of',100,'Parent of',1,NULL,NULL,NULL),
+ (86,43,1,'b_a',100,'Parent of',191,'Child of',1,NULL,NULL,NULL),
+ (87,44,1,'a_b',98,'Child of',100,'Parent of',1,NULL,NULL,NULL),
+ (88,44,1,'b_a',100,'Parent of',98,'Child of',1,NULL,NULL,NULL),
+ (89,45,4,'a_b',98,'Sibling of',191,'Sibling of',1,NULL,NULL,NULL),
+ (90,45,4,'b_a',191,'Sibling of',98,'Sibling of',1,NULL,NULL,NULL),
+ (91,46,8,'a_b',100,'Household Member of',45,'Household Member is',1,NULL,NULL,NULL),
+ (92,46,8,'b_a',45,'Household Member is',100,'Household Member of',1,NULL,NULL,NULL),
+ (93,47,8,'a_b',191,'Household Member of',45,'Household Member is',1,NULL,NULL,NULL),
+ (94,47,8,'b_a',45,'Household Member is',191,'Household Member of',1,NULL,NULL,NULL),
+ (95,48,8,'a_b',98,'Household Member of',45,'Household Member is',1,NULL,NULL,NULL),
+ (96,48,8,'b_a',45,'Household Member is',98,'Household Member of',1,NULL,NULL,NULL),
+ (97,49,7,'a_b',167,'Head of Household for',45,'Head of Household is',1,NULL,NULL,NULL),
+ (98,49,7,'b_a',45,'Head of Household is',167,'Head of Household for',1,NULL,NULL,NULL),
+ (99,50,2,'a_b',100,'Spouse of',167,'Spouse of',1,NULL,NULL,NULL),
+ (100,50,2,'b_a',167,'Spouse of',100,'Spouse of',1,NULL,NULL,NULL),
+ (101,51,1,'a_b',189,'Child of',29,'Parent of',1,NULL,NULL,NULL),
+ (102,51,1,'b_a',29,'Parent of',189,'Child of',1,NULL,NULL,NULL),
+ (103,52,1,'a_b',74,'Child of',29,'Parent of',1,NULL,NULL,NULL),
+ (104,52,1,'b_a',29,'Parent of',74,'Child of',1,NULL,NULL,NULL),
+ (105,53,1,'a_b',189,'Child of',172,'Parent of',1,NULL,NULL,NULL),
+ (106,53,1,'b_a',172,'Parent of',189,'Child of',1,NULL,NULL,NULL),
+ (107,54,1,'a_b',74,'Child of',172,'Parent of',1,NULL,NULL,NULL),
+ (108,54,1,'b_a',172,'Parent of',74,'Child of',1,NULL,NULL,NULL),
+ (109,55,4,'a_b',74,'Sibling of',189,'Sibling of',1,NULL,NULL,NULL),
+ (110,55,4,'b_a',189,'Sibling of',74,'Sibling of',1,NULL,NULL,NULL),
+ (111,56,8,'a_b',172,'Household Member of',86,'Household Member is',1,NULL,NULL,NULL),
+ (112,56,8,'b_a',86,'Household Member is',172,'Household Member of',1,NULL,NULL,NULL),
+ (113,57,8,'a_b',189,'Household Member of',86,'Household Member is',1,NULL,NULL,NULL),
+ (114,57,8,'b_a',86,'Household Member is',189,'Household Member of',1,NULL,NULL,NULL),
+ (115,58,8,'a_b',74,'Household Member of',86,'Household Member is',1,NULL,NULL,NULL),
+ (116,58,8,'b_a',86,'Household Member is',74,'Household Member of',1,NULL,NULL,NULL),
+ (117,59,7,'a_b',29,'Head of Household for',86,'Head of Household is',1,NULL,NULL,NULL),
+ (118,59,7,'b_a',86,'Head of Household is',29,'Head of Household for',1,NULL,NULL,NULL),
+ (119,60,2,'a_b',172,'Spouse of',29,'Spouse of',1,NULL,NULL,NULL),
+ (120,60,2,'b_a',29,'Spouse of',172,'Spouse of',1,NULL,NULL,NULL),
+ (121,61,1,'a_b',80,'Child of',49,'Parent of',1,NULL,NULL,NULL),
+ (122,61,1,'b_a',49,'Parent of',80,'Child of',1,NULL,NULL,NULL),
+ (123,62,1,'a_b',131,'Child of',49,'Parent of',1,NULL,NULL,NULL),
+ (124,62,1,'b_a',49,'Parent of',131,'Child of',1,NULL,NULL,NULL),
+ (125,63,1,'a_b',80,'Child of',115,'Parent of',1,NULL,NULL,NULL),
+ (126,63,1,'b_a',115,'Parent of',80,'Child of',1,NULL,NULL,NULL),
+ (127,64,1,'a_b',131,'Child of',115,'Parent of',1,NULL,NULL,NULL),
+ (128,64,1,'b_a',115,'Parent of',131,'Child of',1,NULL,NULL,NULL),
+ (129,65,4,'a_b',131,'Sibling of',80,'Sibling of',1,NULL,NULL,NULL),
+ (130,65,4,'b_a',80,'Sibling of',131,'Sibling of',1,NULL,NULL,NULL),
+ (131,66,8,'a_b',115,'Household Member of',16,'Household Member is',1,NULL,NULL,NULL),
+ (132,66,8,'b_a',16,'Household Member is',115,'Household Member of',1,NULL,NULL,NULL),
+ (133,67,8,'a_b',80,'Household Member of',16,'Household Member is',1,NULL,NULL,NULL),
+ (134,67,8,'b_a',16,'Household Member is',80,'Household Member of',1,NULL,NULL,NULL),
+ (135,68,8,'a_b',131,'Household Member of',16,'Household Member is',1,NULL,NULL,NULL),
+ (136,68,8,'b_a',16,'Household Member is',131,'Household Member of',1,NULL,NULL,NULL),
+ (137,69,7,'a_b',49,'Head of Household for',16,'Head of Household is',0,NULL,NULL,NULL),
+ (138,69,7,'b_a',16,'Head of Household is',49,'Head of Household for',0,NULL,NULL,NULL),
+ (139,70,2,'a_b',115,'Spouse of',49,'Spouse of',0,NULL,NULL,NULL),
+ (140,70,2,'b_a',49,'Spouse of',115,'Spouse of',0,NULL,NULL,NULL),
+ (141,71,1,'a_b',148,'Child of',162,'Parent of',1,NULL,NULL,NULL),
+ (142,71,1,'b_a',162,'Parent of',148,'Child of',1,NULL,NULL,NULL),
+ (143,72,1,'a_b',181,'Child of',162,'Parent of',1,NULL,NULL,NULL),
+ (144,72,1,'b_a',162,'Parent of',181,'Child of',1,NULL,NULL,NULL),
+ (145,73,1,'a_b',148,'Child of',32,'Parent of',1,NULL,NULL,NULL),
+ (146,73,1,'b_a',32,'Parent of',148,'Child of',1,NULL,NULL,NULL),
+ (147,74,1,'a_b',181,'Child of',32,'Parent of',1,NULL,NULL,NULL),
+ (148,74,1,'b_a',32,'Parent of',181,'Child of',1,NULL,NULL,NULL),
+ (149,75,4,'a_b',181,'Sibling of',148,'Sibling of',1,NULL,NULL,NULL),
+ (150,75,4,'b_a',148,'Sibling of',181,'Sibling of',1,NULL,NULL,NULL),
+ (151,76,8,'a_b',32,'Household Member of',59,'Household Member is',1,NULL,NULL,NULL),
+ (152,76,8,'b_a',59,'Household Member is',32,'Household Member of',1,NULL,NULL,NULL),
+ (153,77,8,'a_b',148,'Household Member of',59,'Household Member is',1,NULL,NULL,NULL),
+ (154,77,8,'b_a',59,'Household Member is',148,'Household Member of',1,NULL,NULL,NULL),
+ (155,78,8,'a_b',181,'Household Member of',59,'Household Member is',1,NULL,NULL,NULL),
+ (156,78,8,'b_a',59,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL),
+ (157,79,7,'a_b',162,'Head of Household for',59,'Head of Household is',1,NULL,NULL,NULL),
+ (158,79,7,'b_a',59,'Head of Household is',162,'Head of Household for',1,NULL,NULL,NULL),
+ (159,80,2,'a_b',32,'Spouse of',162,'Spouse of',1,NULL,NULL,NULL),
+ (160,80,2,'b_a',162,'Spouse of',32,'Spouse of',1,NULL,NULL,NULL),
+ (161,81,1,'a_b',14,'Child of',19,'Parent of',1,NULL,NULL,NULL),
+ (162,81,1,'b_a',19,'Parent of',14,'Child of',1,NULL,NULL,NULL),
+ (163,82,1,'a_b',123,'Child of',19,'Parent of',1,NULL,NULL,NULL),
+ (164,82,1,'b_a',19,'Parent of',123,'Child of',1,NULL,NULL,NULL),
+ (165,83,1,'a_b',14,'Child of',58,'Parent of',1,NULL,NULL,NULL),
+ (166,83,1,'b_a',58,'Parent of',14,'Child of',1,NULL,NULL,NULL),
+ (167,84,1,'a_b',123,'Child of',58,'Parent of',1,NULL,NULL,NULL),
+ (168,84,1,'b_a',58,'Parent of',123,'Child of',1,NULL,NULL,NULL),
+ (169,85,4,'a_b',123,'Sibling of',14,'Sibling of',1,NULL,NULL,NULL),
+ (170,85,4,'b_a',14,'Sibling of',123,'Sibling of',1,NULL,NULL,NULL),
+ (171,86,8,'a_b',58,'Household Member of',116,'Household Member is',1,NULL,NULL,NULL),
+ (172,86,8,'b_a',116,'Household Member is',58,'Household Member of',1,NULL,NULL,NULL),
+ (173,87,8,'a_b',14,'Household Member of',116,'Household Member is',1,NULL,NULL,NULL),
+ (174,87,8,'b_a',116,'Household Member is',14,'Household Member of',1,NULL,NULL,NULL),
+ (175,88,8,'a_b',123,'Household Member of',116,'Household Member is',1,NULL,NULL,NULL),
+ (176,88,8,'b_a',116,'Household Member is',123,'Household Member of',1,NULL,NULL,NULL),
+ (177,89,7,'a_b',19,'Head of Household for',116,'Head of Household is',0,NULL,NULL,NULL),
+ (178,89,7,'b_a',116,'Head of Household is',19,'Head of Household for',0,NULL,NULL,NULL),
+ (179,90,2,'a_b',58,'Spouse of',19,'Spouse of',0,NULL,NULL,NULL),
+ (180,90,2,'b_a',19,'Spouse of',58,'Spouse of',0,NULL,NULL,NULL),
+ (181,91,1,'a_b',61,'Child of',117,'Parent of',1,NULL,NULL,NULL),
+ (182,91,1,'b_a',117,'Parent of',61,'Child of',1,NULL,NULL,NULL),
+ (183,92,1,'a_b',26,'Child of',117,'Parent of',1,NULL,NULL,NULL),
+ (184,92,1,'b_a',117,'Parent of',26,'Child of',1,NULL,NULL,NULL),
+ (185,93,1,'a_b',61,'Child of',125,'Parent of',1,NULL,NULL,NULL),
+ (186,93,1,'b_a',125,'Parent of',61,'Child of',1,NULL,NULL,NULL),
+ (187,94,1,'a_b',26,'Child of',125,'Parent of',1,NULL,NULL,NULL),
+ (188,94,1,'b_a',125,'Parent of',26,'Child of',1,NULL,NULL,NULL),
+ (189,95,4,'a_b',26,'Sibling of',61,'Sibling of',1,NULL,NULL,NULL),
+ (190,95,4,'b_a',61,'Sibling of',26,'Sibling of',1,NULL,NULL,NULL),
+ (191,96,8,'a_b',125,'Household Member of',33,'Household Member is',1,NULL,NULL,NULL),
+ (192,96,8,'b_a',33,'Household Member is',125,'Household Member of',1,NULL,NULL,NULL),
+ (193,97,8,'a_b',61,'Household Member of',33,'Household Member is',1,NULL,NULL,NULL),
+ (194,97,8,'b_a',33,'Household Member is',61,'Household Member of',1,NULL,NULL,NULL),
+ (195,98,8,'a_b',26,'Household Member of',33,'Household Member is',1,NULL,NULL,NULL),
+ (196,98,8,'b_a',33,'Household Member is',26,'Household Member of',1,NULL,NULL,NULL),
+ (197,99,7,'a_b',117,'Head of Household for',33,'Head of Household is',1,NULL,NULL,NULL),
+ (198,99,7,'b_a',33,'Head of Household is',117,'Head of Household for',1,NULL,NULL,NULL),
+ (199,100,2,'a_b',125,'Spouse of',117,'Spouse of',1,NULL,NULL,NULL),
+ (200,100,2,'b_a',117,'Spouse of',125,'Spouse of',1,NULL,NULL,NULL),
+ (201,101,1,'a_b',52,'Child of',11,'Parent of',1,NULL,NULL,NULL),
+ (202,101,1,'b_a',11,'Parent of',52,'Child of',1,NULL,NULL,NULL),
+ (203,102,1,'a_b',171,'Child of',11,'Parent of',1,NULL,NULL,NULL),
+ (204,102,1,'b_a',11,'Parent of',171,'Child of',1,NULL,NULL,NULL),
+ (205,103,1,'a_b',52,'Child of',142,'Parent of',1,NULL,NULL,NULL),
+ (206,103,1,'b_a',142,'Parent of',52,'Child of',1,NULL,NULL,NULL),
+ (207,104,1,'a_b',171,'Child of',142,'Parent of',1,NULL,NULL,NULL),
+ (208,104,1,'b_a',142,'Parent of',171,'Child of',1,NULL,NULL,NULL),
+ (209,105,4,'a_b',171,'Sibling of',52,'Sibling of',1,NULL,NULL,NULL),
+ (210,105,4,'b_a',52,'Sibling of',171,'Sibling of',1,NULL,NULL,NULL),
+ (211,106,8,'a_b',142,'Household Member of',200,'Household Member is',1,NULL,NULL,NULL),
+ (212,106,8,'b_a',200,'Household Member is',142,'Household Member of',1,NULL,NULL,NULL),
+ (213,107,8,'a_b',52,'Household Member of',200,'Household Member is',1,NULL,NULL,NULL),
+ (214,107,8,'b_a',200,'Household Member is',52,'Household Member of',1,NULL,NULL,NULL),
+ (215,108,8,'a_b',171,'Household Member of',200,'Household Member is',1,NULL,NULL,NULL),
+ (216,108,8,'b_a',200,'Household Member is',171,'Household Member of',1,NULL,NULL,NULL),
+ (217,109,7,'a_b',11,'Head of Household for',200,'Head of Household is',0,NULL,NULL,NULL),
+ (218,109,7,'b_a',200,'Head of Household is',11,'Head of Household for',0,NULL,NULL,NULL),
+ (219,110,2,'a_b',142,'Spouse of',11,'Spouse of',0,NULL,NULL,NULL),
+ (220,110,2,'b_a',11,'Spouse of',142,'Spouse of',0,NULL,NULL,NULL),
+ (221,111,1,'a_b',170,'Child of',169,'Parent of',1,NULL,NULL,NULL),
+ (222,111,1,'b_a',169,'Parent of',170,'Child of',1,NULL,NULL,NULL),
+ (223,112,1,'a_b',180,'Child of',169,'Parent of',1,NULL,NULL,NULL),
+ (224,112,1,'b_a',169,'Parent of',180,'Child of',1,NULL,NULL,NULL),
+ (225,113,1,'a_b',170,'Child of',159,'Parent of',1,NULL,NULL,NULL),
+ (226,113,1,'b_a',159,'Parent of',170,'Child of',1,NULL,NULL,NULL),
+ (227,114,1,'a_b',180,'Child of',159,'Parent of',1,NULL,NULL,NULL),
+ (228,114,1,'b_a',159,'Parent of',180,'Child of',1,NULL,NULL,NULL),
+ (229,115,4,'a_b',180,'Sibling of',170,'Sibling of',1,NULL,NULL,NULL),
+ (230,115,4,'b_a',170,'Sibling of',180,'Sibling of',1,NULL,NULL,NULL),
+ (231,116,8,'a_b',159,'Household Member of',37,'Household Member is',1,NULL,NULL,NULL),
+ (232,116,8,'b_a',37,'Household Member is',159,'Household Member of',1,NULL,NULL,NULL),
+ (233,117,8,'a_b',170,'Household Member of',37,'Household Member is',1,NULL,NULL,NULL),
+ (234,117,8,'b_a',37,'Household Member is',170,'Household Member of',1,NULL,NULL,NULL),
+ (235,118,8,'a_b',180,'Household Member of',37,'Household Member is',1,NULL,NULL,NULL),
+ (236,118,8,'b_a',37,'Household Member is',180,'Household Member of',1,NULL,NULL,NULL),
+ (237,119,7,'a_b',169,'Head of Household for',37,'Head of Household is',0,NULL,NULL,NULL),
+ (238,119,7,'b_a',37,'Head of Household is',169,'Head of Household for',0,NULL,NULL,NULL),
+ (239,120,2,'a_b',159,'Spouse of',169,'Spouse of',0,NULL,NULL,NULL),
+ (240,120,2,'b_a',169,'Spouse of',159,'Spouse of',0,NULL,NULL,NULL),
+ (241,121,1,'a_b',9,'Child of',121,'Parent of',1,NULL,NULL,NULL),
+ (242,121,1,'b_a',121,'Parent of',9,'Child of',1,NULL,NULL,NULL),
+ (243,122,1,'a_b',30,'Child of',121,'Parent of',1,NULL,NULL,NULL),
+ (244,122,1,'b_a',121,'Parent of',30,'Child of',1,NULL,NULL,NULL),
+ (245,123,1,'a_b',9,'Child of',161,'Parent of',1,NULL,NULL,NULL),
+ (246,123,1,'b_a',161,'Parent of',9,'Child of',1,NULL,NULL,NULL),
+ (247,124,1,'a_b',30,'Child of',161,'Parent of',1,NULL,NULL,NULL),
+ (248,124,1,'b_a',161,'Parent of',30,'Child of',1,NULL,NULL,NULL),
+ (249,125,4,'a_b',30,'Sibling of',9,'Sibling of',1,NULL,NULL,NULL),
+ (250,125,4,'b_a',9,'Sibling of',30,'Sibling of',1,NULL,NULL,NULL),
+ (251,126,8,'a_b',161,'Household Member of',119,'Household Member is',1,NULL,NULL,NULL),
+ (252,126,8,'b_a',119,'Household Member is',161,'Household Member of',1,NULL,NULL,NULL),
+ (253,127,8,'a_b',9,'Household Member of',119,'Household Member is',1,NULL,NULL,NULL),
+ (254,127,8,'b_a',119,'Household Member is',9,'Household Member of',1,NULL,NULL,NULL),
+ (255,128,8,'a_b',30,'Household Member of',119,'Household Member is',1,NULL,NULL,NULL),
+ (256,128,8,'b_a',119,'Household Member is',30,'Household Member of',1,NULL,NULL,NULL),
+ (257,129,7,'a_b',121,'Head of Household for',119,'Head of Household is',1,NULL,NULL,NULL),
+ (258,129,7,'b_a',119,'Head of Household is',121,'Head of Household for',1,NULL,NULL,NULL),
+ (259,130,2,'a_b',161,'Spouse of',121,'Spouse of',1,NULL,NULL,NULL),
+ (260,130,2,'b_a',121,'Spouse of',161,'Spouse of',1,NULL,NULL,NULL),
+ (261,131,1,'a_b',43,'Child of',107,'Parent of',1,NULL,NULL,NULL),
+ (262,131,1,'b_a',107,'Parent of',43,'Child of',1,NULL,NULL,NULL),
+ (263,132,1,'a_b',23,'Child of',107,'Parent of',1,NULL,NULL,NULL),
+ (264,132,1,'b_a',107,'Parent of',23,'Child of',1,NULL,NULL,NULL),
+ (265,133,1,'a_b',43,'Child of',56,'Parent of',1,NULL,NULL,NULL),
+ (266,133,1,'b_a',56,'Parent of',43,'Child of',1,NULL,NULL,NULL),
+ (267,134,1,'a_b',23,'Child of',56,'Parent of',1,NULL,NULL,NULL),
+ (268,134,1,'b_a',56,'Parent of',23,'Child of',1,NULL,NULL,NULL),
+ (269,135,4,'a_b',23,'Sibling of',43,'Sibling of',1,NULL,NULL,NULL),
+ (270,135,4,'b_a',43,'Sibling of',23,'Sibling of',1,NULL,NULL,NULL),
+ (271,136,8,'a_b',56,'Household Member of',31,'Household Member is',1,NULL,NULL,NULL),
+ (272,136,8,'b_a',31,'Household Member is',56,'Household Member of',1,NULL,NULL,NULL),
+ (273,137,8,'a_b',43,'Household Member of',31,'Household Member is',1,NULL,NULL,NULL),
+ (274,137,8,'b_a',31,'Household Member is',43,'Household Member of',1,NULL,NULL,NULL),
+ (275,138,8,'a_b',23,'Household Member of',31,'Household Member is',1,NULL,NULL,NULL),
+ (276,138,8,'b_a',31,'Household Member is',23,'Household Member of',1,NULL,NULL,NULL),
+ (277,139,7,'a_b',107,'Head of Household for',31,'Head of Household is',1,NULL,NULL,NULL),
+ (278,139,7,'b_a',31,'Head of Household is',107,'Head of Household for',1,NULL,NULL,NULL),
+ (279,140,2,'a_b',56,'Spouse of',107,'Spouse of',1,NULL,NULL,NULL),
+ (280,140,2,'b_a',107,'Spouse of',56,'Spouse of',1,NULL,NULL,NULL),
+ (281,141,1,'a_b',20,'Child of',149,'Parent of',1,NULL,NULL,NULL),
+ (282,141,1,'b_a',149,'Parent of',20,'Child of',1,NULL,NULL,NULL),
+ (283,142,1,'a_b',69,'Child of',149,'Parent of',1,NULL,NULL,NULL),
+ (284,142,1,'b_a',149,'Parent of',69,'Child of',1,NULL,NULL,NULL),
+ (285,143,1,'a_b',20,'Child of',41,'Parent of',1,NULL,NULL,NULL),
+ (286,143,1,'b_a',41,'Parent of',20,'Child of',1,NULL,NULL,NULL),
+ (287,144,1,'a_b',69,'Child of',41,'Parent of',1,NULL,NULL,NULL),
+ (288,144,1,'b_a',41,'Parent of',69,'Child of',1,NULL,NULL,NULL),
+ (289,145,4,'a_b',69,'Sibling of',20,'Sibling of',1,NULL,NULL,NULL),
+ (290,145,4,'b_a',20,'Sibling of',69,'Sibling of',1,NULL,NULL,NULL),
+ (291,146,8,'a_b',41,'Household Member of',185,'Household Member is',1,NULL,NULL,NULL),
+ (292,146,8,'b_a',185,'Household Member is',41,'Household Member of',1,NULL,NULL,NULL),
+ (293,147,8,'a_b',20,'Household Member of',185,'Household Member is',1,NULL,NULL,NULL),
+ (294,147,8,'b_a',185,'Household Member is',20,'Household Member of',1,NULL,NULL,NULL),
+ (295,148,8,'a_b',69,'Household Member of',185,'Household Member is',1,NULL,NULL,NULL),
+ (296,148,8,'b_a',185,'Household Member is',69,'Household Member of',1,NULL,NULL,NULL),
+ (297,149,7,'a_b',149,'Head of Household for',185,'Head of Household is',1,NULL,NULL,NULL),
+ (298,149,7,'b_a',185,'Head of Household is',149,'Head of Household for',1,NULL,NULL,NULL),
+ (299,150,2,'a_b',41,'Spouse of',149,'Spouse of',1,NULL,NULL,NULL),
+ (300,150,2,'b_a',149,'Spouse of',41,'Spouse of',1,NULL,NULL,NULL),
+ (301,151,1,'a_b',114,'Child of',57,'Parent of',1,NULL,NULL,NULL),
+ (302,151,1,'b_a',57,'Parent of',114,'Child of',1,NULL,NULL,NULL),
+ (303,152,1,'a_b',109,'Child of',57,'Parent of',1,NULL,NULL,NULL),
+ (304,152,1,'b_a',57,'Parent of',109,'Child of',1,NULL,NULL,NULL),
+ (305,153,1,'a_b',114,'Child of',113,'Parent of',1,NULL,NULL,NULL),
+ (306,153,1,'b_a',113,'Parent of',114,'Child of',1,NULL,NULL,NULL),
+ (307,154,1,'a_b',109,'Child of',113,'Parent of',1,NULL,NULL,NULL),
+ (308,154,1,'b_a',113,'Parent of',109,'Child of',1,NULL,NULL,NULL),
+ (309,155,4,'a_b',109,'Sibling of',114,'Sibling of',1,NULL,NULL,NULL),
+ (310,155,4,'b_a',114,'Sibling of',109,'Sibling of',1,NULL,NULL,NULL),
+ (311,156,8,'a_b',113,'Household Member of',111,'Household Member is',1,NULL,NULL,NULL),
+ (312,156,8,'b_a',111,'Household Member is',113,'Household Member of',1,NULL,NULL,NULL),
+ (313,157,8,'a_b',114,'Household Member of',111,'Household Member is',1,NULL,NULL,NULL),
+ (314,157,8,'b_a',111,'Household Member is',114,'Household Member of',1,NULL,NULL,NULL),
+ (315,158,8,'a_b',109,'Household Member of',111,'Household Member is',1,NULL,NULL,NULL),
+ (316,158,8,'b_a',111,'Household Member is',109,'Household Member of',1,NULL,NULL,NULL),
+ (317,159,7,'a_b',57,'Head of Household for',111,'Head of Household is',1,NULL,NULL,NULL),
+ (318,159,7,'b_a',111,'Head of Household is',57,'Head of Household for',1,NULL,NULL,NULL),
+ (319,160,2,'a_b',113,'Spouse of',57,'Spouse of',1,NULL,NULL,NULL),
+ (320,160,2,'b_a',57,'Spouse of',113,'Spouse of',1,NULL,NULL,NULL),
+ (321,161,1,'a_b',99,'Child of',145,'Parent of',1,NULL,NULL,NULL),
+ (322,161,1,'b_a',145,'Parent of',99,'Child of',1,NULL,NULL,NULL),
+ (323,162,1,'a_b',103,'Child of',145,'Parent of',1,NULL,NULL,NULL),
+ (324,162,1,'b_a',145,'Parent of',103,'Child of',1,NULL,NULL,NULL),
+ (325,163,1,'a_b',99,'Child of',163,'Parent of',1,NULL,NULL,NULL),
+ (326,163,1,'b_a',163,'Parent of',99,'Child of',1,NULL,NULL,NULL),
+ (327,164,1,'a_b',103,'Child of',163,'Parent of',1,NULL,NULL,NULL),
+ (328,164,1,'b_a',163,'Parent of',103,'Child of',1,NULL,NULL,NULL),
+ (329,165,4,'a_b',103,'Sibling of',99,'Sibling of',1,NULL,NULL,NULL),
+ (330,165,4,'b_a',99,'Sibling of',103,'Sibling of',1,NULL,NULL,NULL),
+ (331,166,8,'a_b',163,'Household Member of',5,'Household Member is',1,NULL,NULL,NULL),
+ (332,166,8,'b_a',5,'Household Member is',163,'Household Member of',1,NULL,NULL,NULL),
+ (333,167,8,'a_b',99,'Household Member of',5,'Household Member is',1,NULL,NULL,NULL),
+ (334,167,8,'b_a',5,'Household Member is',99,'Household Member of',1,NULL,NULL,NULL),
+ (335,168,8,'a_b',103,'Household Member of',5,'Household Member is',1,NULL,NULL,NULL),
+ (336,168,8,'b_a',5,'Household Member is',103,'Household Member of',1,NULL,NULL,NULL),
+ (337,169,7,'a_b',145,'Head of Household for',5,'Head of Household is',1,NULL,NULL,NULL),
+ (338,169,7,'b_a',5,'Head of Household is',145,'Head of Household for',1,NULL,NULL,NULL),
+ (339,170,2,'a_b',163,'Spouse of',145,'Spouse of',1,NULL,NULL,NULL),
+ (340,170,2,'b_a',145,'Spouse of',163,'Spouse of',1,NULL,NULL,NULL),
+ (341,171,1,'a_b',54,'Child of',153,'Parent of',1,NULL,NULL,NULL),
+ (342,171,1,'b_a',153,'Parent of',54,'Child of',1,NULL,NULL,NULL),
+ (343,172,1,'a_b',108,'Child of',153,'Parent of',1,NULL,NULL,NULL),
+ (344,172,1,'b_a',153,'Parent of',108,'Child of',1,NULL,NULL,NULL),
+ (345,173,1,'a_b',54,'Child of',34,'Parent of',1,NULL,NULL,NULL),
+ (346,173,1,'b_a',34,'Parent of',54,'Child of',1,NULL,NULL,NULL),
+ (347,174,1,'a_b',108,'Child of',34,'Parent of',1,NULL,NULL,NULL),
+ (348,174,1,'b_a',34,'Parent of',108,'Child of',1,NULL,NULL,NULL),
+ (349,175,4,'a_b',108,'Sibling of',54,'Sibling of',1,NULL,NULL,NULL),
+ (350,175,4,'b_a',54,'Sibling of',108,'Sibling of',1,NULL,NULL,NULL),
+ (351,176,8,'a_b',34,'Household Member of',64,'Household Member is',1,NULL,NULL,NULL),
+ (352,176,8,'b_a',64,'Household Member is',34,'Household Member of',1,NULL,NULL,NULL),
+ (353,177,8,'a_b',54,'Household Member of',64,'Household Member is',1,NULL,NULL,NULL),
+ (354,177,8,'b_a',64,'Household Member is',54,'Household Member of',1,NULL,NULL,NULL),
+ (355,178,8,'a_b',108,'Household Member of',64,'Household Member is',1,NULL,NULL,NULL),
+ (356,178,8,'b_a',64,'Household Member is',108,'Household Member of',1,NULL,NULL,NULL),
+ (357,179,7,'a_b',153,'Head of Household for',64,'Head of Household is',1,NULL,NULL,NULL),
+ (358,179,7,'b_a',64,'Head of Household is',153,'Head of Household for',1,NULL,NULL,NULL),
+ (359,180,2,'a_b',34,'Spouse of',153,'Spouse of',1,NULL,NULL,NULL),
+ (360,180,2,'b_a',153,'Spouse of',34,'Spouse of',1,NULL,NULL,NULL),
+ (361,181,1,'a_b',95,'Child of',173,'Parent of',1,NULL,NULL,NULL),
+ (362,181,1,'b_a',173,'Parent of',95,'Child of',1,NULL,NULL,NULL),
+ (363,182,1,'a_b',62,'Child of',173,'Parent of',1,NULL,NULL,NULL),
+ (364,182,1,'b_a',173,'Parent of',62,'Child of',1,NULL,NULL,NULL),
+ (365,183,1,'a_b',95,'Child of',93,'Parent of',1,NULL,NULL,NULL),
+ (366,183,1,'b_a',93,'Parent of',95,'Child of',1,NULL,NULL,NULL),
+ (367,184,1,'a_b',62,'Child of',93,'Parent of',1,NULL,NULL,NULL),
+ (368,184,1,'b_a',93,'Parent of',62,'Child of',1,NULL,NULL,NULL),
+ (369,185,4,'a_b',62,'Sibling of',95,'Sibling of',1,NULL,NULL,NULL),
+ (370,185,4,'b_a',95,'Sibling of',62,'Sibling of',1,NULL,NULL,NULL),
+ (371,186,8,'a_b',93,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL),
+ (372,186,8,'b_a',10,'Household Member is',93,'Household Member of',1,NULL,NULL,NULL),
+ (373,187,8,'a_b',95,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL),
+ (374,187,8,'b_a',10,'Household Member is',95,'Household Member of',1,NULL,NULL,NULL),
+ (375,188,8,'a_b',62,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL),
+ (376,188,8,'b_a',10,'Household Member is',62,'Household Member of',1,NULL,NULL,NULL),
+ (377,189,7,'a_b',173,'Head of Household for',10,'Head of Household is',0,NULL,NULL,NULL),
+ (378,189,7,'b_a',10,'Head of Household is',173,'Head of Household for',0,NULL,NULL,NULL),
+ (379,190,2,'a_b',93,'Spouse of',173,'Spouse of',0,NULL,NULL,NULL),
+ (380,190,2,'b_a',173,'Spouse of',93,'Spouse of',0,NULL,NULL,NULL),
+ (381,191,1,'a_b',25,'Child of',165,'Parent of',1,NULL,NULL,NULL),
+ (382,191,1,'b_a',165,'Parent of',25,'Child of',1,NULL,NULL,NULL),
+ (383,192,1,'a_b',143,'Child of',165,'Parent of',1,NULL,NULL,NULL),
+ (384,192,1,'b_a',165,'Parent of',143,'Child of',1,NULL,NULL,NULL),
+ (385,193,1,'a_b',25,'Child of',22,'Parent of',1,NULL,NULL,NULL),
+ (386,193,1,'b_a',22,'Parent of',25,'Child of',1,NULL,NULL,NULL),
+ (387,194,1,'a_b',143,'Child of',22,'Parent of',1,NULL,NULL,NULL),
+ (388,194,1,'b_a',22,'Parent of',143,'Child of',1,NULL,NULL,NULL),
+ (389,195,4,'a_b',143,'Sibling of',25,'Sibling of',1,NULL,NULL,NULL),
+ (390,195,4,'b_a',25,'Sibling of',143,'Sibling of',1,NULL,NULL,NULL),
+ (391,196,8,'a_b',22,'Household Member of',60,'Household Member is',1,NULL,NULL,NULL),
+ (392,196,8,'b_a',60,'Household Member is',22,'Household Member of',1,NULL,NULL,NULL),
+ (393,197,8,'a_b',25,'Household Member of',60,'Household Member is',1,NULL,NULL,NULL),
+ (394,197,8,'b_a',60,'Household Member is',25,'Household Member of',1,NULL,NULL,NULL),
+ (395,198,8,'a_b',143,'Household Member of',60,'Household Member is',1,NULL,NULL,NULL),
+ (396,198,8,'b_a',60,'Household Member is',143,'Household Member of',1,NULL,NULL,NULL),
+ (397,199,7,'a_b',165,'Head of Household for',60,'Head of Household is',1,NULL,NULL,NULL),
+ (398,199,7,'b_a',60,'Head of Household is',165,'Head of Household for',1,NULL,NULL,NULL),
+ (399,200,2,'a_b',22,'Spouse of',165,'Spouse of',1,NULL,NULL,NULL),
+ (400,200,2,'b_a',165,'Spouse of',22,'Spouse of',1,NULL,NULL,NULL),
+ (401,201,5,'a_b',124,'Employee of',2,'Employer of',1,NULL,NULL,NULL),
+ (402,201,5,'b_a',2,'Employer of',124,'Employee of',1,NULL,NULL,NULL),
+ (403,202,5,'a_b',125,'Employee of',6,'Employer of',1,NULL,NULL,NULL),
+ (404,202,5,'b_a',6,'Employer of',125,'Employee of',1,NULL,NULL,NULL),
+ (405,203,5,'a_b',155,'Employee of',65,'Employer of',1,NULL,NULL,NULL),
+ (406,203,5,'b_a',65,'Employer of',155,'Employee of',1,NULL,NULL,NULL),
+ (407,204,5,'a_b',117,'Employee of',71,'Employer of',1,NULL,NULL,NULL),
+ (408,204,5,'b_a',71,'Employer of',117,'Employee of',1,NULL,NULL,NULL),
+ (409,205,5,'a_b',188,'Employee of',73,'Employer of',1,NULL,NULL,NULL),
+ (410,205,5,'b_a',73,'Employer of',188,'Employee of',1,NULL,NULL,NULL),
+ (411,206,5,'a_b',171,'Employee of',79,'Employer of',1,NULL,NULL,NULL),
+ (412,206,5,'b_a',79,'Employer of',171,'Employee of',1,NULL,NULL,NULL),
+ (413,207,5,'a_b',21,'Employee of',90,'Employer of',1,NULL,NULL,NULL),
+ (414,207,5,'b_a',90,'Employer of',21,'Employee of',1,NULL,NULL,NULL),
+ (415,208,5,'a_b',61,'Employee of',97,'Employer of',1,NULL,NULL,NULL),
+ (416,208,5,'b_a',97,'Employer of',61,'Employee of',1,NULL,NULL,NULL),
+ (417,209,5,'a_b',107,'Employee of',105,'Employer of',1,NULL,NULL,NULL),
+ (418,209,5,'b_a',105,'Employer of',107,'Employee of',1,NULL,NULL,NULL),
+ (419,210,5,'a_b',121,'Employee of',106,'Employer of',1,NULL,NULL,NULL),
+ (420,210,5,'b_a',106,'Employer of',121,'Employee of',1,NULL,NULL,NULL),
+ (421,211,5,'a_b',36,'Employee of',112,'Employer of',1,NULL,NULL,NULL),
+ (422,211,5,'b_a',112,'Employer of',36,'Employee of',1,NULL,NULL,NULL),
+ (423,212,5,'a_b',122,'Employee of',132,'Employer of',1,NULL,NULL,NULL),
+ (424,212,5,'b_a',132,'Employer of',122,'Employee of',1,NULL,NULL,NULL),
+ (425,213,5,'a_b',181,'Employee of',133,'Employer of',1,NULL,NULL,NULL),
+ (426,213,5,'b_a',133,'Employer of',181,'Employee of',1,NULL,NULL,NULL),
+ (427,214,5,'a_b',22,'Employee of',139,'Employer of',1,NULL,NULL,NULL),
+ (428,214,5,'b_a',139,'Employer of',22,'Employee of',1,NULL,NULL,NULL),
+ (429,215,5,'a_b',57,'Employee of',152,'Employer of',1,NULL,NULL,NULL),
+ (430,215,5,'b_a',152,'Employer of',57,'Employee of',1,NULL,NULL,NULL);
 /*!40000 ALTER TABLE `civicrm_relationship_cache` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -12008,90 +12259,90 @@ 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,19,2,'2021-09-15 09:50:42','Email','Added',NULL),
- (2,74,2,'2022-01-20 12:51:14','Admin','Added',NULL),
- (3,36,2,'2022-04-17 16:36:41','Email','Added',NULL),
- (4,72,2,'2022-07-18 00:51:29','Admin','Added',NULL),
- (5,65,2,'2022-04-13 04:29:53','Email','Added',NULL),
- (6,195,2,'2022-03-01 06:01:29','Email','Added',NULL),
- (7,14,2,'2022-02-05 09:55:24','Admin','Added',NULL),
- (8,121,2,'2022-03-23 08:43:37','Email','Added',NULL),
- (9,112,2,'2021-10-06 15:16:05','Email','Added',NULL),
- (10,27,2,'2022-07-06 16:41:05','Email','Added',NULL),
- (11,68,2,'2022-07-15 20:07:02','Admin','Added',NULL),
- (12,142,2,'2022-05-09 12:49:29','Admin','Added',NULL),
- (13,165,2,'2022-05-17 03:42:25','Admin','Added',NULL),
- (14,18,2,'2022-04-12 17:10:56','Email','Added',NULL),
- (15,52,2,'2022-03-25 02:51:10','Email','Added',NULL),
- (16,128,2,'2021-10-09 10:50:31','Admin','Added',NULL),
- (17,93,2,'2021-12-29 22:13:59','Email','Added',NULL),
- (18,106,2,'2022-07-26 05:39:07','Email','Added',NULL),
- (19,163,2,'2021-09-09 12:35:53','Admin','Added',NULL),
- (20,46,2,'2022-08-02 09:25:41','Email','Added',NULL),
- (21,159,2,'2021-12-14 16:49:45','Email','Added',NULL),
- (22,32,2,'2022-02-16 15:48:53','Admin','Added',NULL),
- (23,51,2,'2022-03-10 10:45:04','Admin','Added',NULL),
- (24,110,2,'2022-02-28 02:46:26','Email','Added',NULL),
- (25,138,2,'2021-11-15 11:09:47','Email','Added',NULL),
- (26,120,2,'2021-12-22 12:12:27','Admin','Added',NULL),
- (27,91,2,'2021-09-12 00:32:06','Admin','Added',NULL),
- (28,90,2,'2022-03-06 04:10:59','Admin','Added',NULL),
- (29,80,2,'2021-10-08 19:44:11','Admin','Added',NULL),
- (30,108,2,'2022-07-01 07:48:13','Admin','Added',NULL),
- (31,166,2,'2021-09-16 06:34:51','Admin','Added',NULL),
- (32,78,2,'2022-02-23 13:42:18','Email','Added',NULL),
- (33,10,2,'2021-08-29 04:54:47','Email','Added',NULL),
- (34,185,2,'2022-07-01 14:30:47','Admin','Added',NULL),
- (35,24,2,'2022-08-05 04:46:16','Admin','Added',NULL),
- (36,155,2,'2022-07-12 13:00:36','Email','Added',NULL),
- (37,175,2,'2022-07-09 17:56:36','Email','Added',NULL),
- (38,145,2,'2021-10-25 03:05:30','Email','Added',NULL),
- (39,58,2,'2022-04-10 00:20:30','Admin','Added',NULL),
- (40,33,2,'2022-05-20 06:35:06','Admin','Added',NULL),
- (41,111,2,'2021-10-12 04:56:58','Admin','Added',NULL),
- (42,184,2,'2022-06-13 23:37:57','Admin','Added',NULL),
- (43,197,2,'2022-05-01 00:50:49','Email','Added',NULL),
- (44,2,2,'2021-11-15 16:48:40','Email','Added',NULL),
- (45,60,2,'2022-01-31 19:33:11','Email','Added',NULL),
- (46,170,2,'2022-02-15 10:10:10','Email','Added',NULL),
- (47,100,2,'2022-01-08 20:59:09','Admin','Added',NULL),
- (48,12,2,'2022-05-26 07:06:13','Email','Added',NULL),
- (49,75,2,'2022-03-11 17:28:42','Admin','Added',NULL),
- (50,133,2,'2022-05-14 20:38:22','Admin','Added',NULL),
- (51,34,2,'2021-09-22 05:08:22','Admin','Added',NULL),
- (52,169,2,'2022-06-16 03:53:50','Email','Added',NULL),
- (53,57,2,'2022-07-28 17:34:36','Email','Added',NULL),
- (54,164,2,'2022-05-06 12:46:28','Admin','Added',NULL),
- (55,150,2,'2022-05-09 08:33:06','Admin','Added',NULL),
- (56,95,2,'2022-03-30 06:10:11','Email','Added',NULL),
- (57,7,2,'2021-12-23 05:13:25','Admin','Added',NULL),
- (58,79,2,'2022-01-06 10:17:37','Email','Added',NULL),
- (59,29,2,'2021-11-05 23:12:31','Email','Added',NULL),
- (60,193,2,'2021-09-29 01:50:01','Email','Added',NULL),
- (61,50,3,'2021-11-10 18:46:54','Admin','Added',NULL),
- (62,173,3,'2021-10-10 11:06:11','Admin','Added',NULL),
- (63,194,3,'2022-06-15 16:51:08','Email','Added',NULL),
- (64,144,3,'2021-09-17 13:03:31','Admin','Added',NULL),
- (65,38,3,'2022-07-31 09:16:36','Admin','Added',NULL),
- (66,171,3,'2022-03-08 01:15:14','Email','Added',NULL),
- (67,104,3,'2022-02-12 22:33:14','Admin','Added',NULL),
- (68,153,3,'2022-06-28 18:16:51','Admin','Added',NULL),
- (69,115,3,'2022-02-16 09:22:40','Email','Added',NULL),
- (70,45,3,'2021-08-22 07:39:00','Email','Added',NULL),
- (71,62,3,'2021-09-08 21:21:11','Admin','Added',NULL),
- (72,182,3,'2022-01-14 03:36:53','Admin','Added',NULL),
- (73,178,3,'2022-02-25 11:35:17','Email','Added',NULL),
- (74,97,3,'2021-10-13 23:00:40','Email','Added',NULL),
- (75,132,3,'2022-03-02 13:35:24','Email','Added',NULL),
- (76,19,4,'2021-08-13 23:26:19','Admin','Added',NULL),
- (77,121,4,'2021-10-25 13:56:02','Admin','Added',NULL),
- (78,52,4,'2022-01-15 08:19:39','Admin','Added',NULL),
- (79,32,4,'2021-08-19 05:42:22','Email','Added',NULL),
- (80,80,4,'2022-04-13 23:06:04','Email','Added',NULL),
- (81,155,4,'2022-05-13 20:57:17','Admin','Added',NULL),
- (82,197,4,'2022-02-19 02:51:54','Email','Added',NULL),
- (83,133,4,'2021-08-23 02:25:43','Admin','Added',NULL),
- (84,202,4,'2021-10-16 03:07:11','Admin','Added',NULL);
+ (1,102,2,'2022-01-19 19:21:36','Email','Added',NULL),
+ (2,151,2,'2022-05-11 13:48:42','Admin','Added',NULL),
+ (3,72,2,'2022-02-14 17:22:07','Admin','Added',NULL),
+ (4,27,2,'2022-05-30 19:39:20','Admin','Added',NULL),
+ (5,147,2,'2022-08-25 18:54:03','Admin','Added',NULL),
+ (6,4,2,'2022-06-27 04:54:18','Email','Added',NULL),
+ (7,15,2,'2022-07-17 02:37:33','Email','Added',NULL),
+ (8,135,2,'2022-04-11 04:35:26','Admin','Added',NULL),
+ (9,186,2,'2022-03-10 03:41:20','Admin','Added',NULL),
+ (10,48,2,'2022-03-13 06:10:50','Email','Added',NULL),
+ (11,128,2,'2022-04-11 19:33:19','Admin','Added',NULL),
+ (12,156,2,'2022-07-06 21:10:22','Email','Added',NULL),
+ (13,38,2,'2021-12-28 21:07:28','Email','Added',NULL),
+ (14,101,2,'2022-06-26 16:44:11','Email','Added',NULL),
+ (15,175,2,'2022-08-18 20:16:39','Admin','Added',NULL),
+ (16,193,2,'2022-01-07 04:11:43','Admin','Added',NULL),
+ (17,160,2,'2022-07-06 00:19:42','Admin','Added',NULL),
+ (18,155,2,'2022-08-19 04:07:30','Email','Added',NULL),
+ (19,28,2,'2022-08-09 01:11:48','Admin','Added',NULL),
+ (20,55,2,'2022-04-12 18:40:24','Admin','Added',NULL),
+ (21,198,2,'2022-03-05 07:15:42','Email','Added',NULL),
+ (22,179,2,'2022-03-16 10:52:29','Email','Added',NULL),
+ (23,196,2,'2021-11-12 14:30:09','Email','Added',NULL),
+ (24,188,2,'2022-09-27 05:55:04','Admin','Added',NULL),
+ (25,94,2,'2022-03-22 09:11:26','Admin','Added',NULL),
+ (26,51,2,'2022-05-29 05:09:36','Admin','Added',NULL),
+ (27,194,2,'2022-07-25 15:08:58','Email','Added',NULL),
+ (28,195,2,'2022-04-15 20:46:47','Admin','Added',NULL),
+ (29,85,2,'2022-01-15 22:41:47','Admin','Added',NULL),
+ (30,17,2,'2021-11-27 22:49:41','Admin','Added',NULL),
+ (31,154,2,'2022-04-15 19:37:20','Admin','Added',NULL),
+ (32,75,2,'2022-06-27 11:35:11','Admin','Added',NULL),
+ (33,3,2,'2021-12-18 17:49:29','Email','Added',NULL),
+ (34,199,2,'2022-01-07 22:53:34','Admin','Added',NULL),
+ (35,87,2,'2021-10-03 05:31:26','Email','Added',NULL),
+ (36,12,2,'2022-07-14 01:25:20','Email','Added',NULL),
+ (37,168,2,'2022-07-02 02:10:37','Email','Added',NULL),
+ (38,134,2,'2022-02-11 04:52:21','Email','Added',NULL),
+ (39,78,2,'2022-07-23 18:58:34','Email','Added',NULL),
+ (40,8,2,'2021-12-08 23:10:39','Admin','Added',NULL),
+ (41,192,2,'2022-01-08 13:59:50','Admin','Added',NULL),
+ (42,124,2,'2022-07-20 10:32:38','Admin','Added',NULL),
+ (43,129,2,'2022-05-18 01:09:24','Admin','Added',NULL),
+ (44,53,2,'2022-05-07 17:53:31','Email','Added',NULL),
+ (45,141,2,'2021-11-02 13:25:33','Admin','Added',NULL),
+ (46,42,2,'2021-12-03 14:21:41','Email','Added',NULL),
+ (47,166,2,'2022-09-26 05:57:47','Email','Added',NULL),
+ (48,21,2,'2022-03-14 16:17:34','Admin','Added',NULL),
+ (49,89,2,'2022-06-14 01:16:43','Email','Added',NULL),
+ (50,122,2,'2022-03-04 09:06:30','Admin','Added',NULL),
+ (51,140,2,'2022-06-29 01:51:57','Admin','Added',NULL),
+ (52,150,2,'2022-04-18 05:12:46','Admin','Added',NULL),
+ (53,39,2,'2022-02-11 18:14:07','Admin','Added',NULL),
+ (54,184,2,'2021-11-23 20:23:37','Email','Added',NULL),
+ (55,77,2,'2022-07-14 08:22:04','Email','Added',NULL),
+ (56,44,2,'2022-04-01 08:16:28','Admin','Added',NULL),
+ (57,82,2,'2021-11-03 06:12:30','Email','Added',NULL),
+ (58,81,2,'2021-10-18 17:16:57','Admin','Added',NULL),
+ (59,110,2,'2022-09-30 08:28:15','Email','Added',NULL),
+ (60,130,2,'2022-04-05 18:44:34','Admin','Added',NULL),
+ (61,91,3,'2022-09-03 01:05:26','Admin','Added',NULL),
+ (62,83,3,'2022-06-27 11:32:11','Admin','Added',NULL),
+ (63,46,3,'2021-10-21 17:34:33','Admin','Added',NULL),
+ (64,137,3,'2022-04-25 11:48:00','Email','Added',NULL),
+ (65,127,3,'2022-08-09 19:12:22','Admin','Added',NULL),
+ (66,47,3,'2022-05-03 16:59:03','Admin','Added',NULL),
+ (67,187,3,'2022-01-18 03:50:02','Email','Added',NULL),
+ (68,36,3,'2022-04-05 18:40:44','Admin','Added',NULL),
+ (69,144,3,'2022-02-22 04:20:24','Admin','Added',NULL),
+ (70,68,3,'2021-12-29 16:51:48','Email','Added',NULL),
+ (71,183,3,'2022-09-24 18:19:41','Email','Added',NULL),
+ (72,138,3,'2022-09-03 10:04:40','Email','Added',NULL),
+ (73,146,3,'2021-10-23 19:14:50','Email','Added',NULL),
+ (74,176,3,'2021-12-21 04:33:23','Email','Added',NULL),
+ (75,174,3,'2022-06-23 16:41:51','Admin','Added',NULL),
+ (76,102,4,'2021-10-20 17:44:58','Admin','Added',NULL),
+ (77,135,4,'2022-02-14 07:54:13','Admin','Added',NULL),
+ (78,175,4,'2022-06-22 18:38:27','Admin','Added',NULL),
+ (79,179,4,'2022-02-19 10:36:41','Email','Added',NULL),
+ (80,85,4,'2021-10-31 05:23:20','Email','Added',NULL),
+ (81,12,4,'2022-02-25 07:20:26','Email','Added',NULL),
+ (82,129,4,'2021-10-28 16:38:29','Email','Added',NULL),
+ (83,122,4,'2022-03-14 00:00:06','Admin','Added',NULL),
+ (84,202,4,'2021-10-07 00:04:54','Email','Added',NULL);
 /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -12317,20 +12568,22 @@ 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,82,'http://ruralliteracy.org',1),
- (2,69,'http://rhinehartpeaceschool.org',1),
- (3,15,'http://floridaacademy.org',1),
- (4,99,'http://dianapoetry.org',1),
- (5,41,'http://globalfellowship.org',1),
- (6,122,'http://baltimorefellowship.org',1),
- (7,5,'http://collegehealthacademy.org',1),
- (8,55,'http://ecmusicsystems.org',1),
- (9,147,'http://missouridevelopment.org',1),
- (10,154,'http://progressivesportsfellowship.org',1),
- (11,127,'http://indianatechnology.org',1),
- (12,118,'http://guymonacademy.org',1),
- (13,61,'http://sierranetwork.org',1),
- (14,64,'http://cauldermusic.org',1);
+ (1,6,'http://rurallegalnetwork.org',1),
+ (2,133,'http://delawarepeace.org',1),
+ (3,106,'http://creativeliteracyschool.org',1),
+ (4,65,'http://indianaacademy.org',1),
+ (5,79,'http://woodbridgeeducation.org',1),
+ (6,90,'http://communityservices.org',1),
+ (7,71,'http://vnagriculturesolutions.org',1),
+ (8,152,'http://iowaservices.org',1),
+ (9,139,'http://sedaliapeacefellowship.org',1),
+ (10,73,'http://oklahomatrust.org',1),
+ (11,126,'http://communitytechnology.org',1),
+ (12,84,'http://blenheimschool.org',1),
+ (13,96,'http://unitedpoetry.org',1),
+ (14,201,'http://vnsustainabilityfellowship.org',1),
+ (15,112,'http://scwellnesspartners.org',1),
+ (16,105,'http://oregonwellness.org',1);
 /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */;
 UNLOCK TABLES;
 
@@ -12362,12 +12615,13 @@ UNLOCK TABLES;
 
 /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
 /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
 /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
 /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
--- Dump completed on 2022-08-09 14:17:39
+-- Dump completed on 2022-10-01 23:23:05
 -- +--------------------------------------------------------------------+
 -- | Copyright CiviCRM LLC. All rights reserved.                        |
 -- |                                                                    |
diff --git a/civicrm/sql/civicrm_navigation.mysql b/civicrm/sql/civicrm_navigation.mysql
index f6cf0a8f5186ad519f833df2bf704ae55167967f..b3868a4de78fe175a0a773931cfeccc5284ca985 100644
--- a/civicrm/sql/civicrm_navigation.mysql
+++ b/civicrm/sql/civicrm_navigation.mysql
@@ -64,11 +64,6 @@ VALUES
     ( @domainID, 'civicrm/pledge/search?reset=1',                           'Find Pledges',       'Find Pledges', 'access CiviPledge', '',        @searchlastID, '1', NULL, 10 ),
     ( @domainID, 'civicrm/activity/search?reset=1',                         'Find Activities',    'Find Activities', NULL,  '',                   @searchlastID, '1', '1',  11 );
 
-INSERT INTO civicrm_navigation
-    ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight )
-VALUES
-    ( @domainID, 'civicrm/contact/search/custom/list?reset=1',              'Custom Searches', 'Custom Searches', NULL, '',                 @searchlastID, '1', NULL, 12 );
-
 INSERT INTO civicrm_navigation
     ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight, icon )
 VALUES
@@ -285,8 +280,7 @@ VALUES
     ( @domainID, 'civicrm/admin/setting/search?reset=1',    'Search Preferences',    'Search Preferences',                'administer CiviCRM', '',   @CustomizelastID, '1', NULL, 10 ),
     ( @domainID, 'civicrm/admin/setting/preferences/date?reset=1', 'Date Preferences', 'Date Preferences', 'administer CiviCRM', '', @CustomizelastID, '1', NULL, 11 ),
     ( @domainID, 'civicrm/admin/menu?reset=1',              'Navigation Menu', 'Navigation Menu',                         'administer CiviCRM', '',   @CustomizelastID, '1', NULL, 12 ),
-    ( @domainID, 'civicrm/admin/options/wordreplacements?reset=1','Word Replacements','Word Replacements',                'administer CiviCRM', '',   @CustomizelastID, '1', NULL, 13 ),
-    ( @domainID, 'civicrm/admin/options/custom_search?reset=1', 'Manage Custom Searches', 'Manage Custom Searches', 'administer CiviCRM', '', @CustomizelastID, '1', NULL, 14 );
+    ( @domainID, 'civicrm/admin/options/wordreplacements?reset=1','Word Replacements','Word Replacements',                'administer CiviCRM', '',   @CustomizelastID, '1', NULL, 13 );
 
 INSERT INTO civicrm_navigation
     ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight )
diff --git a/civicrm/sql/civicrm_sample.mysql b/civicrm/sql/civicrm_sample.mysql
index 2756993250b3337589f29ff8ee198677a6a06b36..47b17fbc135d91aaad8d4064f8776a1bf2142fef 100644
--- a/civicrm/sql/civicrm_sample.mysql
+++ b/civicrm/sql/civicrm_sample.mysql
@@ -15,9 +15,9 @@ SELECT @domainID := id FROM civicrm_domain where name = 'Default Domain Name';
 -- Sample Extended Property Group and Fields
 
 INSERT INTO `civicrm_price_set` (`name`,`title`,`is_active`,`extends`,`is_quick_config`)
-VALUES ('help_support_civicrm_amount', 'Help Support CiviCRM!', 1, 2, 1);
+VALUES ('help_support_civicrm_amount', 'Help Support CiviCRM!', 1, 2, 0);
 
-SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `is_quick_config` = 1 and name = 'help_support_civicrm_amount';
+SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE name = 'help_support_civicrm_amount';
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'contribution_amount', 'Contribution Amount', 'Radio', 0, 2, 1, 1, 1, 0, 1),
@@ -144,7 +144,7 @@ INSERT INTO `civicrm_price_set` (`name`,`title`,`is_active`,`extends`, `financia
 VALUES ('member_signup_and_renewal', 'Member Signup and Renewal', 1, 3, @financial_type_id, 1),
        ('pledge_for_civicrm', 'Pledge for CiviCRM!',1,2,null,1);
 
-SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `is_quick_config` = 1 and name = 'member_signup_and_renewal';
+SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE name = 'member_signup_and_renewal';
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`) VALUES ( @priceSetId, 'membership_amount', 'Membership', 'Radio', 0, 1, 1, 1, 1, 1, 1);
 
@@ -162,7 +162,7 @@ VALUES
     (@priceFieldID,'General','General','100.00', 1, @membershipIdG, 1, 1, @financial_type_id),
     (@priceFieldID,'Student','Student','50.00', 1, @membershipIdS , 1, 0, @financial_type_id);
 
-SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `is_quick_config` = 1 AND `name` = 'pledge_for_civicrm';
+SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `name` = 'pledge_for_civicrm';
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'other_amount', 'Contribution Amount', 'Text', 0, 3, 0, 1, 1, 1, 1);
@@ -183,9 +183,9 @@ VALUES
 INSERT INTO `civicrm_price_set` (`name`,`title`,`is_active`,`extends`, `is_quick_config`)
 VALUES ('rain_forest_cup_youth_soccer_tournament', 'Rain-forest Cup Youth Soccer Tournament', 1, 1, 1),
        ('fall_fundraiser_dinner', 'Fall Fundraiser Dinner', 1, 1, 1),
-       ('summer_solstice_festival_day_concert', 'Summer Solstice Festival Day Concert',1,1,1);
+       ('summer_solstice_festival_day_concert', 'Summer Solstice Festival Day Concert',1,1,0);
 
-SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `is_quick_config` = 1 AND `name` = 'rain_forest_cup_youth_soccer_tournament';
+SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `name` = 'rain_forest_cup_youth_soccer_tournament';
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'tournament_fees', 'Tournament Fees', 'Radio', 0, 1, 1, 1, 1, 1, 1);
@@ -202,7 +202,7 @@ VALUES
     (@priceFieldID,'junior_Stars__ages_9_12_','Junior Stars (ages 9-12)','1000',2,1,0,4),
     (@priceFieldID,'super_Stars__ages_13_18_','Super Stars (ages 13-18)','1500',3,1,0,4);
 
-SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `is_quick_config` = 1 AND `name` = 'fall_fundraiser_dinner';
+SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `name` = 'fall_fundraiser_dinner';
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'dinner_contribution', 'Dinner Contribution', 'Radio', 0, 1, 1, 1, 1, 1, 1);
@@ -219,7 +219,7 @@ VALUES
     (@priceFieldID,'couple','Couple','100',2,1,0,4),
     (@priceFieldID,'family','Family','200',3,1,0,4);
 
-SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `is_quick_config` = 1 AND `name` = 'summer_solstice_festival_day_concert';
+SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `name` = 'summer_solstice_festival_day_concert';
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'festival_fee', 'Festival Fee', 'Radio', 0, 1, 1, 1, 1, 1, 1);
diff --git a/civicrm/templates/CRM/Activity/Import/Form/Summary.tpl b/civicrm/templates/CRM/Activity/Import/Form/Summary.tpl
deleted file mode 100644
index 65c07d980366baa30e3dce639b937648cb4c50c9..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Activity/Import/Form/Summary.tpl
+++ /dev/null
@@ -1,57 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{* Activity Import Wizard - Step 4 (summary of import results AFTER actual data loading) *}
-{* @var $form Contains the array for the form elements and other form associated information assigned to the template by the controller *}
-<div class="crm-block crm-form-block crm-activity-import-summary-form-block">
-
- {* WizardHeader.tpl provides visual display of steps thru the wizard as well as title for current step *}
- {include file="CRM/common/WizardHeader.tpl"}
-
- <div class="help">
-    <p>
-    {ts}<strong>Import has completed successfully.</strong> The information below summarizes the results.{/ts}
-    </p>
-
-    {if $invalidRowCount }
-        <p class="error">
-        {ts count=$invalidRowCount plural='CiviCRM has detected invalid data and/or formatting errors in %count records. These records have not been imported.'}CiviCRM has detected invalid data and/or formatting errors in one record. This record have not been imported.{/ts}
-        </p>
-        <p class="error">
-        {ts 1=$downloadErrorRecordsUrl}You can <a href='%1'>Download Errors</a>. You may then correct them, and import the new file with the corrected data.{/ts}
-        </p>
-    {/if}
- </div>
- <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div>
- {* Summary of Import Results (record counts) *}
- <table id="summary-counts" class="report">
-    <tr><td class="label crm-grid-cell">{ts}Total Rows{/ts}</td>
-        <td class="data">{$totalRowCount}</td>
-        <td class="explanation">{ts}Total rows (activity records) in uploaded file.{/ts}</td>
-    </tr>
-
-    {if $invalidRowCount }
-    <tr class="error"><td class="label crm-grid-cell">{ts}Invalid Rows (skipped){/ts}</td>
-        <td class="data">{$invalidRowCount}</td>
-        <td class="explanation">{ts}Rows with invalid data in one or more fields. These rows will be skipped (not imported).{/ts}
-            {if $invalidRowCount}
-                <p><a href="{$downloadErrorRecordsUrl}">{ts}Download Errors{/ts}</a></p>
-            {/if}
-        </td>
-    </tr>
-    {/if}
-    <tr><td class="label crm-grid-cell">{ts}Records Imported{/ts}</td>
-        <td class="data">{$validRowCount}</td>
-        <td class="explanation">{ts}Rows imported successfully.{/ts}</td>
-    </tr>
-
- </table>
-
- <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
- </div>
diff --git a/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl b/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl
index 25fb8e16fdd143887056b09b074d395b2003f7a2..5cdf8d7a6383e29709f5950e3878288af8185c77 100644
--- a/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl
+++ b/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl
@@ -56,11 +56,11 @@
     </tr>
     <tr class="crm-scheduleReminder-effective_start_date">
       <td class="right">{$form.effective_start_date.label}</td>
-      <td colspan="3">{$form.effective_start_date.html} <div class="description"></div></td>
+      <td colspan="3">{$form.effective_start_date.html} <div class="description">{ts}Earliest trigger date to <em>include</em>.{/ts}</div></td>
     </tr>
     <tr class="crm-scheduleReminder-effective_end_date">
       <td class="right">{$form.effective_end_date.label}</td>
-      <td colspan="3">{$form.effective_end_date.html} <div class="description"></div></td>
+      <td colspan="3">{$form.effective_end_date.html} <div class="description">{ts}Earliest trigger date to <em>exclude</em>.{/ts}</div></td>
     </tr>
     <tr>
       <td class="label" width="20%">{$form.from_name.label}</td>
@@ -177,11 +177,6 @@
       var $form = $('form.{/literal}{$form.formClass}{literal}'),
         recipientMapping = eval({/literal}{$recipientMapping}{literal});
 
-      updatedEffectiveDateDescription($('#entity_0 option:selected').text(), $('#start_action_date option:selected').text());
-      $('#entity_0, #start_action_date', $form).change(function() {
-       updatedEffectiveDateDescription($('#entity_0 option:selected').text(), $('#start_action_date option:selected').text());
-      });
-
       $('#absolute_date', $form).change(function() {
         $('.crm-scheduleReminder-effective_start_date, .crm-scheduleReminder-effective_end_date').toggle(($(this).val() === null));
       });
@@ -203,11 +198,6 @@
       loadMsgBox();
       $('#mode', $form).change(loadMsgBox);
 
-      function updatedEffectiveDateDescription(entityText, startActionDateText) {
-        $('.crm-scheduleReminder-effective_start_date .description').text(ts('Earliest %1 %2 to include.', {1: entityText, 2: startActionDateText}));
-        $('.crm-scheduleReminder-effective_end_date .description').text(ts('Earliest %1 %2 to exclude.', {1: entityText, 2: startActionDateText}));
-      }
-
       function populateRecipient() {
         var mappingID = $('#entity_0', $form).val() || $('[name^=mappingID]', $form).val();
         var recipient = $("#recipient", $form).val();
diff --git a/civicrm/templates/CRM/Admin/Form/Setting/Localization.tpl b/civicrm/templates/CRM/Admin/Form/Setting/Localization.tpl
index 05fd577a9b322c79d1bcaf5ba78ea10d4de66487..b27ca04611f64df5fad2ae5530beec4b17f09adb 100644
--- a/civicrm/templates/CRM/Admin/Form/Setting/Localization.tpl
+++ b/civicrm/templates/CRM/Admin/Form/Setting/Localization.tpl
@@ -49,6 +49,12 @@
               <span class="description">{$settings_fields.contact_default_language.description}</span>
             </td>
           </tr>
+          <tr class="crm-localization-form-partial_locales">
+            <td class="label">{$form.partial_locales.label}</td>
+            <td>{$form.partial_locales.html}<br />
+              <span class="description">{$settings_fields.partial_locales.description}</span>
+            </td>
+          </tr>
           <tr class="crm-localization-form-block-defaultCurrency">
             <td class="label">{$form.defaultCurrency.label} {help id='defaultCurrency' title=$form.defaultCurrency.label}</td>
             <td>{$form.defaultCurrency.html}</td>
diff --git a/civicrm/templates/CRM/Admin/Page/PaymentProcessor.tpl b/civicrm/templates/CRM/Admin/Page/PaymentProcessor.tpl
index 92dffc63a2a724f150886fb3b0f51454acaeea60..94e84730f1d1bd634e52a027dcd976b7c652c4ca 100644
--- a/civicrm/templates/CRM/Admin/Page/PaymentProcessor.tpl
+++ b/civicrm/templates/CRM/Admin/Page/PaymentProcessor.tpl
@@ -34,7 +34,7 @@
             <th></th>
         </tr>
         {foreach from=$rows item=row}
-        <tr id="payment_processor-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"}{if !empty($row.class)} {$row.class}{/if}{if NOT $row.is_active} disabled{/if}">
+        <tr id="payment_processor-{$row.id}" class="crm-entity {cycle values="odd-row,even-row"} {if NOT $row.is_active} disabled{/if}">
             <td class="crmf-id center">{$row.id}</td>
             <td class="crmf-test_id center">{$row.test_id}</td>
             <td class="crmf-name">{$row.name}</td>
diff --git a/civicrm/templates/CRM/Contact/Form/Contact.tpl b/civicrm/templates/CRM/Contact/Form/Contact.tpl
index fe56d71bb914e52245a90c7bc195f2de04838b45..962359cfab2cbdf43f17891bf14ec8c4b886427b 100644
--- a/civicrm/templates/CRM/Contact/Form/Contact.tpl
+++ b/civicrm/templates/CRM/Contact/Form/Contact.tpl
@@ -78,7 +78,7 @@
 
     {foreach from = $editOptions item = "title" key="name"}
       {if $name eq 'CustomData' }
-        <div id='customData'>{include file="CRM/Contact/Form/Edit/CustomData.tpl"}</div>
+        <div id='customData'>{include file="CRM/Contact/Form/Edit/CustomData.tpl" isSingleRecordEdit=false}</div>
       {else}
         {include file="CRM/Contact/Form/Edit/$name.tpl"}
       {/if}
diff --git a/civicrm/templates/CRM/Contact/Form/Domain.tpl b/civicrm/templates/CRM/Contact/Form/Domain.tpl
index ed1044c78f2f04e2a77182691201d4ed9864d7b4..5a1bc69c726deaa27b4e84d60d6627eda9b95fef 100644
--- a/civicrm/templates/CRM/Contact/Form/Domain.tpl
+++ b/civicrm/templates/CRM/Contact/Form/Domain.tpl
@@ -31,15 +31,15 @@
 
     <h3>{ts}Default Organization Address{/ts}</h3>
         <div class="description">{ts 1=&#123;domain.address&#125;}CiviMail mailings must include the sending organization's address. This is done by putting the %1 token in either the body or footer of the mailing. This token may also be used in regular 'Email - send now' messages and in other Message Templates. The token is replaced by the address entered below when the message is sent.{/ts}</div>
-        {include file="CRM/Contact/Form/Edit/Address.tpl" masterAddress='' parseStreetAddress=''}
+        {include file="CRM/Contact/Form/Edit/Address.tpl" blockId=1 masterAddress='' parseStreetAddress=''}
     <h3>{ts}Organization Contact Information{/ts}</h3>
         <div class="description">{ts}You can also include general email and/or phone contact information in mailings.{/ts} {help id="additional-contact"}</div>
         <table class="form-layout-compressed">
             {* Display the email block *}
-            {include file="CRM/Contact/Form/Edit/Email.tpl"}
+            {include file="CRM/Contact/Form/Edit/Email.tpl" blockId=1}
 
             {* Display the phone block *}
-            {include file="CRM/Contact/Form/Edit/Phone.tpl"}
+            {include file="CRM/Contact/Form/Edit/Phone.tpl" blockId=1}
         </table>
 
     <div class="spacer"></div>
diff --git a/civicrm/templates/CRM/Contact/Form/Edit/CommunicationPreferences.tpl b/civicrm/templates/CRM/Contact/Form/Edit/CommunicationPreferences.tpl
index 0bb4e39654b6e7307db3c71fa530e5747f0fd9d8..21099dd31945735d7945761ba4d7a69a84b52e54 100644
--- a/civicrm/templates/CRM/Contact/Form/Edit/CommunicationPreferences.tpl
+++ b/civicrm/templates/CRM/Contact/Form/Edit/CommunicationPreferences.tpl
@@ -103,12 +103,7 @@
           </td>
         </tr>
         <tr>
-            <td>{$form.is_opt_out.html} {$form.is_opt_out.label} {help id="id-optOut" file="CRM/Contact/Form/Contact.hlp"}</td>
-            {if !empty($form.preferred_mail_format)}
-                <td>{$form.preferred_mail_format.label} &nbsp;
-                    {$form.preferred_mail_format.html} {help id="id-emailFormat" file="CRM/Contact/Form/Contact.hlp"}
-                </td>
-            {/if}
+          <td>{$form.is_opt_out.html} {$form.is_opt_out.label} {help id="id-optOut" file="CRM/Contact/Form/Contact.hlp"}</td>
         </tr>
     </table>
  </div><!-- /.crm-accordion-body -->
diff --git a/civicrm/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl b/civicrm/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl
index 3dbdecafc373c89460fd5475acb9f3f69d9ff0d1..b213089691fcfd6b395c65a05c07993e7e2544d2 100644
--- a/civicrm/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl
+++ b/civicrm/templates/CRM/Contact/Form/Search/AdvancedCriteria.tpl
@@ -40,7 +40,7 @@ CRM.$(function($) {
     return false;
   });
   // TODO: Why are the modes numeric? If they used the string there would be no need for this map
-  var modes = {/literal}{$component_mappings}{literal};
+  var modes = {/literal}{$component_mappings|smarty:nodefaults}{literal};
   // Handle change of results mode
   $('#component_mode').change(function() {
     // Reset task dropdown
@@ -111,7 +111,7 @@ CRM.$(function($) {
     </div>
   </div>
   {foreach from=$allPanes key=paneName item=paneValue}
-    <div class="crm-accordion-wrapper crm-ajax-accordion crm-{$paneValue.id}-accordion {if $paneValue.open eq 'true' || !empty($openedPanes.$paneName)} {else}collapsed{/if}">
+    <div class="crm-accordion-wrapper crm-ajax-accordion crm-{$paneValue.id}-accordion {if $paneValue.open eq 'true' || array_key_exists($paneName, $openedPanes)} {else}collapsed{/if}">
       <div class="crm-accordion-header" id="{$paneValue.id}">
         {$paneName}
       </div>
diff --git a/civicrm/templates/CRM/Contact/Import/Form/MapField.tpl b/civicrm/templates/CRM/Contact/Import/Form/MapField.tpl
index a5f888946da6171c7f7c5023b48720d8a230bb25..7168bf9fd552302fd99f8fab5483adb142322f6d 100644
--- a/civicrm/templates/CRM/Contact/Import/Form/MapField.tpl
+++ b/civicrm/templates/CRM/Contact/Import/Form/MapField.tpl
@@ -21,6 +21,26 @@
   {* Table for mapping data to CRM fields *}
  {include file="CRM/Contact/Import/Form/MapTable.tpl" mapper=$form.mapper}
 
+ {* // Set default location type *}
+ {literal}
+   <script type="text/javascript">
+     CRM.$(function($) {
+       var defaultLocationType = "{/literal}{$defaultLocationType}{literal}";
+       if (defaultLocationType.length) {
+        $('#map-field').on('change', 'select[id^="mapper"][id$="_0"]', function() {
+          var select = $(this).next();
+          $('option', select).each(function() {
+            if ($(this).attr('value') == defaultLocationType  && $(this).text() == {/literal}{
+              $defaultLocationTypeLabel|@json_encode}{literal}) {
+              select.val(defaultLocationType);
+            }
+          });
+        });
+       }
+     });
+   </script>
+ {/literal}
+
 <script type="text/javascript" >
 {literal}
 if ( document.getElementsByName("saveMapping")[0].checked ) {
diff --git a/civicrm/templates/CRM/Contact/Import/Form/MapTable.tpl b/civicrm/templates/CRM/Contact/Import/Form/MapTable.tpl
index b13969c0fdddf9aaa272c2fb69e71c3b737cca35..4e8041ba7417e9f145936ba9bd614aaf119a18d1 100644
--- a/civicrm/templates/CRM/Contact/Import/Form/MapTable.tpl
+++ b/civicrm/templates/CRM/Contact/Import/Form/MapTable.tpl
@@ -8,25 +8,3 @@
  +--------------------------------------------------------------------+
 *}
 {include file="CRM/Import/Form/MapTableCommon.tpl"}
-
-{if $wizard.currentStepName != 'Preview'}
-  {* // Set default location type *}
-  {literal}
-    <script type="text/javascript">
-    CRM.$(function($) {
-      var defaultLocationType = "{/literal}{$defaultLocationType}{literal}";
-      if (defaultLocationType.length) {
-        $('#map-field').on('change', 'select[id^="mapper"][id$="_0"]', function() {
-          var select = $(this).next();
-          $('option', select).each(function() {
-            if ($(this).attr('value') == defaultLocationType  && $(this).text() == {/literal}{
-              $defaultLocationTypeLabel|@json_encode}{literal}) {
-              select.val(defaultLocationType);
-            }
-          });
-        });
-      }
-    });
-    </script>
-  {/literal}
-{/if}
diff --git a/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl b/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl
index 4cfd3cd8ccb46bcdb82279321d167b9c4fb7a8e1..b895d1cdd5317d5d45e22ba08a82fce7e3f0cffc 100644
--- a/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl
+++ b/civicrm/templates/CRM/Contact/Page/View/CustomDataView.tpl
@@ -12,7 +12,7 @@
 {foreach from=$viewCustomData item=customValues key=customGroupId}
   {assign var="cgcount" value=1}
   {assign var="count" value=$customGroupCount%2}
-  {if ($count eq $side) or !empty($skipTitle)}
+  {if ($count eq $side) or $skipTitle}
     {foreach from=$customValues item=cd_edit key=cvID}
       <div class="customFieldGroup crm-collapsible{if !empty($cd_edit.collapse_display)} collapsed{/if} ui-corner-all {$cd_edit.name} crm-custom-set-block-{$customGroupId}">
         <div class="collapsible-title">
diff --git a/civicrm/templates/CRM/Contact/Page/View/Summary-tab.tpl b/civicrm/templates/CRM/Contact/Page/View/Summary-tab.tpl
index 74410b2534667997dfcc37ee6429be476e275eaf..dba4d1c79fa6f76b3ea1264e20e813a7ceab204b 100644
--- a/civicrm/templates/CRM/Contact/Page/View/Summary-tab.tpl
+++ b/civicrm/templates/CRM/Contact/Page/View/Summary-tab.tpl
@@ -137,10 +137,10 @@
     <div id="customFields">
       <div class="contact_panel">
         <div class="contactCardLeft">
-          {include file="CRM/Contact/Page/View/CustomDataView.tpl" side='1'}
+          {include file="CRM/Contact/Page/View/CustomDataView.tpl" side='1' skipTitle=false}
         </div><!--contactCardLeft-->
         <div class="contactCardRight">
-          {include file="CRM/Contact/Page/View/CustomDataView.tpl" side='0'}
+          {include file="CRM/Contact/Page/View/CustomDataView.tpl" side='0' skipTitle=false}
         </div>
 
         <div class="clear"></div>
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl
index 806ae2565cf844a0192413be399018a5fd266188..af2ec9f53f49f585ecf2c3533331edcb24ad9646 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl
@@ -33,7 +33,7 @@
   {/if}
 
   <div class="crm-block crm-form-block crm-contribution-form-block">
-    {if !$email and $action neq 8 and $context neq 'standalone'}
+    {if $context neq 'standalone' && !$email and $action neq 8}
       <div class="messages status no-popup">
         {icon icon="fa-info-circle"}{/icon}{ts}You will not be able to send an automatic email receipt for this contribution because there is no email address recorded for this contact. If you want a receipt to be sent when this contribution is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the contribution.{/ts}
       </div>
@@ -119,9 +119,12 @@
             </tr>
           {/if}
 
-          <tr id="adjust-option-type" class="crm-contribution-form-block-option_type">
-            <td class="label"></td><td {$valueStyle}>{$form.option_type.html}</td>
-          </tr>
+          {if array_key_exists('option_type', $form)}
+            <tr id="adjust-option-type" class="crm-contribution-form-block-option_type">
+              <td class="label"></td><td {$valueStyle}>{$form.option_type.html}</td>
+            </tr>
+          {/if}
+
         {/if}
         {if $contributionMode && $processorSupportsFutureStartDate}
           <tr id='start_date' class="crm-contribution-form-block-receive_date">
@@ -148,7 +151,7 @@
               {if $contribution_status_id eq 2}{if $is_pay_later }: {ts}Pay Later{/ts} {else}: {ts}Incomplete Transaction{/ts}{/if}{/if}
             </td>
             <td>
-              {if !$isUsePaymentBlock && $contactId && $contribID && $contributionMode EQ null && $contribution_status_id eq 2}
+              {if !$isUsePaymentBlock && $contactId && $contribution_status_id eq 2 && $contribID && $contributionMode EQ null}
                 {capture assign=payNowLink}{crmURL p='civicrm/contact/view/contribution' q="reset=1&action=update&id=`$contribID`&cid=`$contactId`&context=`$context`&mode=live"}{/capture}
                 <a class="open-inline action-item crm-hover-button" href="{$payNowLink}"><i class="crm-i fa-credit-card" aria-hidden="true"></i> {ts}Pay with Credit Card{/ts}</a>
               {/if}
@@ -176,10 +179,12 @@
                     <td class="label" style="vertical-align: top;">{$form.cancel_reason.label}</td>
                     <td>{$form.cancel_reason.html}</td>
                   </tr>
-                  <tr id="refundTrxnID">
-                    <td class="label" style="vertical-align: top;">{$form.refund_trxn_id.label}</td>
-                    <td>{$form.refund_trxn_id.html}</td>
-                  </tr>
+                  {if array_key_exists('refund_trxn_id', $form)}
+                    <tr id="refundTrxnID">
+                      <td class="label" style="vertical-align: top;">{$form.refund_trxn_id.label}</td>
+                      <td>{$form.refund_trxn_id.html}</td>
+                    </tr>
+                  {/if}
                 </table>
               </fieldset>
             </td>
@@ -193,7 +198,7 @@
           </tr>
           {/if}
         {/if}
-        {if $form.revenue_recognition_date && !$payNow}
+        {if array_key_exists('revenue_recognition_date', $form) && !$payNow}
           <tr class="crm-contribution-form-block-revenue_recognition_date">
             <td class="label">{$form.revenue_recognition_date.label}</td>
             <td>{$form.revenue_recognition_date.html}</td>
diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl
index f0d3ad30cd67854435519029665e4e8579560665..cbdf2cbc2a34442294cba6fd7583d6b7f2877aab 100644
--- a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl
@@ -348,7 +348,7 @@
         frequencyUnit.prop('disabled', false).addClass('required');
         frequencyInerval.prop('disabled', false).addClass('required');
         installments.prop('disabled', false);
-        cj('#amount_sum_label').text('{/literal}{ts escape='js'}Regular amount{/ts}{literal}');
+        cj('#amount_sum_label').text('{/literal}{ts escape='js'}Regular Amount{/ts}{literal}');
       }
       else {
         cj('#recurHelp').hide();
diff --git a/civicrm/templates/CRM/Contribute/Form/Search/Common.tpl b/civicrm/templates/CRM/Contribute/Form/Search/Common.tpl
index 5b348f5e3508e5b82e9877120235f95ce3809ae1..a9d03cd93d394f5b6c3210423e2c8c234e1e3185 100644
--- a/civicrm/templates/CRM/Contribute/Form/Search/Common.tpl
+++ b/civicrm/templates/CRM/Contribute/Form/Search/Common.tpl
@@ -25,7 +25,7 @@
     <label>{ts}Currency{/ts}</label> <br />
     {$form.contribution_currency_type.html|crmAddClass:twenty}
   </td>
-  {if $form.contribution_batch_id.html}
+  {if $form.contribution_batch_id}
     <td>
       {$form.contribution_batch_id.label}<br />
       {$form.contribution_batch_id.html}
diff --git a/civicrm/templates/CRM/Contribute/Import/Form/Summary.tpl b/civicrm/templates/CRM/Contribute/Import/Form/Summary.tpl
deleted file mode 100644
index 8e05fcbbb0eaf31c992aec9b68f8e74b941c743d..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Contribute/Import/Form/Summary.tpl
+++ /dev/null
@@ -1,112 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{* Contribution Import Wizard - Step 4 (summary of import results AFTER actual data loading) *}
-{* @var $form Contains the array for the form elements and other form associated information assigned to the template by the controller *}
-<div class="crm-block crm-form-block  crm-contribution-import-summary-form-block" id="upload-file">
- {* WizardHeader.tpl provides visual display of steps thru the wizard as well as title for current step *}
- {include file="CRM/common/WizardHeader.tpl"}
-
- <div class="help">
-    <p>
-    <strong>{ts}Import has completed successfully.{/ts}</strong> {ts}The information below summarizes the results.{/ts}
-    </p>
-
-    {if $invalidRowCount }
-        <p class="error">
-        {ts count=$invalidRowCount plural='CiviCRM has detected invalid data and/or formatting errors in %count records. These records have not been imported.'}CiviCRM has detected invalid data and/or formatting errors in one record. This record has not been imported.{/ts}
-        </p>
-        <p class="error">
-        {ts 1=$downloadErrorRecordsUrl}You can <a href="%1">Download Errors</a>. You may then correct them, and import the new file with the corrected data.{/ts}
-        </p>
-    {/if}
-
-    {if $duplicateRowCount}
-        <p {if $dupeError}class="error"{/if}>
-        {ts count=$duplicateRowCount plural='CiviCRM has detected %count records which are duplicates of existing CiviCRM contribution records.'}CiviCRM has detected one record which is a duplicate of existing CiviCRM contribution record.{/ts} {$dupeActionString}
-        </p>
-        <p {if $dupeError}class="error"{/if}>
-        {ts 1=$downloadDuplicateRecordsUrl}You can <a href="%1">Download Duplicates</a>. You may then review these records to determine if they are actually duplicates, and correct the transaction IDs for those that are not.{/ts}
-        </p>
-    {/if}
- </div>
- <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div>
- {* Summary of Import Results (record counts) *}
- <table id="summary-counts" class="report">
-    <tr><td class="label crm-grid-cell">{ts}Total Rows{/ts}</td>
-        <td class="data">{$totalRowCount}</td>
-        <td class="explanation">{ts}Total rows (contribution records) in uploaded file.{/ts}</td>
-    </tr>
-
-    {if $invalidRowCount }
-    <tr class="error"><td class="label crm-grid-cell">{ts}Invalid Rows (skipped){/ts}</td>
-        <td class="data">{$invalidRowCount}</td>
-        <td class="explanation">{ts}Rows with invalid data in one or more fields. These rows have been skipped (not imported).{/ts}
-            {if $invalidRowCount}
-                <p><a href="{$downloadErrorRecordsUrl}">{ts}Download Errors{/ts}</a></p>
-            {/if}
-        </td>
-    </tr>
-    {/if}
-
-    {if $validSoftCreditRowCount }
-    <tr><td class="label crm-grid-cell">{ts}Soft Credits{/ts}</td>
-        <td class="data">{$validSoftCreditRowCount}</td>
-        <td class="explanation">{ts}Rows where a soft credit was successfully assigned to a contact.{/ts}</td>
-    </tr>
-    {/if}
-
-    {if $invalidSoftCreditRowCount }
-    <tr class="error"><td class="label crm-grid-cell">{ts}Unmatched Soft Credit Rows (skipped){/ts}</td>
-        <td class="data">{$invalidSoftCreditRowCount}</td>
-        <td class="explanation">{ts}Rows with a requested soft credit assignment where no matching contact was found (based on the supplied soft credit contact data). These contribution rows have been skipped (not imported).{/ts}
-            {if $invalidSoftCreditRowCount}
-                <p><a href="{$downloadSoftCreditErrorRecordsUrl}">{ts}Download Errors{/ts}</a></p>
-            {/if}
-        </td>
-    </tr>
-    {/if}
-
-    {if $validPledgePaymentRowCount }
-    <tr><td class="label crm-grid-cell">{ts}Pledge Payments Applied{/ts}</td>
-        <td class="data">{$validPledgePaymentRowCount}</td>
-        <td class="explanation">{ts}Rows with a pledge payment successfully applied.{/ts}</td>
-    </tr>
-    {/if}
-
-    {if $invalidPledgePaymentRowCount }
-    <tr class="error"><td class="label crm-grid-cell">{ts}Invalid Pledge Payment Rows (skipped){/ts}</td>
-        <td class="data">{$invalidPledgePaymentRowCount}</td>
-        <td class="explanation">{ts}Rows marked as pledge payments where the contributor and / or contribution amount could not be matched to a pending pledge payment. These contribution rows have been skipped (not imported).{/ts}
-            {if $invalidPledgePaymentRowCount}
-                <p><a href="{$downloadPledgePaymentErrorRecordsUrl}">{ts}Download Errors{/ts}</a></p>
-            {/if}
-        </td>
-    </tr>
-    {/if}
-
-    {if $duplicateRowCount}
-    <tr class="error"><td class="label crm-grid-cell">{ts}Duplicate Rows{/ts}</td>
-        <td class="data">{$duplicateRowCount}</td>
-        <td class="explanation">{ts}Rows which are duplicates of existing CiviCRM contribution records.{/ts} {$dupeActionString}
-            {if $duplicateRowCount}
-                <p><a href="{$downloadDuplicateRecordsUrl}">{ts}Download Duplicates{/ts}</a></p>
-            {/if}
-        </td>
-    </tr>
-    {/if}
-
-    <tr><td class="label crm-grid-cell">{ts}Records Imported{/ts}</td>
-        <td class="data">{$validRowCount}</td>
-        <td class="explanation">{ts}Total number of rows imported successfully.{/ts}</td>
-    </tr>
-
- </table>
- <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
- </div>
diff --git a/civicrm/templates/CRM/Custom/Form/Edit/CustomData.tpl b/civicrm/templates/CRM/Custom/Form/Edit/CustomData.tpl
index c73d98453e0815b851638f19343f2e7992d2c621..8228791b3cfef327dd804e1c0be0ef950f5d1f88 100644
--- a/civicrm/templates/CRM/Custom/Form/Edit/CustomData.tpl
+++ b/civicrm/templates/CRM/Custom/Form/Edit/CustomData.tpl
@@ -1,4 +1,4 @@
-{if empty($isSingleRecordEdit) && $cd_edit.is_multiple eq 1 and $cd_edit.table_id and $contactId and !$skipTitle and $cd_edit.style eq 'Inline'}
+{if !$isSingleRecordEdit && $cd_edit.is_multiple eq 1 and $cd_edit.table_id and $contactId and !$skipTitle and $cd_edit.style eq 'Inline'}
   {assign var=tableID value=$cd_edit.table_id}
   <a href="#" class="crm-hover-button crm-custom-value-del" title="{ts 1=$cd_edit.title}Delete %1{/ts}"
      data-post='{ldelim}"valueID": "{$tableID}", "groupID": "{$group_id}", "contactId": "{$contactId}", "key": "{crmKey name='civicrm/ajax/customvalue'}"{rdelim}'>
@@ -9,7 +9,7 @@
 {if $cd_edit.help_pre}
   <div class="messages help">{$cd_edit.help_pre}</div>
 {/if}
-<table {if empty($isSingleRecordEdit)}class="form-layout-compressed"{/if}>
+<table {if !$isSingleRecordEdit}class="form-layout-compressed"{/if}>
   {foreach from=$cd_edit.fields item=element key=field_id}
     {if $customDataEntity && $blockId}
       {* custom data entity combined with blockId tells us we have an entity with mutliple blocks
@@ -25,7 +25,7 @@
 </table>
 <div class="spacer"></div>
 {if $cd_edit.help_post}<div class="messages help">{$cd_edit.help_post}</div>{/if}
-{if empty($isSingleRecordEdit) && $cd_edit.is_multiple and ( ( $cd_edit.max_multiple eq '' )  or ( $cd_edit.max_multiple > 0 and $cd_edit.max_multiple > $cgCount ) ) }
+{if !$isSingleRecordEdit && $cd_edit.is_multiple and ( ( $cd_edit.max_multiple eq '' )  or ( $cd_edit.max_multiple > 0 and $cd_edit.max_multiple > $cgCount ) ) }
   {if $skipTitle}
     {* We don't yet support adding new records in inline-edit forms *}
     <div class="messages help">
diff --git a/civicrm/templates/CRM/Custom/Import/Form/DataSource.tpl b/civicrm/templates/CRM/Custom/Import/Form/DataSource.tpl
index a5fde9dd84b69a1562a8e493f3375c98448073de..5395b37fcf7f1a3df698cf51a1dbd040a3b0cd9b 100644
--- a/civicrm/templates/CRM/Custom/Import/Form/DataSource.tpl
+++ b/civicrm/templates/CRM/Custom/Import/Form/DataSource.tpl
@@ -7,71 +7,4 @@
  | and copyright information, see https://civicrm.org/licensing       |
  +--------------------------------------------------------------------+
 *}
-
-{* Import Wizard - Step 1 (choose data source) *}
-<div class="crm-block crm-form-block crm-import-datasource-form-block">
-
-  {* WizardHeader.tpl provides visual display of steps thru the wizard as well as title for current step *}
-  {include file="CRM/common/WizardHeader.tpl"}
- {if !$fieldGroups}
-  <div class="messages warning no-popup">
-    {ts}This import screen cannot be used because there are no Multi-value custom data groups.{/ts}
-  </div>
- {/if}
-  <div class="help">
-    {ts 1=$importEntity 2= $importEntities}The %1 Import Wizard allows you to easily upload %2 from other applications into CiviCRM.{/ts}
-    {ts}Files to be imported must be in the 'comma-separated-values' format (CSV) and must contain data needed to match an existing contact in your CiviCRM database.{/ts} {help id='upload'}
-  </div>
- <div id="upload-file" class="form-item">
- <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="top"}</div>
-   <table class="form-layout">
-    <tr class="crm-import-uploadfile-form-block-uploadFile">
-      <td class="label">{$form.uploadFile.label}</td>
-      <td>{$form.uploadFile.html}<br />
-      <span class="description">
-        {ts}File format must be comma-separated-values (CSV).{/ts}
-      </span>
-    </td>
-  </tr>
-  <tr>
-    <td>&nbsp;</td>
-      <td>{ts 1=$uploadSize}Maximum Upload File Size: %1 MB{/ts}</td>
-        </tr>
-  <tr class="crm-import-form-block-skipColumnHeader">
-            <td>&nbsp;</td>
-            <td>{$form.skipColumnHeader.html} {$form.skipColumnHeader.label}<br />
-                <span class="description">
-                    {ts}Check this box if the first row of your file consists of field names (Example: "Contact ID", "Participant Role").{/ts}
-                </span>
-            </td>
-  </tr>
-  <tr class="crm-import-uploadfile-form-block-multipleCustomData">
-              <td class="label">{$form.multipleCustomData.label}</td>
-              <td><span>{$form.multipleCustomData.html}</span> </td>
-  </tr>
-  <tr class="crm-import-uploadfile-from-block-contactType">
-              <td class="label">{$form.contactType.label}</td>
-             <td>{$form.contactType.html}</td>
-  </tr>
-
-   <tr class="crm-import-datasource-form-block-fieldSeparator">
-     <td class="label">{$form.fieldSeparator.label} {help id='id-fieldSeparator' file='CRM/Contact/Import/Form/DataSource'}</td>
-     <td>{$form.fieldSeparator.html}</td>
-   </tr>
-  <tr class="crm-import-uploadfile-form-block-date_format">
-            {include file="CRM/Core/Date.tpl"}
-  </tr>
-  {if $savedMapping}
-  <tr class="crm-import-uploadfile-form-block-savedMapping">
-              <td class="label">{$form.savedMapping.label}</td>
-              <td><span>{$form.savedMapping.html}</span> </td>
-  </tr>
-  <tr>
-            <td>&nbsp;</td>
-            <td class="description">{ts}Select Saved Mapping, or leave blank to create a new mapping.{/ts}</td>
-        {/if}
-        </tr>
-    </table>
-    <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div>
-  </div>
- </div>
+{include file="CRM/Import/Form/DataSource.tpl"}
diff --git a/civicrm/templates/CRM/Event/Form/Registration/Register.tpl b/civicrm/templates/CRM/Event/Form/Registration/Register.tpl
index 615e8a765a6eb2b837c3f016eb2f499c36534bf3..337110f20c54c5afc6a868a68706b790eb9d28ee 100644
--- a/civicrm/templates/CRM/Event/Form/Registration/Register.tpl
+++ b/civicrm/templates/CRM/Event/Form/Registration/Register.tpl
@@ -60,7 +60,7 @@
       <div class="crm-public-form-item crm-section additional_participants-section" id="noOfparticipants">
         <div class="label">{$form.additional_participants.label} <span class="crm-marker" title="{ts}This field is required.{/ts}">*</span></div>
         <div class="content">
-          {$form.additional_participants.html}{if $contact_id || $contact_id == NULL}&nbsp;{ts}(including yourself){/ts}{/if}
+          {$form.additional_participants.html}{if $contact_id}&nbsp;{ts}(including yourself){/ts}{/if}
           <br/>
           <div class="description" id="additionalParticipantsDescription" style="display: none;">{ts}Fill in your registration information on this page. You will be able to enter the registration information for additional people after you complete this page and click &quot;Continue&quot;.{/ts}</div>
         </div>
diff --git a/civicrm/templates/CRM/Event/Import/Form/Summary.tpl b/civicrm/templates/CRM/Event/Import/Form/Summary.tpl
deleted file mode 100644
index 77d932079a70f8207eb21ca4a2dbe7d94041884d..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Event/Import/Form/Summary.tpl
+++ /dev/null
@@ -1,80 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{* Event Import Wizard - Step 4 (summary of import results AFTER actual data loading) *}
-{* @var $form Contains the array for the form elements and other form associated information assigned to the template by the controller *}
-
-<div class="crm-block crm-form-block crm-event-import-summary-form-block">
-
- {* WizardHeader.tpl provides visual display of steps thru the wizard as well as title for current step *}
- {include file="CRM/common/WizardHeader.tpl"}
-
-<div class="help">
-    <p>
-    <strong>{ts}Import has completed successfully.{/ts}</strong> {ts}The information below summarizes the results.{/ts}
-    </p>
-
-    {if $invalidRowCount }
-        <p class="error">
-        {ts count=$invalidRowCount plural='CiviCRM has detected invalid data and/or formatting errors in %count records. These records have not been imported.'}CiviCRM has detected invalid data and/or formatting errors in one record. This record has not been imported.{/ts}
-        </p>
-        <p class="error">
-        {ts 1=$downloadErrorRecordsUrl}You can <a href="%1">Download Errors</a>. You may then correct them, and import the new file with the corrected data.{/ts}
-        </p>
-    {/if}
-
-    {if $duplicateRowCount}
-        <p {if $dupeError}class="error"{/if}>
-        {ts count=$duplicateRowCount plural='CiviCRM has detected %count records which are duplicates of existing CiviCRM participant records.'}CiviCRM has detected one record which is a duplicate of existing CiviCRM participant record.{/ts} {$dupeActionString}
-        </p>
-        <p {if $dupeError}class="error"{/if}>
-        {ts 1=$downloadDuplicateRecordsUrl}You can <a href="%1">Download Duplicates</a>. You may then review these records to determine if they are actually duplicates, and correct the participant IDs for those that are not.{/ts}
-        </p>
-    {/if}
- </div>
-
-<div class="crm-submit-buttons">
-    {include file="CRM/common/formButtons.tpl" location="top"}
-</div>
- {* Summary of Import Results (record counts) *}
- <table id="summary-counts" class="report">
-    <tr><td class="label crm-grid-cell">{ts}Total Rows{/ts}</td>
-        <td class="data">{$totalRowCount}</td>
-        <td class="explanation">{ts}Total rows (participant records) in uploaded file.{/ts}</td>
-    </tr>
-
-    {if $invalidRowCount}
-      <tr class="error"><td class="label crm-grid-cell">{ts}Invalid Rows (skipped){/ts}</td>
-        <td class="data">{$invalidRowCount}</td>
-        <td class="explanation">{ts}Rows with invalid data in one or more fields. These rows will be skipped (not imported).{/ts}
-          <p><a href="{$downloadErrorRecordsUrl}">{ts}Download Errors{/ts}</a></p>
-        </td>
-    </tr>
-    {/if}
-
-    {if $duplicateRowCount}
-      <tr class="error"><td class="label crm-grid-cell">{ts}Duplicate Rows{/ts}</td>
-        <td class="data">{$duplicateRowCount}</td>
-        <td class="explanation">{ts}Rows which are duplicates of existing CiviCRM participant records.{/ts} {$dupeActionString}
-          <p><a href="{$downloadDuplicateRecordsUrl}">{ts}Download Duplicates{/ts}</a></p>
-        </td>
-    </tr>
-    {/if}
-
-    <tr><td class="label crm-grid-cell">{ts}Records Imported{/ts}</td>
-        <td class="data">{$validRowCount}</td>
-        <td class="explanation">{ts}Rows imported successfully.{/ts}</td>
-    </tr>
-
- </table>
-
- <div class="crm-submit-buttons">
-    {include file="CRM/common/formButtons.tpl" location="bottom"}
- </div>
-</div>
diff --git a/civicrm/templates/CRM/Event/Page/DashBoard.tpl b/civicrm/templates/CRM/Event/Page/DashBoard.tpl
index 81091d6c59e98414ea1ab1dc61a2f75caf9860e6..56587d3880f801f00a9ae84297b9011e909c9770 100644
--- a/civicrm/templates/CRM/Event/Page/DashBoard.tpl
+++ b/civicrm/templates/CRM/Event/Page/DashBoard.tpl
@@ -17,8 +17,10 @@
     <div class="clear">&nbsp;</div>
     <h3 id="crm-event-dashboard-heading">{ts}Event Summary{/ts}
       {help id="id-event-intro"}
-      {include file="CRM/Event/Page/iCalLinks.tpl"}
     </h3>
+    <div class="crm-clearfix">
+      {include file="CRM/Event/Page/iCalLinks.tpl"}
+    </div>
     {include file="CRM/common/jsortable.tpl"}
     <table id="options" class="display">
     <thead>
diff --git a/civicrm/templates/CRM/Event/Page/EventInfo.tpl b/civicrm/templates/CRM/Event/Page/EventInfo.tpl
index 55efe2c6ae140dca76564910fd20069b373f7a97..4c15e58ed5acacbf3a8af3ab48830853a2c04056 100644
--- a/civicrm/templates/CRM/Event/Page/EventInfo.tpl
+++ b/civicrm/templates/CRM/Event/Page/EventInfo.tpl
@@ -102,11 +102,17 @@
       <div class="label">{ts}When{/ts}</div>
       <div class="content">
         {strip}
-            {$event.event_start_date|crmDate}
+            {if $event.event_start_date && $event.event_end_date && ($event.event_end_date|crmDate:'%Y%m%d':0 == $event.event_start_date|crmDate:'%Y%m%d':0)}
+              {$event.event_start_date|crmDate:'Full':0}
+              &nbsp;{ts}from{/ts}&nbsp;
+              {$event.event_start_date|crmDate:0:1}
+            {else}
+              {$event.event_start_date|crmDate}
+            {/if}
             {if $event.event_end_date}
-                &nbsp;{ts}through{/ts}&nbsp;
+                &nbsp;{ts}to{/ts}&nbsp;
                 {* Only show end time if end date = start date *}
-                {if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}
+                {if $event.event_end_date|crmDate:"%Y%m%d":0 == $event.event_start_date|crmDate:"%Y%m%d":0}
                     {$event.event_end_date|crmDate:0:1}
                 {else}
                     {$event.event_end_date|crmDate}
diff --git a/civicrm/templates/CRM/Event/Page/ManageEvent.tpl b/civicrm/templates/CRM/Event/Page/ManageEvent.tpl
index 0adfb8893eeebda87c1b0a325be3dbc3be0329ed..b634902a124cbba9933bc46809150bfa606e854f 100644
--- a/civicrm/templates/CRM/Event/Page/ManageEvent.tpl
+++ b/civicrm/templates/CRM/Event/Page/ManageEvent.tpl
@@ -94,14 +94,14 @@
                 <ul class="panel" id="panel_participants_{$row.id}">
                   {if $findParticipants.statusCounted}
                     <li>
-                      <a class="action-item crm-hover-button" href="{crmURL p='civicrm/event/search'
+                      <a title="{ts}Counted Participants{/ts}" class="action-item crm-hover-button" href="{crmURL p='civicrm/event/search'
                       q="reset=1&force=1&status=true&event=`$row.id`"}">{$findParticipants.statusCounted}
                       </a>
                     </li>
                   {/if}
                   {if $findParticipants.statusNotCounted}
                     <li>
-                      <a class="action-item crm-hover-button"
+                      <a title="{ts}Participants Not Counted{/ts}" class="action-item crm-hover-button"
                            href="{crmURL p='civicrm/event/search'
                            q="reset=1&force=1&status=false&event=`$row.id`"}">{$findParticipants.statusNotCounted}
                       </a>
@@ -109,7 +109,7 @@
                   {/if}
                   {if $row.participant_listing_id}
                     <li>
-                      <a class="action-item crm-hover-button"
+                      <a title="{ts}Public Participant Listing{/ts}" class="action-item crm-hover-button"
                          href="{crmURL p='civicrm/event/participant' q="reset=1&id=`$row.id`"
                          fe='true'}">{ts}Public Participant Listing{/ts}
                       </a>
diff --git a/civicrm/templates/CRM/Group/Form/Search.tpl b/civicrm/templates/CRM/Group/Form/Search.tpl
index bb6925d427128d41a33ddca485a34abb015d4c9d..67b4815b44e1d5c75acd435dad0b16411f89c1d4 100644
--- a/civicrm/templates/CRM/Group/Form/Search.tpl
+++ b/civicrm/templates/CRM/Group/Form/Search.tpl
@@ -8,7 +8,7 @@
  +--------------------------------------------------------------------+
 *}
 <div class="crm-block crm-form-block crm-group-search-form-block">
-  <div class="crm-accordion-wrapper crm-search_builder-accordion {if $rows and empty($showSearchForm)}collapsed{/if}">
+  <div class="crm-accordion-wrapper crm-search_builder-accordion">
     <div class="crm-accordion-header crm-master-accordion-header">
       {ts}Find Groups{/ts}
     </div>
diff --git a/civicrm/templates/CRM/Import/Form/DataSource.tpl b/civicrm/templates/CRM/Import/Form/DataSource.tpl
index 6fee27113398d02c9ff14ed947b5116224a2bcc3..c125ab8ec6991a76824173c109a0cb1a599c8f61 100644
--- a/civicrm/templates/CRM/Import/Form/DataSource.tpl
+++ b/civicrm/templates/CRM/Import/Form/DataSource.tpl
@@ -13,6 +13,11 @@
 
   {* WizardHeader.tpl provides visual display of steps thru the wizard as well as title for current step *}
   {include file="CRM/common/WizardHeader.tpl"}
+  {if $errorMessage}
+    <div class="messages warning no-popup">
+      {$errorMessage}
+    </div>
+  {/if}
   <div class="help">
     {ts 1=$importEntity 2= $importEntities}The %1 Import Wizard allows you to easily upload %2 from other applications into CiviCRM.{/ts}
     {ts}Files to be imported must be in the 'comma-separated-values' format (CSV) and must contain data needed to match an existing contact in your CiviCRM database.{/ts} {help id='upload'}
@@ -50,6 +55,12 @@
           <td class="label">{$form.onDuplicate.label}</td>
           <td>{$form.onDuplicate.html} {help id="id-onDuplicate"}</td>
         </tr>
+      {/if}
+      {if array_key_exists('multipleCustomData', $form)}
+        <tr class="crm-import-uploadfile-form-block-multipleCustomData">
+          <td class="label">{$form.multipleCustomData.label}</td>
+          <td><span>{$form.multipleCustomData.html}</span> </td>
+        </tr>
       {/if}
         <tr class="crm-import-datasource-form-block-fieldSeparator">
           <td class="label">{$form.fieldSeparator.label} {help id='id-fieldSeparator' file='CRM/Contact/Import/Form/DataSource'}</td>
diff --git a/civicrm/templates/CRM/Import/Form/MapTable.tpl b/civicrm/templates/CRM/Import/Form/MapTable.tpl
deleted file mode 100644
index a805ef7d644dbf20cef2486888965733f052c6f5..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Import/Form/MapTable.tpl
+++ /dev/null
@@ -1,104 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{* Import Wizard - Data Mapping table used by MapFields.tpl and Preview.tpl *}
-<div class="crm-block crm-form-block crm-map-table-form-block">
-
- <div id="map-field">
-    {strip}
-    <table>
-    {if $savedMappingName}
-      <tr class="columnheader-dark"><th colspan="4">{ts 1=$savedMappingName}Saved Field Mapping: %1{/ts}</td></tr>
-    {/if}
-        <tr class="columnheader">
-            {section name=rows loop=$rowDisplayCount}
-       {if $skipColumnHeader }
-                   {if $smarty.section.rows.iteration == 1}
-                     <th>{ts}Column Headers{/ts}</th>
-                   {else}
-                     <th>{ts 1=$smarty.section.rows.iteration}Import Data (row %1){/ts}</th>
-                   {/if}
-          {else}
-                  <th>{ts 1=$smarty.section.rows.iteration}Import Data (row %1){/ts}</th>
-                {/if}
-            {/section}
-
-            <th>{ts}Matching CiviCRM Field{/ts}</th>
-        </tr>
-
-        {*Loop on columns parsed from the import data rows*}
-        {section name=cols loop=$columnCount}
-            {assign var="i" value=$smarty.section.cols.index}
-            <tr style="border-bottom: 1px solid #92B6EC;">
-
-                {section name=rows loop=$rowDisplayCount}
-                    {assign var="j" value=$smarty.section.rows.index}
-                    <td class="{if $skipColumnHeader AND $smarty.section.rows.iteration == 1}even-row labels{else}odd-row{/if}">{$dataValues[$j][$i]|escape}</td>
-                {/section}
-
-                {* Display mapper <select> field for 'Map Fields', and mapper value for 'Preview' *}
-                <td class="form-item even-row
-                    {if $wizard.currentStepName == 'Preview'}labels{/if}">
-                    {if $wizard.currentStepName == 'Preview'}
-                        {$mapper[$i]}
-                    {else}
-                        {$form.mapper[$i].html|smarty:nodefaults}
-                    {/if}
-                </td>
-
-            </tr>
-        {/section}
-
-    </table>
-  {/strip}
-
-    {if $wizard.currentStepName != 'Preview'}
-    <div>
-
-      {if $savedMappingName}
-          <span>{$form.updateMapping.html} &nbsp;&nbsp; {$form.updateMapping.label}</span>
-      {/if}
-      <span>{$form.saveMapping.html} &nbsp;&nbsp; {$form.saveMapping.label}</span>
-      <div id="saveDetails" class="form-item">
-        <table class="form-layout">
-          <tr class="crm-map-table-form-block-saveMappingName">
-            <td class="label">{$form.saveMappingName.label}</td><td>{$form.saveMappingName.html}</td>
-          </tr>
-          <tr class="crm-map-table-form-block-saveMappingDesc">
-            <td class="label">{$form.saveMappingDesc.label}</td>
-            <td>{$form.saveMappingDesc.html}</td>
-          </tr>
-        </table>
-      </div>
-      <script type="text/javascript">
-             {if $mappingDetailsError }
-                cj('#saveDetails').show();
-             {else}
-              cj('#saveDetails').hide();
-             {/if}
-
-           {literal}
-            function showSaveDetails(chkbox) {
-             if (chkbox.checked) {
-              document.getElementById("saveDetails").style.display = "block";
-              document.getElementById("saveMappingName").disabled = false;
-              document.getElementById("saveMappingDesc").disabled = false;
-             } else {
-              document.getElementById("saveDetails").style.display = "none";
-              document.getElementById("saveMappingName").disabled = true;
-              document.getElementById("saveMappingDesc").disabled = true;
-             }
-             }
-             {/literal}
-       {include file="CRM/common/highLightImport.tpl"}
-      </script>
-    </div>
-    {/if}
- </div>
-</div>
diff --git a/civicrm/templates/CRM/Member/Form/MembershipView.tpl b/civicrm/templates/CRM/Member/Form/MembershipView.tpl
index 9038c1c4220df5bd22c9b7a61a0748e39dc14bf7..5751c106a8cebd3d088be71f2273cd421ebd837e 100644
--- a/civicrm/templates/CRM/Member/Form/MembershipView.tpl
+++ b/civicrm/templates/CRM/Member/Form/MembershipView.tpl
@@ -44,7 +44,7 @@
         {if $has_related}
             <tr><td class="label">{ts}Max related{/ts}</td><td>{$max_related}</td></tr>
         {/if}
-        <tr><td class="label">{ts}Status{/ts}</td><td>{$status} {if $member_is_override}({ts}Overridden{/ts}){/if}</td></tr>
+        <tr><td class="label">{ts}Status{/ts}</td><td>{$status} {if $is_override}({ts}Overridden{/ts}){/if}</td></tr>
         <tr><td class="label">{ts}Source{/ts}</td><td>{$source}</td></tr>
   {if $campaign}<tr><td class="label">{ts}Campaign{/ts}</td><td>{$campaign}</td></tr>{/if}
         <tr><td class="label">{ts}Member Since{/ts}</td><td>{$join_date|crmDate}</td></tr>
diff --git a/civicrm/templates/CRM/Queue/Page/Runner.tpl b/civicrm/templates/CRM/Queue/Page/Runner.tpl
index e7ade413415e3632a1e6bc8ae3768fa277d4a279..620b834c0e47b9ee946d141af1b987b3e63c503f 100644
--- a/civicrm/templates/CRM/Queue/Page/Runner.tpl
+++ b/civicrm/templates/CRM/Queue/Page/Runner.tpl
@@ -63,7 +63,7 @@ CRM.$(function($) {
     if (!data.is_error) {
       queueRunnerData.completed++;
     }
-    if (data.numberOfItems) {
+    if ('numberOfItems' in data && data.numberOfItems !== null) {
       queueRunnerData.numberOfItems = parseInt(data.numberOfItems);
     }
 
diff --git a/civicrm/templates/CRM/Report/Form/Mailing/Bounce.tpl b/civicrm/templates/CRM/Report/Form/Mailing/Bounce.tpl
deleted file mode 100644
index 5f5a9d4f66cf04b3dc2f1aacfe0321521df82d0f..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Report/Form/Mailing/Bounce.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{include file="CRM/Report/Form.tpl"}
diff --git a/civicrm/templates/CRM/Report/Form/Mailing/Clicks.tpl b/civicrm/templates/CRM/Report/Form/Mailing/Clicks.tpl
deleted file mode 100644
index 5f5a9d4f66cf04b3dc2f1aacfe0321521df82d0f..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Report/Form/Mailing/Clicks.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{include file="CRM/Report/Form.tpl"}
diff --git a/civicrm/templates/CRM/Report/Form/Mailing/Detail.tpl b/civicrm/templates/CRM/Report/Form/Mailing/Detail.tpl
deleted file mode 100644
index 5f5a9d4f66cf04b3dc2f1aacfe0321521df82d0f..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Report/Form/Mailing/Detail.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{include file="CRM/Report/Form.tpl"}
diff --git a/civicrm/templates/CRM/Report/Form/Mailing/Opened.tpl b/civicrm/templates/CRM/Report/Form/Mailing/Opened.tpl
deleted file mode 100644
index 5f5a9d4f66cf04b3dc2f1aacfe0321521df82d0f..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Report/Form/Mailing/Opened.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{include file="CRM/Report/Form.tpl"}
diff --git a/civicrm/templates/CRM/Report/Form/Mailing/Summary.tpl b/civicrm/templates/CRM/Report/Form/Mailing/Summary.tpl
deleted file mode 100644
index 5f5a9d4f66cf04b3dc2f1aacfe0321521df82d0f..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Report/Form/Mailing/Summary.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{include file="CRM/Report/Form.tpl"}
diff --git a/civicrm/templates/CRM/Report/Form/Member/ContributionDetail.tpl b/civicrm/templates/CRM/Report/Form/Member/ContributionDetail.tpl
deleted file mode 100644
index 5f5a9d4f66cf04b3dc2f1aacfe0321521df82d0f..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Report/Form/Member/ContributionDetail.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{include file="CRM/Report/Form.tpl"}
diff --git a/civicrm/templates/CRM/Report/Form/Member/Detail.tpl b/civicrm/templates/CRM/Report/Form/Member/Detail.tpl
deleted file mode 100644
index 5f5a9d4f66cf04b3dc2f1aacfe0321521df82d0f..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Report/Form/Member/Detail.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{include file="CRM/Report/Form.tpl"}
diff --git a/civicrm/templates/CRM/Report/Form/Member/Lapse.tpl b/civicrm/templates/CRM/Report/Form/Member/Lapse.tpl
deleted file mode 100644
index 5f5a9d4f66cf04b3dc2f1aacfe0321521df82d0f..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Report/Form/Member/Lapse.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{include file="CRM/Report/Form.tpl"}
diff --git a/civicrm/templates/CRM/Report/Form/Member/Summary.tpl b/civicrm/templates/CRM/Report/Form/Member/Summary.tpl
deleted file mode 100644
index 5f5a9d4f66cf04b3dc2f1aacfe0321521df82d0f..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Report/Form/Member/Summary.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{include file="CRM/Report/Form.tpl"}
diff --git a/civicrm/templates/CRM/Report/Form/Membership/Summary.tpl b/civicrm/templates/CRM/Report/Form/Membership/Summary.tpl
deleted file mode 100644
index 5f5a9d4f66cf04b3dc2f1aacfe0321521df82d0f..0000000000000000000000000000000000000000
--- a/civicrm/templates/CRM/Report/Form/Membership/Summary.tpl
+++ /dev/null
@@ -1,10 +0,0 @@
-{*
- +--------------------------------------------------------------------+
- | Copyright CiviCRM LLC. All rights reserved.                        |
- |                                                                    |
- | This work is published under the GNU AGPLv3 license with some      |
- | permitted exceptions and without any warranty. For full license    |
- | and copyright information, see https://civicrm.org/licensing       |
- +--------------------------------------------------------------------+
-*}
-{include file="CRM/Report/Form.tpl"}
diff --git a/civicrm/vendor/autoload.php b/civicrm/vendor/autoload.php
index 77a1f3dc886464681ad81e552561ee27cb85c18c..be3c17b9a034d1c74c79e39a58a8c184503ab2ee 100644
--- a/civicrm/vendor/autoload.php
+++ b/civicrm/vendor/autoload.php
@@ -9,4 +9,4 @@ if (PHP_VERSION_ID < 50600) {
 
 require_once __DIR__ . '/composer/autoload_real.php';
 
-return ComposerAutoloaderInit9ce35e5977752327069ca1066e5580b9::getLoader();
+return ComposerAutoloaderInit581d4f15dfa4378416be75a3e750d6a7::getLoader();
diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php
index 39e8afa8cc1df62793a61154f9ed32721486e4ae..fa9077220360bbdc0409aaee1886ee8d1a77fcc5 100644
--- a/civicrm/vendor/composer/autoload_real.php
+++ b/civicrm/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInit9ce35e5977752327069ca1066e5580b9
+class ComposerAutoloaderInit581d4f15dfa4378416be75a3e750d6a7
 {
     private static $loader;
 
@@ -24,22 +24,22 @@ class ComposerAutoloaderInit9ce35e5977752327069ca1066e5580b9
 
         require __DIR__ . '/platform_check.php';
 
-        spl_autoload_register(array('ComposerAutoloaderInit9ce35e5977752327069ca1066e5580b9', 'loadClassLoader'), true, true);
+        spl_autoload_register(array('ComposerAutoloaderInit581d4f15dfa4378416be75a3e750d6a7', 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
-        spl_autoload_unregister(array('ComposerAutoloaderInit9ce35e5977752327069ca1066e5580b9', 'loadClassLoader'));
+        spl_autoload_unregister(array('ComposerAutoloaderInit581d4f15dfa4378416be75a3e750d6a7', 'loadClassLoader'));
 
         $includePaths = require __DIR__ . '/include_paths.php';
         $includePaths[] = get_include_path();
         set_include_path(implode(PATH_SEPARATOR, $includePaths));
 
         require __DIR__ . '/autoload_static.php';
-        call_user_func(\Composer\Autoload\ComposerStaticInit9ce35e5977752327069ca1066e5580b9::getInitializer($loader));
+        call_user_func(\Composer\Autoload\ComposerStaticInit581d4f15dfa4378416be75a3e750d6a7::getInitializer($loader));
 
         $loader->register(true);
 
-        $includeFiles = \Composer\Autoload\ComposerStaticInit9ce35e5977752327069ca1066e5580b9::$files;
+        $includeFiles = \Composer\Autoload\ComposerStaticInit581d4f15dfa4378416be75a3e750d6a7::$files;
         foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequire9ce35e5977752327069ca1066e5580b9($fileIdentifier, $file);
+            composerRequire581d4f15dfa4378416be75a3e750d6a7($fileIdentifier, $file);
         }
 
         return $loader;
@@ -51,7 +51,7 @@ class ComposerAutoloaderInit9ce35e5977752327069ca1066e5580b9
  * @param string $file
  * @return void
  */
-function composerRequire9ce35e5977752327069ca1066e5580b9($fileIdentifier, $file)
+function composerRequire581d4f15dfa4378416be75a3e750d6a7($fileIdentifier, $file)
 {
     if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
         $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
diff --git a/civicrm/vendor/composer/autoload_static.php b/civicrm/vendor/composer/autoload_static.php
index 6df37c19733143350a59934bd8021e6c9a5ac10f..0893b8c15c7263e7672748e1d9abcbaad4a615dd 100644
--- a/civicrm/vendor/composer/autoload_static.php
+++ b/civicrm/vendor/composer/autoload_static.php
@@ -4,7 +4,7 @@
 
 namespace Composer\Autoload;
 
-class ComposerStaticInit9ce35e5977752327069ca1066e5580b9
+class ComposerStaticInit581d4f15dfa4378416be75a3e750d6a7
 {
     public static $files = array (
         'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
@@ -738,11 +738,11 @@ class ComposerStaticInit9ce35e5977752327069ca1066e5580b9
     public static function getInitializer(ClassLoader $loader)
     {
         return \Closure::bind(function () use ($loader) {
-            $loader->prefixLengthsPsr4 = ComposerStaticInit9ce35e5977752327069ca1066e5580b9::$prefixLengthsPsr4;
-            $loader->prefixDirsPsr4 = ComposerStaticInit9ce35e5977752327069ca1066e5580b9::$prefixDirsPsr4;
-            $loader->prefixesPsr0 = ComposerStaticInit9ce35e5977752327069ca1066e5580b9::$prefixesPsr0;
-            $loader->fallbackDirsPsr0 = ComposerStaticInit9ce35e5977752327069ca1066e5580b9::$fallbackDirsPsr0;
-            $loader->classMap = ComposerStaticInit9ce35e5977752327069ca1066e5580b9::$classMap;
+            $loader->prefixLengthsPsr4 = ComposerStaticInit581d4f15dfa4378416be75a3e750d6a7::$prefixLengthsPsr4;
+            $loader->prefixDirsPsr4 = ComposerStaticInit581d4f15dfa4378416be75a3e750d6a7::$prefixDirsPsr4;
+            $loader->prefixesPsr0 = ComposerStaticInit581d4f15dfa4378416be75a3e750d6a7::$prefixesPsr0;
+            $loader->fallbackDirsPsr0 = ComposerStaticInit581d4f15dfa4378416be75a3e750d6a7::$fallbackDirsPsr0;
+            $loader->classMap = ComposerStaticInit581d4f15dfa4378416be75a3e750d6a7::$classMap;
 
         }, null, ClassLoader::class);
     }
diff --git a/civicrm/vendor/composer/installed.json b/civicrm/vendor/composer/installed.json
index aa3cf3ecc3bb671fb13575d81092fa780e48a070..03efd7f1312d20447438c21e55f513d232586b0a 100644
--- a/civicrm/vendor/composer/installed.json
+++ b/civicrm/vendor/composer/installed.json
@@ -644,25 +644,25 @@
         },
         {
             "name": "dompdf/dompdf",
-            "version": "v2.0.0",
-            "version_normalized": "2.0.0.0",
+            "version": "v2.0.1",
+            "version_normalized": "2.0.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/dompdf/dompdf.git",
-                "reference": "79573d8b8a141ec8a17312515de8740eed014fa9"
+                "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/dompdf/dompdf/zipball/79573d8b8a141ec8a17312515de8740eed014fa9",
-                "reference": "79573d8b8a141ec8a17312515de8740eed014fa9",
+                "url": "https://api.github.com/repos/dompdf/dompdf/zipball/c5310df0e22c758c85ea5288175fc6cd777bc085",
+                "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-mbstring": "*",
                 "masterminds/html5": "^2.0",
-                "phenx/php-font-lib": "^0.5.4",
-                "phenx/php-svg-lib": "^0.3.3 || ^0.4.0",
+                "phenx/php-font-lib": ">=0.5.4 <1.0.0",
+                "phenx/php-svg-lib": ">=0.3.3 <1.0.0",
                 "php": "^7.1 || ^8.0"
             },
             "require-dev": {
@@ -678,7 +678,7 @@
                 "ext-imagick": "Improves image processing performance",
                 "ext-zlib": "Needed for pdf stream compression"
             },
-            "time": "2022-06-21T21:14:57+00:00",
+            "time": "2022-09-22T13:43:41+00:00",
             "type": "library",
             "installation-source": "dist",
             "autoload": {
@@ -695,23 +695,15 @@
             ],
             "authors": [
                 {
-                    "name": "Fabien Ménager",
-                    "email": "fabien.menager@gmail.com"
-                },
-                {
-                    "name": "Brian Sweeney",
-                    "email": "eclecticgeek@gmail.com"
-                },
-                {
-                    "name": "Gabriel Bull",
-                    "email": "me@gabrielbull.com"
+                    "name": "The Dompdf Community",
+                    "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md"
                 }
             ],
             "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
             "homepage": "https://github.com/dompdf/dompdf",
             "support": {
                 "issues": "https://github.com/dompdf/dompdf/issues",
-                "source": "https://github.com/dompdf/dompdf/tree/v2.0.0"
+                "source": "https://github.com/dompdf/dompdf/tree/v2.0.1"
             },
             "install-path": "../dompdf/dompdf"
         },
@@ -5931,17 +5923,17 @@
         },
         {
             "name": "zetacomponents/mail",
-            "version": "1.9.3",
-            "version_normalized": "1.9.3.0",
+            "version": "1.9.4",
+            "version_normalized": "1.9.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/zetacomponents/Mail.git",
-                "reference": "7f7cf8135320fabf27f6530381da4977a31e1c78"
+                "reference": "83ba646f36f753c0bbc8b2189c88d41ece326ea0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/zetacomponents/Mail/zipball/7f7cf8135320fabf27f6530381da4977a31e1c78",
-                "reference": "7f7cf8135320fabf27f6530381da4977a31e1c78",
+                "url": "https://api.github.com/repos/zetacomponents/Mail/zipball/83ba646f36f753c0bbc8b2189c88d41ece326ea0",
+                "reference": "83ba646f36f753c0bbc8b2189c88d41ece326ea0",
                 "shasum": ""
             },
             "require": {
@@ -5951,7 +5943,7 @@
                 "phpunit/phpunit": "~9.0",
                 "zetacomponents/unit-test": "*"
             },
-            "time": "2022-08-09T09:42:33+00:00",
+            "time": "2022-09-14T10:13:21+00:00",
             "type": "library",
             "extra": {
                 "patches_applied": {
@@ -6014,7 +6006,7 @@
             "homepage": "https://github.com/zetacomponents",
             "support": {
                 "issues": "https://github.com/zetacomponents/Mail/issues",
-                "source": "https://github.com/zetacomponents/Mail/tree/1.9.3"
+                "source": "https://github.com/zetacomponents/Mail/tree/1.9.4"
             },
             "install-path": "../zetacomponents/mail"
         }
diff --git a/civicrm/vendor/composer/installed.php b/civicrm/vendor/composer/installed.php
index 049d07c50ab3b66989a21cb50e02464d055ea3ad..3f9ef54580ad8ae9b2651d15bfaa90f72b714a4e 100644
--- a/civicrm/vendor/composer/installed.php
+++ b/civicrm/vendor/composer/installed.php
@@ -1,9 +1,9 @@
 <?php return array(
     'root' => array(
         'name' => 'civicrm/civicrm-core',
-        'pretty_version' => '5.53.x-dev',
-        'version' => '5.53.9999999.9999999-dev',
-        'reference' => 'ee58635b82ac5c92bdfc9fbb5c7f9b670ee86a31',
+        'pretty_version' => '5.54.x-dev',
+        'version' => '5.54.9999999.9999999-dev',
+        'reference' => '8e6f6aa05fbb9c0ee983c219cc08d53f2b0bbe51',
         'type' => 'library',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
@@ -56,9 +56,9 @@
             'dev_requirement' => false,
         ),
         'civicrm/civicrm-core' => array(
-            'pretty_version' => '5.53.x-dev',
-            'version' => '5.53.9999999.9999999-dev',
-            'reference' => 'ee58635b82ac5c92bdfc9fbb5c7f9b670ee86a31',
+            'pretty_version' => '5.54.x-dev',
+            'version' => '5.54.9999999.9999999-dev',
+            'reference' => '8e6f6aa05fbb9c0ee983c219cc08d53f2b0bbe51',
             'type' => 'library',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
@@ -119,9 +119,9 @@
             'dev_requirement' => false,
         ),
         'dompdf/dompdf' => array(
-            'pretty_version' => 'v2.0.0',
-            'version' => '2.0.0.0',
-            'reference' => '79573d8b8a141ec8a17312515de8740eed014fa9',
+            'pretty_version' => 'v2.0.1',
+            'version' => '2.0.1.0',
+            'reference' => 'c5310df0e22c758c85ea5288175fc6cd777bc085',
             'type' => 'library',
             'install_path' => __DIR__ . '/../dompdf/dompdf',
             'aliases' => array(),
@@ -851,9 +851,9 @@
             'dev_requirement' => false,
         ),
         'zetacomponents/mail' => array(
-            'pretty_version' => '1.9.3',
-            'version' => '1.9.3.0',
-            'reference' => '7f7cf8135320fabf27f6530381da4977a31e1c78',
+            'pretty_version' => '1.9.4',
+            'version' => '1.9.4.0',
+            'reference' => '83ba646f36f753c0bbc8b2189c88d41ece326ea0',
             'type' => 'library',
             'install_path' => __DIR__ . '/../zetacomponents/mail',
             'aliases' => array(),
diff --git a/civicrm/vendor/dompdf/dompdf/AUTHORS.md b/civicrm/vendor/dompdf/dompdf/AUTHORS.md
new file mode 100644
index 0000000000000000000000000000000000000000..686147928bb849faf5bf9c7f1ec0102d97ae175f
--- /dev/null
+++ b/civicrm/vendor/dompdf/dompdf/AUTHORS.md
@@ -0,0 +1,24 @@
+Dompdf was designed and developed by Benj Carson.
+
+### Current Team
+
+* **Brian Sweeney** (maintainer)
+* **Till Berger**
+
+### Alumni
+
+* **Benj Carson** (creator)
+* **Fabien Ménager**
+* **Simon Berger**
+* **Orion Richardson**
+
+### Contributors
+* **Gabriel Bull**
+* **Barry vd. Heuvel**
+* **Ryan H. Masten**
+* **Helmut Tischer**
+* [and many more...](https://github.com/dompdf/dompdf/graphs/contributors)
+
+### Thanks
+
+Dompdf would not have been possible without strong community support.
diff --git a/civicrm/vendor/dompdf/dompdf/README.md b/civicrm/vendor/dompdf/dompdf/README.md
index 529ab87d5543dab4ba56f37473bd765a4a0f6af4..7546e807e0a43c13469956817dc3dc3fb57e3cba 100644
--- a/civicrm/vendor/dompdf/dompdf/README.md
+++ b/civicrm/vendor/dompdf/dompdf/README.md
@@ -222,7 +222,8 @@ Files accessed through the local file system have the following requirement:
      $html = '<img src="data:image/svg+xml;base64,' . base64_encode($svg) . '" ...>';
      ```
      Watch https://github.com/dompdf/dompdf/issues/320 for progress
-
+ * Does not support CSS flexbox.
+ * Does not support CSS Grid.
 ---
 
 [![Donate button](https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif)](http://goo.gl/DSvWf)
diff --git a/civicrm/vendor/dompdf/dompdf/VERSION b/civicrm/vendor/dompdf/dompdf/VERSION
index 227cea215648b1af34a87c9acf5b707fe02d2072..38f77a65b3015cb4dc42eebe91514e49b47b8597 100644
--- a/civicrm/vendor/dompdf/dompdf/VERSION
+++ b/civicrm/vendor/dompdf/dompdf/VERSION
@@ -1 +1 @@
-2.0.0
+2.0.1
diff --git a/civicrm/vendor/dompdf/dompdf/composer.json b/civicrm/vendor/dompdf/dompdf/composer.json
index 512edb19b763cb9e0425dfa2b2fdf2a6e8ddbe87..268a81e7b07777b8b7017bf8727f8626d0008c98 100644
--- a/civicrm/vendor/dompdf/dompdf/composer.json
+++ b/civicrm/vendor/dompdf/dompdf/composer.json
@@ -6,16 +6,8 @@
     "license": "LGPL-2.1",
     "authors": [
         {
-            "name": "Fabien Ménager",
-            "email": "fabien.menager@gmail.com"
-        },
-        {
-            "name": "Brian Sweeney",
-            "email": "eclecticgeek@gmail.com"
-        },
-        {
-            "name": "Gabriel Bull",
-            "email": "me@gabrielbull.com"
+            "name": "The Dompdf Community",
+            "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md"
         }
     ],
     "autoload": {
@@ -36,8 +28,8 @@
         "ext-dom": "*",
         "ext-mbstring": "*",
         "masterminds/html5": "^2.0",
-        "phenx/php-font-lib": "^0.5.4",
-        "phenx/php-svg-lib": "^0.3.3 || ^0.4.0"
+        "phenx/php-font-lib": ">=0.5.4 <1.0.0",
+        "phenx/php-svg-lib": ">=0.3.3 <1.0.0"
     },
     "require-dev": {
         "ext-json": "*",
diff --git a/civicrm/vendor/dompdf/dompdf/lib/Cpdf.php b/civicrm/vendor/dompdf/dompdf/lib/Cpdf.php
index b8b7c953af61eadb5878b70aebdb832a339ea370..27bfa2981577edaa2cd329719fff06b1c47192f1 100644
--- a/civicrm/vendor/dompdf/dompdf/lib/Cpdf.php
+++ b/civicrm/vendor/dompdf/dompdf/lib/Cpdf.php
@@ -3,19 +3,10 @@
  * A PHP class to provide the basic functionality to create a pdf document without
  * any requirement for additional modules.
  *
- * Extended by Orion Richardson to support Unicode / UTF-8 characters using
- * TCPDF and others as a guide.
- *
- * @author  Wayne Munro <pdf@ros.co.nz>
- * @author  Orion Richardson <orionr@yahoo.com>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
- * @author  Ryan H. Masten <ryan.masten@gmail.com>
- * @author  Brian Sweeney <eclecticgeek@gmail.com>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
- * @license Public Domain http://creativecommons.org/licenses/publicdomain/
+ * @author  Wayne Munro
+ * @license http://creativecommons.org/licenses/publicdomain/ Public Domain
  * @package Cpdf
  */
-
 namespace Dompdf;
 
 use FontLib\Exception\FontNotFoundException;
@@ -4832,8 +4823,6 @@ EOT;
      * filter the text, this is applied to all text just before being inserted into the pdf document
      * it escapes the various things that need to be escaped, and so on
      *
-     * @access private
-     *
      * @param $text
      * @param bool $bom
      * @param bool $convert_encoding
@@ -4868,12 +4857,7 @@ EOT;
      * based on the excellent TCPDF code by Nicola Asuni and the
      * RFC for UTF-8 at http://www.faqs.org/rfcs/rfc3629.html
      *
-     * @access private
-     * @author Orion Richardson
-     * @since  January 5, 2008
-     *
      * @param string $text UTF-8 string to process
-     *
      * @return array UTF-8 codepoints array for the string
      */
     function utf8toCodePointsArray(&$text)
@@ -4943,13 +4927,8 @@ EOT;
      * based on the excellent TCPDF code by Nicola Asuni and the
      * RFC for UTF-8 at http://www.faqs.org/rfcs/rfc3629.html
      *
-     * @access private
-     * @author Orion Richardson
-     * @since  January 5, 2008
-     *
      * @param string  $text UTF-8 string to process
      * @param boolean $bom  whether to add the byte order marker
-     *
      * @return string UTF-16 result string
      */
     function utf8toUtf16BE(&$text, $bom = true)
@@ -5034,7 +5013,8 @@ EOT;
         }
 
         if (!isset($this->stringSubsets[$font])) {
-            $this->stringSubsets[$font] = [];
+            $base_subset = "\u{fffd}\u{fffe}\u{ffff}";
+            $this->stringSubsets[$font] = $this->utf8toCodePointsArray($base_subset);
         }
 
         $this->stringSubsets[$font] = array_unique(
diff --git a/civicrm/vendor/dompdf/dompdf/lib/res/html.css b/civicrm/vendor/dompdf/dompdf/lib/res/html.css
index 991abbb27a47e36678a217b62c8e4103a843663c..89dcde633c1a31c8e6f8e135fca1b5633e969602 100644
--- a/civicrm/vendor/dompdf/dompdf/lib/res/html.css
+++ b/civicrm/vendor/dompdf/dompdf/lib/res/html.css
@@ -2,10 +2,7 @@
  * dompdf default stylesheet.
  *
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Blake Ross <BlakeR1234@aol.com>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  *
  * Portions from Mozilla
diff --git a/civicrm/vendor/dompdf/dompdf/src/Adapter/CPDF.php b/civicrm/vendor/dompdf/dompdf/src/Adapter/CPDF.php
index 9b0f277802d5275f7a7b3d5e00624f24a5777044..e8fc6ae4d7d93971acf6e7e13d1de976497e3a92 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Adapter/CPDF.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Adapter/CPDF.php
@@ -1,11 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Orion Richardson <orionr@yahoo.com>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 
@@ -299,17 +295,13 @@ class CPDF implements Canvas
     }
 
     /**
-     * @access private
+     * Serialize the pdf object's current state for retrieval later
      */
     public function serialize_object($id)
     {
-        // Serialize the pdf object's current state for retrieval later
         return $this->_pdf->serializeObject($id);
     }
 
-    /**
-     * @access private
-     */
     public function reopen_serialized_object($obj)
     {
         return $this->_pdf->restoreSerializedObject($obj);
diff --git a/civicrm/vendor/dompdf/dompdf/src/Adapter/GD.php b/civicrm/vendor/dompdf/dompdf/src/Adapter/GD.php
index b2b5a3fb7b3530fb8b39f7ceb86d6a72ae7cfd6c..8c10e4766a12c531aa1fb7df2ed9107dd9e9d0f2 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Adapter/GD.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Adapter/GD.php
@@ -1,9 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Adapter;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Adapter/PDFLib.php b/civicrm/vendor/dompdf/dompdf/src/Adapter/PDFLib.php
index 639136797a8f1b9233cd6269702e4d0cd155e6ea..ee5ae8dd2720bd01d65379c1c27521fe70dde7eb 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Adapter/PDFLib.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Adapter/PDFLib.php
@@ -1,12 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\Adapter;
 
 use Dompdf\Canvas;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Canvas.php b/civicrm/vendor/dompdf/dompdf/src/Canvas.php
index bba6dd1bab935643967ad7b0858e80b473137647..1812def58eb86628810083982f3f8a3b29a4d66d 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Canvas.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Canvas.php
@@ -1,12 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf;
 
 /**
diff --git a/civicrm/vendor/dompdf/dompdf/src/CanvasFactory.php b/civicrm/vendor/dompdf/dompdf/src/CanvasFactory.php
index b2bf1276ae07453e36ce45087f21a00255d4f1f4..86352e1dc38d73ba96e46565f32635a53ea9d7a2 100644
--- a/civicrm/vendor/dompdf/dompdf/src/CanvasFactory.php
+++ b/civicrm/vendor/dompdf/dompdf/src/CanvasFactory.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Cellmap.php b/civicrm/vendor/dompdf/dompdf/src/Cellmap.php
index c07dcee8f185ef684334e1ad9bd01f418d852a50..e6c1c68e64dfeda141bb4adc65920bcc6a5b4b55 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Cellmap.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Cellmap.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Css/AttributeTranslator.php b/civicrm/vendor/dompdf/dompdf/src/Css/AttributeTranslator.php
index f012c9c8a599c47505b797770f2858f6ef3910ff..b2013e13cc24451e3f443f2ce07cf3d5ebc17c6f 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Css/AttributeTranslator.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Css/AttributeTranslator.php
@@ -1,9 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Css;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Css/Color.php b/civicrm/vendor/dompdf/dompdf/src/Css/Color.php
index 85e58bc1a281138afe96acb8f76115ec801b2db1..28a9f562c055342f33cf8e082d014ad41e507f38 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Css/Color.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Css/Color.php
@@ -2,12 +2,9 @@
 
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\Css;
 
 use Dompdf\Helpers;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Css/Style.php b/civicrm/vendor/dompdf/dompdf/src/Css/Style.php
index 9384dee5d8c011aa8bfd7de6f0fa845a5309dae5..2d4c9d7985d061d654fd707fb34849b380d6b7ae 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Css/Style.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Css/Style.php
@@ -1,13 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\Css;
 
 use Dompdf\Adapter\CPDF;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Css/Stylesheet.php b/civicrm/vendor/dompdf/dompdf/src/Css/Stylesheet.php
index 4a38d83c374227227519a3c9ac26482947aedc56..20e019ab0286258566c0996350e0140928a8fbb5 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Css/Stylesheet.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Css/Stylesheet.php
@@ -1,10 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Css;
@@ -1481,7 +1478,7 @@ class Stylesheet
     {
         $descriptors = $this->_parse_properties($str);
 
-        preg_match_all("/(url|local)\s*\([\"\']?([^\"\'\)]+)[\"\']?\)\s*(format\s*\([\"\']?([^\"\'\)]+)[\"\']?\))?/i", $descriptors->src, $src);
+        preg_match_all("/(url|local)\s*\(\s*[\"\']?([^\"\'\)]+)[\"\']?\s*\)\s*(format\s*\(\s*[\"\']?([^\"\'\)]+)[\"\']?\s*\))?/i", $descriptors->src, $src);
 
         $valid_sources = [];
         foreach ($src[0] as $i => $value) {
diff --git a/civicrm/vendor/dompdf/dompdf/src/Dompdf.php b/civicrm/vendor/dompdf/dompdf/src/Dompdf.php
index 0aa712684d52deeed71cd00d2e527e6bd8ce5b65..6feec59a616cb143ba5186cf38b505b283d84a1f 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Dompdf.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Dompdf.php
@@ -1,9 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf;
@@ -723,16 +721,13 @@ class Dompdf
         }
 
         $canvas = $this->canvas;
-        $root = null;
 
+        $root_frame = $this->tree->get_root();
+        $root = Factory::decorate_root($root_frame, $this);
         foreach ($this->tree as $frame) {
-            // Set up the root frame
-            if (is_null($root)) {
-                $root = Factory::decorate_root($this->tree->get_root(), $this);
+            if ($frame === $root_frame) {
                 continue;
             }
-
-            // Create the appropriate decorators, reflowers & positioners.
             Factory::decorate_frame($frame, $this, $root);
         }
 
diff --git a/civicrm/vendor/dompdf/dompdf/src/Exception.php b/civicrm/vendor/dompdf/dompdf/src/Exception.php
index c9fb0df072dabb55d52236801681b4653f2fb978..3a90e477143ac8d928fd4163e413c847530cc0a2 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Exception.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Exception.php
@@ -1,11 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf;
 
 /**
diff --git a/civicrm/vendor/dompdf/dompdf/src/Exception/ImageException.php b/civicrm/vendor/dompdf/dompdf/src/Exception/ImageException.php
index 62b44b1c8ebeebfc9d2896fcd80f0f388c57739c..ea1dfe4072bb39376b29c1391bb2406e1500a277 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Exception/ImageException.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Exception/ImageException.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Exception;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FontMetrics.php b/civicrm/vendor/dompdf/dompdf/src/FontMetrics.php
index 54d62bcd018a4780fde768e566cbb0edcd9182bb..5698c8823bd729d249cdbb1a6a6f37316a66afc0 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FontMetrics.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FontMetrics.php
@@ -1,13 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf;
 
 use FontLib\Font;
@@ -217,12 +213,14 @@ class FontMetrics
         $allowed_protocols = $this->options->getAllowedProtocols();
         if (!array_key_exists($protocol, $allowed_protocols)) {
             Helpers::record_warnings(E_USER_WARNING, "Permission denied on $remoteFile. The communication protocol is not supported.", __FILE__, __LINE__);
+            return false;
         }
 
         foreach ($allowed_protocols[$protocol]["rules"] as $rule) {
             [$result, $message] = $rule($remoteFile);
             if ($result !== true) {
                 Helpers::record_warnings(E_USER_WARNING, "Error loading $remoteFile: $message", __FILE__, __LINE__);
+                return false;
             }
         }
 
diff --git a/civicrm/vendor/dompdf/dompdf/src/Frame.php b/civicrm/vendor/dompdf/dompdf/src/Frame.php
index 26cdd84990082ab51ec30f9a6287087844e8e51d..55136b22bdbabad8e4046f50be19014fa9d6cc88 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Frame.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Frame.php
@@ -1,16 +1,13 @@
 <?php
-
-namespace Dompdf;
-
-use Dompdf\Css\Style;
-use Dompdf\Frame\FrameListIterator;
-
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
+namespace Dompdf;
+
+use Dompdf\Css\Style;
+use Dompdf\Frame\FrameListIterator;
 
 /**
  * The main Frame class
diff --git a/civicrm/vendor/dompdf/dompdf/src/Frame/Factory.php b/civicrm/vendor/dompdf/dompdf/src/Frame/Factory.php
index 97d38307cd2203e12ff7ffb724746482b9e4c263..b4bab8871c99cba3b741257d38ad6461811dee97 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Frame/Factory.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Frame/Factory.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Frame;
@@ -24,7 +23,6 @@ use Dompdf\Positioner\AbstractPositioner;
  * objects.  This is determined primarily by the Frame's display type, but
  * also by the Frame's node's type (e.g. DomElement vs. #text)
  *
- * @access  private
  * @package dompdf
  */
 class Factory
@@ -216,8 +214,7 @@ class Factory
 
             $node = $frame->get_node();
             $parent_node = $node->parentNode;
-
-            if ($parent_node) {
+            if ($parent_node && $parent_node instanceof \DOMElement) {
                 if (!$parent_node->hasAttribute("dompdf-children-count")) {
                     $xpath = new DOMXPath($xml);
                     $count = $xpath->query("li", $parent_node)->length;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameListIterator.php b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameListIterator.php
index 14e21def64bc816d1e35a1f3251e9892d305ddd4..01575505a7ab787a32502f5c47a996831c30cd8d 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameListIterator.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameListIterator.php
@@ -1,4 +1,9 @@
 <?php
+/**
+ * @package dompdf
+ * @link    https://github.com/dompdf/dompdf
+ * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ */
 namespace Dompdf\Frame;
 
 use Iterator;
@@ -10,7 +15,6 @@ use Dompdf\Frame;
  * Returns children in order and allows for the list to change during iteration,
  * provided the changes occur to or after the current element.
  *
- * @access private
  * @package dompdf
  */
 class FrameListIterator implements Iterator
diff --git a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTree.php b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTree.php
index 6a0e7e1791cf9ef2f5923ff4d2f6a0b25b4229ca..6d012d8d3055e308259ee32f5881fa90b5598a81 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTree.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTree.php
@@ -1,5 +1,9 @@
 <?php
-
+/**
+ * @package dompdf
+ * @link    https://github.com/dompdf/dompdf
+ * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ */
 namespace Dompdf\Frame;
 
 use DOMDocument;
@@ -11,13 +15,6 @@ use Dompdf\Exception;
 use Dompdf\Frame;
 use IteratorAggregate;
 
-/**
- * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
- */
-
 /**
  * Represents an entire document as a tree of frames
  *
diff --git a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTreeIterator.php b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTreeIterator.php
index 0dd580735140999448a6569d38336e029feede36..4da8da1eef914ac8cee3700f7682f981781c64e7 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTreeIterator.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Frame/FrameTreeIterator.php
@@ -1,4 +1,9 @@
 <?php
+/**
+ * @package dompdf
+ * @link    https://github.com/dompdf/dompdf
+ * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ */
 namespace Dompdf\Frame;
 
 use Iterator;
@@ -9,7 +14,6 @@ use Dompdf\Frame;
  *
  * Returns frames in preorder traversal order (parent then children)
  *
- * @access private
  * @package dompdf
  */
 class FrameTreeIterator implements Iterator
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php
index 26358fa5ff987c7da29bcd7e39606ae80949e213..2c1fcc5df736288ede981a4f2cbbe4f22ea44580 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/AbstractFrameDecorator.php
@@ -1,5 +1,9 @@
 <?php
-
+/**
+ * @package dompdf
+ * @link    https://github.com/dompdf/dompdf
+ * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ */
 namespace Dompdf\FrameDecorator;
 
 use DOMElement;
@@ -15,13 +19,6 @@ use Dompdf\FrameReflower\AbstractFrameReflower;
 use Dompdf\Css\Style;
 use Dompdf\Positioner\AbstractPositioner;
 
-/**
- * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
- */
-
 /**
  * Base AbstractFrameDecorator class
  *
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Block.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Block.php
index 61162c16f890ae6c176855571609fa07e3075621..1fcf134d8f07219cc08410d91a9401ee6d481468 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Block.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Block.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameDecorator;
@@ -14,7 +13,6 @@ use Dompdf\LineBox;
 /**
  * Decorates frames for block layout
  *
- * @access  private
  * @package dompdf
  */
 class Block extends AbstractFrameDecorator
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Image.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Image.php
index c52aae803bd51d9fc17724552cefcd2db50b1f2f..92ac491a4776e1a23c290a229b4b31b000537a79 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Image.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Image.php
@@ -1,9 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Inline.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Inline.php
index ec18793c31267ef9ae2dfc7430e8cc0f6646a265..668d795e08199143d88f43c22412135b69a583ca 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Inline.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Inline.php
@@ -1,9 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameDecorator;
@@ -15,7 +13,6 @@ use Dompdf\Exception;
 /**
  * Decorates frames for inline layout
  *
- * @access  private
  * @package dompdf
  */
 class Inline extends AbstractFrameDecorator
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBullet.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBullet.php
index 3b6d8042f98c42a0d18e00609768fd614f3aebfb..703f467677dfa3257d5d93e2d252790decf482c2 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBullet.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBullet.php
@@ -1,9 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBulletImage.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBulletImage.php
index 19fed1c095f672e220a5630d95d268a30b285fcc..d921929c2c3ac4d40eeaf48983bce8b2b2dc3b81 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBulletImage.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/ListBulletImage.php
@@ -1,9 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/NullFrameDecorator.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/NullFrameDecorator.php
index e3457cfe7b97d53cf13dcabc2c6e03516b590c6e..f083816750fc35cfc2f3a3243b02e64e7ee3a35d 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/NullFrameDecorator.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/NullFrameDecorator.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Page.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Page.php
index 56da9d4e372756d954f7fcbb42c4273f27322f8d..25ef2408f4fd542238048487aaf455e1c74dd675 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Page.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Page.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameDecorator;
@@ -15,7 +14,6 @@ use Dompdf\Renderer;
 /**
  * Decorates frames for page layout
  *
- * @access  private
  * @package dompdf
  */
 class Page extends AbstractFrameDecorator
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Table.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Table.php
index efa68404f03cc6a580fdeebd702d4d56a45f541c..2770cbecb14eb9e79248cab391fc2677bad05245 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Table.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Table.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameDecorator;
@@ -196,7 +195,8 @@ class Table extends AbstractFrameDecorator
                 || in_array($frame->get_style()->display, self::VALID_CHILDREN, true);
         };
 
-        return $frame->is_text_node() && !$frame->is_pre()
+        return $frame instanceof Text
+            && !$frame->is_pre()
             && preg_match($wsPattern, $frame->get_text())
             && $validChildOrNull($frame->get_prev_sibling())
             && $validChildOrNull($frame->get_next_sibling());
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableCell.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableCell.php
index f5e6569a65a82309b398dacef889866ab57a5100..d382164a3fb904bf8b4e03fbbd95c0812f266c68 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableCell.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableCell.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRow.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRow.php
index 9659b0e2c19f197508f3eea9e71df5e47ceb072c..ba985c916907df2ecd15128b8a04880b5f940a42 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRow.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRow.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRowGroup.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRowGroup.php
index 95a7d00d6d04dd0735285a7571f97aa2b500c78e..00fe43a344afee22fa4102b8d9a84aea4be7a15a 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRowGroup.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/TableRowGroup.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameDecorator;
@@ -43,7 +42,9 @@ class TableRowGroup extends AbstractFrameDecorator
         }
 
         // Remove child & all subsequent rows from the cellmap
-        $cellmap = $this->get_parent()->get_cellmap();
+        /** @var Table $parent */
+        $parent = $this->get_parent();
+        $cellmap = $parent->get_cellmap();
         $iter = $child;
 
         while ($iter) {
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Text.php b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Text.php
index 9410e960f6d12d3c5cbba7cc189e62ff36a8899e..9d6693464384790bf9c5fa392d4d9adc1868c6f7 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Text.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameDecorator/Text.php
@@ -1,10 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Brian Sweeney <eclecticgeek@gmail.com>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameDecorator;
@@ -16,7 +13,6 @@ use Dompdf\Exception;
 /**
  * Decorates Frame objects for text layout
  *
- * @access  private
  * @package dompdf
  */
 class Text extends AbstractFrameDecorator
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php
index 6db96447c2fb54617e83a1fdbab67d919bda306e..fa0cc511b450ec4614cdf4fa320cd92ff75c8be1 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/AbstractFrameReflower.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameReflower;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Block.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Block.php
index b402cc0c9c7be8e5f5a04a8ee41cfbb379ee7e53..f9e50a67839d0b813d055478b7ab72123104aa0c 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Block.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Block.php
@@ -1,14 +1,13 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameReflower;
 
 use Dompdf\Frame;
+use Dompdf\FrameDecorator\AbstractFrameDecorator;
 use Dompdf\FrameDecorator\Block as BlockFrameDecorator;
 use Dompdf\FrameDecorator\TableCell as TableCellFrameDecorator;
 use Dompdf\FrameDecorator\Text as TextFrameDecorator;
@@ -27,6 +26,8 @@ class Block extends AbstractFrameReflower
     const MIN_JUSTIFY_WIDTH = 0.80;
 
     /**
+     * Frame for this reflower
+     *
      * @var BlockFrameDecorator
      */
     protected $_frame;
@@ -685,9 +686,9 @@ class Block extends AbstractFrameReflower
     }
 
     /**
-     * @param Frame $child
+     * @param AbstractFrameDecorator $child
      */
-    function process_clear(Frame $child)
+    function process_clear(AbstractFrameDecorator $child)
     {
         $child_style = $child->get_style();
         $root = $this->_frame->get_root();
@@ -719,11 +720,11 @@ class Block extends AbstractFrameReflower
     }
 
     /**
-     * @param Frame $child
+     * @param AbstractFrameDecorator $child
      * @param float $cb_x
      * @param float $cb_w
      */
-    function process_float(Frame $child, $cb_x, $cb_w)
+    function process_float(AbstractFrameDecorator $child, $cb_x, $cb_w)
     {
         $child_style = $child->get_style();
         $root = $this->_frame->get_root();
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Image.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Image.php
index 5e7e965a7e2a9544e940edcd07382558db791c3c..eae34087b2f3569db4055e8d20856027dac327e7 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Image.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Image.php
@@ -1,9 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameReflower;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Inline.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Inline.php
index 9fd14136a58f0bd31619e96d2ee5f93501fed73c..34a66860d6503fefee6045710e82ca8fe6fccc2d 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Inline.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Inline.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameReflower;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/ListBullet.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/ListBullet.php
index c73a7c58c12e763cf4edb7983fa9a8d18cc316ac..f735bae1693bec98e385b5d12dc416f7f8af2efb 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/ListBullet.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/ListBullet.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameReflower;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/NullFrameReflower.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/NullFrameReflower.php
index 8bdb0f1ad6bf72ab707ee86774d452450b063ff7..8d7e5583c93a3b08d121317c685f5df2d2655465 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/NullFrameReflower.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/NullFrameReflower.php
@@ -1,11 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\FrameReflower;
 
 use Dompdf\Frame;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Page.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Page.php
index bec6b979954406387ee3f86cb47d65e88c5b658d..923865b53bc92bf70bdfe1fc0384e35b1c5b3fef 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Page.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Page.php
@@ -1,9 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameReflower;
@@ -95,18 +93,20 @@ class Page extends AbstractFrameReflower
      */
     function reflow(BlockFrameDecorator $block = null)
     {
+        /** @var PageFrameDecorator $frame */
+        $frame = $this->_frame;
+        $child = $frame->get_first_child();
         $fixed_children = [];
         $prev_child = null;
-        $child = $this->_frame->get_first_child();
         $current_page = 0;
 
         while ($child) {
-            $this->apply_page_style($this->_frame, $current_page + 1);
+            $this->apply_page_style($frame, $current_page + 1);
 
-            $style = $this->_frame->get_style();
+            $style = $frame->get_style();
 
             // Pages are only concerned with margins
-            $cb = $this->_frame->get_containing_block();
+            $cb = $frame->get_containing_block();
             $left = (float)$style->length_in_pt($style->margin_left, $cb["w"]);
             $right = (float)$style->length_in_pt($style->margin_right, $cb["w"]);
             $top = (float)$style->length_in_pt($style->margin_top, $cb["h"]);
@@ -146,13 +146,13 @@ class Page extends AbstractFrameReflower
             $this->_check_callbacks("begin_page_render", $child);
 
             // Render the page
-            $this->_frame->get_renderer()->render($child);
+            $frame->get_renderer()->render($child);
 
             // Check for end render callback
             $this->_check_callbacks("end_page_render", $child);
 
             if ($next_child) {
-                $this->_frame->next_page();
+                $frame->next_page();
             }
 
             // Wait to dispose of all frames on the previous page
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Table.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Table.php
index 1b0818023530bebd3b4b305ed98ff7f8a9cfb7ea..5173738e988f046e864baedb8539f0a99eb6e636 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Table.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Table.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameReflower;
@@ -14,7 +13,6 @@ use Dompdf\Helpers;
 /**
  * Reflows tables
  *
- * @access  private
  * @package dompdf
  */
 class Table extends AbstractFrameReflower
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableCell.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableCell.php
index b76e81fd260abe67f942636c3b82e34daf1f6dd0..f5ce35da6ea852b46d0d248ca50de9ef5c664561 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableCell.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableCell.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameReflower;
@@ -104,9 +103,12 @@ class TableCell extends Block
         // Determine our height
         $style_height = (float)$style->length_in_pt($style->height, $h);
 
-        $this->_frame->set_content_height($this->_calculate_content_height());
+        /** @var FrameDecorator\TableCell */
+        $frame = $this->_frame;
 
-        $height = max($style_height, (float)$this->_frame->get_content_height());
+        $frame->set_content_height($this->_calculate_content_height());
+
+        $height = max($style_height, (float)$frame->get_content_height());
 
         // Let the cellmap know our height
         $cell_height = $height / count($cells["rows"]);
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableRow.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableRow.php
index 0dbc9724e0f8d05ffd445d5598bdcb3bf1246789..f84c1258b3ab5b51983798021d25bb5499f4c96f 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableRow.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableRow.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameReflower;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableRowGroup.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableRowGroup.php
index ab056e4267913eee848d9333bcd5370967349895..c8b19aa5312f6a7fb7df342f931d3696fecadea4 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableRowGroup.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/TableRowGroup.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameReflower;
diff --git a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Text.php b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Text.php
index 823676715b590f55517598da99932ba93bfa1a74..57439ae70c470fd2df31a8ab594d46fb5a00f101 100644
--- a/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Text.php
+++ b/civicrm/vendor/dompdf/dompdf/src/FrameReflower/Text.php
@@ -1,9 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\FrameReflower;
@@ -45,6 +43,8 @@ class Text extends AbstractFrameReflower
     public static $_wordbreak_pattern = '/([^\S\xA0\x{202F}\x{2007}\n]+|\R|\-+|\xAD+)/u';
 
     /**
+     * Frame for this reflower
+     *
      * @var TextFrameDecorator
      */
     protected $_frame;
@@ -123,11 +123,13 @@ class Text extends AbstractFrameReflower
     }
 
     /**
-     * @param string $text
+     * @param string              $text
      * @param BlockFrameDecorator $block
+     * @param bool                $nowrap
+     *
      * @return bool|int
      */
-    protected function line_break(string $text, BlockFrameDecorator $block)
+    protected function line_break(string $text, BlockFrameDecorator $block, bool $nowrap = false)
     {
         $fontMetrics = $this->getFontMetrics();
         $frame = $this->_frame;
@@ -160,12 +162,16 @@ class Text extends AbstractFrameReflower
             return false;
         }
 
+        if ($nowrap) {
+            return $current_line_width == 0 ? false : 0;
+        }
+
         // Split the text into words
         $words = preg_split(self::$_wordbreak_pattern, $text, -1, PREG_SPLIT_DELIM_CAPTURE);
         $wc = count($words);
 
         // Determine the split point
-        $width = 0;
+        $width = 0.0;
         $str = "";
 
         $space_width = $fontMetrics->getTextWidth(" ", $font, $size, $word_spacing, $letter_spacing);
@@ -208,7 +214,7 @@ class Text extends AbstractFrameReflower
 
         // The first word has overflowed. Force it onto the line, or as many
         // characters as fit if breaking words is allowed
-        if ($current_line_width == 0 && $width == 0) {
+        if ($current_line_width == 0 && $width === 0.0) {
             if ($sep === " ") {
                 $word .= $sep;
             }
@@ -282,30 +288,25 @@ class Text extends AbstractFrameReflower
 
         // Determine the next line break
         // http://www.w3.org/TR/CSS21/text.html#propdef-white-space
-        switch ($style->white_space) {
+        $white_space = $style->white_space;
+        $nowrap = $white_space === "nowrap" || $white_space === "pre";
+
+        switch ($white_space) {
             default:
             case "normal":
-                $split = $this->line_break($text, $block);
-                $add_line = false;
-                break;
-
             case "nowrap":
-                $split = false;
+                $split = $this->line_break($text, $block, $nowrap);
                 $add_line = false;
                 break;
 
             case "pre":
-                $split = $this->newline_break($text);
-                $add_line = $split !== false;
-                break;
-
             case "pre-line":
             case "pre-wrap":
                 $hard_split = $this->newline_break($text);
                 $first_line = $hard_split !== false
                     ? mb_substr($text, 0, $hard_split)
                     : $text;
-                $soft_split = $this->line_break($first_line, $block);
+                $soft_split = $this->line_break($first_line, $block, $nowrap);
 
                 $split = $soft_split !== false ? $soft_split : $hard_split;
                 $add_line = $hard_split !== false;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Helpers.php b/civicrm/vendor/dompdf/dompdf/src/Helpers.php
index 0dad2a73270dc8c20ee39d9cb2fdb724565e85e2..ba78515a451cc060ad03a9e50d152234b608f006 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Helpers.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Helpers.php
@@ -1,4 +1,9 @@
 <?php
+/**
+ * @package dompdf
+ * @link    https://github.com/dompdf/dompdf
+ * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ */
 namespace Dompdf;
 
 class Helpers
diff --git a/civicrm/vendor/dompdf/dompdf/src/Image/Cache.php b/civicrm/vendor/dompdf/dompdf/src/Image/Cache.php
index dad8e7eb8130988fff5ac50c1732c1171c8fb23e..f337bbb47c3fcb62597aefb7fdae50fc37f36268 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Image/Cache.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Image/Cache.php
@@ -1,10 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Image;
diff --git a/civicrm/vendor/dompdf/dompdf/src/JavascriptEmbedder.php b/civicrm/vendor/dompdf/dompdf/src/JavascriptEmbedder.php
index 7a8fce53bbaf8397998aee0d93482b06072b8847..f4b9bc25ad82f8e05f88141aff82512599f4aae3 100644
--- a/civicrm/vendor/dompdf/dompdf/src/JavascriptEmbedder.php
+++ b/civicrm/vendor/dompdf/dompdf/src/JavascriptEmbedder.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf;
diff --git a/civicrm/vendor/dompdf/dompdf/src/LineBox.php b/civicrm/vendor/dompdf/dompdf/src/LineBox.php
index 71a37d1364b8fe507ed310ad0b3c6f4ef5cd2d34..11b83c15cca28e75672cee9da25ecb93d727cae0 100644
--- a/civicrm/vendor/dompdf/dompdf/src/LineBox.php
+++ b/civicrm/vendor/dompdf/dompdf/src/LineBox.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Options.php b/civicrm/vendor/dompdf/dompdf/src/Options.php
index 766479f0e78f951344271223b829cb84e353ad11..de127d2d5cfed38ff044d72a10e1b1c8bc619508 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Options.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Options.php
@@ -1,4 +1,9 @@
 <?php
+/**
+ * @package dompdf
+ * @link    https://github.com/dompdf/dompdf
+ * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
+ */
 namespace Dompdf;
 
 class Options
diff --git a/civicrm/vendor/dompdf/dompdf/src/PhpEvaluator.php b/civicrm/vendor/dompdf/dompdf/src/PhpEvaluator.php
index cdebc7a41f5a778bde6d4387e3318a5d112e9747..4a46555cadc45c90daaf66df608e4873357737e8 100644
--- a/civicrm/vendor/dompdf/dompdf/src/PhpEvaluator.php
+++ b/civicrm/vendor/dompdf/dompdf/src/PhpEvaluator.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/Absolute.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/Absolute.php
index 7d5c0db871b8a3060b6c88d510a5fd77f0fa9c56..2df9a742bcdb70deb281ce3ca7919e86ee19274f 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Positioner/Absolute.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/Absolute.php
@@ -1,11 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\Positioner;
 
 use Dompdf\FrameDecorator\AbstractFrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/AbstractPositioner.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/AbstractPositioner.php
index 97389f728d99088b6328dadf90c6a75a78343875..a75c09fb9b00aad06882eb040b14910e3d185ff8 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Positioner/AbstractPositioner.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/AbstractPositioner.php
@@ -1,11 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\Positioner;
 
 use Dompdf\FrameDecorator\AbstractFrameDecorator;
@@ -15,7 +13,6 @@ use Dompdf\FrameDecorator\AbstractFrameDecorator;
  *
  * Defines positioner interface
  *
- * @access  private
  * @package dompdf
  */
 abstract class AbstractPositioner
diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/Block.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/Block.php
index 2b4a1be2b0076aa51a541ba53c53a547d7fad129..e6f65eab921480df61c3cb658634844ed8e08fc0 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Positioner/Block.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/Block.php
@@ -1,11 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\Positioner;
 
 use Dompdf\FrameDecorator\AbstractFrameDecorator;
@@ -13,7 +11,6 @@ use Dompdf\FrameDecorator\AbstractFrameDecorator;
 /**
  * Positions block frames
  *
- * @access  private
  * @package dompdf
  */
 class Block extends AbstractPositioner
diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/Fixed.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/Fixed.php
index 20b8154cdf3f4ccdaf3385ceeac8afcccc9b19f2..13eb9e9c07e12ea3b45b97157d9333ff70a67f88 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Positioner/Fixed.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/Fixed.php
@@ -1,12 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\Positioner;
 
 use Dompdf\FrameDecorator\AbstractFrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/Inline.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/Inline.php
index 6154d7097ee5bbf05c4bdfa04045b2d127690cb9..c0bdaf263dec602901a313e460b9816e69868c63 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Positioner/Inline.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/Inline.php
@@ -1,11 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\Positioner;
 
 use Dompdf\FrameDecorator\AbstractFrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/ListBullet.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/ListBullet.php
index af45489b1c110619964219516cdea19f2c00458a..081d5941921964ee735181abdf5194052351ea43 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Positioner/ListBullet.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/ListBullet.php
@@ -1,12 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\Positioner;
 
 use Dompdf\FrameDecorator\AbstractFrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/NullPositioner.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/NullPositioner.php
index 2217430e39469c982edce0db9286ee9dc15dd501..6ad425c344712f7f1151fa5290b74bbb6c2c617b 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Positioner/NullPositioner.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/NullPositioner.php
@@ -1,11 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\Positioner;
 
 use Dompdf\FrameDecorator\AbstractFrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/TableCell.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/TableCell.php
index 621319f41155bf33e59b63aa572f19682a72a76b..1a6ac6298cab4c44c75dc610ecb34d75b41ae464 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Positioner/TableCell.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/TableCell.php
@@ -1,11 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\Positioner;
 
 use Dompdf\FrameDecorator\AbstractFrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Positioner/TableRow.php b/civicrm/vendor/dompdf/dompdf/src/Positioner/TableRow.php
index 20cee5c8df4ac710964346bc4dce5f38e8434220..79c0fcf2538f86bb40fd50db80d8cdefd4749736 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Positioner/TableRow.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Positioner/TableRow.php
@@ -1,11 +1,9 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
-
 namespace Dompdf\Positioner;
 
 use Dompdf\FrameDecorator\AbstractFrameDecorator;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer.php b/civicrm/vendor/dompdf/dompdf/src/Renderer.php
index b6e636e42d5436923c62f64a02ffe20988840d50..e3cacc10439bcececd60eda560df9493d9df7fed 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Renderer.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Renderer.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php
index 879043b08d817faa4aa6c2fee1da79122388daa2..8b01ef8c02e617932e69bd275bea3148d57c6dac 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/AbstractRenderer.php
@@ -1,10 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Renderer;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/Block.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/Block.php
index 01cc7c07fb73e6694b9166b2c9c0a7479e178b26..99db1929a1659dd70dea4655011823d4dc40fb67 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Renderer/Block.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/Block.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Renderer;
@@ -33,12 +32,10 @@ class Block extends AbstractRenderer
         [$x, $y, $w, $h] = $frame->get_border_box();
 
         if ($node->nodeName === "body") {
-            $h = $frame->get_containing_block("h") - (float)$style->length_in_pt([
-                        $style->margin_top,
-                        $style->border_top_width,
-                        $style->border_bottom_width,
-                        $style->margin_bottom],
-                    (float)$style->length_in_pt($style->width));
+            // Margins should be fully resolved at this point
+            $mt = $style->margin_top;
+            $mb = $style->margin_bottom;
+            $h = $frame->get_containing_block("h") - $mt - $mb;
         }
 
         $border_box = [$x, $y, $w, $h];
diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/Image.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/Image.php
index 9bf54aca41e9755584f05765cf7dce7d5160cdf9..61f684f9459d6c5cd953fb6a7dbcede78c4f37b1 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Renderer/Image.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/Image.php
@@ -1,9 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Renderer;
@@ -15,7 +13,6 @@ use Dompdf\Image\Cache;
 /**
  * Image renderer
  *
- * @access  private
  * @package dompdf
  */
 class Image extends Block
diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/Inline.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/Inline.php
index f7de5fdabdd2d0504c82fba8d3296d8849105f0c..ad35464924d415676779c6c258b05ad7467998c3 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Renderer/Inline.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/Inline.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Renderer;
@@ -13,7 +12,6 @@ use Dompdf\Helpers;
 /**
  * Renders inline frames
  *
- * @access  private
  * @package dompdf
  */
 class Inline extends AbstractRenderer
@@ -95,20 +93,24 @@ class Inline extends AbstractRenderer
             }
 
             $style = $child->get_style();
-            list(, , $child_w, $child_h) = $child->get_padding_box();
+            $auto_width = $style->width === "auto";
+            $auto_height = $style->height === "auto";
+            [, , $child_w, $child_h] = $child->get_padding_box();
 
-            $child_h2 = 0.0;
+            if ($auto_width || $auto_height) {
+                [$child_w2, $child_h2] = $this->get_child_size($child, $do_debug_layout_line);
 
-            if ($style->width === "auto") {
-                list($child_w, $child_h2) = $this->get_child_size($child, $do_debug_layout_line);
-            }
-
-            if ($style->height === "auto") {
-                list(, $child_h2) = $this->get_child_size($child, $do_debug_layout_line);
+                if ($auto_width) {
+                    $child_w = $child_w2;
+                }
+    
+                if ($auto_height) {
+                    $child_h = $child_h2;
+                }
             }
 
             $w += $child_w;
-            $h = max($h, $child_h, $child_h2);
+            $h = max($h, $child_h);
 
             if ($do_debug_layout_line) {
                 $this->_debug_layout($child->get_border_box(), "blue");
diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/ListBullet.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/ListBullet.php
index ba9a844efa544013f8e0f98ad1b233695740d3ac..2df6696ad749068e02b2e476849b553e8fadcb20 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Renderer/ListBullet.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/ListBullet.php
@@ -1,9 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Renderer;
@@ -11,12 +9,12 @@ namespace Dompdf\Renderer;
 use Dompdf\Helpers;
 use Dompdf\Frame;
 use Dompdf\FrameDecorator\ListBullet as ListBulletFrameDecorator;
+use Dompdf\FrameDecorator\ListBulletImage;
 use Dompdf\Image\Cache;
 
 /**
  * Renders list bullets
  *
- * @access  private
  * @package dompdf
  */
 class ListBullet extends AbstractRenderer
@@ -149,7 +147,7 @@ class ListBullet extends AbstractRenderer
 
         // Handle list-style-image
         // If list style image is requested but missing, fall back to predefined types
-        if ($style->list_style_image !== "none" && !Cache::is_broken($img = $frame->get_image_url())) {
+        if ($frame instanceof ListBulletImage && !Cache::is_broken($img = $frame->get_image_url())) {
             [$x, $y] = $frame->get_position();
             $w = $frame->get_width();
             $h = $frame->get_height();
diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/TableCell.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/TableCell.php
index 3cddff5b7f5f70945d8010d0e9a29a7b5ea4e18f..cbbffd34c0d4c28ea8929d062a2b886f3a12cc70 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Renderer/TableCell.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/TableCell.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Renderer;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/TableRowGroup.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/TableRowGroup.php
index 93e9b97d676098aa77caba9000c9160aa577ab51..295ccde3e26d7e7bab3e0782773ce3de50f8d54f 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Renderer/TableRowGroup.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/TableRowGroup.php
@@ -1,8 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Renderer;
diff --git a/civicrm/vendor/dompdf/dompdf/src/Renderer/Text.php b/civicrm/vendor/dompdf/dompdf/src/Renderer/Text.php
index 644fa3853b81b62de325b0749c5f2590764b8f5e..e7baa0a01c57dd3f6ccf7ba6143a8453a06df99c 100644
--- a/civicrm/vendor/dompdf/dompdf/src/Renderer/Text.php
+++ b/civicrm/vendor/dompdf/dompdf/src/Renderer/Text.php
@@ -1,10 +1,7 @@
 <?php
 /**
  * @package dompdf
- * @link    http://dompdf.github.com/
- * @author  Benj Carson <benjcarson@digitaljunkies.ca>
- * @author  Helmut Tischer <htischer@weihenstephan.org>
- * @author  Fabien Ménager <fabien.menager@gmail.com>
+ * @link    https://github.com/dompdf/dompdf
  * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
  */
 namespace Dompdf\Renderer;
diff --git a/civicrm/vendor/zetacomponents/mail/ChangeLog b/civicrm/vendor/zetacomponents/mail/ChangeLog
index a668df69b5cf36a9d6678cf6eae1c3a150bc5750..2963294a230fe6edf3931330328c06662fd9a52b 100644
--- a/civicrm/vendor/zetacomponents/mail/ChangeLog
+++ b/civicrm/vendor/zetacomponents/mail/ChangeLog
@@ -1,3 +1,9 @@
+1.9.4 - Wednesday 14 September 2022
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Fixed #89: Deprecation warning with PHP 8.x. (Eileen McNaughton)
+
+
 1.9.3 - Tuesday 09 August 2022
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/civicrm/vendor/zetacomponents/mail/src/transports/imap/imap_transport.php b/civicrm/vendor/zetacomponents/mail/src/transports/imap/imap_transport.php
index e632af315a2cacce55297d9dfa3e043f623b8423..f4722a6964e16836f31095a2e853a38176bed982 100644
--- a/civicrm/vendor/zetacomponents/mail/src/transports/imap/imap_transport.php
+++ b/civicrm/vendor/zetacomponents/mail/src/transports/imap/imap_transport.php
@@ -1854,7 +1854,7 @@ class ezcMailImapTransport
      * @param bool $reverse
      * @return ezcMailImapSet
      */
-    public function sortFromOffset( $offset, $count = 0, $sortCriteria, $reverse = false )
+    public function sortFromOffset( $offset, $count, $sortCriteria, $reverse = false )
     {
         if ( $count < 0 )
         {
diff --git a/civicrm/xml/schema/Activity/Activity.xml b/civicrm/xml/schema/Activity/Activity.xml
index c6f33a984636f1c5a7e499d69a00f60d98d8366c..09a55c45143fd69b49135e0d320fa32ea323a495 100644
--- a/civicrm/xml/schema/Activity/Activity.xml
+++ b/civicrm/xml/schema/Activity/Activity.xml
@@ -293,12 +293,12 @@
   </foreignKey>
   <field>
     <name>is_current_revision</name>
-    <title>Is this activity a current revision in versioning chain?</title>
+    <title>Is current (unused)</title>
     <type>boolean</type>
     <default>1</default>
+    <comment>Unused deprecated column.</comment>
     <required>true</required>
-    <import>true</import>
-    <headerPattern>/(is.)?(current.)?(revision|version(ing)?)/i</headerPattern>
+    <deprecated>true</deprecated>
     <add>2.2</add>
   </field>
   <index>
@@ -309,8 +309,9 @@
   <field>
     <name>original_id</name>
     <type>int unsigned</type>
-    <title>Original Activity ID</title>
-    <comment>Activity ID of the first activity record in versioning chain.</comment>
+    <title>Original ID (unused)</title>
+    <comment>Unused deprecated column.</comment>
+    <deprecated>true</deprecated>
     <readonly>true</readonly>
     <html>
       <label>Original Activity</label>
diff --git a/civicrm/xml/schema/Contact/Contact.xml b/civicrm/xml/schema/Contact/Contact.xml
index 4b9c1019fdc9904923d121369084d93334361bc2..f00299697ebfe03136e58b2687bac43b87c074e7 100644
--- a/civicrm/xml/schema/Contact/Contact.xml
+++ b/civicrm/xml/schema/Contact/Contact.xml
@@ -44,6 +44,7 @@
       <table>civicrm_contact_type</table>
       <keyColumn>name</keyColumn>
       <labelColumn>label</labelColumn>
+      <iconColumn>icon</iconColumn>
       <condition>parent_id IS NULL</condition>
     </pseudoconstant>
     <html>
@@ -72,6 +73,7 @@
       <table>civicrm_contact_type</table>
       <keyColumn>name</keyColumn>
       <labelColumn>label</labelColumn>
+      <iconColumn>icon</iconColumn>
       <condition>parent_id IS NOT NULL</condition>
     </pseudoconstant>
     <html>
@@ -333,7 +335,7 @@
     <default>"Both"</default>
     <import>false</import>
     <headerPattern>/^p(ref\w*\s)?m(ail\s)?f(orm\w*)$/i</headerPattern>
-    <comment>What is the preferred mode of sending an email.</comment>
+    <comment>Deprecated setting for text vs html mailings</comment>
     <add>1.1</add>
     <pseudoconstant>
       <callback>CRM_Core_SelectValues::pmf</callback>
@@ -342,6 +344,7 @@
       <type>Select</type>
       <label>Preferred Mail Format</label>
     </html>
+    <deprecated>true</deprecated>
   </field>
   <field>
     <name>hash</name>
@@ -815,6 +818,7 @@
     <type>varchar</type>
     <length>255</length>
     <import>true</import>
+    <deprecated>true</deprecated>
     <headerPattern>/^Open\s?ID|u(niq\w*)?\s?ID/i</headerPattern>
     <dataPattern>/^[\w\/\:\.]+$/</dataPattern>
     <comment>the OpenID (or OpenID-style http://username.domain/) unique identifier for this contact mainly used for logging in to CiviCRM</comment>
@@ -871,6 +875,7 @@
     <required>false</required>
     <export>true</export>
     <default>NULL</default>
+    <readonly>true</readonly>
     <html>
       <label>Created Date</label>
     </html>
diff --git a/civicrm/xml/schema/Contact/ContactType.xml b/civicrm/xml/schema/Contact/ContactType.xml
index b9fe0b75b5720c0cb257a4eceb584ae59d69051b..aec9c423fa900886ec57ca1250bbdc4c8a40f9a6 100644
--- a/civicrm/xml/schema/Contact/ContactType.xml
+++ b/civicrm/xml/schema/Contact/ContactType.xml
@@ -6,6 +6,11 @@
   <name>civicrm_contact_type</name>
   <comment>Provide type information for contacts</comment>
   <add>3.1</add>
+  <paths>
+    <add>civicrm/admin/options/subtype/edit?action=add&amp;reset=1</add>
+    <update>civicrm/admin/options/subtype/edit?action=update&amp;id=[id]&amp;reset=1</update>
+    <delete>civicrm/admin/options/subtype/edit?action=delete&amp;id=[id]&amp;reset=1</delete>
+  </paths>
   <field>
     <name>id</name>
     <title>Contact Type ID</title>
diff --git a/civicrm/xml/schema/Contact/RelationshipCache.xml b/civicrm/xml/schema/Contact/RelationshipCache.xml
index 62d9ea1d2fbb1ca3b02dab2c924a70256a4a539e..7421611dbcff6f7703f9017c2c662066a6b7f796 100644
--- a/civicrm/xml/schema/Contact/RelationshipCache.xml
+++ b/civicrm/xml/schema/Contact/RelationshipCache.xml
@@ -115,6 +115,7 @@
     <add>5.29</add>
     <html>
       <label>Relationship to contact</label>
+      <type>Select</type>
     </html>
     <pseudoconstant>
       <callback>CRM_Core_PseudoConstant::relationshipTypeOptions</callback>
@@ -152,6 +153,7 @@
     <add>5.29</add>
     <html>
       <label>Relationship from contact</label>
+      <type>Select</type>
     </html>
     <pseudoconstant>
       <callback>CRM_Core_PseudoConstant::relationshipTypeOptions</callback>
@@ -237,6 +239,7 @@
     <comment>FK to civicrm_case</comment>
     <html>
       <label>Case</label>
+      <type>EntityRef</type>
     </html>
     <add>5.44</add>
     <readonly>true</readonly>
diff --git a/civicrm/xml/schema/Core/Address.xml b/civicrm/xml/schema/Core/Address.xml
index 018390e5065c622f10c27247d8dfd82dec7a001b..a38d251e8fe8226f792e73151150b43cd02ce259 100644
--- a/civicrm/xml/schema/Core/Address.xml
+++ b/civicrm/xml/schema/Core/Address.xml
@@ -352,6 +352,7 @@
     <title>USPS Code</title>
     <type>varchar</type>
     <length>32</length>
+    <deprecated>true</deprecated>
     <comment>USPS Bulk mailing code.</comment>
     <add>1.1</add>
   </field>
diff --git a/civicrm/xml/schema/Core/CustomField.xml b/civicrm/xml/schema/Core/CustomField.xml
index 40de350dcabd87208288d17c40c79a399c3cc24c..953953974c66c77edff3900df44253d3f167157a 100644
--- a/civicrm/xml/schema/Core/CustomField.xml
+++ b/civicrm/xml/schema/Core/CustomField.xml
@@ -194,7 +194,6 @@
     <title>Custom Field Is Active?</title>
     <comment>Is this property active?</comment>
     <default>1</default>
-    <default>0</default>
     <add>1.1</add>
   </field>
   <field>
diff --git a/civicrm/xml/schema/Core/Email.xml b/civicrm/xml/schema/Core/Email.xml
index 7f01e31fc72966501aa96a1347163f59f9f8741f..50cebbc1b01627e1b9ae65903763d3ae149b98b8 100644
--- a/civicrm/xml/schema/Core/Email.xml
+++ b/civicrm/xml/schema/Core/Email.xml
@@ -143,6 +143,7 @@
     <name>hold_date</name>
     <type>datetime</type>
     <comment>When the address went on bounce hold</comment>
+    <readonly>true</readonly>
     <html>
       <label>Hold Date</label>
       <type>Select Date</type>
diff --git a/civicrm/xml/schema/Core/Managed.xml b/civicrm/xml/schema/Core/Managed.xml
index ee884dfee695315cdfac1b5d6422358f0d3ca9a5..43de469c9d367d84ef09c376865de9773a8a8168 100644
--- a/civicrm/xml/schema/Core/Managed.xml
+++ b/civicrm/xml/schema/Core/Managed.xml
@@ -7,6 +7,7 @@
   <comment>List of declaratively managed objects</comment>
   <add>4.2</add>
   <log>false</log>
+  <title>Managed Record</title>
   <field>
     <name>id</name>
     <title>Managed ID</title>
diff --git a/civicrm/xml/schema/Core/Phone.xml b/civicrm/xml/schema/Core/Phone.xml
index 343f86f1b3fe9fbbd45c1f446dd909adf67065c5..e6a9ee82e007e755d7d64b90469c4f1ee15e49c4 100644
--- a/civicrm/xml/schema/Core/Phone.xml
+++ b/civicrm/xml/schema/Core/Phone.xml
@@ -97,6 +97,7 @@
     <name>mobile_provider_id</name>
     <title>Mobile Provider</title>
     <type>int unsigned</type>
+    <deprecated>true</deprecated>
     <comment>Which Mobile Provider does this phone belong to.</comment>
     <add>1.1</add>
   </field>
@@ -139,6 +140,7 @@
     <name>phone_numeric</name>
     <type>varchar</type>
     <length>32</length>
+    <readonly>true</readonly>
     <comment>Phone number stripped of all whitespace, letters, and punctuation.</comment>
     <html>
       <label>Numeric</label>
diff --git a/civicrm/xml/schema/Dedupe/DedupeRuleGroup.xml b/civicrm/xml/schema/Dedupe/DedupeRuleGroup.xml
index ff77740d4ccc60f1049c60b6fa7e06b34983bee9..a8b8c789811d82ded9f392e20b57c11a37f15ff4 100644
--- a/civicrm/xml/schema/Dedupe/DedupeRuleGroup.xml
+++ b/civicrm/xml/schema/Dedupe/DedupeRuleGroup.xml
@@ -67,10 +67,16 @@
     <name>name</name>
     <title>Name</title>
     <type>varchar</type>
-    <length>64</length>
-    <comment>Name of the rule group</comment>
+    <length>255</length>
+    <comment>Unique name of rule group</comment>
     <add>2.1</add>
   </field>
+  <index>
+    <name>UI_name</name>
+    <fieldName>name</fieldName>
+    <unique>true</unique>
+    <add>5.54</add>
+  </index>
   <field>
     <name>title</name>
     <title>Title</title>
diff --git a/civicrm/xml/schema/Event/Participant.xml b/civicrm/xml/schema/Event/Participant.xml
index 9247cbb44191df73be50e0b40f9c941266051ea7..504afc47a1cf81d9c02ef21f71845fb0f0fe1ef5 100644
--- a/civicrm/xml/schema/Event/Participant.xml
+++ b/civicrm/xml/schema/Event/Participant.xml
@@ -208,7 +208,7 @@
     <default>NULL</default>
     <comment>FK to Participant ID</comment>
     <html>
-      <label>Registered By</label>
+      <label>Registered By Participant</label>
     </html>
     <add>2.1</add>
     <export>true</export>
@@ -338,4 +338,22 @@
     <key>id</key>
     <onDelete>SET NULL</onDelete>
   </foreignKey>
+  <field>
+    <name>created_id</name>
+    <type>int unsigned</type>
+    <title>Created by Contact ID</title>
+    <comment>Contact responsible for registering this participant</comment>
+    <html>
+      <type>EntityRef</type>
+      <label>Created By</label>
+    </html>
+    <add>5.54</add>
+  </field>
+  <foreignKey>
+    <name>created_id</name>
+    <table>civicrm_contact</table>
+    <key>id</key>
+    <add>5.54</add>
+    <onDelete>SET NULL</onDelete>
+  </foreignKey>
 </table>
diff --git a/civicrm/xml/schema/Mailing/BounceType.xml b/civicrm/xml/schema/Mailing/BounceType.xml
index 8e9051f828134b503b318b39977b51475765cfa4..d414495288b0bb975f142e2d31ac963beb80bbe2 100644
--- a/civicrm/xml/schema/Mailing/BounceType.xml
+++ b/civicrm/xml/schema/Mailing/BounceType.xml
@@ -23,7 +23,7 @@
     <name>name</name>
     <title>Bounce Type Name</title>
     <type>varchar</type>
-    <length>24</length>
+    <length>255</length>
     <required>true</required>
     <comment>Type of bounce</comment>
   </field>
@@ -31,7 +31,7 @@
     <name>description</name>
     <title>Bounce Type Description</title>
     <type>varchar</type>
-    <length>255</length>
+    <length>2048</length>
     <comment>A description of this bounce type</comment>
   </field>
   <field>
diff --git a/civicrm/xml/schema/Queue/QueueItem.xml b/civicrm/xml/schema/Queue/QueueItem.xml
index 782421f15a13f1f8b81ff034f342b7d8fc521343..a195e3f0b0132b619f7fd28679ba36a3998495cc 100644
--- a/civicrm/xml/schema/Queue/QueueItem.xml
+++ b/civicrm/xml/schema/Queue/QueueItem.xml
@@ -46,7 +46,7 @@
   <field>
     <name>submit_time</name>
     <title>Submit Time</title>
-    <type>datetime</type>
+    <type>timestamp</type>
     <comment>date on which this item was submitted to the queue</comment>
     <required>true</required>
     <html>
@@ -57,7 +57,9 @@
   <field>
     <name>release_time</name>
     <title>Release Time</title>
-    <type>datetime</type>
+    <type>timestamp</type>
+    <required>false</required>
+    <default>NULL</default>
     <comment>date on which this job becomes available; null if ASAP</comment>
     <html>
       <type>Select Date</type>
diff --git a/civicrm/xml/templates/civicrm_data.tpl b/civicrm/xml/templates/civicrm_data.tpl
index 13edefd796c0665dbc6bf99464551d0d953dace2..32b1cc69af9e11a5ee9ecc76999a95e86a5d2df4 100644
--- a/civicrm/xml/templates/civicrm_data.tpl
+++ b/civicrm/xml/templates/civicrm_data.tpl
@@ -1162,7 +1162,6 @@ VALUES
  ('AuthNet',            '{ts escape="sql"}Authorize.Net{/ts}',          NULL,1,0,'{ts escape="sql"}API Login{/ts}','{ts escape="sql"}Payment Key{/ts}','{ts escape="sql"}MD5 Hash{/ts}',NULL,'Payment_AuthorizeNet','https://secure2.authorize.net/gateway/transact.dll',NULL,'https://api2.authorize.net/xml/v1/request.api',NULL,'https://test.authorize.net/gateway/transact.dll',NULL,'https://apitest.authorize.net/xml/v1/request.api',NULL,1,1),
  ('PayJunction',        '{ts escape="sql"}PayJunction{/ts}',            NULL,0,0,'User Name','Password',NULL,NULL,'Payment_PayJunction','https://payjunction.com/quick_link',NULL,NULL,NULL,'https://www.payjunctionlabs.com/quick_link',NULL,NULL,NULL,1,1),
  ('Dummy',              '{ts escape="sql"}Dummy Payment Processor{/ts}',NULL,1,1,'{ts escape="sql"}User Name{/ts}',NULL,NULL,NULL,'Payment_Dummy',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1),
- ('Elavon',             '{ts escape="sql"}Elavon Payment Processor{/ts}','{ts escape="sql"}Elavon / Nova Virtual Merchant{/ts}',0,0,'{ts escape="sql"}SSL Merchant ID {/ts}','{ts escape="sql"}SSL User ID{/ts}','{ts escape="sql"}SSL PIN{/ts}',NULL,'Payment_Elavon','https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,'https://www.myvirtualmerchant.com/VirtualMerchant/processxml.do',NULL,NULL,NULL,1,0),
  ('Realex',             '{ts escape="sql"}Realex Payment{/ts}',         NULL,0,0,'Merchant ID', 'Password', NULL, 'Account', 'Payment_Realex', 'https://epage.payandshop.com/epage.cgi', NULL, NULL, NULL, 'https://epage.payandshop.com/epage-remote.cgi', NULL, NULL, NULL, 1, 0),
  ('FirstData',          '{ts escape="sql"}FirstData (aka linkpoint){/ts}', '{ts escape="sql"}FirstData (aka linkpoint){/ts}', 0, 0, 'Store name', 'certificate path', NULL, NULL, 'Payment_FirstData', 'https://secure.linkpt.net', NULL, NULL, NULL, 'https://staging.linkpt.net', NULL, NULL, NULL, 1, 0);
 
@@ -1797,15 +1796,15 @@ SELECT @option_group_id_recent := max(id) from civicrm_option_group where name =
 
 INSERT INTO civicrm_option_value (`option_group_id`, {localize field='label'}label{/localize}, `value`, `name`, `grouping`, `filter`, `is_default`, `weight`, {localize field='description'}description{/localize}, `is_optgroup`, `is_reserved`, `is_active`, `component_id`, `visibility_id`)
  VALUES
-    (@option_group_id_recent, {localize}'{ts escape="sql"}Contacts{/ts}'{/localize}, 'Contact', 'Contacts', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, {localize}'{ts escape="sql"}Relationships{/ts}'{/localize}, 'Relationship', 'Relationships', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, {localize}'{ts escape="sql"}Activities{/ts}'{/localize}, 'Activity', 'Activities', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, {localize}'{ts escape="sql"}Notes{/ts}'{/localize}, 'Note', 'Notes', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, {localize}'{ts escape="sql"}Groups{/ts}'{/localize}, 'Group', 'Groups', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, {localize}'{ts escape="sql"}Cases{/ts}'{/localize}, 'Case', 'Cases', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, {localize}'{ts escape="sql"}Contributions{/ts}'{/localize}, 'Contribution', 'Contributions', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, {localize}'{ts escape="sql"}Participants{/ts}'{/localize}, 'Participant', 'Participants', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, {localize}'{ts escape="sql"}Memberships{/ts}'{/localize}, 'Membership', 'Memberships', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, {localize}'{ts escape="sql"}Pledges{/ts}'{/localize}, 'Pledge', 'Pledges', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, {localize}'{ts escape="sql"}Events{/ts}'{/localize}, 'Event', 'Events', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL),
-    (@option_group_id_recent, {localize}'{ts escape="sql"}Campaigns{/ts}'{/localize}, 'Campaign', 'Campaigns', NULL, NULL, 0, 1, '', 0, 0, 1, NULL, NULL);
+    (@option_group_id_recent, {localize}'{ts escape="sql"}Contacts{/ts}'{/localize}, 'Contact', 'Contact', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, {localize}'{ts escape="sql"}Relationships{/ts}'{/localize}, 'Relationship', 'Relationship', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, {localize}'{ts escape="sql"}Activities{/ts}'{/localize}, 'Activity', 'Activity', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, {localize}'{ts escape="sql"}Notes{/ts}'{/localize}, 'Note', 'Note', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, {localize}'{ts escape="sql"}Groups{/ts}'{/localize}, 'Group', 'Group', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, {localize}'{ts escape="sql"}Cases{/ts}'{/localize}, 'Case', 'Case', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, {localize}'{ts escape="sql"}Contributions{/ts}'{/localize}, 'Contribution', 'Contribution', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, {localize}'{ts escape="sql"}Participants{/ts}'{/localize}, 'Participant', 'Participant', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, {localize}'{ts escape="sql"}Memberships{/ts}'{/localize}, 'Membership', 'Membership', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, {localize}'{ts escape="sql"}Pledges{/ts}'{/localize}, 'Pledge', 'Pledge', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, {localize}'{ts escape="sql"}Events{/ts}'{/localize}, 'Event', 'Event', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL),
+    (@option_group_id_recent, {localize}'{ts escape="sql"}Campaigns{/ts}'{/localize}, 'Campaign', 'Campaign', NULL, NULL, 0, 1, '', 0, 1, 1, NULL, NULL);
diff --git a/civicrm/xml/templates/civicrm_navigation.tpl b/civicrm/xml/templates/civicrm_navigation.tpl
index 3c2dd41e595a06997b293893fac53ee7a36e299b..cd6fe266aecabdf158bbe05bcd331d39c6ec3e6a 100644
--- a/civicrm/xml/templates/civicrm_navigation.tpl
+++ b/civicrm/xml/templates/civicrm_navigation.tpl
@@ -64,11 +64,6 @@ VALUES
     ( @domainID, 'civicrm/pledge/search?reset=1',                           '{ts escape="sql" skip="true"}Find Pledges{/ts}',       'Find Pledges', 'access CiviPledge', '',        @searchlastID, '1', NULL, 10 ),
     ( @domainID, 'civicrm/activity/search?reset=1',                         '{ts escape="sql" skip="true"}Find Activities{/ts}',    'Find Activities', NULL,  '',                   @searchlastID, '1', '1',  11 );
 
-INSERT INTO civicrm_navigation
-    ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight )
-VALUES
-    ( @domainID, 'civicrm/contact/search/custom/list?reset=1',              '{ts escape="sql" skip="true"}Custom Searches{/ts}', 'Custom Searches', NULL, '',                 @searchlastID, '1', NULL, 12 );
-
 INSERT INTO civicrm_navigation
     ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight, icon )
 VALUES
@@ -285,8 +280,7 @@ VALUES
     ( @domainID, 'civicrm/admin/setting/search?reset=1',    '{ts escape="sql" skip="true"}Search Preferences{/ts}',    'Search Preferences',                'administer CiviCRM', '',   @CustomizelastID, '1', NULL, 10 ),
     ( @domainID, 'civicrm/admin/setting/preferences/date?reset=1', '{ts escape="sql" skip="true"}Date Preferences{/ts}', 'Date Preferences', 'administer CiviCRM', '', @CustomizelastID, '1', NULL, 11 ),
     ( @domainID, 'civicrm/admin/menu?reset=1',              '{ts escape="sql" skip="true"}Navigation Menu{/ts}', 'Navigation Menu',                         'administer CiviCRM', '',   @CustomizelastID, '1', NULL, 12 ),
-    ( @domainID, 'civicrm/admin/options/wordreplacements?reset=1','{ts escape="sql" skip="true"}Word Replacements{/ts}','Word Replacements',                'administer CiviCRM', '',   @CustomizelastID, '1', NULL, 13 ),
-    ( @domainID, 'civicrm/admin/options/custom_search?reset=1', '{ts escape="sql" skip="true"}Manage Custom Searches{/ts}', 'Manage Custom Searches', 'administer CiviCRM', '', @CustomizelastID, '1', NULL, 14 );
+    ( @domainID, 'civicrm/admin/options/wordreplacements?reset=1','{ts escape="sql" skip="true"}Word Replacements{/ts}','Word Replacements',                'administer CiviCRM', '',   @CustomizelastID, '1', NULL, 13 );
 
 INSERT INTO civicrm_navigation
     ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight )
diff --git a/civicrm/xml/templates/civicrm_sample.tpl b/civicrm/xml/templates/civicrm_sample.tpl
index 5e128689364cc4b697b8a345bd7129f89e6613a7..de452b0d823f2ab59c98b995d0850a726c89f631 100644
--- a/civicrm/xml/templates/civicrm_sample.tpl
+++ b/civicrm/xml/templates/civicrm_sample.tpl
@@ -15,9 +15,9 @@ SELECT @domainID := id FROM civicrm_domain where name = 'Default Domain Name';
 -- Sample Extended Property Group and Fields
 
 INSERT INTO `civicrm_price_set` (`name`,`title`,`is_active`,`extends`,`is_quick_config`)
-VALUES ('help_support_civicrm_amount', 'Help Support CiviCRM!', 1, 2, 1);
+VALUES ('help_support_civicrm_amount', 'Help Support CiviCRM!', 1, 2, 0);
 
-SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `is_quick_config` = 1 and name = 'help_support_civicrm_amount';
+SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE name = 'help_support_civicrm_amount';
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'contribution_amount', 'Contribution Amount', 'Radio', 0, 2, 1, 1, 1, 0, 1),
@@ -144,7 +144,7 @@ INSERT INTO `civicrm_price_set` (`name`,`title`,`is_active`,`extends`, `financia
 VALUES ('member_signup_and_renewal', 'Member Signup and Renewal', 1, 3, @financial_type_id, 1),
        ('pledge_for_civicrm', 'Pledge for CiviCRM!',1,2,null,1);
 
-SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `is_quick_config` = 1 and name = 'member_signup_and_renewal';
+SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE name = 'member_signup_and_renewal';
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`) VALUES ( @priceSetId, 'membership_amount', 'Membership', 'Radio', 0, 1, 1, 1, 1, 1, 1);
 
@@ -162,7 +162,7 @@ VALUES
     (@priceFieldID,'General','General','100.00', 1, @membershipIdG, 1, 1, @financial_type_id),
     (@priceFieldID,'Student','Student','50.00', 1, @membershipIdS , 1, 0, @financial_type_id);
 
-SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `is_quick_config` = 1 AND `name` = 'pledge_for_civicrm';
+SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `name` = 'pledge_for_civicrm';
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'other_amount', 'Contribution Amount', 'Text', 0, 3, 0, 1, 1, 1, 1);
@@ -183,9 +183,9 @@ VALUES
 INSERT INTO `civicrm_price_set` (`name`,`title`,`is_active`,`extends`, `is_quick_config`)
 VALUES ('rain_forest_cup_youth_soccer_tournament', 'Rain-forest Cup Youth Soccer Tournament', 1, 1, 1),
        ('fall_fundraiser_dinner', 'Fall Fundraiser Dinner', 1, 1, 1),
-       ('summer_solstice_festival_day_concert', 'Summer Solstice Festival Day Concert',1,1,1);
+       ('summer_solstice_festival_day_concert', 'Summer Solstice Festival Day Concert',1,1,0);
 
-SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `is_quick_config` = 1 AND `name` = 'rain_forest_cup_youth_soccer_tournament';
+SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `name` = 'rain_forest_cup_youth_soccer_tournament';
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'tournament_fees', 'Tournament Fees', 'Radio', 0, 1, 1, 1, 1, 1, 1);
@@ -202,7 +202,7 @@ VALUES
     (@priceFieldID,'junior_Stars__ages_9_12_','Junior Stars (ages 9-12)','1000',2,1,0,4),
     (@priceFieldID,'super_Stars__ages_13_18_','Super Stars (ages 13-18)','1500',3,1,0,4);
 
-SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `is_quick_config` = 1 AND `name` = 'fall_fundraiser_dinner';
+SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `name` = 'fall_fundraiser_dinner';
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'dinner_contribution', 'Dinner Contribution', 'Radio', 0, 1, 1, 1, 1, 1, 1);
@@ -219,7 +219,7 @@ VALUES
     (@priceFieldID,'couple','Couple','100',2,1,0,4),
     (@priceFieldID,'family','Family','200',3,1,0,4);
 
-SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `is_quick_config` = 1 AND `name` = 'summer_solstice_festival_day_concert';
+SELECT @priceSetId := max(id) FROM `civicrm_price_set` WHERE `name` = 'summer_solstice_festival_day_concert';
 
 INSERT INTO `civicrm_price_field` (`price_set_id`, `name`, `label`, `html_type`, `is_enter_qty`, `weight`, `is_display_amounts`, `options_per_line`, `is_active`, `is_required`, `visibility_id`)
 VALUES ( @priceSetId, 'festival_fee', 'Festival Fee', 'Radio', 0, 1, 1, 1, 1, 1, 1);
diff --git a/civicrm/xml/templates/dao.tpl b/civicrm/xml/templates/dao.tpl
index 7234a22dd6ef4cb91c0066245db9270bd7d31f01..7a14de4129c6f8aa92856dea30b72ea074cfa3d9 100644
--- a/civicrm/xml/templates/dao.tpl
+++ b/civicrm/xml/templates/dao.tpl
@@ -77,6 +77,9 @@ class {$table.className} extends CRM_Core_DAO {ldelim}
 
      *   (SQL type: {$field.sqlType})
      *   Note that values will be retrieved from the database as a string.
+{if $field.deprecated}
+     * @deprecated
+{/if}
      */
     public ${$field.name};
 
diff --git a/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl b/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl
index 5e6ddd29206895e6e266b88d409b5dff12f82779..40a59eaa3c6b1927174fa94fffd0e99536ec2627 100644
--- a/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl
@@ -9,7 +9,7 @@
     {if $config->empoweredBy}
       <table style="margin-top:5px;padding-bottom:50px;" cellpadding="5" cellspacing="0">
         <tr>
-          <td><img src="{$resourceBase}/i/civi99.png" height="34px" width="99px"></td>
+          <td><img src="{domain.empowered_by_civicrm_image_url}" height="34px" width="99px"></td>
         </tr>
       </table>
     {/if}
@@ -68,26 +68,19 @@
         <th style="text-align:right;font-weight:bold;white-space: nowrap"><font size="1">{domain.tax_term}</font></th>
         <th style="text-align:right;font-weight:bold;white-space: nowrap"><font size="1">{ts 1=$currency}Amount %1{/ts}</font></th>
       </tr>
-      {foreach from=$lineItem item=value key=priceset name=taxpricevalue}
+      {foreach from=$lineItems item=line}
         <tr>
           <td style="text-align:left;nowrap"><font size="1">
-            {if $value.html_type eq 'Text'}
-              {$value.label}
+            {$line.title}
+          </font></td>
+          <td style="text-align:right;"><font size="1">{$line.qty}</font></td>
+          <td style="text-align:right;"><font size="1">{$line.unit_price|crmMoney:$currency}</font></td>
+            {if $line.tax_amount != ''}
+              <td style="text-align:right;"><font size="1">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>
             {else}
-              {$value.field_title} - {$value.label}
+              <td style="text-align:right;"><font size="1">{if '{domain.tax_term}'}{ts 1='{domain.tax_term}'}-{/ts}{/if}</font></td>
             {/if}
-            {if $value.description}
-              <div>{$value.description|truncate:30:"..."}</div>
-            {/if}
-          </font></td>
-          <td style="text-align:right;"><font size="1">{$value.qty}</font></td>
-          <td style="text-align:right;"><font size="1">{$value.unit_price|crmMoney:$currency}</font></td>
-          {if $value.tax_amount != ''}
-            <td style="text-align:right;"><font size="1">{if $value.tax_rate}{$value.tax_rate}%{/if}</font></td>
-          {else}
-            <td style="text-align:right;"><font size="1">{if $taxTerm}{ts 1=$taxTerm}-{/ts}{/if}</font></td>
-          {/if}
-          <td style="text-align:right;"><font size="1">{$value.subTotal|crmMoney:$currency}</font></td>
+          <td style="text-align:right;"><font size="1">{$line.line_total|crmMoney:'{contribution.currency}'}</font></td>
         </tr>
       {/foreach}
       <tr>
@@ -95,20 +88,15 @@
         <td style="text-align:right;"><font size="1">{ts}Sub Total{/ts}</font></td>
         <td style="text-align:right;"><font size="1">{$subTotal|crmMoney:$currency}</font></td>
       </tr>
-      {if !empty($dataArray)}
-        {foreach from=$dataArray item=value key=priceset}
+      {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+        {if $taxRate != 0}
           <tr>
             <td colspan="3"></td>
-            {if $priceset}
-              <td style="text-align:right;white-space: nowrap"><font size="1">{if $taxTerm}{ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}{/if}</font></td>
-              <td style="text-align:right"><font size="1" align="right">{$value|crmMoney:$currency}</font> </td>
-            {elseif $priceset == 0}
-              <td style="text-align:right;white-space: nowrap"><font size="1">{if $taxTerm}{ts 1=$taxTerm}TOTAL %1{/ts}{/if}</font></td>
-              <td style="text-align:right"><font size="1" align="right">{$value|crmMoney:$currency}</font> </td>
-            {/if}
+            <td style="text-align:right;white-space: nowrap"><font size="1">{if '{domain.tax_term}'}{ts 1='{domain.tax_term}' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>
+            <td style="text-align:right"><font size="1" align="right">{$taxDetail.amount|crmMoney:'{contribution.currency}'}</font> </td>
           </tr>
-        {/foreach}
-      {/if}
+        {/if}
+      {/foreach}
       <tr>
         <td colspan="3"></td>
         <td style="text-align:right;white-space: nowrap"><b><font size="1">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>
@@ -274,31 +262,20 @@
               <th style="padding-left:28px;text-align:right;font-weight:bold;"><font size="1">{domain.tax_term}</font></th>
               <th style="padding-left:28px;text-align:right;font-weight:bold;"><font size="1">{ts 1=$currency}Amount %1{/ts}</font></th>
             </tr>
-            {foreach from=$lineItem item=value key=priceset name=pricevalue}
-              {if $smarty.foreach.pricevalue.index eq 0}
-                <tr><td colspan="5"><hr size="3" style="color:#000;"></hr></td></tr>
-              {else}
-                <tr><td colspan="5" style="color:#F5F5F5;"><hr></hr></td></tr>
-              {/if}
+            {foreach from=$lineItems item=line key=index}
+              <tr><td colspan="5"><hr {if $index == 0}size="3" style="color:#000;"{else}style="color:#F5F5F5;"{/if}></hr></td></tr>
               <tr>
                 <td style ="text-align:left;"  ><font size="1">
-                  {if $value.html_type eq 'Text'}
-                    {$value.label}
-                  {else}
-                    {$value.field_title} - {$value.label}
-                  {/if}
-                  {if $value.description}
-                    <div>{$value.description|truncate:30:"..."}</div>
-                  {/if}
+                  {$line.title}
                 </font></td>
-                <td style="padding-left:28px;text-align:right;"><font size="1">{$value.qty}</font></td>
-                <td style="padding-left:28px;text-align:right;"><font size="1">{$value.unit_price|crmMoney:$currency}</font></td>
-                {if $value.tax_amount != ''}
-                  <td style="padding-left:28px;text-align:right;"><font size="1">{if $value.tax_rate}{$value.tax_rate}%{/if}</font></td>
+                <td style="padding-left:28px;text-align:right;"><font size="1">{$line.qty}</font></td>
+                <td style="padding-left:28px;text-align:right;"><font size="1">{$line.unit_price|crmMoney:$currency}</font></td>
+                {if $line.tax_amount != ''}
+                  <td style="padding-left:28px;text-align:right;"><font size="1">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>
                 {else}
-                  <td style="padding-left:28px;text-align:right"><font size="1">{if $taxTerm}{ts 1=$taxTerm}No %1{/ts}{/if}</font></td>
+                  <td style="padding-left:28px;text-align:right"><font size="1">{if '{domain.tax_term}'}{ts 1='{domain.tax_term}'}No %1{/ts}{/if}</font></td>
                 {/if}
-                <td style="padding-left:28px;text-align:right;"><font size="1">{$value.subTotal|crmMoney:$currency}</font></td>
+                <td style="padding-left:28px;text-align:right;"><font size="1">{$line.line_total|crmMoney:'{contribution.currency}'}</font></td>
               </tr>
             {/foreach}
             <tr><td colspan="5" style="color:#F5F5F5;"><hr></hr></td></tr>
@@ -307,20 +284,15 @@
               <td style="padding-left:28px;text-align:right;"><font size="1">{ts}Sub Total{/ts}</font></td>
               <td style="padding-left:28px;text-align:right;"><font size="1">{$subTotal|crmMoney:$currency}</font></td>
             </tr>
-            {if !empty($dataArray)}
-              {foreach from=$dataArray item=value key=priceset}
-                <tr>
-                  <td colspan="3"></td>
-                  {if $priceset}
-                    <td style="padding-left:28px;text-align:right;"><font size="1">{if $taxTerm}{ts 1=$taxTerm 2=$priceset}TOTAL %1 %2%{/ts}{/if}</font></td>
-                    <td style="padding-left:28px;text-align:right;"><font size="1" align="right">{$value|crmMoney:$currency}</font> </td>
-                  {elseif $priceset == 0}
-                    <td style="padding-left:28px;text-align:right;"><font size="1">{if $taxTerm}{ts 1=$taxTerm}TOTAL NO %1{/ts}{/if}</font></td>
-                    <td style="padding-left:28px;text-align:right;"><font size="1" align="right">{$value|crmMoney:$currency}</font> </td>
-                  {/if}
-                </tr>
+            {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+                {if $taxRate != 0}
+                  <tr>
+                    <td colspan="3"></td>
+                    <td style="padding-left:28px;text-align:right;"><font size="1">{if '{domain.tax_term}'}{ts 1='{domain.tax_term}' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>
+                    <td style="padding-left:28px;text-align:right;"><font size="1" align="right">{$taxDetail.amount|crmMoney:'{contribution.currency}'}</font> </td>
+                  </tr>
+                {/if}
               {/foreach}
-            {/if}
             <tr>
               <td colspan="3"></td>
               <td colspan="2"><hr></hr></td>
diff --git a/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl b/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl
index 4a7aab7277c5181dee9e18510dadf10f177e1b17..3772ddd5eedacb2a60cfdc390c425758f943a401 100644
--- a/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl
@@ -20,7 +20,7 @@
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     {if !empty($formValues.receipt_text)}
      <p>{$formValues.receipt_text|htmlize}</p>
     {else}
diff --git a/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl b/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl
index cce51738ef2d25a49aa575a3083154512afad182..94f68e6e016a048a5b4ef8e186aaa86d89078928 100644
--- a/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {if !empty($formValues.receipt_text)}
 {$formValues.receipt_text}
diff --git a/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl
index 4bd7db518548b70dd80801d32e5ef27cae703dca..13623e7c15228c0cfa0fea6b8ec072c9a4fd85a1 100644
--- a/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl
@@ -10,7 +10,7 @@
 {capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
 {capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
-  <table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
+<table id="crm-event_receipt" style="font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;">
 
   <!-- BEGIN HEADER -->
   <!-- You can add table row(s) here with logo or other header elements -->
@@ -20,7 +20,7 @@
 
   <tr>
    <td>
-     {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     {if !empty($receipt_text)}
      <p>{$receipt_text|htmlize}</p>
     {/if}
@@ -31,123 +31,99 @@
 
    </td>
   </tr>
-  </table>
-  <table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
-
-     {if $amount}
-
-
-      <tr>
-       <th {$headerStyle}>
+</table>
+<table style="width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;">
+  {if '{contribution.total_amount|raw}' !== '0.00'}
+    <tr>
+      <th {$headerStyle}>
         {ts}Contribution Information{/ts}
-       </th>
-      </tr>
-
-      {if $isShowLineItems}
+      </th>
+    </tr>
 
-       {foreach from=$lineItem item=value key=priceset}
-        <tr>
-         <td colspan="2" {$valueStyle}>
+    {if $isShowLineItems}
+      <tr>
+        <td colspan="2" {$valueStyle}>
           <table>
-           <tr>
-            <th>{ts}Item{/ts}</th>
-            <th>{ts}Qty{/ts}</th>
-            <th>{ts}Each{/ts}</th>
-            {if !empty($dataArray)}
-             <th>{ts}Subtotal{/ts}</th>
-             <th>{ts}Tax Rate{/ts}</th>
-             <th>{ts}Tax Amount{/ts}</th>
-            {/if}
-            <th>{ts}Total{/ts}</th>
-           </tr>
-           {foreach from=$value item=line}
             <tr>
-             <td>
-             {if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description}<div>{$line.description|truncate:30:"..."}</div>{/if}
-             </td>
-             <td>
-              {$line.qty}
-             </td>
-             <td>
-              {$line.unit_price|crmMoney:$currency}
-             </td>
-             {if !empty($getTaxDetails)}
-              <td>
-               {$line.unit_price*$line.qty|crmMoney:$currency}
-              </td>
-              {if $line.tax_rate || $line.tax_amount != ""}
-               <td>
-                {$line.tax_rate|string_format:"%.2f"}%
-               </td>
-               <td>
-                {$line.tax_amount|crmMoney:$currency}
-               </td>
-              {else}
-               <td></td>
-               <td></td>
+              <th>{ts}Item{/ts}</th>
+              <th>{ts}Qty{/ts}</th>
+              <th>{ts}Each{/ts}</th>
+              {if $isShowTax && '{contribution.tax_amount|raw}' !== '0.00'}
+                <th>{ts}Subtotal{/ts}</th>
+                <th>{ts}Tax Rate{/ts}</th>
+                <th>{ts}Tax Amount{/ts}</th>
               {/if}
-             {/if}
-             <td>
-              {$line.line_total+$line.tax_amount|crmMoney:$currency}
-             </td>
+              <th>{ts}Total{/ts}</th>
             </tr>
-           {/foreach}
+            {foreach from=$lineItems item=line}
+              <tr>
+                <td>{$line.title}</td>
+                <td>{$line.qty}</td>
+                <td>{$line.unit_price|crmMoney:$currency}</td>
+                {if $isShowTax && '{contribution.tax_amount|raw}' !== '0.00'}
+                  <td>{$line.unit_price*$line.qty|crmMoney:$currency}</td>
+                  {if $line.tax_rate || $line.tax_amount != ""}
+                    <td>{$line.tax_rate|string_format:"%.2f"}%</td>
+                    <td>{$line.tax_amount|crmMoney:$currency}</td>
+                  {else}
+                    <td></td>
+                    <td></td>
+                  {/if}
+                {/if}
+                <td>
+                  {$line.line_total+$line.tax_amount|crmMoney:$currency}
+                </td>
+              </tr>
+            {/foreach}
           </table>
-         </td>
-        </tr>
-       {/foreach}
-       {if !empty($dataArray)}
+        </td>
+      </tr>
+
+      {if $isShowTax && '{contribution.tax_amount|raw}' !== '0.00'}
         <tr>
-         <td {$labelStyle}>
-          {ts} Amount before Tax : {/ts}
-         </td>
-         <td {$valueStyle}>
-          {$amount-$totalTaxAmount|crmMoney:$currency}
-         </td>
+          <td {$labelStyle}>
+            {ts} Amount before Tax : {/ts}
+          </td>
+          <td {$valueStyle}>
+            {$amount-$totalTaxAmount|crmMoney:$currency}
+          </td>
         </tr>
 
-        {foreach from=$dataArray item=value key=priceset}
-         <tr>
-          {if $priceset || $priceset == 0}
-           <td>&nbsp;{$taxTerm} {$priceset|string_format:"%.2f"}%</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-          {else}
-           <td>&nbsp;{ts}No{/ts} {$taxTerm}</td>
-           <td>&nbsp;{$value|crmMoney:$currency}</td>
-          {/if}
-         </tr>
+        {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+          <tr>
+            <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>
+            <td>{$taxDetail.amount|crmMoney:'{contribution.currency}'}</td>
+          </tr>
         {/foreach}
 
-       {/if}
-       {if $isShowTax}
+      {/if}
+      {if $isShowTax}
         <tr>
-         <td {$labelStyle}>
-          {ts}Total Tax{/ts}
-         </td>
-         <td {$valueStyle}>
-          {$totalTaxAmount|crmMoney:$currency}
-         </td>
+          <td {$labelStyle}>
+            {ts}Total Tax{/ts}
+          </td>
+          <td {$valueStyle}>
+            {contribution.tax_amount}
+          </td>
         </tr>
-       {/if}
-       <tr>
+      {/if}
+      <tr>
         <td {$labelStyle}>
-         {ts}Total Amount{/ts}
+          {ts}Total Amount{/ts}
         </td>
         <td {$valueStyle}>
-         {$amount|crmMoney:$currency}
+          {contribution.total_amount}
         </td>
-       </tr>
-
-      {else}
-
-      {if !empty($totalTaxAmount)}
-         <tr>
-           <td {$labelStyle}>
-             {ts}Total Tax Amount{/ts}
-           </td>
-           <td {$valueStyle}>
-             {contribution.tax_amount|crmMoney}
-           </td>
+      </tr>
+    {else}
+      {if '{contribution.tax_amount|raw}' !== '0.00'}
+        <tr>
+          <td {$labelStyle}>
+            {ts}Total Tax Amount{/ts}
+          </td>
+          <td {$valueStyle}>
+            {contribution.tax_amount}
+          </td>
          </tr>
        {/if}
        <tr>
@@ -155,13 +131,13 @@
          {ts}Amount{/ts}
         </td>
         <td {$valueStyle}>
-         {$amount|crmMoney:$currency} {if '{contribution.amount_level}'} - {contribution.amount_level}{/if}
+         {contribution.total_amount} {if '{contribution.amount_level}'} - {contribution.amount_level}{/if}
         </td>
        </tr>
 
       {/if}
 
-     {/if}
+  {/if}
 
 
      {if !empty($receive_date)}
diff --git a/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl
index c2122c045faedea1334dc84b7c73d9dc9bac9167..fb71552fc51b52917721d4380ae48b7ffcc575fd 100644
--- a/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 {if !empty($receipt_text)}
 {$receipt_text}
 {/if}
@@ -9,49 +9,43 @@
 ===========================================================
 {/if}
 
-{if $amount}
+{if '{contribution.total_amount|raw}' !== '0.00'}
 ===========================================================
 {ts}Contribution Information{/ts}
 
 ===========================================================
 {if $isShowLineItems}
-{foreach from=$lineItem item=value key=priceset}
+
 ---------------------------------------------------------
 {capture assign=ts_item}{ts}Item{/ts}{/capture}
 {capture assign=ts_qty}{ts}Qty{/ts}{/capture}
 {capture assign=ts_each}{ts}Each{/ts}{/capture}
-{if !empty($dataArray)}
+{if $isShowTax && '{contribution.tax_amount|raw}' !== '0.00'}
 {capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}
 {capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}
 {capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}
 {/if}
 {capture assign=ts_total}{ts}Total{/ts}{/capture}
-{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if !empty($dataArray)} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
+{$ts_item|string_format:"%-30s"} {$ts_qty|string_format:"%5s"} {$ts_each|string_format:"%10s"} {if $isShowTax && '{contribution.tax_amount|raw}' !== '0.00'} {$ts_subtotal|string_format:"%10s"} {$ts_taxRate} {$ts_taxAmount|string_format:"%10s"} {/if} {$ts_total|string_format:"%10s"}
 ----------------------------------------------------------
-{foreach from=$value item=line}
-{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if !empty($dataArray)}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}
-{/foreach}
+{foreach from=$lineItems item=line}
+{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|string_format:"%10s"} {if !empty($dataArray)}{$line.unit_price*$line.qty|crmMoney:$currency|string_format:"%10s"} {if $line.tax_rate || $line.tax_amount != ""}  {$line.tax_rate|string_format:"%.2f"} %  {$line.tax_amount|crmMoney:$currency|string_format:"%10s"} {else}                  {/if}  {/if} {$line.line_total+$line.tax_amount|crmMoney:$currency|string_format:"%10s"}
 {/foreach}
 
-{if !empty($dataArray)}
+{if $isShowTax && '{contribution.tax_amount|raw}' !== '0.00'}
 {ts}Amount before Tax{/ts}: {$amount-$totalTaxAmount|crmMoney:$currency}
-
-{foreach from=$dataArray item=value key=priceset}
-{if $priceset || $priceset == 0}
-{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency}
-{else}
-{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}
-{/if}
-{/foreach}
+  {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}
+    {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:'{contribution.currency}'}
+  {/foreach}
 {/if}
 
 {if $isShowTax}
 {ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}
 {/if}
 
-{ts}Total Amount{/ts}: {$amount|crmMoney:$currency}
+{ts}Total Amount{/ts}: {contribution.total_amount}
 {else}
-{ts}Amount{/ts}: {$amount|crmMoney:$currency} {if '{contribution.amount_level}'} - {contribution.amount_level}{/if}
+{ts}Amount{/ts}: {contribution.total_amount} {if '{contribution.amount_level}'} - {contribution.amount_level}{/if}
 {/if}
 {/if}
 {if !empty($receive_date)}
diff --git a/civicrm/xml/templates/message_templates/contribution_recurring_billing_html.tpl b/civicrm/xml/templates/message_templates/contribution_recurring_billing_html.tpl
index ab2b2657abffecad353d6f5a12af275ad19bb612..84d6938af086cf0b767ce910bf6892e05be27a5b 100644
--- a/civicrm/xml/templates/message_templates/contribution_recurring_billing_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_recurring_billing_html.tpl
@@ -20,7 +20,7 @@
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}</p>
    </td>
   </tr>
diff --git a/civicrm/xml/templates/message_templates/contribution_recurring_billing_text.tpl b/civicrm/xml/templates/message_templates/contribution_recurring_billing_text.tpl
index c71682e9074ec6d076492de24e23333a1ac5fd61..26f7e23f31fea98a1185e20fcc07574f7b533998 100644
--- a/civicrm/xml/templates/message_templates/contribution_recurring_billing_text.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_recurring_billing_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 have been updated.{/ts}
 
diff --git a/civicrm/xml/templates/message_templates/contribution_recurring_cancelled_html.tpl b/civicrm/xml/templates/message_templates/contribution_recurring_cancelled_html.tpl
index 353a95d5341b4da27657eb1f72f8768cfc810e0c..ac2c48790ea9d0c548b0f669c5925d47757b4f88 100644
--- a/civicrm/xml/templates/message_templates/contribution_recurring_cancelled_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_recurring_cancelled_html.tpl
@@ -20,7 +20,7 @@
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>
    </td>
   </tr>
diff --git a/civicrm/xml/templates/message_templates/contribution_recurring_cancelled_text.tpl b/civicrm/xml/templates/message_templates/contribution_recurring_cancelled_text.tpl
index 0b23d8eac01371429462603b4f71422df76debf7..d48b091bc5cb3670c2c2f893480fcc3f69fdfe77 100644
--- a/civicrm/xml/templates/message_templates/contribution_recurring_cancelled_text.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_recurring_cancelled_text.tpl
@@ -1,3 +1,3 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}
diff --git a/civicrm/xml/templates/message_templates/contribution_recurring_edit_html.tpl b/civicrm/xml/templates/message_templates/contribution_recurring_edit_html.tpl
index 433cf1750458116d28365cd8f42ab1d549dbdf65..a4a89db2f3ca2c171cd67aa91f2dcc0a96477e0b 100644
--- a/civicrm/xml/templates/message_templates/contribution_recurring_edit_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_recurring_edit_html.tpl
@@ -20,7 +20,7 @@
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts}Your recurring contribution has been updated as requested:{/ts}
     <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>
 
diff --git a/civicrm/xml/templates/message_templates/contribution_recurring_edit_text.tpl b/civicrm/xml/templates/message_templates/contribution_recurring_edit_text.tpl
index af99606cd180bdbb8d804b4cfe82db897584e9d4..1d20d08f6e752f846515b2c1739f28462a25b977 100644
--- a/civicrm/xml/templates/message_templates/contribution_recurring_edit_text.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_recurring_edit_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts}Your recurring contribution has been updated as requested:{/ts}
 
diff --git a/civicrm/xml/templates/message_templates/contribution_recurring_notify_html.tpl b/civicrm/xml/templates/message_templates/contribution_recurring_notify_html.tpl
index 3be0cc8fe5dff042bc0fb51dea6f4cfe4aa5f705..22d39121b456d932c1c5be3a886931ac338db9e3 100644
--- a/civicrm/xml/templates/message_templates/contribution_recurring_notify_html.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_recurring_notify_html.tpl
@@ -20,7 +20,7 @@
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
    </td>
   </tr>
 
diff --git a/civicrm/xml/templates/message_templates/contribution_recurring_notify_text.tpl b/civicrm/xml/templates/message_templates/contribution_recurring_notify_text.tpl
index 687d61e91fc4e75f130473b5b9d94d40bc0af402..6aead9e1a5154f72ed19367e9d42096e30deeab1 100644
--- a/civicrm/xml/templates/message_templates/contribution_recurring_notify_text.tpl
+++ b/civicrm/xml/templates/message_templates/contribution_recurring_notify_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {if $recur_txnType eq 'START'}
 {if $auto_renew_membership}
diff --git a/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl b/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl
index 15cee91f4a6615cd54c54a1f13486e482db7d9f2..9327e01824fb270e6e0ef7b3cc9201e6e807ebec 100644
--- a/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl
@@ -20,7 +20,7 @@
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
     {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
      <p>{$event.confirm_email_text|htmlize}</p>
@@ -52,8 +52,8 @@
      </tr>
      <tr>
       <td colspan="2" {$valueStyle}>
-       {$event.event_title}<br />
-       {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+       {event.title}<br />
+       {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
       </td>
      </tr>
 
diff --git a/civicrm/xml/templates/message_templates/event_offline_receipt_subject.tpl b/civicrm/xml/templates/message_templates/event_offline_receipt_subject.tpl
index e686b72f8c8494f66620559c73e83390763ebccd..6b9da87a8624b41950256aa9f1c103374d9f4a23 100644
--- a/civicrm/xml/templates/message_templates/event_offline_receipt_subject.tpl
+++ b/civicrm/xml/templates/message_templates/event_offline_receipt_subject.tpl
@@ -1 +1 @@
-{ts}Event Confirmation{/ts} - {$event.title} - {contact.display_name}
+{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}
diff --git a/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl b/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl
index a37f38e35244706dd80135536d4ac328b2cb60fa..30f9c83fdee011e4d05a36aca3d4bd8ef81d20de 100644
--- a/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
 {$event.confirm_email_text}
 {/if}
@@ -41,8 +41,8 @@
 
 ==========================================================={if !empty($pricesetFieldsCount) }===================={/if}
 
-{$event.event_title}
-{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
+{event.title}
+{event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}
 
 {if !empty($event.participant_role) and $event.participant_role neq 'Attendee' and empty($defaultRole)}
 {ts}Participant Role{/ts}: {$event.participant_role}
diff --git a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl
index 6bc51ef4cc788e8d79f32623686d80004250a7f7..97ec41c01af7bfb5ac43e289529eba39b63eade1 100644
--- a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl
@@ -24,7 +24,7 @@
 
   <tr>
    <td>
-     {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
     {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
      <p>{$event.confirm_email_text|htmlize}</p>
@@ -63,8 +63,8 @@
      </tr>
      <tr>
       <td colspan="2" {$valueStyle}>
-       {$event.event_title}<br />
-       {$event.event_start_date|crmDate:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:"%A"} {$event.event_end_date|crmDate}{/if}{/if}
+       {event.title}<br />
+       {event.start_date|crmDate:"%A"} {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:"%A"} {$event.event_end_date|crmDate}{/if}{/if}
       </td>
      </tr>
 
diff --git a/civicrm/xml/templates/message_templates/event_online_receipt_subject.tpl b/civicrm/xml/templates/message_templates/event_online_receipt_subject.tpl
index da1dab7259d0c8149603df0d72d4a517e8294771..10795520cdf97c88d19cc0a688f5cfe051108ec1 100644
--- a/civicrm/xml/templates/message_templates/event_online_receipt_subject.tpl
+++ b/civicrm/xml/templates/message_templates/event_online_receipt_subject.tpl
@@ -1 +1 @@
-{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {$event.event_title} - {contact.display_name}
+{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}
diff --git a/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl
index 893d3ff5c31b6c5fac0796056012484af9ff31a7..bafd20709719f8bb95f78f818856bce2aab16c83 100644
--- a/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}
 {$event.confirm_email_text}
 
@@ -46,8 +46,8 @@
 
 ==========================================================={if !empty($pricesetFieldsCount)}===================={/if}
 
-{$event.event_title}
-{$event.event_start_date|crmDate:"%A"} {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:"%A"} {$event.event_end_date|crmDate}{/if}{/if}
+{event.title}
+{event.start_date|crmDate:"%A"} {event.start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:"%Y%m%d" == $event.event_start_date|crmDate:"%Y%m%d"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate:"%A"} {$event.event_end_date|crmDate}{/if}{/if}
 {if !empty($conference_sessions)}
 
 
diff --git a/civicrm/xml/templates/message_templates/event_registration_receipt_html.tpl b/civicrm/xml/templates/message_templates/event_registration_receipt_html.tpl
index 78037cde9833baeef57dc4329e4fb9898a4cfbca..4dbb912e0f6916ebbd1b14d90db415cd21277520 100644
--- a/civicrm/xml/templates/message_templates/event_registration_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/event_registration_receipt_html.tpl
@@ -9,7 +9,7 @@
     {capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
     {capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     {if $is_pay_later}
       <p>
         This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.
diff --git a/civicrm/xml/templates/message_templates/event_registration_receipt_text.tpl b/civicrm/xml/templates/message_templates/event_registration_receipt_text.tpl
index 70cd5819225af9bedae4b611855dc38642e09b76..a4c482234b94e4358ce294deeac1b2ea62856134 100644
--- a/civicrm/xml/templates/message_templates/event_registration_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/event_registration_receipt_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {if $is_pay_later}
   This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.
diff --git a/civicrm/xml/templates/message_templates/membership_autorenew_billing_html.tpl b/civicrm/xml/templates/message_templates/membership_autorenew_billing_html.tpl
index 0a1b0f3386807fb8a2c92b1ed6bfafb47d3ac641..10719b4ddb35c0a55c6efe271c82d4a559d50a57 100644
--- a/civicrm/xml/templates/message_templates/membership_autorenew_billing_html.tpl
+++ b/civicrm/xml/templates/message_templates/membership_autorenew_billing_html.tpl
@@ -20,7 +20,7 @@
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}</p>
    </td>
   </tr>
diff --git a/civicrm/xml/templates/message_templates/membership_autorenew_billing_text.tpl b/civicrm/xml/templates/message_templates/membership_autorenew_billing_text.tpl
index dcd942971c9e15cf76cd09347cc820b102608859..437fc2872c9e5ea81845d63f4b4ac4f572202564 100644
--- a/civicrm/xml/templates/message_templates/membership_autorenew_billing_text.tpl
+++ b/civicrm/xml/templates/message_templates/membership_autorenew_billing_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}
 
diff --git a/civicrm/xml/templates/message_templates/membership_autorenew_cancelled_html.tpl b/civicrm/xml/templates/message_templates/membership_autorenew_cancelled_html.tpl
index dbd6519bddc35b22ef92e004c06078b869d94f85..6c8ccdb379bf112eba446bef4b6f89adfe710377 100644
--- a/civicrm/xml/templates/message_templates/membership_autorenew_cancelled_html.tpl
+++ b/civicrm/xml/templates/message_templates/membership_autorenew_cancelled_html.tpl
@@ -20,7 +20,7 @@
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>
 
    </td>
diff --git a/civicrm/xml/templates/message_templates/membership_autorenew_cancelled_text.tpl b/civicrm/xml/templates/message_templates/membership_autorenew_cancelled_text.tpl
index 15387b63decd7dae1627e47c493bf6d4536c5acf..11806cc784c6ee7411b9637d8afc297b8f576f0c 100644
--- a/civicrm/xml/templates/message_templates/membership_autorenew_cancelled_text.tpl
+++ b/civicrm/xml/templates/message_templates/membership_autorenew_cancelled_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}
 
diff --git a/civicrm/xml/templates/message_templates/membership_offline_receipt_html.tpl b/civicrm/xml/templates/message_templates/membership_offline_receipt_html.tpl
index 2dede870b01244f8f6635db0c2f70b58a6106544..03e5be8a8c2dbfd6d1fd62187cab06da2bc7d9a7 100644
--- a/civicrm/xml/templates/message_templates/membership_offline_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/membership_offline_receipt_html.tpl
@@ -22,7 +22,7 @@
 
     <tr>
       <td>
-        {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+        {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
         {if $receipt_text}
           <p>{$receipt_text|htmlize}</p>
           <p>{ts}Thank you for this contribution.{/ts}</p>
diff --git a/civicrm/xml/templates/message_templates/membership_offline_receipt_text.tpl b/civicrm/xml/templates/message_templates/membership_offline_receipt_text.tpl
index ac381740fd435d8ef0e8a1dca7fc79c514f1c610..d96589dc385936fd169582d81533e98f9f839d2d 100644
--- a/civicrm/xml/templates/message_templates/membership_offline_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/membership_offline_receipt_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {if $receipt_text}
 {$receipt_text}
diff --git a/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl
index 79de1f3b98f1a82d7ae7d3846e4afa41338ec7a6..3bb4b2f4173afa32be58811891dee99a1e86a0e8 100644
--- a/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl
+++ b/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl
@@ -20,7 +20,7 @@
 
   <tr>
    <td>
-     {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+     {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     {if !empty($receipt_text)}
      <p>{$receipt_text|htmlize}</p>
     {/if}
diff --git a/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl
index e9bb9a72b18b4beb1948e6f84c5c4fb012d7260a..02be9e48f3ed9b0186cc6cd1ec48d11f3cab5b0f 100644
--- a/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl
+++ b/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 {if !empty($receipt_text)}
 {$receipt_text}
 {/if}
diff --git a/civicrm/xml/templates/message_templates/participant_transferred_html.tpl b/civicrm/xml/templates/message_templates/participant_transferred_html.tpl
index 849d7a3aa7b5f6cbe4ec4a252f4103a208c9eaf4..f064922015946be3c86a4207c6a1d6cdeb1fd3a3 100644
--- a/civicrm/xml/templates/message_templates/participant_transferred_html.tpl
+++ b/civicrm/xml/templates/message_templates/participant_transferred_html.tpl
@@ -20,7 +20,7 @@
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1=$to_participant}Your Event Registration has been Transferred to %1.{/ts}</p>
    </td>
   </tr>
diff --git a/civicrm/xml/templates/message_templates/participant_transferred_text.tpl b/civicrm/xml/templates/message_templates/participant_transferred_text.tpl
index 6de2e905528845e032f5d6347a7c645d04355fbc..44f1a9bf6d73f9c6c8038581d1efd200eeb187b9 100644
--- a/civicrm/xml/templates/message_templates/participant_transferred_text.tpl
+++ b/civicrm/xml/templates/message_templates/participant_transferred_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}
 
diff --git a/civicrm/xml/templates/message_templates/payment_or_refund_notification_html.tpl b/civicrm/xml/templates/message_templates/payment_or_refund_notification_html.tpl
index dc84d071ab0b9baf102a88df8fa7d59e571f8195..f9706882fe18e43de658860402cd6878ede5d7fa 100644
--- a/civicrm/xml/templates/message_templates/payment_or_refund_notification_html.tpl
+++ b/civicrm/xml/templates/message_templates/payment_or_refund_notification_html.tpl
@@ -21,7 +21,7 @@
   <!-- BEGIN CONTENT -->
   <tr>
     <td>
-      {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+      {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
       {if $isRefund}
         <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>
       {else}
diff --git a/civicrm/xml/templates/message_templates/pcp_owner_notify_html.tpl b/civicrm/xml/templates/message_templates/pcp_owner_notify_html.tpl
index 73c02a4c996bba2b8fcbec93a859fadff1ce9922..0620c96d5750f44b538c478220480419adf15dab 100644
--- a/civicrm/xml/templates/message_templates/pcp_owner_notify_html.tpl
+++ b/civicrm/xml/templates/message_templates/pcp_owner_notify_html.tpl
@@ -10,7 +10,7 @@
 {capture assign=labelStyle }style="padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;"{/capture}
 {capture assign=valueStyle }style="padding: 4px; border-bottom: 1px solid #999;"{/capture}
 
-  {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+  {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
   <p>{ts}You have received a donation at your personal page{/ts}: <a href="{$pcpInfoURL}">{$page_title}</a></p>
   <p>{ts}Your fundraising total has been updated.{/ts}<br/>
     {ts}The donor's information is listed below.  You can choose to contact them and convey your thanks if you wish.{/ts} <br/>
diff --git a/civicrm/xml/templates/message_templates/pcp_owner_notify_text.tpl b/civicrm/xml/templates/message_templates/pcp_owner_notify_text.tpl
index 964eabff6221eb8b780c8bb6dc6d4cf1bf58b2c9..a07dab6c351fdf3a1d0a6bbb3518ecae79e11846 100644
--- a/civicrm/xml/templates/message_templates/pcp_owner_notify_text.tpl
+++ b/civicrm/xml/templates/message_templates/pcp_owner_notify_text.tpl
@@ -2,7 +2,7 @@
 {ts}Personal Campaign Page Owner Notification{/ts}
 
 ===========================================================
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts}You have received a donation at your personal page{/ts}: {$page_title}
 >> {$pcpInfoURL}
diff --git a/civicrm/xml/templates/message_templates/pcp_supporter_notify_html.tpl b/civicrm/xml/templates/message_templates/pcp_supporter_notify_html.tpl
index 23cfe507549d7af894f96d527cf53425b10cf40c..8cd2d2895e0d42998990f2a606d6de2676e2fe8f 100644
--- a/civicrm/xml/templates/message_templates/pcp_supporter_notify_html.tpl
+++ b/civicrm/xml/templates/message_templates/pcp_supporter_notify_html.tpl
@@ -20,7 +20,7 @@
 
   <tr>
    <td>
-    {assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+    {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
     <p>{ts 1="$contribPageTitle"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>
    </td>
   </tr>
diff --git a/civicrm/xml/templates/message_templates/pcp_supporter_notify_text.tpl b/civicrm/xml/templates/message_templates/pcp_supporter_notify_text.tpl
index 872ce3f2776fa05eff27543fe812ef4fef8887f1..dbf84f4896c6f9e6639f53b28452dedcbb9fd436 100644
--- a/civicrm/xml/templates/message_templates/pcp_supporter_notify_text.tpl
+++ b/civicrm/xml/templates/message_templates/pcp_supporter_notify_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 {ts 1="$contribPageTitle"}Thanks for creating a personal campaign page in support of %1.{/ts}
 
diff --git a/civicrm/xml/templates/message_templates/petition_confirmation_needed_html.tpl b/civicrm/xml/templates/message_templates/petition_confirmation_needed_html.tpl
index d0852c0d5a132de812dd9af5cc6ea8a75d2e406f..91b52014decf0daf454be07a5b5157d2f4541f8b 100644
--- a/civicrm/xml/templates/message_templates/petition_confirmation_needed_html.tpl
+++ b/civicrm/xml/templates/message_templates/petition_confirmation_needed_html.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
 <p>Thank you for signing {$petition.title}.</p>
 
diff --git a/civicrm/xml/templates/message_templates/petition_confirmation_needed_text.tpl b/civicrm/xml/templates/message_templates/petition_confirmation_needed_text.tpl
index 1bf5583ac1aa06fd770deb3e45c889ebe6f2c2c1..619c499d0a84c743c7c94f80a80bdc7f1eb59520 100644
--- a/civicrm/xml/templates/message_templates/petition_confirmation_needed_text.tpl
+++ b/civicrm/xml/templates/message_templates/petition_confirmation_needed_text.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 Thank you for signing {$petition.title}.
 
diff --git a/civicrm/xml/templates/message_templates/petition_sign_html.tpl b/civicrm/xml/templates/message_templates/petition_sign_html.tpl
index 386527c9b668dbf58aca4cfb947887400a72780b..0c83e5ceea0b360c807f5f4ff39e69a80d1e978e 100644
--- a/civicrm/xml/templates/message_templates/petition_sign_html.tpl
+++ b/civicrm/xml/templates/message_templates/petition_sign_html.tpl
@@ -1,4 +1,4 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}<p>{$greeting},</p>{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if}
 
 <p>Thank you for signing {$petition.title}.</p>
 
diff --git a/civicrm/xml/templates/message_templates/petition_sign_text.tpl b/civicrm/xml/templates/message_templates/petition_sign_text.tpl
index f95137e86996378bde9a3475034aa2b1ffe0eb05..936b312c1edb727fe0e82b6bd7281dbda71de030 100644
--- a/civicrm/xml/templates/message_templates/petition_sign_text.tpl
+++ b/civicrm/xml/templates/message_templates/petition_sign_text.tpl
@@ -1,3 +1,3 @@
-{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}
+{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if}
 
 Thank you for signing {$petition.title}.
diff --git a/civicrm/xml/templates/message_templates/sample/Sample Responsive Design Newsletter - Single Column.tpl b/civicrm/xml/templates/message_templates/sample/Sample Responsive Design Newsletter - Single Column.tpl
index bddc84c85503c6b7a7d7810c5c6dcf49e49d7c06..922e646fed101349eae3c3c657059af5c77a9b95 100644
--- a/civicrm/xml/templates/message_templates/sample/Sample Responsive Design Newsletter - Single Column.tpl	
+++ b/civicrm/xml/templates/message_templates/sample/Sample Responsive Design Newsletter - Single Column.tpl	
@@ -188,7 +188,7 @@
   																	<!-- /Spacing --><!-- content -->
   																	<tr>
   																		<td style="padding:0 15px;">
-  																		<p style="font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;">{contact.email_greeting},																		</p>
+  																		<p style="font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;">{contact.email_greeting_display},																		</p>
   																		<p style="font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;"><span class="padding-right15" style="font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;">Replace with your text and images, and remember to link the facebook and twitter links in the footer to your pages. Have fun!</span></p>
   																		</td>
   																	</tr>
diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml
index 117fe20ca84255ee5cbb6e2feaf276540c7db66e..a8b37034a6b63461959fc5fa7d0f186a5876b3bf 100644
--- a/civicrm/xml/version.xml
+++ b/civicrm/xml/version.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="iso-8859-1" ?>
 <version>
-  <version_no>5.53.0</version_no>
+  <version_no>5.54.0</version_no>
 </version>